Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1164to1168
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zur letzten bebuchen Zelle zurück, geht das?

Zur letzten bebuchen Zelle zurück, geht das?
Dietmar
Hallo zusammen,
ich finde es immer recht nervig, dass sich die Ansicht am Bildschirm verschiebt, wenn ein sehr umfangreiches Makro durchlaufen wird und hinterher eine Zelle markiert wird, die im Bereich der letzten Code-Ausführung liegt.
Ich gebe z.B. in Zelle A5 (Wichtig: diese Zelle ist eine von vielen(!), in die ich Werte eintragen kann) einen Wert ein, den ich anschließend in zahlreichen anderen Bereichen verbuchen lasse.
Letzte Maßnahme ist dann z.B. Range("T155:T200").ClearContents.
Dorthin wandert dann auch die Ansicht.
Wie kann ich erreichen, dass die Ansicht dort bleibt, wo der letzte Wert eingetragen wurde; also quasi nach Durchlauf des Codes in diesem Fall zu A5 zurückgeht, damit es nicht erforderlich ist, den Ausgangspunkt erst wieder über den Schiebebalken zu finden?
Mit

Range("A5").Select
kann ich nicht arbeiten, weil die Eingabe-Zelle verstreut über das Sheet immer eine andere sein kann.
Jemand eine Idee?
Danke vorab!
Viele Grüße
Dietmar aus Aachen
AW: Zur letzten bebuchen Zelle zurück, geht das?
13.07.2010 11:01:29
Nepumuk
Hallo,
da machst du irgendetwas falsch. Denn die Anweisung Range("T155:T200").ClearContents veranlasst weder eine Bewegung der Scrollbalken, noch ändert der Cursor seine Position. Lies dir mal das durch und behrzige es, dann ist dein Problem gelöst.
http://www.online-excel.de/excel/singsel_vba.php?f=61
Gruß
Nepumuk
Code anbei, doch was übersehen?
13.07.2010 12:02:20
Dietmar
Hallo Nepumuk,
ich meine alles berücksichtigt zu haben, oder?
Der Anstoß für den Code erfolgt über ein Steuerungselement des betreffenden Tabellenblattes mit Application.Run "WarenUmbuchen"
Viele Grüße und Danke!
Dietmar aus Aachen
Sub WarenUmbuchen()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
ActiveSheet.Unprotect Password:="123"
Dim i As Integer
If Sheets("ProdukteTally").Range("S351").Value  0 Then
i = MsgBox("Hinweistext entfernt, da sehr lang" & vbCrLf & vbCrLf & "", _
1 + vbQuestion, "Bitte beachten!")
If i = 2 Then Exit Sub
Range("S4:S153").ClearContents
Range("S155:S200").ClearContents
'Else
'MsgBox "Sie haben keine Tag-Zeit-Angabe ausgewählt, vermutlich haben Sie 00 für ein Center  _
o.ä. gewählt. Bitte denken Sie daran, im Etally die richtige Tag/Zeit-Angabe nachzutragen!", vbInformation, "MLC2009e"
'Exit Sub
End If
'Hauptlager
Range("AC4:AC200").Copy
Range("Y4:Y200").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Application.CutCopyMode = False
'1. Treffen
Range("AI4:AI200").Copy
Range("AE4:AE200").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Application.CutCopyMode = False
Range("AG4:AH200").ClearContents
'2. Treffen
Range("AO4:AO200").Copy
Range("AK4:AK200").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Application.CutCopyMode = False
Range("AM4:AN200").ClearContents
'3. Treffen
Range("AU4:AU200").Copy
Range("AQ4:AQ200").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Application.CutCopyMode = False
Range("AS4:AT200").ClearContents
'4. Treffen
Range("BA4:BA200").Copy
Range("AW4:AW200").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Application.CutCopyMode = False
Range("AY4:AZ200").ClearContents
'5. Treffen
Range("BG4:BG200").Copy
Range("BC4:BC200").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Application.CutCopyMode = False
Range("BE4:BF200").ClearContents
'6. Treffen
Range("BM4:BM200").Copy
Range("BI4:BI200").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Application.CutCopyMode = False
Range("BK4:BL200").ClearContents
'7. Treffen
Range("BS4:BS200").Copy
Range("BO4:BO200").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Application.CutCopyMode = False
Range("BQ4:BR200").ClearContents
'8. Treffen
Range("BY4:BY200").Copy
Range("BU4:BU200").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Application.CutCopyMode = False
Range("BW4:BX200").ClearContents
'9. Treffen
Range("CE4:CE200").Copy
Range("CA4:CA200").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Application.CutCopyMode = False
Range("CC4:CD200").ClearContents
'10.Treffen
Range("CK4:CK200").Copy
Range("CG4:CG200").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Application.CutCopyMode = False
Range("CI4:CJ200").ClearContents
'11.Treffen
Range("CQ4:CQ200").Copy
Range("CM4:CM200").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Application.CutCopyMode = False
Range("CO4:CP200").ClearContents
'12.Treffen
Range("CW4:CW200").Copy
Range("CS4:CS200").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Application.CutCopyMode = False
Range("CU4:CV200").ClearContents
'13.Treffen
Range("DC4:DC200").Copy
Range("CY4:CY200").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Application.CutCopyMode = False
Range("DA4:DB200").ClearContents
'14.Treffen
Range("DI4:DI200").Copy
Range("DE4:DE200").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Application.CutCopyMode = False
Range("DG4:DH200").ClearContents
'15.Treffen
Range("DO4:DO200").Copy
Range("DK4:DK200").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Application.CutCopyMode = False
Range("DM4:DN200").ClearContents
'16.Treffen
Range("DU4:DU200").Copy
Range("DQ4:DQ200").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Application.CutCopyMode = False
Range("DS4:DT200").ClearContents
'ProdukteTally selbst bzgl. Zugang u. Abgang u. defekt bereinigen
Range("T4:T153").ClearContents
Range("T155:T200").ClearContents
Range("M4:R153").ClearContents          'ProdukteTally selbst bzgl. Zugang u. Abgang u.  _
defekt bereinigen
Range("M155:R200").ClearContents
Application.ScreenUpdating = True           'Bidlschirmaktualisierung wieder einschalten
Application.Calculation = xlCalculationAutomatic
Application.CutCopyMode = False
'Range("M144").Select 'NUR das hier verhindert den Sprung in die Ferne :-(
ActiveSheet.Protect Password:="123"
'ActiveSheet.EnableSelection = xlUnlockedCells
MsgBox "Super, das hat geklappt, die Produkte wurden verbucht bzw. umgebucht!", vbInformation, " _
Hinweis"
End Sub

Anzeige
AW: Zur letzten bebuchen Zelle zurück, geht das?
13.07.2010 11:07:32
Gerd
Hallo Dietmar,
Range("T155:T200").ClearContents verschiebt den sichtbaren Bereich nicht.
Ganz einfach den gesamten Code ohne Activate, Select und Selection schreiben.
Gruß Gerd
AW: Zur letzten bebuchen Zelle zurück, geht das?
13.07.2010 12:25:36
Gerd
Hallo Dietmar,
es gibt halt noch ein paar Befehle mehr, die aktivieren, z.B. Copy. :-)
Beim reinen Werte-Transfer kannst Du statt
'Hauptlager
Range("AC4:AC200").Copy
Range("Y4:Y200").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Application.CutCopyMode = False
Range("Y4:Y200").Value = Range("AC4:AC200").Value
schreiben.
Gruß Gerd
Anzeige
Glänzende Augen :-)
13.07.2010 12:32:37
Dietmar
Hallo Gerd,
ja, es geht nur um Werte.
Deinen Tipp werde ich jetzt gleich durchtesten, indem ich den Code umstricke, denn das wäre die Hammerlösung auch noch für viele andere Bereiche in meinem Progrämmle.
Danke Dir!
Du hörst von mir!
Viele Grüße
Dietmar aus Aachen
AW: Glänzende Augen :-)
13.07.2010 13:00:13
Nepumuk
Hallo Dietmar,
das Übertragen von Werten auf diese Art ist bei nicht allzu großen Bereichen Ok. Ab einer gewissen Größe ist aber Cpoy - PasteSpecial doch um einiges schneller. In dem Fall dann doch besser die zuletzt aktive Zelle merken und am Ende des Makros wieder in diese zurückspringen.
Gruß
Nepumuk
Anzeige
Was bedeutet nun großer Bereich?
13.07.2010 13:10:06
Dietmar
Hallo Nepumuk,
ok, das mit dem Merken ist aber mein Problem, da es zu viele Möglichkeiten gibt.
Und was bedeutet "nicht allzu groß"? Der Bereich umfasst etwa 200 Spalten und 400 Zeilen - ist das zu groß?
Meine (idealtypische Wunschvorstellen) wäre ein Code, der sich die Zelle merkt, die zuletzt ausgewählt war.
Viele Grüße
Dietmar aus Aachen
AW: @Nepumuk
13.07.2010 13:20:56
Gerd
Hallo Nepumuk,
hast Du hierzu eine bestimmte Zellenanzahl parat?
Gruß Gerd
31200 Zellen
13.07.2010 13:35:46
Dietmar
Hallo zusammen,
also der Bereich umfasst 260 Zeilen x 120 Spalten = 31200 Zellen
Wäre das zu groß
Gruß
Dietmar aus Aachen
AW: @Nepumuk
13.07.2010 21:02:10
Gerd
Hallo Nepumuk,
danke.
D.h. wohl, Nancy kommt auch aus Bayern u. die Relevanzgrenze müsste ich selbst ausloten. :-)
Gruß Gerd
AW: @Nepumuk
13.07.2010 21:42:57
Nepumuk
Hallo Gerd,
nee, Nancy ist ne original-Sächsin. Aber zwischen beiden Ländern gibt es historische Bindungen.
http://www.dr-beck.de/bayern.html
Gruß
Nepumuk
AW: @Nepumuk
13.07.2010 21:59:45
Gerd
Jo mei, woas g'scheit's hoalt!
Gruß Gerd :-)
kürzer
13.07.2010 13:10:39
Rudi
Hallo,
...
...
'Hauptlager
Range("Y4:Y200").Value = Range("AC4:AC200").Value
For i = 0 To 15
'1. -16.Treffen
Range("AI4:AI200").Offset(i * 6 - 4).Value = Range("AI4:AI200").Offset(, i * 6).Value
Range("AG4:AH200").Offset(, i * 6).ClearContents
Next i
'ProdukteTally selbst bzgl. Zugang u. Abgang u. defekt bereinigen
...
...
Gruß
Rudi
Anzeige
bin platt
13.07.2010 13:22:50
Dietmar
Hallo Rudi,
der Code ist ja so kurz, dass mir schwindelig wird :-)
Ich werde ihn testen und vor allen Dingen versuchen, ihn zu verstehen.
Vielen Dank!
Gruß Dietmar aus Aachen
AW: bin platt: Korrektur
13.07.2010 14:36:22
Rudi
da fehlt ein ,
Range("AI4:AI200").Offset( ,i * 6 - 4).Value = Range("AI4:AI200").Offset(, i * 6).Value
AW: Zur letzten bebuchen Zelle zurück, geht das?
13.07.2010 13:25:52
Rudi
Hallo,
Private Sub CommandButton1_Click()
Dim r As Range
Set r = Selection
WarenUmbuchen
r.Select
End Sub

Gruß
Rudi
JA! das funktioniert ...
13.07.2010 13:43:23
Dietmar
Hallo Rudi,
Dein Code läuft prima durch!
Und ich brauche meinen Code nicht zu ändern.
Danke!
Gruß
Dietmar aus Aachen
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige