VBA Hilfe für eine Anfängerin
08.05.2015 09:55:04
Jennifer
ich bezeichne mich als VBA-Anfänger, da ich nicht wirklich viel VBA kann und das bisschen was ich kann habe ich mir über den Herrn Google (vorallem aus diesem Forum) selbst beigebracht. Jetzt versuche ich mich aber schon seit längerem an einer Sache die mich inzwischen richtig zum verzweifeln bringt. Ich hoffe sehr das mir hie jemand helfen kann. Hier mein Problem:
Ich habe eine sehr lange Tabelle (viele Spalten und Zeilen) die in spalte D (mit dem Namen "NLGSB_Sekretariat", da durch ausgeblendete Spalten variabel, also nicht immer D) über die Datenüeberprüfung 4 Listenwerte zur Auswahl hat (texte). Jetzt möchte ich, dass wenn in der Spalte X (mit dem Namen "StatusPlanung_Planungsmanagement", da auch variabel) in einer Zeile "100" steht in der selben Zeile in der Spalte D automatisch "Auftrag abgeschlossen" steht.
Ich bekomme das leider nicht mir der normalen Wenn|Dann-Funktion hin, da meine Listen-Auswahlmöglichkeiten in der Spalte D nicht gleichzeitig mit der Formel in Spalte D anzuwenden ist. Auch habe ich es schon versucht über eine dritte Spalte (hier die formel die sagt wenn in Spalte X 100 ausgewählt, dann schreibe in spalte D "Auftrag abgeschlossen"....was auch nicht funktioniert. Also denke ich fast es klappt nur über ein übergeordneten VBA-Befehl, den ich aber einfach nicht hinbekomme. Für mich als Anfänge kommt erschwerend noch dazu das ich für dieses Tabellenblatt schon zwei Change befehle habe und den dritten Befehl da ja irgendwie einbauen muss, da man ja nicht zwei getrennte Change Befehle machen kann.
Also Ihr seht...viel Verwirrung in meinem Kopf und ich hoffe sehnlichst auf Hilfe.
Hier mein momemtaner Change-Text der noch um den dritten Befehl ergänzt werden muss:
Private Sub Worksheet_Change(ByVal Target As Range)
' Spalten in KWs ändern:
Dim zell As Range
If Not Intersect(Target, Range("P:P")) Is Nothing Then
On Error GoTo ENDE:
Application.EnableEvents = False
For Each zell In Intersect(Target, Range("P:P;Q:Q;U:U"))
If zell.NumberFormat = """KW ""0" Then _
zell.NumberFormat = "m/d/yyyy"
If IsDate(zell) Then
zell = Format(zell.text, "WW", vbMonday, vbFirstFourDays)
zell.NumberFormat = """KW ""0"
Else
zell.NumberFormat = "General"
End If
Next
End If
ENDE:
Application.EnableEvents = True
' Text in Spalte C in großbuchstaben schreiben:
If Target.Cells.Count > 1 Then Exit Sub
If Intersect(Target, Me.Range("C:C")) 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
Vielen Dank und viele Grüße
Jenny