Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1424to1428
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 Hilfe für eine Anfängerin

VBA Hilfe für eine Anfängerin
08.05.2015 09:55:04
Jennifer
Hallo zusammen,
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

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Hilfe für eine Anfängerin
08.05.2015 10:22:32
Kenny
Hi,
probiere es mal so :)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim spalte(2) As Integer
Application.EnableEvents = False
For gesuchtespalte = 1 To Me.UsedRange.Columns.Count
If Me.Cells(1, gesuchtespalte) = "NLGSB_Sekretariat" Then
spalte(1) = gesuchtespalte
End If
If Me.Cells(1, gesuchtespalte) = "StatusPlanung_Planungsmanagement" Then
spalte(2) = gesuchtespalte
End If
Next
For zeile = 2 To 10
If Me.Cells(zeile, spalte(2)) = 100 Then
Me.Cells(zeile, spalte(1)) = "Auftrag abgeschlossen"
End If
Next
Application.EnableEvents = True
End Sub

Anzeige
AW: VBA Hilfe für eine Anfängerin
08.05.2015 11:44:24
Jennifer
Hallo! Und vielen Dank für deine Hilfe :-)
Ich hab es mal eingesetzt...aber er zeigt leider eine Fehlermeldung:
Userbild
Und wie kann ich dann noch den Code zu meinen anderen beiden Changes zusammenbringen?
Vielen Dank nochmal!
und nette Grüße!

AW: VBA Hilfe für eine Anfängerin
08.05.2015 13:14:35
Kenny
Hat deine Spalte auch genau diesen Namen?
"StatusPlanung_Planungsmanagement"
Und sind alle Spalten der Tabelle beschriftet oder sind manche leer zwischendrin?

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
Dim spalte(2) As Integer
Application.EnableEvents = False
endespalte = 1
do while me.cells(1,endespalte)  ""
endespalte = endespalte + 1
loop
For gesuchtespalte = 1 To endespalte - 1
If Me.Cells(1, gesuchtespalte) = "NLGSB_Sekretariat" Then
spalte(1) = gesuchtespalte
End If
If Me.Cells(1, gesuchtespalte) = "StatusPlanung_Planungsmanagement" Then
spalte(2) = gesuchtespalte
End If
Next
For zeile = 2 To me.usedrange.rows.count
If me.Cells(zeile, spalte(2)) = 100 Then
me.Cells(zeile, spalte(1)) = "Auftrag abgeschlossen"
End If
Next
Application.EnableEvents = True
End Sub

Anzeige
AW: VBA Hilfe für eine Anfängerin
08.05.2015 15:23:08
Jennifer
ich hab mal alle spalten überprüft, sie sind innerhalb der tabelle alle benannt.
ich habe die datei mal beigefügt, vielleicht kannst du dann eher sehen was ich falsch gemacht habe.
https://www.herber.de/bbs/user/97543.zip
ich habe die Datei aus datenschutzgründen meiner firma und zur minimierung der max.upload-größe noch ausgedünnt...also nicht wundern warum alles so leer ist :-)
Viele Grüße!
Jenny

AW: VBA Hilfe für eine Anfängerin
08.05.2015 15:59:49
Jennifer
ich hab mal alle spalten überprüft, sie sind innerhalb der tabelle alle benannt.
ich habe die datei mal beigefügt, vielleicht kannst du dann eher sehen was ich falsch gemacht habe.
https://www.herber.de/bbs/user/97543.zip
ich habe die Datei aus datenschutzgründen meiner firma und zur minimierung der max.upload-größe noch ausgedünnt...also nicht wundern warum alles so leer ist :-)
Viele Grüße!
Jenny

Anzeige
AW: VBA Hilfe für eine Anfängerin
09.05.2015 12:58:32
Kenny
Hallo Jenny,
ich kann das Gaze nicht wirklich testen, weil da die ganze Zeit Fehlermeldung auftauchen, dass ich irgendwelche Bibliotheken und Dateien nicht habe, die du da benutzt.
Aber soweit ich das beurteilen kann, heißen die Spaltem, um die es geht:
Status Planung
Projektphase
Außerdem wird auch in einer anderen Zeile gesucht, als ich das jetzt angenommen habe.
Also versuche es mal so:

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
Dim spalte(2) As Integer
Application.EnableEvents = False
endespalte = 1
do while me.cells(4,endespalte)  ""
endespalte = endespalte + 1
loop
For gesuchtespalte = 1 To endespalte - 1
If Me.Cells(4, gesuchtespalte) = "Projektphase" Then
spalte(1) = gesuchtespalte
End If
If Me.Cells(4, gesuchtespalte) = "Status Planung" Then
spalte(2) = gesuchtespalte
End If
Next
For zeile = 6 To me.usedrange.rows.count
If me.Cells(zeile, spalte(2)) = 100 Then
me.Cells(zeile, spalte(1)) = "Auftrag abgeschlossen"
End If
Next
Application.EnableEvents = True
End Sub
Hoffe es klappt jetzt!!!

Anzeige
AW: VBA Hilfe für eine Anfängerin
11.05.2015 09:23:17
Jennifer
Hallo Kenny,
ja die zeile hab ich am anfang falsch geschrieben. aber das ist mir auch gleich aufgefallen und ich hab deinen code darauf immer angepasst und die richtige spalte ersetzt. Die spalten um die es geht haben als überschrift die bezeichnung die du geschrieben hast, aber den namen (namensmanager) die ich dir geschrieben hab.
ich hab jetzt den code in meine datei kopiert. und alleine funktioniert er auch! :-) yipieee :-)
nur leider in Verbindung mit den anderen beiden changes funktioniert er nicht :-( fällt dir in der kombinatin noch was auf?
Vielen lieben Dank nochmal!!!!
Jenny

Anzeige
AW: VBA Hilfe für eine Anfängerin
12.05.2015 14:50:33
Kenny
Da weiß ich leider keine Antwort drauf... Ich kann den Code erst gar nicht testen :/

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige