5.8k Aufrufe
Gefragt in Tabellenkalkulation von ahorn38 Experte (3.3k Punkte)
Hallo,

nach Ausführen des paste-Befehls ist der Bereich A1:E1 noch "markiert". Ich möchte den Curser aber nur ein Feld nach rechts auf F1 rücken. Habe das mit selection.offset(0,1).select versucht. Das fuktioniert aber nicht, weil dann der ganze vorher markierte Bereich nach rechts verschoben wird....??
Gruß Andreas

22 Antworten

0 Punkte
Beantwortet von
Hallo Andreas,

Offset ist schon richtig nur etwas variabler.

Selection.Cells(1).Offset(0, Selection.Columns.Count).Select

Gruß Mr. K.
0 Punkte
Beantwortet von ahorn38 Experte (3.3k Punkte)
Hallo Hajo,

danke. Für mich ein paar neue Befehle...aber man lernt ja dazu.
Allerdings habe ich das Problem, dass bei der Ermittlung von loLetzte die falsche Datei (die Scgleife läuft in dieser Datei)zugrunde gelegt ist - es ist nicht im Sheet "Trainingszeiten" wie es sein sollte.
Kann ich da nach
With Sheets("Trainingszeiten")
noch ein
Sheets("Trainingsteiten").select
einfügen?
A.
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all :-)

ich finde allgemein das Offset sinnlos ist,noch nie benutzt ^^
seh zu das die selectionen verschwinden :-))

gruss nighty
0 Punkte
Beantwortet von ahorn38 Experte (3.3k Punkte)
Hallo Mr. K,

super, das funktioniert - wäre ich nie drauf gekommen....aber was gelernt. Vielen Dank!
Gruß
Andreas
0 Punkte
Beantwortet von ahorn38 Experte (3.3k Punkte)
Hallo nighty,

danke für deinen Hinweis, aber dann müßte man ja auch entsprechende Möglichkeiten haben, das Offset zu ersetzten, da fehlen mir einfach die Kenntnisse.
Mit der Formel von ExcelKing klappt erst mal mein Code wobei ich den Tipp von Hajo ja auch gut finde, nur bei der Sache nicht verstehe warum nach
With Sheets("Trainingszeiten")
die nachfolgenden Befehle (Bestimmen der letzten Zeile) nicht in diesem Sheet ("Trainingszeiten") laufen, sondern in einem anderen Sheet...??
Gruß
Andreas
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
das siehst Du falsch es steht Davor With Sheets("Trainingszeiten") und vor usedeRange ist ein Punkt.

Gruß hajo
0 Punkte
Beantwortet von ahorn38 Experte (3.3k Punkte)
Hallo Hajo,

eigentlich dürfte das Problem ja auch nicht aufkommen...es ist aber da. Ich habe hier noch einmal den vollständigen Code mit deinem Vorschlag zur besseren Übersicht:

Sub Trainings_Monate()

Dim kname As String
kname = Application.InputBox("kurzName eingeben: ", "Training")
Dim shBlatt As Worksheet

Sheets("Trainingszeiten").Select
Range("A3:H500").ClearContents
Range("A3").Select

Application.Calculation = xlCalculationManual
For Each shBlatt In ActiveWorkbook.Worksheets

If shBlatt.name Like "???" Then
Datei = shBlatt.name
Sheets(Datei).Select
Dim tabend As String
Range("A3").Select
Selection.End(xlDown).Select
tabend = Selection.Row

For n = 3 To Cells(Rows.Count, 1).End(xlUp).Row
If kname = Cells(n, 1) Then
Range(Cells(n, 1), Cells(n, 7)).Copy

With Sheets("Trainingszeiten")
'LoLetzte = Cells(Rows.Count, 1).End(xlUp).Row + 1
LoLetzte = .UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
.Cells(LoLetzte, 1).PasteSpecial Paste:=xlValues, operation:=xlNone, skipblanks:=True
.Cells(LoLetzte, 8) = Datei
End With
End If
Sheets(Datei).Select
Next
End If
Next
Application.Calculation = xlCalculationAutomatic
End Sub

Im Sheet Trainingszeiten sind nur die beiden ersten Zeilen durch Überschriften belegt, so dass
'LoLetzte = Cells(Rows.Count, 1).End(xlUp).Row + 1
eigentlich 3 als Ergebnis beim ersten Durchlauf liefern müsste - es kommt aber 269 raus, so dass die Nachfolgenden Einträge ganz weit unten beginnen...???? Wie kann das kommen?
Gruß
Andreas
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Andreas,

Drücke mal in der Tabelle Strg+Ende und Du wirst sehen was Excel als Ende der Tabelle sieht.
Alles nach der Letzten Zeile bis 1 Zeile über strg+Ende löschen, Bei Zeilen und Spalten.

Gruß Hajo
0 Punkte
Beantwortet von ahorn38 Experte (3.3k Punkte)
Hallo,

mannomann......
Ich hatte zwar vorher schon alles mit der Entf-Taste gelöscht, aber offenbar waren noch Formate hinterlegt. Nachdem ich die betreffenden Zeilen ganz gelöscht habe funktioniert dein Code einwandfrei!!!!!!
Könnt man den Code auber auch so modifizieren, dass die Formate (Schriftgröße, Zeilenhöhe) bestehen bleiben können?
DANKE und Gruß!
Andreas
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Andreas,

in der Zeile
.Cells(LoLetzte, 1).PasteSpecial Paste:=xlValues, operation:=xlNone, skipblanks:=True
werden nur Werte übertragen.
Warum SkipBlanks=true ist mir nicht klar, ich schaue jetzt auch nicht auch was der bedeutet.

Gruß Hajo
...