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

VBA Spalten Ein-/Ausblenden

VBA Spalten Ein-/Ausblenden
19.07.2022 16:21:26
Markus
Hallo liebes Forum,
ich habe ein Tabellenblatt, bei dem eine Spalte bereits im Vorfeld als Standard ausgeblendet ist, im Beispiel Spalte G.
Nun habe ich in A1 ein Dropdownfeld und wenn dort eine der Vorgaben ausgewählt wird, dann soll Spalte G eingeblendet werden und dafür dann Spalte H ausgeblendet werden.
Falls es möglich ist, dann auch bitte den Code, wenn ich im Dropdownfeld wieder die Leerzeile auswähle, dass dann Spalte G wieder ausgeblendet wird und Spalte H wieder eingeblendet wird.
Habe mich schon durch Google geklickt und den ein oder anderen Code ausprobiert, allerdings war da nicht das richtige bei.
Weiß bisher, dass ich das im Tabellenblatt als VBAProjekt machen muss, allerdings gibt es da schon ein VBA Projekt:

Private Sub worksheet_change(ByVal Target As Range)
'Quelle: Frank Kabel
If Target.Cells.Count > 1 Then Exit Sub
If Intersect(Target, Me.Range("E4:E500")) Is Nothing Then Exit Sub
On Error GoTo CleanUp:
With Target
If .Value  "" Then
Application.EnableEvents = False
.Value = UCase(.Value)
End If
End With
CleanUp:
Application.EnableEvents = True
End Sub

Hier die Beispieldatei
https://www.herber.de/bbs/user/154251.xlsx

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Spalten Ein-/Ausblenden
19.07.2022 16:33:25
onur
Wenn da schon ein Makro drin ist - wieso postest du dann eine XLSX-Datei?
AW: VBA Spalten Ein-/Ausblenden
19.07.2022 17:04:16
ChrisL
Hi

Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
If Not Intersect(Target, Range("A1")) Is Nothing Then
If Range("A1") = "" Then
Columns(7).Hidden = True
Columns(8).Hidden = False
Else
Columns(7).Hidden = False
Columns(8).Hidden = True
End If
End If
If Not Intersect(Target, Range("E4:E500")) Is Nothing Then
On Error Resume Next
Application.EnableEvents = False
For Each c In Intersect(Target, Range("E4:E500")).Cells
c = UCase(c)
Next c
Application.EnableEvents = True
End If
End Sub
cu
Chris
Anzeige
AW: VBA Spalten Ein-/Ausblenden
19.07.2022 17:17:04
Yal
Hallo Markus,
guter Anfang. Es handelt sich um eine Ereignisprozedure auf Worksheet-Ebene. Diese muss in der Codepane der Arbeitsblatt vorliegen (Rechtsklick auf dem Reiter des Blattes und "Code" anzeigen"). Nur so wird das Ereignis "Worksheet_Change" (also wenn der Inahlt einer Zelle im Blatt sich ändert) ausgelöst.
Dann muss Du in diesem Ereignis prüfen, ob die geänderte Zelle in der Spalte A vorkommt, anschliessend prüfen, ob der neue Inhalt die bedingung trifft, dann das Ein-/Ausblenden setzen.

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub 'Änderung sollte nur eine einzige Zelle betreffen
If Intersect(Target, Me.Range("A:A")) Is Nothing Then Exit Sub 'nur wenn Änderung in Spalte A stattfindet
Application.EnableEvents = False
Select Case Target.Value
Case "es trifft zu", "in dem Fall auch"
Me.Columns(7).Visible = True 'Spalte G (=7) einblenden
Me.Columns(8).Visible = False 'Spalte H (=8) ausblenden
Case Else
Me.Columns(7).Visible = False
Me.Columns(8).Visible = True
End Select
Application.EnableEvents = True
End Sub
Mein Tipp: lese den Code auf Deutsch und laut (also, sodass Du dich selber sprechen hörst). Füllt sich zwar bescheuert, aber wird dein Verständnis für VBA extrem beschleunigen.
VG
Yal
Anzeige
Sorry: .Hidden , nicht .Visible ChrisL hat's.
19.07.2022 17:20:58
Yal
Ich mache immer wieder dieselbe Fehler. Peinlich.

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub 'Änderung sollte nur eine einzioge Zelle betreffen
If Intersect(Target, Me.Range("A:A")) Is Nothing Then Exit Sub 'nur wenn Änderung in Spalte A stattfinden
Application.EnableEvents = False
Select Case Target.Value
Case "es trifft zu", "in dem Fall auch"
Me.Columns(7).Hidden = True 'Spalte G (=7) ausblenden
Me.Columns(8).Hidden = False 'Spalte H (=8) einblenden
Case Else
Me.Columns(7).Hidden = False
Me.Columns(8).Hidden = True
End Select
Application.EnableEvents = True
End Sub

Anzeige
AW: VBA Spalten Ein-/Ausblenden
19.07.2022 18:33:30
GerdL
Hallo, noch ein Gedicht.

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Address(0, 0) = "A1" Then
Columns("G").Hidden = Target  ""
Columns("H").Hidden = Target = ""
End If
End Sub
Gruß Gerd
AW: VBA Spalten Ein-/Ausblenden
20.07.2022 16:31:28
Markus
Hallo zusammen,
erst einmal Danke, für eure Rückmeldungen.
Bin leider noch nicht dazu gekommen, diese auszuprobieren, ich gebe aber Feedback, sobald ich Zeit gefunden habe, die Codes zu integrieren.
@Onur: Es war nur eine Beispieldatei und nicht die Originaldatei und somit auch kein Makro im Hintergrund ;-)
Viele Grüße,
Markus
Anzeige
AW: VBA Spalten Ein-/Ausblenden
21.07.2022 12:39:54
Markus
Hallo zusammen,
der Code von ChrisL funktioniert einwandfrei.
Der von Yal hat auch funktioniert, aber irgendwie hat das Ein- und Ausblenden nicht mehr geklappt, wenn ich im Dropdown-Feld wieder die Leerzeile ausgewählt habe.
GerdL, deiner hat gar nicht funktioniert (schaue ich mir aber nochmal an, vielleicht habe ich da auch irgendwo nen Bock drin).
Danke an Alle und auch dir, Yal, für den Tip mit dem laut vorlesen. Ja, man kommt sich blöd vor, aber es hilft tatsächlich, den Code zu verstehen ;-)
Viele Grüße,
Markus

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige