Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA: Auswahl einer Zelle bei Änderung einer Zelle

VBA: Auswahl einer Zelle bei Änderung einer Zelle
16.06.2014 14:04:46
Erik
Hallo Leute,
ich weiß nicht recht wie ich das Problem darstellen bzw. schildern soll, aber ich versuchs mal.
Aktuell sieht der Code in der Arbeitsmappe wie folgt aus:
Code:

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect Password:="123"
If Target.Address = "$B$22" Then Range("AO:AZ").EntireColumn.Hidden = True = isEmpty(Target)
If Target.Address = "$B$22" Then Range("BA:BA").EntireColumn.Hidden = True = IsEmpty(Target)
If Target.Address = "$B$22" Then Range("23:24").EntireRow.Hidden = True = IsEmpty(Target)
If Target.Address = "$B$22" Then Range("AC:AM").EntireColumn.Hidden = False = IsEmpty(Target)
If Target.Address = "$B$22" Then Range("AO:AZ").EntireColumn.Hidden = False =
Not IsEmpty(Target)
If Target.Address = "$B$22" Then Range("AC:AM").EntireColumn.Hidden = True =
Not IsEmpty(Target)
If Target.Address = "$B$22" Then Range("BA:BA").EntireColumn.Hidden = True =
Not IsEmpty(Target)
If Target.Address = "$B$22" Then Range("23:24").EntireRow.Hidden = False =
Not IsEmpty(Target)
If Target.Address = "$B$23" Then Range("AO:AZ").EntireColumn.Hidden = True =
(Range("B24")  0 And Not IsEmpty(Range("B22"))))
If Target.Address = "$B$23" Then Range("AC:AM").EntireColumn.Hidden = False =
(Range("B24")  0 And Not IsEmpty(Range("B22"))))
If Target.Address = "$B$23" Then Range("BA:BA").EntireColumn.Hidden = False =
(Range("B24")  0 And Not IsEmpty(Range("B22"))))
If Target.Address = "$B$22" Then Range("BA:BA").EntireColumn.Hidden = True =
IsEmpty(Target)
ActiveSheet.Protect Password:="123"
End Sub

Jetzt soll noch hinzugefügt werden, dass folgendes passiert:
Wenn in der Zelle B22 etwas verändert wird, dann soll eine MSG Box aufpoppen und anschließend die Zelle B23 auswählen (Select) und danach SendKeys {F2}
Hat jemand eine Idee?
Vielen Dank!
Erik

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Auswahl einer Zelle bei Änderung einer Zelle
16.06.2014 15:35:30
Rudi
Hallo,
hast du den leisesten Hauch einer Ahnung davon, was du machst?
das
If Target.Address = "$B$22" Then Range("AO:AZ").EntireColumn.Hidden = True = isEmpty(Target)

und das
If Target.Address = "$B$22" Then Range("AO:AZ").EntireColumn.Hidden = False =
Not IsEmpty(Target)

machen exakt das gleiche. Spalte BA behandelst du gleich 3x.
Und = True = bzw. = False = ist auch Überflüssig. .Hidden = isEmpty(...) bzw. = Not isEmpty(...)reicht.
Wenn in der Zelle B22 etwas verändert wird,
Was willst du u.U. mit dem Cursor in einer ausgeblendeten Zelle? Wozu F2?
Gruß
Rudi

Anzeige
AW: VBA: Auswahl einer Zelle bei Änderung einer Zelle
16.06.2014 15:55:52
Erik
Hallo Rudi,
danke für deine Antwort.
Ich versuche es mal zu anhand BA zu erklären warum und wesehalb:
in der Spalte BA steht eine Information, diese soll aber nur dann eingeblendet werden, wenn B22 nicht leer ist und B24 kleiner ist als B12. Ansonsten soll es immer ausgeblendet bleiben. Deswegen habe ich auch bei Fall 1, B22 ist leer, BA ausblenden, B22 ist nicht leer und B24 ist nicht kleiner als B12 oder B24 = 0, dann BA ausblenden, BA einblenden wenn B22 nicht leer, B24 kleiner als B12 ist und B24 nicht 0 ist.
Wenn ich nur für BA eine IF für die Einblendung schreiben würde, dann würde es ja immer eingeblendet werden wenn es diesen fall gibt.
Vielleicht habe ich irgendwo einen Denkfehler, aber ich habe hier zum ersten mal mit VBA gearbeitet und mir Befehle zusammen gesucht, nach ellen langen versuchen war dies jener, welcher genau das machte was ich wollte.
Es gibt 3 Einstellmöglichkeiten die die Excel Liste verschiedene Spalten bzw. Zellen ausblenden soll.
Nun zum Fall, was ich noch hinzufügen will:
Es soll, nur wenn in der Spalte B22 etwas geändert wurde und B22 nicht leer ist, dann soll eine MSG erfolgen, welche darauf hinweisen soll, das unbedingt B23 geändert werden soll, deswegen soll nach dem if B22 geändert und nicht leer, dann select B23 und anschließend sendkey f2 damit dieses Feld in den Bearbeitungsmodus wechselt.
Verstehst halber Wege was ich erreichen will?
Vielleicht änderst du etwas den Ton, ich fand deine Nachricht zum teil sehr abwertend meiner Arbeit gegenüber, ich bin kein VBA spezi und habe mir alles zusammengesucht und freue mich das es funktioniert... nur mal so neben bei... dennoch bin ich froh über jede Hilfe und jeden Ansatz bzw. auch Kritik.
Danke
Erik

Anzeige
AW: VBA: Auswahl einer Zelle bei Änderung einer Zelle
16.06.2014 16:20:06
Rudi
Hallo,
dennoch bin ich froh über jede Hilfe und jeden Ansatz bzw. auch Kritik.
Kritik war ja genug. Kannst dich also ganz doll freuen ;-)
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect Password:="123"
If Target.Address = "$B$22" Then
Range("AO:AZ").EntireColumn.Hidden = IsEmpty(Target)
Range("BA:BA").EntireColumn.Hidden = IsEmpty(Target)
Range("23:24").EntireRow.Hidden = IsEmpty(Target)
Range("AC:AM").EntireColumn.Hidden = Not IsEmpty(Target)
If Target  "" Then
MsgBox "B23 ändern", , "Meldung"
Range("B23").Select
Application.SendKeys "{F2}"
End If
End If
If Target.Address = "$B$23" Then
Range("AO:AZ").EntireColumn.Hidden = _
(Range("B24")  0 And Not IsEmpty(Range("B22"))))
Range("AC:AM").EntireColumn.Hidden = Not Range("AO:AO").EntireColumn.Hidden
Range("BA:BA").EntireColumn.Hidden = Not Range("AO:AO").EntireColumn.Hidden
End If
ActiveSheet.Protect Password:="123"
End Sub

Gruß
Rudi

Anzeige
AW: VBA: Auswahl einer Zelle bei Änderung einer Zelle
16.06.2014 16:27:22
Erik
Hallo Rudi,
ich freue mich nicht nur über deine Kritik ;-), sondern viel mehr bzw. hauptsächlich über den Code... Scheint als ginge es doch einfacher und überschaubarer, aber wie gesagt, mein erstes VBA...
1000 dank!
Erik

378 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige