Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zelle wie Button

Zelle wie Button
Peter
Hallo!
Ich habe 3 Spalten, in die eine Wertigkeit von niedrig, mittel und hoch eingetragen werden soll. Dazu habe ich eine Lösung, die folgendermaßen aussieht:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim markiert, default As String
markiert = "X"
default = ""
If Not Intersect(Target, Range("E5:G103")) Is Nothing Then
Select Case Target.Value
Case default
Target.Value = markiert
Case markiert
Target.Value = default
End Select
Select Case Target.Column
Case 5
ActiveSheet.Cells(Target.Cells.Row, 6).Value = ""
ActiveSheet.Cells(Target.Cells.Row, 7).Value = ""
Case 6
ActiveSheet.Cells(Target.Cells.Row, 5).Value = ""
ActiveSheet.Cells(Target.Cells.Row, 7).Value = ""
Case 7
ActiveSheet.Cells(Target.Cells.Row, 5).Value = ""
ActiveSheet.Cells(Target.Cells.Row, 6).Value = ""
End Select
ActiveSheet.Cells(Target.Cells.Row, 22).Activate
End if
End Sub
Hierbei wird zum einen bei einem Klick in eine Zelle einer Zeile ein X sozusagen als Marker für die Wertigkeitsstufen gesetzt. Im zweiten Schritt wird eine mögliche Markierung in den beiden anderen Zellen gelöscht.
So, im dritten Schritt lege ich den Fokus danach auf ein belanglose Zelle weiter hinten in der Zeile, denn, würde ich das nicht tun, wäre noch die Zelle aktiviert, in die ich gerade eine Markierung gesetzt habe. Würde ich erneut in die gleiche Zelle reinklicken, dann würde ich den Inhalt (also das X) modifizieren können, das will ich nicht.
Kann ich, um das Aktivieren einer anderen Zelle zu vermeiden, einfach die markierte Zelle deaktivieren, also dann eigentlich keine Zelle auswählen?
P
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Zelle wie Button
05.08.2010 15:03:09
ChrisL
Hi Peter
Da es kein Unselect/Deselect gibt, würde ich vorschlagen den betroffenen Bereich mit einem Schreibschutz zu versehen:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim markiert, default As String
markiert = "X"
ActiveSheet.Unprotect
If Not Intersect(Target, Range("E5:G103")) Is Nothing Then
Range(Cells(Target.Row, 5), Cells(Target.Row, 7)).ClearContents
Target = markiert
End If
ActiveSheet.Protect
End Sub

cu
Chris
Anzeige
AW: Zelle wie Button
05.08.2010 15:40:31
fcs
Hallo Peter,
mit den folgenden Anpassungen kann per Zellselektion immer nur ein "X" in der Zeile gesetzt werden.
Per Doppelklick kann man ggf. ein eingetragenens "X" wieder löschen. Es ist nicht unbedingt notwendig Leerstrings in die Zellen zu schreiben, man kann die Zellinhalte auch löschen.
Gruß
Franz
Option Explicit
Private Const markiert As String = "X"
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("E5:G103")) Is Nothing _
And Target.Cells.Value = markiert _
And Target.Cells.Count = 1 Then
Target.ClearContents
Cancel = True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("E5:G103")) Is Nothing And Target.Cells.Count = 1 Then
If Application.WorksheetFunction.CountIf(Range(Cells(Target.Cells.Row, 5), _
Cells(Target.Cells.Row, 7)), markiert) = 0 Then
Target.Value = markiert
End If
End If
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zelle wie Button in Excel erstellen


Schritt-für-Schritt-Anleitung

Um eine Excel-Zelle als Button zu formatieren, kannst du VBA verwenden. Die folgende Schritt-für-Schritt-Anleitung zeigt dir, wie du das machst:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke im Menü auf "Einfügen" und wähle "Modul".

  3. Kopiere den VBA-Code aus dem Forum und füge ihn in das Modul ein. Hier ist der Code, den du verwenden kannst:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       Dim markiert, default As String
       markiert = "X"
       default = ""
       If Not Intersect(Target, Range("E5:G103")) Is Nothing Then
           Select Case Target.Value
               Case default
                   Target.Value = markiert
               Case markiert
                   Target.Value = default
           End Select
           Select Case Target.Column
               Case 5
                   ActiveSheet.Cells(Target.Cells.Row, 6).Value = ""
                   ActiveSheet.Cells(Target.Cells.Row, 7).Value = ""
               Case 6
                   ActiveSheet.Cells(Target.Cells.Row, 5).Value = ""
                   ActiveSheet.Cells(Target.Cells.Row, 7).Value = ""
               Case 7
                   ActiveSheet.Cells(Target.Cells.Row, 5).Value = ""
                   ActiveSheet.Cells(Target.Cells.Row, 6).Value = ""
           End Select
           ActiveSheet.Cells(Target.Cells.Row, 22).Activate
       End If
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Teste die Funktion: Klicke auf eine Zelle im Bereich E5:G103, um das "X" zu setzen und die anderen Zellen zu leeren.


Häufige Fehler und Lösungen

  • Fehler: Das "X" wird nicht gesetzt.
    Lösung: Stelle sicher, dass der Code im richtigen Arbeitsblattmodul eingefügt ist und die Zellen in den richtigen Bereichen liegen.

  • Fehler: Zellen können nicht bearbeitet werden.
    Lösung: Prüfe, ob der Bereich möglicherweise mit einem Schutz versehen ist. Entferne den Schutz, um Änderungen vorzunehmen.


Alternative Methoden

Eine alternative Methode, um eine Zelle als Button zu nutzen, besteht darin, den Bereich mit einem Schreibschutz zu versehen, wie von ChrisL im Forum vorgeschlagen. Hier ist ein Beispielcode:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim markiert As String
    markiert = "X"
    ActiveSheet.Unprotect
    If Not Intersect(Target, Range("E5:G103")) Is Nothing Then
        Range(Cells(Target.Row, 5), Cells(Target.Row, 7)).ClearContents
        Target.Value = markiert
    End If
    ActiveSheet.Protect
End Sub

Praktische Beispiele

  • Beispiel 1: Wenn du in Zelle E5 klickst, wird ein "X" gesetzt und die Zellen F5 und G5 werden geleert.
  • Beispiel 2: Bei einem Doppelklick auf eine Zelle mit einem "X" wird dieses entfernt, sodass du die Möglichkeit hast, die Auswahl zu ändern.

Tipps für Profis

  • Nutze bedingte Formatierung: Um deine Zellen visuell hervorzuheben, kannst du die bedingte Formatierung verwenden, um markierte Zellen farblich zu kennzeichnen.
  • Verwende Shortcut-Tasten: Stelle sicher, dass du die wichtigsten Shortcuts in Excel kennst, um schneller arbeiten zu können.

FAQ: Häufige Fragen

1. Wie kann ich die markierten Zellen wieder zurücksetzen?
Du kannst dies tun, indem du die Zelle doppelklickst, was den Inhalt löscht.

2. Funktioniert das in allen Excel-Versionen?
Ja, dieses VBA-Skript sollte in den meisten modernen Excel-Versionen (ab 2010) funktionieren. Stelle sicher, dass Makros aktiviert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige