Automatisches Anlegen eines Toggle-Buttons
Hallo,
ich stehe gerade vor einem kleinen Problem.
In meiner Excel-Datei werden soviele Spalten mit einem Rahmen formatiert, wie es angegeben wird Zeilen von-bis), um Pflichteingaben kennzuzeichnen.
Bei diesen Feldern wird normalerweise manuell ein Zahlenwert eingegeben.
Allerdings könnte auch mal ein klar definierter Text drin stehen ("negativ" bzw. "positiv")
Damit der User, wenn er keinen Wert, sondern nur "negativ" oder "positiv" eintragen nöchte will ich iHm etwas Tipparbeit ersparen.
Dazu möchte ich gerne einen Toggle-Button zur Auswahl dieser zwei Wete anzeigen. In meinem Fall müssten also dieToggon-Button in jeder Zelle des definierten Bereiches erzeugt werden und damit zur Auswahl zur Verfügung stehen. Der ausgewählte Text soll dann in der Zelle erscheinenund eventuell ein weiteres Makro gestartet werden.
Wie könnte ich das hinbekommen?
Ach so, eines wundert mich auch noch sehr. den Zeilenbereich kann man ja hier frei eingeben. Die Zellformatierung soll aber definitiv erst ab der Zeile 7 anfangen, selbst wenn der Startwert kleiner als 7 ist.
Angedacht hatte ich es so:
Ich hatte es probiert mit:
Leider macht mein Excel 2007 aber das aber nicht mit, sondern ignorirt es einfach.an dieser Stelle
Nun hab ich mittels folgender Krücke die Eingabe abgeprüft und im Falle "<7" einfach den Wer der Variable mit 7 überschrieben um auf mindestens 7 zu erhöhen.
Nicht gerade besonders elegant...
Vielleicht hat da auch jemand eine Idee?
Vielen Dank im voraus !!!
Torsten
ich stehe gerade vor einem kleinen Problem.
In meiner Excel-Datei werden soviele Spalten mit einem Rahmen formatiert, wie es angegeben wird Zeilen von-bis), um Pflichteingaben kennzuzeichnen.
Option Explicit
Const StartZeile = 7
Sub Datenübernahme()
Dim Cell As Range
Dim a As Integer
Dim b As Integer
Dim c As String
Dim d As String
Dim e As Integer
a = Range("I1").Value
b = Range("J1").Value
c = Range("H3").Value
d = Range("I3").Value
e = Range("J3").Value
If a < 7 Then
a = 7
End If
' Pflichtfelder zum Einträgen formatieren
Range("H7:K20").Select
With Selection.Borders
.LineStyle = xlNone
End With
With Selection.Interior
.ColorIndex = xlNone
End With
Range(("H" & a) & ":" & ("K" & b)).Select
For Each Cell In Selection
If Cell.Row >= StartZeile Then
With Selection.Borders
.LineStyle = xlContinuous
End With
With Selection.Interior
.ColorIndex = 27
End With
End If
Next
...
Bei diesen Feldern wird normalerweise manuell ein Zahlenwert eingegeben.
Allerdings könnte auch mal ein klar definierter Text drin stehen ("negativ" bzw. "positiv")
Damit der User, wenn er keinen Wert, sondern nur "negativ" oder "positiv" eintragen nöchte will ich iHm etwas Tipparbeit ersparen.
Dazu möchte ich gerne einen Toggle-Button zur Auswahl dieser zwei Wete anzeigen. In meinem Fall müssten also dieToggon-Button in jeder Zelle des definierten Bereiches erzeugt werden und damit zur Auswahl zur Verfügung stehen. Der ausgewählte Text soll dann in der Zelle erscheinenund eventuell ein weiteres Makro gestartet werden.
Wie könnte ich das hinbekommen?
Ach so, eines wundert mich auch noch sehr. den Zeilenbereich kann man ja hier frei eingeben. Die Zellformatierung soll aber definitiv erst ab der Zeile 7 anfangen, selbst wenn der Startwert kleiner als 7 ist.
Angedacht hatte ich es so:
Ich hatte es probiert mit:
Range(("H" & a) & ":" & ("K" & b)).Select
For Each Cell In Selection
Range(("H" & a) & ":" & ("K" & b)).Select
For Each Cell In Selection
If Cell.Row >= StartZeile Then
Leider macht mein Excel 2007 aber das aber nicht mit, sondern ignorirt es einfach.an dieser Stelle
... If Cell.Row >= StartZeile Then ...
Nun hab ich mittels folgender Krücke die Eingabe abgeprüft und im Falle "<7" einfach den Wer der Variable mit 7 überschrieben um auf mindestens 7 zu erhöhen.
If a < 7 Then
a = 7
End If
Nicht gerade besonders elegant...
Vielleicht hat da auch jemand eine Idee?
Vielen Dank im voraus !!!
Torsten
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 171053
Url: https://administrator.de/forum/automatisches-anlegen-eines-toggle-buttons-171053.html
Ausgedruckt am: 12.04.2025 um 03:04 Uhr
5 Kommentare
Neuester Kommentar
Hallo Torsten,
du brauchst keine Buttons. Excel kennt die sogenannte "Gültigkeit" für einen Zelleninhalt. Vorgegebene Werte können über einen Zellen-Dropdown ausgewählt werden. Sollte der User trotzdem einen anderen Wert eingeben, so kann dies überprüft und verhindert werden.
Beispiel:
Das zweite Problem kann ich mir nur so erklären, dass du explizit angeben musst, dass sich in Variable "Cell" auch wirklich ein Cells Object befinden soll. Also so:
Grüße
rubberman
du brauchst keine Buttons. Excel kennt die sogenannte "Gültigkeit" für einen Zelleninhalt. Vorgegebene Werte können über einen Zellen-Dropdown ausgewählt werden. Sollte der User trotzdem einen anderen Wert eingeben, so kann dies überprüft und verhindert werden.
Beispiel:
Sub AddValidation()
With ThisWorkbook.Sheets("Tabelle1").Range("A1").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:="negativ,positiv"
.IgnoreBlank = True
.InCellDropdown = True
.ErrorTitle = "Falscheingabe"
.ErrorMessage = "Entweder ""negativ"" oder ""positiv"" eingeben."
.ShowInput = False
.ShowError = True
End With
End Sub
Das zweite Problem kann ich mir nur so erklären, dass du explizit angeben musst, dass sich in Variable "Cell" auch wirklich ein Cells Object befinden soll. Also so:
For Each Cell In Selection.Cells
Grüße
rubberman

Hallo Torsten!
Du hast vergessen die Varible b auf >= 7 (StartZeile) zu prüfen.
Etwas gekürzte Variante:
Gruß Dieter
Du hast vergessen die Varible b auf >= 7 (StartZeile) zu prüfen.
Etwas gekürzte Variante:
Option Explicit
Const StartZeile = 7
Sub Datenübernahme()
Dim a As Long
Dim b As Long
Dim c As Long
Dim d As Long
Dim e As Long
a = Range("I1").Value
b = Range("J1").Value
c = Range("H3").Value
d = Range("I3").Value
e = Range("J3").Value
If a < StartZeile Then a = StartZeile
If b < StartZeile Then b = StartZeile
' Pflichtfelder zum Einträgen formatieren
With Range("H7:K20")
.Borders.LineStyle = xlNone
.Interior.ColorIndex = xlNone
End With
With Range(Cells(a, "H"), Cells(b, "K"))
.Borders.LineStyle = xlContinuous
.Interior.ColorIndex = 27
End With
End Sub
Gruß Dieter
Hallo Torsten
Grüße
rubberman
Zitat von @goodbytes:
Wenn ich nicht nur eine Zelle oder gleich die ganze Spalte auf Gültigkeit prüfe, sondern nur einen bestimmten Bereich
(z.B. "C7:C20"), wie kann ich das realisieren.
Indem du genau diesen Zellenbereich angibst (statt "A1" in meinem Beispiel).Wenn ich nicht nur eine Zelle oder gleich die ganze Spalte auf Gültigkeit prüfe, sondern nur einen bestimmten Bereich
(z.B. "C7:C20"), wie kann ich das realisieren.
Zitat von @goodbytes:
Ein zweites Problem ist: In der Zelle kann danach "negativ" oder "positiv" stehen oder auch manuell ein Wert
eingetragen werden.
Wenn ein Wert eingetragen wird läuft die Prüfung aber natürlich auf einen Fehler. Lässt sich das irgendwie
vermeiden?
Setze Ein zweites Problem ist: In der Zelle kann danach "negativ" oder "positiv" stehen oder auch manuell ein Wert
eingetragen werden.
Wenn ein Wert eingetragen wird läuft die Prüfung aber natürlich auf einen Fehler. Lässt sich das irgendwie
vermeiden?
.ShowError = False
Zitat von @goodbytes:
Oder könnte ich es irgendwie so realisieren, das die Zelle bei Eingabe von beispielsweise "n" und Enter einfach
"negativ" in die Zelle schreibt?
Nicht mit dieser Methode.Oder könnte ich es irgendwie so realisieren, das die Zelle bei Eingabe von beispielsweise "n" und Enter einfach
"negativ" in die Zelle schreibt?
Grüße
rubberman