Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1556to1560
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Code für ToggleButton von Nepumuk

Code für ToggleButton von Nepumuk
06.05.2017 22:18:20
Nepumuk
Guten Abend allerseits,
folgenden Code habe ich von Nepumuk bekommen.
Private Sub ToggleButton1_Click()
Dim objCell As Range
If ToggleButton1.Value Then
ToggleButton1.Caption = "128er Feld"
Else
ToggleButton1.Caption = "256er Feld"
End If
For Each objCell In Range("CZ4:DB80")
Select Case objCell.Row Mod 10
Case 4 To 6, 9: objCell.EntireRow.Hidden = ToggleButton1.Value
End Select
Next
End Sub
Bei erster Betrachtung sah es so aus,als wenn es passen würde.Nun musste ich feststellen,das ab Zeile 9 immer eine Zeile zuviel zu sehen ist. Es müssten eigentlich noch jeweils die Zeilen 10,20,30 usw auch noch ausgeblendet werden,dann passt es aber nicht mehr mit jeder 10. Zeile.
In der Beispieltabelle habe ich jeweils ein Beispiel,wie es nach betätigen des Buttons aussieht und wie es aussehen soll.Ausserdem ist darin nur ein achtel der Tatsächlichen Zellen drin. Die letzte Zeile ist 639 bzw 640.
https://www.herber.de/bbs/user/113374.xls
Lg Frank

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code für ToggleButton von Nepumuk
07.05.2017 00:14:26
Nepumuk
Nachtrag: konnte das Problem selber lösen.
Case 4 To 6, 8 To 9: objCell.EntireRow.Hidden = ToggleButton1.Value
Zeile 8 hinzugefügt und es passt,zumindest im Moment.
Lg Frank
Problem gelöst,aber wie weiter machen
07.05.2017 00:50:05
Frank
Hallo,
nachdem ich nun das Problem mit dem ToogleButton gelöst habe,möchte ich nun weiter machen.
Private Sub ToggleButton1_Click()
Dim objCell As Range
If ToggleButton1.Value Then
ToggleButton1.Caption = "128er Feld"
Else
ToggleButton1.Caption = "256er Feld"
End If
For Each objCell In Range("DP4:DP639")
Select Case objCell.Row Mod 10
Case 4 To 6, 8 To 9: objCell.EntireRow.Hidden = ToggleButton1.Value
End Select
Next
End Sub
Dieser Code steht ja nu direkt im entsprechenden Tabellenblatt(TurnierBoard). Ich möchte nun ein neues Modul einfügen und mit der Zeile " If ToggleButton1.Value Then" weiter machen.
Was soviel heisst wie: Wenn ToogleButton gedrückt,dann Rahmen in den Zellen ..... schwarz
(so zum Beispiel :

With Range("DN17").Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = 1
End With)
Wie kann ich aus einem Modul,direkt diese Zeile ansprechen?
Lg Frank
Anzeige
AW: Problem gelöst,aber wie weiter machen
07.05.2017 09:46:55
Hajo_Zi
die spricht Du doch Direkt an
With Range("DN17")
Warum Modul?

AW: Problem gelöst,aber wie weiter machen
07.05.2017 10:17:19
Frank
Moin Hajo,
ich hab gedacht wegen der Übersichtlichkeit. Wo gehört es denn am besten hin?Und wie formuliere ich das richtig?Hab es jetzt mal direkt mit in die Prozedur gepackt
Option Explicit
Private Sub ToggleButton1_Click()
Dim objCell As Range
If ToggleButton1.Value Then
ToggleButton1.Caption = "128er Feld"
Else
ToggleButton1.Caption = "256er Feld"
End If
For Each objCell In Range("DP4:DP639")
Select Case objCell.Row Mod 10
Case 4 To 6, 8 To 9: objCell.EntireRow.Hidden = ToggleButton1.Value
End Select
Next
If ToggleButton1.Value Then
With Range("DN17").Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = 1
End With
End If
End Sub
Ist das so in Ordnung oder kann man es noch besser formulieren?
Lg Frank
Anzeige
AW: Problem gelöst,aber wie weiter machen
07.05.2017 10:20:22
Hajo_Zi
ich hätte es an eine andere Stelle geschrieben.
Ich baue keine Datei nach. Die Zeit hat schon jemand investiert.
Ein Nachbau sieht meist anders aus als das Original. Darum sollte das Original verlinkt werden.
Option Explicit
Private Sub ToggleButton1_Click()
Dim objCell As Range
If ToggleButton1.Value Then
ToggleButton1.Caption = "128er Feld"
With Range("DN17").Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = 1
End With
Else
ToggleButton1.Caption = "256er Feld"
End If
For Each objCell In Range("DP4:DP639")
Select Case objCell.Row Mod 10
Case 4 To 6, 8 To 9: objCell.EntireRow.Hidden = ToggleButton1.Value
End Select
Next
End Sub
Gruß Hajo
Anzeige
AW: Problem gelöst,aber wie weiter machen
07.05.2017 11:27:12
Frank
Hallo Hajo,
hab deine Antwort leider vorhin erst gesehen,sorry.Hab deine Lösung jedenfalls mit rein genommen(zwar auskommentiert),man weiß ja nie wann man das mal gebrauchen kann.
Lg Frank
AW: Code für ToggleButton von Nepumuk
07.05.2017 10:00:24
Nepumuk
Hallo Frank,
meinst du so?
Sub teste()
If Worksheets("Tabelle1").ToggleButton1 Then
With Worksheets("Tabelle1").Range("DN17").Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = 1
End With
End If
End Sub
Gruß Gerd
AW: Code für ToggleButton von Nepumuk
07.05.2017 10:27:49
Nepumuk
Guten Morgen Gerd,
genauso hab ich mir das vorgestellt.Nun soll dieses Makro ja direkt beim Betätigen des Buttons angestossen werden,ich weiß das geht geht irgendwie mit der " Call-Anweisung",nur an welche Stelle gehört die Anweisung.
Ich könnte mir vorstellen,das es für euch Profis wenig Sinn macht,die weitere Programmierung in ein separates Modul zu packen,ihr würdet sehr wahrscheinlich direkt weiter in der Prozedur vom ToggleButton programmieren.
Lg Frank
Anzeige
AW: Code für ToggleButton von Nepumuk
07.05.2017 10:47:27
Nepumuk
Hallo Frank,
hast du dir die zweite Antwort von Hajo eigentlich nicht angeschaut.
Wenn dein ToggleButton den Namen ToggleButton1 hat und auf Tabellenblatt 1 ist, dann den kompletten Code von Hajo einfach ins Tabellenblatt 1 kopieren.
Rechtsklick aur den Blattreiter - Code anzeigen - Code rechts ins Codefenster kopieren.
Gruß Werner
AW: Code für ToggleButton von Nepumuk
07.05.2017 11:03:09
Nepumuk
Hallo Werner,
ups,die Antwort ist bei mir irgendwie durch gerutscht,hab sie auf deinen Hinweis jetzt erst gesehen.
Funktioniert natürlich auch aber für mich als Anfänger gefällt mir die Lösung von Gerd besser.
Hab das mit der "Call-Anweisung" auch hinbekommen
Private Sub ToggleButton1_Click()
Dim objCell As Range
If ToggleButton1.Value Then
ToggleButton1.Caption = "128er Feld"
Else
ToggleButton1.Caption = "256er Feld"
End If
For Each objCell In Range("DP4:DP639")
Select Case objCell.Row Mod 10
Case 4 To 6, 8 To 9: objCell.EntireRow.Hidden = ToggleButton1.Value
End Select
Next
Call teste
End Sub
Sub teste()
If Worksheets("Turnier-Board").ToggleButton1 Then
With Worksheets("Turnier-Board").Range("DN17").Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = 1
End With
End If
End Sub
So kann ich bei Bedarf die Call-Anweisung einfach auskommentieren.
Lg Frank
Anzeige
Gerne u. Danke für die Rückmeldung
07.05.2017 11:21:03
Werner
Hallo Frank,
aber du solltest eine Rückmeldung an Hajo nicht vergessen.
Gruß Werner
AW: Gerne u. Danke für die Rückmeldung
07.05.2017 14:41:13
Frank
Habe mir jetzt mal was gebastelt,was auch soweit funktioniert.
Sub teste()
If Worksheets("Turnier-Board").ToggleButton1 Then
'  "Überflüssige Rahmen werden schwarz gefärbt
With Worksheets("Turnier-Board").Range("DN17").Borders(xlEdgeLeft)  ' "Rahmen links"
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = 1
End With
With Worksheets("Turnier-Board").Range("DT17").Borders(xlEdgeRight)  ' "Rahmen rechts"
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = 1
End With
'         With Worksheets("Turnier-Board").Range("DN20").Borders(xlEdgeTop)  ' "Rahmen oben"
'             .LineStyle = xlContinuous
'             .Weight = xlMedium
'             .ColorIndex = 1
'         End With
With Worksheets("Turnier-Board").Range("DN17,DT17").Borders(xlEdgeBottom)  ' "Rahmen  _
unten"
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = 1
End With
'  "Neue Rahmen werden erstellt"
With Worksheets("Turnier-Board").Range("DN12").Borders(xlEdgeLeft)  ' "Rahmen links"
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = 2
End With
With Worksheets("Turnier-Board").Range("DT12").Borders(xlEdgeRight)  ' "Rahmen rechts"
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = 2
End With
End If
End Sub
Nun habe ich festgestellt,wenn ich den ToggleBotton erneut drücke,also quasi wieder zurück schalte,fehlen die Rahmen bei DN17,DT17 "oben" und die Rahmen bei DN12 "links" und DT12 "rechts bleiben erhalten.
Für mich bis hierher sogar nachvollziehbar,da die Else-Anweisung fehlt. Wie bewerkstellige ich das nun,dass ich den Zustand bekomme,bevor der Button gedrückt wurde? Also im Zustand "falsch"
Hab die Datei mal hochgeladen:
https://www.herber.de/bbs/user/113380.xls
Lg Frank
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige