196 Aufrufe
Gefragt in Tabellenkalkulation von revanchist Mitglied (210 Punkte)
Hallo zusammen - ich habe wieder ein kleines Problem, wo ich zur Lösungsfindung Hilfe benötige.

Konkret: im Tabellenblatt "Auswertung" betätige ich den  CommandButton.1 . Anschließend werden einige einfache Aktionen per Makro in diesem Tabellenblatt  ausgeführt (z.B.:   Cells(5, 14) = Cells(5, 17 oder  Cells(15, 23) = "J A" ,  usw.).  Nachdem alle "Kleinbefehle" abgearbeitet sind, möchte ich dass Excel automatisch auf ein anderes Tabellenblatt  wechselt. Das funktioniert auch, aber nur wenn ich eine konkrete Zelladresse als Ziel angebe.
Mit: | Application.Goto Sheets("Tabelle4").Range("AM56") | lande ich in Zelle AM56. Wie angegeben.

Ich möchte aber dass der Cursor in die Zelle springt, welche vor Befehlsauslösung auf dem Blatt „Tabelle4“ eine Zelle unterhalb der bereits aktiven Zelle ist. Steht der Cursor z.B. in Zelle C54, soll der Cursor automatisch innerhalb der Routine die Zelle C55 auswählen (sofern dort ein Text oder eine Zahl [kann auch eine 0 sein!] steht). Also nicht in eine leere Zelle!
 

Mit ActiveCell.Offset(1, 0).Select oder 'ActiveCell.Address und ähnlichen Spielereien klappt das einfach nicht.

Schön wäre auch noch eine Absicherung, sofern unter der Aktivzelle die nächste Zelle ohne Inhalt ist. Nicht dass durch eine Fehlermeldung sich VBA selbst oder schlimmstenfalls das ganze Excelprogramm  aufhängt.
Daher jetzt mein Hilferuf

Ciao der Revanchist

2 Antworten

0 Punkte
Beantwortet von beverly_ Experte (3.4k Punkte)

Hi,

hilft das:

Application.ScreenUpdating = False
Worksheets("Tabelle4").Activate
If ActiveCell.Offset(1, 0) <> "" Then
    Application.Goto reference:=ActiveCell.Offset(1, 0)
Else
    Worksheets("Auswetung").Activate
End If
Application.ScreenUpdating = True

Bis später, Karin

0 Punkte
Beantwortet von revanchist Mitglied (210 Punkte)

Hallo Karin

das ging ja superschnell. Vielen lieben Dank
Dein Vorschlag funktioniert einwandfrei yes

Ciao der Revanchist

...