Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1904to1908
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

Spalten ausgelendet lassen

Spalten ausgelendet lassen
25.10.2022 11:16:42
Chris
Hallo VBAler,
per Togglebutton blende ich einzelne Spalte aus und wieder ein.
Per Commandbutton schreibe ich einen festen Text in eine Zelle einer festen Spalte.
Immer dann, wenn eine Spalte ausgeblendet ist und ich den CB betätige wird die ausgeblendete Spalte
automatisch wieder eingeblendet. Kann man das Einblenden der zuvor ausgeblendeten Spalte unterbinden?
Gruß
Chris
Hier der TB:;

Private Sub ToggleButton1_Click()
If ToggleButton1.Value = True Then
ActiveSheet.Columns("K:K").EntireColumn.Hidden = True
End If
If ToggleButton1.Value = False Then
ActiveSheet.Columns("K:K").EntireColumn.Hidden = False
End If
End Sub
Hier der CB:

Private Sub CommandButton1_Click()
ActiveSheet.Cells(ActiveCell.Row, 26).Value = Me.CommandButton1.Caption
end sub

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten ausgelendet lassen
25.10.2022 11:25:21
Rudi
Hallo,
da wird nichts eingeblendet. Muss an einem anderen Code liegen. Worksheet_Change?
Und dann noch

Private Sub ToggleButton1_Click()
ActiveSheet.Columns("K:K").EntireColumn.Hidden = ToggleButton1.Value
End Sub
reicht vollkommen
Gruß
Rudi
AW: Spalten ausgelendet lassen
25.10.2022 11:26:30
Daniel
Hi
bei mir funktioniert der von dir gezeigte Code so wie von dir gewünscht.
ich sehe da kein problem.
ist das der einzige Code, den du in der Mappe hast oder gibt es noch andere Makros?
Du solltest mal die Datei hochladen.
Gruß Daniel
AW: Spalten ausgelendet lassen
25.10.2022 12:58:54
Chris
Hi,
hochladen schaffe ich heute leider nicht. Morgen. Ja, es gibt noch Makros im Selection_Change.
Kann es sein, dass bei Klick auf einem anderen Button durch das DeSelektieren des Togglebuttons dessen Aktion rückgängig gemacht wird? Denke nicht..
Melde mich morgen.
Chris
Anzeige
AW: Spalten ausgelendet lassen
25.10.2022 14:12:05
Daniel
ohne jetzt genau zu wissen, was du so an Eventmakros hast und was du in diesen machst, ist das schwer zu sagen.
das Makro des Buttons löst auf jeden Fall das Change-Event aus und wenn du Formeln hast, die sich auf Spalte 26 beziehen, auch das Caluclate-Event.
Gruß Daniel
AW: Spalten ausgelendet lassen
26.10.2022 06:54:38
Chris
Hallo zusammen,
ich habe den "Fehler" gefunden. Im Sheet_Activate Ereignis führt der Befehl "ActiveSheet.colums.autofit" dazu, dass bereits ausgeblendete Spalten wieder eingeblendet werden.
Besteht die Möglichkeit "columns.autofit" nur auf die Spalten zu beschränken, die nicht ausgeblendet sind?
Alternativ könnte man jede ausgeblendete Spalte zusätzlich in einer Zelle mit einer 0 versehen und dann per Makro alle Spalten mit 0 nachträglich wieder ausblenden
Gruß
Chris
Anzeige
AW: Spalten ausgelendet lassen
26.10.2022 11:11:56
Daniel
Hi
ja, gibts. du kannst über das Menü Start - Bearbeiten - Suchen und Auswählen - Inhalte auswählen - nur sichtbare Zellen gezielt nur die sichtbaren Zellen auswählen und die ausgeblendeten abwählen.
das geht auch per VBA
Cells.SpecialCells(xlcelltypevisible).EntireColumn.AutoFit
Gruß Daniel
das passiert aber nicht ...
26.10.2022 11:56:15
Rudi
... während der Formeleingabe, da VBA im Editiermodus nicht aktiv ist.
Gruß
Rudi
AW: das passiert aber nicht ...
26.10.2022 15:31:43
Chris
Hallo Daniel,
danke für den Tipp. Ich habe in der Zwischenzeit folgendes versucht.
Mit ToggleButtons von 1 bis 8 blende ich die Spalten K bis R aus (Click Ereignis). Funktioniert.
Bei Start der Userform soll überprüft werden, welche Spalten von K bis R ausgeblendet sind und die Buttens entsprechend "gedrückt" oder nicht-gedrückt dargestellt werden.
Läuft nicht so richtig, da manche Buttons gedrückt erscheinen, obwohl die Spalte nicht zu sehen ist.

Dim TBindex, COLindex As Long
For COLindex = 11 To 18
For TBindex = 1 To 8
Me.Controls("ToggleButton" & TBindex).Value = IIf(ActiveSheet.Columns(COLindex).EntireColumn.Hidden, 1, 0)
If Me.Controls("ToggleButton" & TBindex).Value = True Then
Me.Controls("ToggleButton" & TBindex).BackColor = RGB(255, 192, 192) 'rot
If Me.Controls("ToggleButton" & TBindex).Value = False Then
Me.Controls("ToggleButton" & TBindex).BackColor = RGB(192, 255, 192) 'grün
End If
End If
TBindex = TBindex + 1
COLindex = COLindex + 1
Next TBindex
Next COLindex

Anzeige
AW: das passiert aber nicht ...
26.10.2022 15:32:05
Chris
s. o.
AW: das passiert aber nicht ...
26.10.2022 15:46:10
Rudi
Hallo,
würde ich so machen:

  Dim TBindex As Integer
For TBindex = 1 To 8
With Me.Controls("ToggleButton" & TBindex)
.Value = ActiveSheet.Columns(TBindex + 10).Hidden
If .Value  Then
.BackColor = RGB(255, 192, 192) 'rot
Else
.BackColor = RGB(192, 255, 192) 'grün
End If
End With
Next TBindex
Gruß
Rudi
AW: das passiert aber nicht ...
26.10.2022 15:46:44
Daniel
deinen Gesamtablauf kann ich mit deinen Codefragmenten nicht beurteilen.
im gezeigten Code ist auf jedenfall folgendes falsch:
- die doppelte Schleife. Du hast die Buttons 1-8. diesen sind die Spalten 11-18 zugeordnet, vermutlich 1 zu 11, 2 zu 12, 3 zu 13 usw.
dann reicht eine Schleife, und den zweiten Wert errechnest du durch addtion von 10:
- du zählst dein Schleifenindex hoch. das macht die For-Schleife automatisch, falls nicht anders angegeben mit Step 1 (also +1). das muss man nicht programmieren, wenn an zusätzlich noch "Schleifenzähler + 1" programmiert, hat man einen Step 2, dh jede zweite Nummer wird übersprungen.
- deine IF-Blöcke sind nicht falsch geschreiben. das würdest du sofort sehen, wenn du einrücken würdest.

 For TBindex = 1 To 8
Me.Controls("ToggleButton" & TBindex).Value = IIf(ActiveSheet.Columns(TBindex + 10).EntireColumn.Hidden, 1, 0)
If Me.Controls("ToggleButton" & TBindex).Value = True Then
Me.Controls("ToggleButton" & TBindex).BackColor = RGB(255, 192, 192) 'rot
else
Me.Controls("ToggleButton" & TBindex).BackColor = RGB(192, 255, 192) 'grün
End If
Next TBindex
Gruß Daniel
Anzeige
AW: das passiert aber nicht ...
27.10.2022 06:55:25
Chris
Hallo Daniel,
danke für deine Erklärungen. Nun funktioniert das Makro. Mit Schleifen kenne ich mich noch nicht so aus.
Ich habe unten stehendes, funktionierendes Makro um alle TBs auf einmal zu aktivieren. Erst hatte ich versucht nur eine Schleife zu verwenden.
Es kam die Meldung "Steuervariable bereits verwendet."
Kann man das auch mit nur einer Schleife umsetzen? Gruß Chris

Private Sub ToggleButton9_Click()
Dim TB, TB2 As Long
If Me.ToggleButton9.Value = True Then
For TB = 1 To 8
UserForm2.Controls("Togglebutton" & TB).Value = True
Me.ToggleButton9.Caption = "Alle Spalten aus"
Me.ToggleButton9.BackColor = RGB(255, 192, 192)
Next
End If
If Me.ToggleButton9.Value = False Then
For TB2 = 1 To 8
UserForm2.Controls("Togglebutton" & TB2).Value = False
Me.ToggleButton9.Caption = "Alle Spalten ein"
Me.ToggleButton9.BackColor = vbGreen
Next
End If
End Sub

Anzeige
AW: das passiert aber nicht ...
27.10.2022 08:46:03
Daniel
In die Schleife kommt nur das, was sich über die Schleife auch verändert.
Eigenschaften kann man nicht nur hart setzten, sondern auch von woanders übenehmen

If Me.ToggleButton9.Value = True Then
Me.ToggleButton9.Caption = "Alle Spalten aus"
Me.ToggleButton9.BackColor = RGB(255, 192, 192)
Else
Me.ToggleButton9.Caption = "Alle Spalten ein"
Me.ToggleButton9.BackColor = vbGreen
End If
For TB = 1 To 8
UserForm2.Controls("Togglebutton" & TB).Value = Me.ToggleButton9.Value
Next
End If
Gruß Daniel
AW: das passiert aber nicht ...
27.10.2022 14:29:21
Chris
Danke für die Erklärung. OWT

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige