VBA Excel 2003 unsichtbarer Zellwechsel

Hallo Forum…

Ich habe ein ExcelMakro geschrieben, welches im Vollbildmodus ausgeführt wird. Im Programm muss ich an einer Stelle meine Cursorposition setzen, das geschieht wie folgt:

Application.Goto reference:=Worksheets("Kalkulation").Range("Übung2").Cells(1, 1)

Sobald der Befehl ausgeführt wird, erscheint aber auch das Sheet Kalkulation im Vordergrund. Kann ich das irgendwie unterbinden?
Ich habs schon mit Application.ScreenUpdating = False versucht, das hilft mir aber nicht weiter.

Danke für Eure Mühe…

lg micha

Grüezi Micha

Ich habe ein ExcelMakro geschrieben, welches im Vollbildmodus
ausgeführt wird. Im Programm muss ich an einer Stelle meine
Cursorposition setzen, das geschieht wie folgt:

Application.Goto
reference:=Worksheets(„Kalkulation“).Range(„Übung2“).Cells(1,
1)

Sobald der Befehl ausgeführt wird, erscheint aber auch das
Sheet Kalkulation im Vordergrund. Kann ich das irgendwie
unterbinden?

Nö, wieso denn auch?
Wenn Du eine Zelle selektierst (und .Goto ist letztlich nichts anderes), dann muss das Tabellenblatt aktiv werden, anders ist das nicht möglich.

Was genau willst Du mit der Zelle denn anstellen?

Besser als sie zu selektieren wäre es die Zelle referenziert zu bearbeiten. Das bietet diverse Vorteile:

  • Dein Code wird lesbar(er)
  • Du kannst immer ganz exakt nachvollziehen wo der Code gerade arbeitet
  • Die Geschwindigkeit der Abarbeitung nimmt zu.

Daher die Frage: Was sollte denn mit der selektierten Zelle genau passieren?
Kannst Du das nicht auch mit sauberer Referenzierung lösen?

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo Thomas,

Danke für die schnelle Antwort!
Ich schreibe über eine Userform Werte in eine Spalte über Offset.

 With Worksheets("Kalkulation").Cells(.Rows.Count, 2).End(xlUp).Offset(1)
 .Value = txtInput.Text
 End With

Die Werte müssen genau an einer bestimmten Stelle stehen (Der Bereich Übungxx aus dem vorigen Beispiel. Die Werte werden in ein Textfeld eingegeben, mit Enter bestätigt, dann kommt der nächste Wert.
Wenn ich das irgendwie anders lösen kann, wär das supertoll…

lg Micha

Grüezi Micha

Danke für die schnelle Antwort!
Ich schreibe über eine Userform Werte in eine Spalte über
Offset.

With Worksheets(„Kalkulation“).Cells(.Rows.Count,
2).End(xlUp).Offset(1)
.Value = txtInput.Text
End With

Hmmm, das sieht doch schon ein wenig anders aus als der Code vorhin :wink:

Die Werte müssen genau an einer bestimmten Stelle stehen (Der
Bereich Übungxx aus dem vorigen Beispiel. Die Werte werden in
ein Textfeld eingegeben, mit Enter bestätigt, dann kommt der
nächste Wert.
Wenn ich das irgendwie anders lösen kann, wär das supertoll…

Du bist da schon sehr nahe dran - führe den referenzhierten Zugriff konsequent durch, dann klappt das wunderbar:

With Worksheets("Kalkulation")
 .Cells(.Rows.Count, 2).End(xlUp).Offset(1, 0).Value = txtInput.Text
End With

Das müsste IMO klappen (habs aber nicht 1:1 getestet).

Wenn der Inhalt der Textbox als Zahl in die Zellen geschrieben werden soll, dann verwende noch eine Umwandlungsfunktion:

With Worksheets("Kalkulation")
 .Cells(.Rows.Count, 2).End(xlUp).Offset(1, 0).Value = CDbl(txtInput.Text)
End With

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Vielen Dank, jetzt hab ichs!!!

lg micha