Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA Tabellenbezogen
#1
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
Antworten Top
#2
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!
Antworten Top
#3
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.
Antworten Top
#4
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
Antworten Top
#5
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
Antworten Top
#6
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.
Antworten Top
#7
Hi nochmals,

das mit den Tabellenblättern hat funktioniert  Biggrinsmiley  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  Undecided


Liebe Grüße Daniel
Antworten Top
#8
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.
Antworten Top
#9
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
Antworten Top
#10
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 nichtSad
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)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste