Registriert seit: 19.04.2016
Version(en): 2010
Hallo,
leider beschäftige ich mich erst seit kurzem mit VBA und komme nicht weiter.
Ich würde gerne für jedes Tabellenblatt einen eigenen VBA erstellen.
Der derzeitige Code lässt mir den Cursor von Spalte A nach Spalte C springen.
Im zweiten Tabellenblatt, möchte ich aber den Cursor von Spalte A nach Spalte E springen lassen. Kann mir da jemand helfen?
Und nochmal eine Frage:
wenn in Spalte A ein Wert eingetragen wurde, und der Cursor dann zu Spalte "E" springt, ist es dann möglich den Wert in Spalte A direkt wieder zu löschen?
Derzeitiger Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("c1:c5000")) Is Nothing Then
Cells(Target.Row, 11) = Time
Cells(Target.Row, 10) = Date
End If
If Not Intersect(Target, Range("a1:a1000")) Is Nothing Then
ActiveCell.Offset(-1, 2).Select
End If
End Sub
Registriert seit: 28.05.2014
Version(en): 2013 / 2016
Moin,
sorry, aber dein Code hat nun wirklich nicht viel mit dem zu tun, was du im Text darüber beschreibst. Irgendwie widerspricht sich das.
Lass einfach einmal das "springen des Cursors" weg, red meinetwegen von einer aktiven Zelle (die gerade markiert ist), dann wissen alle Helfer was gemeint ist. Und dann bitte noch einmal ganz langsam, Schritt für Schritt, was du wann wie erreichen willst.
Dein Code macht (irgend) etwas, wenn in C1:C5000 geändert wird. In dem Fall wird in Spalte J und K das Datum und die Zeit geschrieben ...
Dann fragst du ab, ob in Spalte_A Eile 1 : 1000 etwas geändert wird. Wenn ja, dann soll die Zelle in Spalte_C eine Zeile höher selektiert werden. Davon einmal abgesehen, dass zu 99,9% jedes Select überflüssig ist: Ändere mal A1, dann meckert Excel. Denn es gibt keine Zeile 0 in Excel!
Beste Grüße
Günther
Excel-ist-sexy.de …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Registriert seit: 13.04.2014
Version(en): 365, 2019
Hallo,
wenn Du es schaffst, den Cursor von A nach C springen zu lassen, dann wirst Du es ja wohl auch schaffen, ihn nach E springen zu lassen. Suche mal nach Offset und clear in der Hilfe!
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Registriert seit: 19.04.2016
Version(en): 2010
19.04.2016, 14:45
(Dieser Beitrag wurde zuletzt bearbeitet: 20.04.2016, 10:33 von Rabe.
Bearbeitungsgrund: Zitat und Text separiert
)
Servus nochmal,
danke erstmal für die schnellen Antworten.
@GMG-CC
mir geht es wie gesagt nicht um den Abschnitt des Datums/Uhrzeit, sondern um das springen der aktiven Zelle.
Zitat:Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("c1:c5000")) Is Nothing Then
Cells(Target.Row, 11) = Time
Cells(Target.Row, 10) = Date
End If
If Not Intersect(Target, Range("a1:a1000")) Is Nothing Then
ActiveCell.Offset(-1, 2).Select
End If
End Sub
@BoskoBiati
die Frage bezog sich nicht auf die Änderung der Zielspalte, sondern auf die Änderung damit jedes Tabellenblatt seinen eigenen VBA hat. Wie ich mit diesem Code die aktivie Zelle in Spalte E springen lasse, ist selbstverständlcih klar. Allerdings eben nur für ALLE Tabellenblätter - und das möchte ich ja nicht.
Liebe Grüße
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
19.04.2016, 14:58
(Dieser Beitrag wurde zuletzt bearbeitet: 20.04.2016, 10:33 von Rabe.)
Hallo,
Zitat:Cells(Target.Row, 11)
die Ziffer gibt die Spalte an und da kannst Du Dein Verlangen stillen und woanders landen.
Spalte 10 = Spalte J und Spalte 11 demzufolge die Spalte K.
Alles klar?
Später:
Zitat:Wie ich mit diesem Code die aktivie Zelle in Spalte E springen lasse, ist selbstverständlcih klar. Allerdings eben nur für ALLE Tabellenblätter - und das möchte ich ja nicht.
hab ich erst später gelesen. Du kannst keine Zellen springen lassen, die Dinger sind statisch.
Wenn Du nur ein Blatt ansprechen willst, dann schreibe den Tabellenblattnamen in die Codezeile.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!
Grüße aus Norderstedt, Peter
Registriert seit: 13.04.2014
Version(en): 365, 2019
Hallo,
ich verstehe nicht, was Du willst. Dieser Code funktioniert nur in der zugehörigen Tabelle, d.h. Du mußt ihn für jede Tabelle separat erstellen, und zwar hinter dem Tabellenblatt!
http://www.j-hennekes.de/1131575.htm
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Registriert seit: 19.04.2016
Version(en): 2010
Hi nochmals,
das mit den Tabellenblättern hat funktioniert vielen Dank!
allerdings ist nun ein anderes Problem aufgetreten.
Ich möchte von Spalte A nach Spalte C springen
und
von Spalte C nach Spalte A springen wenn in Spalte C "5" eingetragen wird.
Der Code funkioniert leider nur in Spalte C. (springt bei Wert 5 nach Spalte A)
wird allerdings in Spalte A ein Wert eingegeben, erscheint die Fehlermeldung "Laufzeitfehler '91' Objektvariable oder With-Blockvariable nicht festgelegt"
Code: Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("a1:a20000")) Is Nothing Then
ActiveCell.Offset(-1, 2).Select
End If
If Intersect(Target, Range("C1:C20000")) = 5 Then
ActiveCell.Offset(-1, -2).Select
End If
End Sub
Wird der Code auf eine der beiden Sequenzen beschränkt, so funktionieren sie beide
oder
Ich verändere die 2. Sequenz.
Code: Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("a1:a20000")) Is Nothing Then
ActiveCell.Offset(-1, 2).Select
End If
If Not Intersect(Target, Range("C1:C20000")) Is Nothing Then
ActiveCell.Offset(-1, -2).Select
End If
End Sub
In dieser Form bringt mir der Code allerdings leider nichts.
Ich hoffe es kann mir jemand weiterhelfen
Liebe Grüße Daniel
Registriert seit: 13.04.2014
Version(en): 365, 2019
Hallo,
Du solltest Dich zuerst mit den Grundlagen von VBA befassen!
Code: Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
If Target.Count > 1 Then Exit Sub
Set rng = Range("A1:A20000", "C1:C20000")
If Not Intersect(Target, rng) Is Nothing Then
Application.EnableEvents = False
If Target.Column = 1 Then
Target.Offset(0, 2).Select
ElseIf Target = 5 Then
Target.Offset(0, -2).Select
End If
End If
Application.EnableEvents = True
End Sub
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Registriert seit: 19.04.2016
Version(en): 2010
Hi BoskoBiati,
vielen vielen vielen herzlichen Dank für deine super Hilfe!
Es hat nun alles wunderbar funktioniert. Der Code war extrem wichtig für mich!
Herzlichen Dank!! :18: :18: :18:
Viele Liebe Grüße
Daniel
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallo Daniel,
Neben VBA tut es auch etwas Mathe. Wenn Du zB in Zeile 1 was machst, funktioniert offset -1 Zeile nicht. Eine Zeile 0 gibts nicht
Wenn Du die Eingabe in Spalte A gleich wieder löschen willst, könntest Du eventuell auch mit selection_change arbeiten und bei Klick auf eine Zelle rüber hüpfen.
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
|