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

Aktualisierung VBA-Code in Arbeitsblatt

Aktualisierung VBA-Code in Arbeitsblatt
18.08.2020 10:50:05
Bernhard
Hallo,
ich hoffe, dass mir hier jemand bei nachfolgendem Problem helfen kann. Ich habe in einem Excel-Tabellenblatt eine Frageliste erstellt, bei der die Antworten jeweils mit "x" gegeben werden können. Je Nachdem, ob bei einer Frage "x" für "trifft zu" eingegeben wird blenden sich dann bestimmte Zeilen aus. Wenn das "x" wieder gelöscht wird, dann blenden sich die Zeilen wieder ein. Das funktioniert mit folgendem Code (auszugsweise dargestellt) soweit auch gut:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$I$98" Then
If Target.Value = "x" Then
Rows("170:224").Hidden = True
Else
Rows("170:224").Hidden = False
End If
ElseIf Target.Address = "$I$99" Then
If Target.Value = "x" Then
Rows("225:228").Hidden = True
Rows("579:583").Hidden = True
Else
Rows("225:228").Hidden = False
Rows("579:583").Hidden = False
End If
Ende If
End Sub
Das Problem ist, dass wenn man eine ursprünglich gemachte Eingabe nicht einzeln wieder löscht (dh in die betroffene Zelle klickt, das "x" löscht und dann die Zelle wieder verlässt), sondern mehrere Zellen markiert und mehrere Werte gleichzeitig löscht, dann werden die Zeilen nicht wieder eingeblendet. Man muss immer jede Zelle einzeln anwählen, damit das funktioniert. Ich habe schon mit "Refresh.All" und "Calculate" herumprobiert, komme aber zu keiner Lösung. Es wäre auch ok, wenn die Neuberechnung nicht automatisch, sondern durch Klicken eines Steuerungselements initiiert wird. Das habe ich leider aber ebenso wenig zusammengebracht.
Vielen Dank für eure Hilfe!
Bernhard

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

Betreff
Datum
Anwender
Anzeige
AW: Aktualisierung VBA-Code in Arbeitsblatt
18.08.2020 10:59:49
Bernd
Servus Bernhard,
teste mal:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
If Target.Address = "$I$98" Then
If Target.Value = "x" Then
Rows("170:224").Hidden = True
Else
Rows("170:224").Hidden = False
End If
ElseIf Target.Address = "$I$99" Then
If Target.Value = "x" Then
Rows("225:228").Hidden = True
Rows("579:583").Hidden = True
Else
Rows("225:228").Hidden = False
Rows("579:583").Hidden = False
End If
End If
Else
Rows("1:1000").Hidden = False ' ggf. noch anpassen
End If
End Sub
Grüße, Bernd
AW: Aktualisierung VBA-Code in Arbeitsblatt
18.08.2020 11:29:32
Bernhard
Vielen Dank! Hat super funktioniert!
Anzeige
AW: Aktualisierung VBA-Code in Arbeitsblatt
18.08.2020 11:56:08
Bernhard
Da habe ich mich wohl zu früh gefreut. Die Anpassung des Codes bewirkt zwar, dass die Zeilen eingeblendet werden, wenn ich das "x" in mehreren Zellen gleichzeitig lösche, es blendet mir aber auch Zeilen wieder ein, wo das "x" stehen geblieben ist.
AW: Aktualisierung VBA-Code in Arbeitsblatt
18.08.2020 11:00:21
Regina
Hi Bernhard,
an dem Problem habe ich mir auch schon mal die Zählen ausgebissen. Wenn Du das Ganze über eine Schaltfläche lösen möchtest, könnte das ein Ansatz sein:
Public Sub aktualisierung()
Dim lng_zeile As Long
With Worksheets("Tabelle1") ' Anpassen!
For lng_zeile = 1 To 99  ' Läuft von Zeile 1 bis 99, ggf. anpassen
Select Case lng_zeile
' Case 1 - 97
Case 98
If .Cells(lng_zeile, 9) = "x" Then
.Rows("170:224").Hidden = True
Else
.Rows("170:224").Hidden = False
End If
Case 99
If .Cells(lng_zeile, 9) = "x" Then
.Rows("225:228").Hidden = True
.Rows("579:583").Hidden = True
Else
.Rows("225:228").Hidden = False
.Rows("579:583").Hidden = False
End If
End If
End Select
Next
End With
End Sub
Gruß Regina
Anzeige
AW: Aktualisierung VBA-Code in Arbeitsblatt
18.08.2020 11:07:13
UweD
Hallo
versuch es mal so

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Z
For Each Z In Target
If Z.Address = "$I$98" Then
If Z.Value = "x" Then
Rows("170:224").Hidden = True
Else
Rows("170:224").Hidden = False
End If
End If
If Z.Address = "$I$99" Then
If Z.Value = "x" Then
Rows("225:228").Hidden = True
Rows("579:583").Hidden = True
Else
Rows("225:228").Hidden = False
Rows("579:583").Hidden = False
End If
End If
Next
End Sub

LG UweD
Kürzer..
18.08.2020 11:11:22
UweD

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Z
For Each Z In Target
If Z.Address = "$I$98" Then
Rows("170:224").Hidden = (Z.Value = "x")
End If
If Z.Address = "$I$99" Then
Rows("225:228").Hidden = (Z.Value = "x")
Rows("579:583").Hidden = (Z.Value = "x")
End If
Next
End Sub

LG UweD
Anzeige
AW: Kürzer..
18.08.2020 11:31:03
Bernhard
Danke an euch alle für die Unterstützung!!

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige