Hallo liebe Excelgemeinde und Spezi´s
Ich brauch mal wieder die Hilfe von Euch Code- Profis.
Ich habe eine Arbeitsblatt, in dem in den Spalte B Namen eingebe, Spalte D eine Zahl. In der Spalte E steht je nach dem Name in Spalte B manchmal ein „A“ oder „“ (nichts), durch eine WENN_ Formel geregelt.
Jetzte mein „Wunsch“. Ich gebe in der Spalte B den Namen ein,in Spalte D die Zahl, und wenn in Spalte E ein „A“ ist, dann soll der Sprung gleich in Spalte G bei der Eingabe laufen.
Geht das mit einem Code??
Ich habe eine Arbeitsblatt, in dem in den Spalte B Namen
eingebe, Spalte D eine Zahl. In der Spalte E steht je nach dem
Name in Spalte B manchmal ein „A“ oder „“ (nichts), durch eine
WENN_ Formel geregelt.
Jetzte mein „Wunsch“. Ich gebe in der Spalte B den Namen
ein,in Spalte D die Zahl, und wenn in Spalte E ein „A“ ist,
dann soll der Sprung gleich in Spalte G bei der Eingabe
laufen.
Geht das mit einem Code??
Hi Volker,
ja das geht, aber nicht so. Vba könnte Spalte E „überwachen“, wenn du da manuell ein „A“ eingibst könnte man automatisch in Spalte „G“ hüpfen.
Aber Formelergebnisse kriegt Vba nicht mit, nur manuelle Eingaben.
Vba kann also Spalte B und D „überwachen“ ob sich da was ändert, dann muß es die Formel kennen die in E zu „A“ führt, dann geht das.
Im Klartext, welche Formel steht in „E“ ?
Gruß
Reinhard
Hallo Reinhard. Die Formel sucht in einer Datei den Namen, der in Spalte B eingeben wird, und wenn er ihn findet, sieht er in Spalte L (also 12) das „A“ und schreibt es.
Hier die Formel =WENN(B61=0;" ";INDEX(‚C:\Daten\alle\Lief_adr.xls‘!Ges_adressen;VERGLEICH(B61;‚C:\Daten\alle\Lief_adr.xls‘!Lieferant_NAME;0);12))
Ich hoffe du (oder Ihr) könnt mir dies mal Helfen. Gruß Volker
Ich brauch mal wieder die Hilfe von Euch Code- Profis.
Ich habe eine Arbeitsblatt, in dem in den Spalte B Namen
eingebe, Spalte D eine Zahl. In der Spalte E steht je nach dem
Name in Spalte B manchmal ein „A“ oder „“ (nichts), durch eine
WENN_ Formel geregelt.
Jetzte mein „Wunsch“. Ich gebe in der Spalte B den Namen
ein,in Spalte D die Zahl, und wenn in Spalte E ein „A“ ist,
dann soll der Sprung gleich in Spalte G bei der Eingabe
laufen.
Hi Volker,
laut deiner Formel trägst du ein Leerzeichen, das ist nicht nix bzw. „“.
Probier mal dies im Modul des Tabellenblattes:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column 4 Then Exit Sub
If Target.Cells.Count 1 Then Exit Sub
If Target.Offset(0, 1) = „A“ Then Target.Offset(0, 3).Select
End Sub
Gruß
Reinhard
Hi Reinhard
soll ich die Formel jetzt in „“ ändern und dann in modul des Tabellenblettes den Code eingeben? Was heißen die einzelnen Zeilen?
Ich will doch auch was „lernen“
Gruss Volker
Hast du für die letzte FRage keine Antwort, (die mit der RIESEN Datei)
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column 4 Then Exit Sub
If Target.Cells.Count 1 Then Exit Sub
If Target.Offset(0, 1) = „A“ Then Target.Offset(0, 3).Select
End SubGruß
Reinhard
Hi Volker,
soll ich die Formel jetzt in „“ ändern
das bleibt dir überlassen, mir fiel nur auf daß du sagtest in der Zelle stünde „A“ oder „“, aber dem ist nicht so laut Formel.
Ohne sehr speziellen Grund würde ich persönlich nie ein Leerzeichen in eine Zelle eintragen.
und dann in modul des Tabellenblettes den Code eingeben?
? Du wolltest doch eine Lösung per Code.
Was heißen die einzelnen Zeilen?
Ich will doch auch was „lernen“
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column 4 Then Exit Sub
If Target.Cells.Count 1 Then Exit Sub
If Target.Offset(0, 1) = „A“ Then Target.Offset(0, 3).Select
End Sub
Excel kennt verschiedene festgelegte Ereignisse worauf Vba automatisch reagieren kann. Hier ist es das „Change“-Ereignis.
D.h. sobald auch nur irgendeine Zelle, genauer, deren Inhalt, manuell geändert wird, wird diese Vba-prozedur aufgerufen.
Target ist dann eine Zelle oder ein Zellenbereich der gerade geändert wurde.
Da ich Spalte D, also die 4te Spalte (A=1,B=2,usw) „überwachen“ will und mich Eingaben in andere Spalten nicht interessieren frage ich mit dem ersten If ab ob die Zelländerung in Spalte D war, wenn nicht, soll die Vba-Prozedur verlassen werden.
Den Sinn des zweiten If-Befehls zu erklären wird mir jetzt zu langatmig, ich sags nur in Kurzform, es besagt wenn mehr als eine Zelle verändert wurde (durch Reinkopieren o.ä.) dann verlasse die Prozedur.
Der dritte If-Befehl wird nur dann ausgeführt wenn die ersten beiden IFs nicht zutrafen, d.h. nur dann wenn eine einzelne Zelle irgendwo in Spalte D geändert wurde.
Aufgrund deiner Excelformel steht nun in Spalte E in der gleichen Zeile ein „A“ oder halt nicht.
If Target.Offset(0, 1) = „A“ Then Target.Offset(0, 3).Select
bedeutet nun für den Code, (Target ist deine Zelle in Spalte D die geändert wurde), schau mal in die Spalte eins daneben (=E) ob da ein „A“ steht, wenn ja, dann hüpfe in die Spalte 3 Spalten weiter (rechts von D), also G.
Offset wird in der Vba-Hilfe erklärt.
Hast du für die letzte FRage keine Antwort, (die mit der
RIESEN Datei)
*hmmh* da war hier kürzlich was mit ner Riesendatei, anscheinend schon im Archiv, kannst du sie mal im Archiv suchen,oder über deine „Eigene Artikel“ ?
Ich dachte ich hätte dazu was geschrieben, weiß dies aber nicht mehr genau genug.
Gruß
Reinhard
Gruss Volker
Hast du für die letzte FRage keine Antwort, (die mit der
RIESEN Datei)Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column 4 Then Exit Sub
If Target.Cells.Count 1 Then Exit Sub
If Target.Offset(0, 1) = „A“ Then Target.Offset(0, 3).Select
End SubGruß
Reinhard