Excel VBA: Letzte Zeile in Spalte D ermitteln und dann in Spalte A Inhalt einfügen
#1
Hallo zusammen,

Ich habe folgendes Problem: Ich weiß wie man die letzte Zeile in einer Spalte mit Hilfe von VBA ermitteln kann. Jedoch weiß ich nicht, wie man die letzte Zeile, zum Beispiel in Spalte D, ermitteln kann und dann sagen kann, dass er nach links gehen soll in Spalte A, um dort den Inhalt einzufügen. Vielleicht könnt Ihr mir hier weiterhelfen Huh

Ich bin wirklich für jede Hilfe dankbar!!!

Viele Dank & viele Grüße :)

Goleo
Top
#2
Hallo

da du die letzte Zeile ja schon ermittelt hast könnte es z.B. so aussehen

Range("A" & letzteZeile).Value = "was auch immer"

oder

Cells(letzteZeile, 1).Value = ....


MfG Tom
Top
#3
Hallo Tom,

vielen Dank für Deine Antwort. Klappt dies denn auch wenn Spalte A nicht immer einen Wert enthält? Angenommen der letzte Wert in Spalte D ist in Zeile 10, jedoch befindet sich in Spalte A10 kein Wert. Dann wird das wahrscheinlich etwas komplizierter, oder?

Viele Grüße
Top
#4
Sub Inhalt()
Cells(Cells.Rows.Count, 4).End(xlUp).Offset(, -3) = "Inhalt"
End Sub
Top
#5
Hallo

ich denke du weißt wie man die letzte Zeile ermittelt!?

hier wird die letzte Zeile in D ermittelt und in dieser Zeile in Spalte A kommt der Eintrag

Code:
Sub test()
   Dim lngLetzteZeile As Long
   lngLetzteZeile = Cells(Rows.Count, 4).End(xlUp).Row
   Range("A" & lngLetzteZeile).Value = "hier kommts hin"
End Sub
MfG Tom
[-] Folgende(r) 1 Nutzer sagt Danke an Crazy Tom für diesen Beitrag:
  • Goleo
Top
#6
Hallo Tom,

jetzt funktioniert es auch bei mir. Hatte die erste Zeile vergessen einzufügen :16: !

Vielen Dank für den Support :28:

Grüße
Top
#7
Eine Frage hätte ich da noch. Habe den Code soweit fertig - funktioniert auch alles so wie es soll, bis auf die Sache mit der Spalte A. Er springt automatisch immer in Zelle A1. Warum ist das so? Eigentlich soll er ja in Spalte D die letzte Zeile ermitteln und dann in Spalte A gehen.
____________________________________
Sub Aufbereitung()
 
     Dim cDir As String
     Dim sPath As String
     Dim lngLetzteZeile As Long
    
   'Definition des Dateipfads + Excelformat
    
     sPath = "Dateipfad"
     cDir = Dir(sPath & "*.xlsx")
         lngLetzteZeile = Cells(Rows.Count, 4).End(xlUp).Row
    
Application.ScreenUpdating = False
    
     Do While cDir <> ""
         Workbooks.Open (sPath & cDir)
         ActiveWorkbook.Sheets("Sheet1").Select
         Range("A2:AD99").Select
         Selection.Copy
   
      Windows("Dateiname.xlsm").Activate
      Worksheets("Aggregation").Select
      Range("A" & lngLetzteZeile).Select
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
      Windows(cDir).Activate
   Application.CutCopyMode = False
ActiveWorkbook.Close SaveChanges:=False
  'nächste Datei lesen
         cDir = Dir
     Loop
 
 End Sub
 ____________________________________
Vielen Dank & viele Grüße
Top
#8
Gemein, wenn man zuerst antwortet, der Frager dann aber so kurzsichtig ist und nur die letzte Antwort zur Kenntnis nimmt.

Ein bitterer Tag! :22:

Ich vermute, Du kommst mit Deinen Arbeitsblättern durcheinander. Debugge mal die erste Zuweisung von lngLetzteZeile. Dann merkst Du, dass Du ganz woanders bist.

Da ich keine Zwischenvariable verwende, passiert das dort nicht.

Ganz schlechter Programmierstil mit .Select!
[-] Folgende(r) 1 Nutzer sagt Danke an lupo1 für diesen Beitrag:
  • Goleo
Top
#9
Ups, da habe ich wirklich Deine Nachricht überlesen :39: Das tut mir wirklich leid. Aber Deine Lösung funktioniert jetzt. Bin leider kein ITler o.Ä., sondern bin aktuell dabei mir VBA selbst beizubringen (click & try). Daher meine nächste Frage an Dich: Was würdest Du anstatt "Select" empfehlen?

Vielen Dank & viele Grüße
Top
#10
Kein .Select!

Blöde Antwort von mir. Du solltest einfach die Objekte direkt bearbeiten mit Eigenschaften und Methoden, statt den Cursor Gassi zu führen.

Sheets("NichtAktivesBlatt").Range("A1").FormulaR1C1 = "=TODAY()+RC[+1]"
Sheets("NichtAktivesBlatt").Range("A1:A10").Filldown
z.B. füllt die Formel von A1 in A1:A10 an einer Stelle von selbst aus, wo Du gerade gar nicht bist.

Besser ist hier aber noch folgende Direktzuweisung:
Sheets("NichtAktivesBlatt").Range("A1:A10").FormulaR1C1 = "=TODAY()+RC[+1]"

Deshalb ja auch die R1C1-Schreibweise!

Mein Mini-Code ist dafür doch das beste Beispiel (auch Crazy Tom kommt ja ohne aus, aber er zwischenlagert in eine Variable mit der Folge, dass die gar nicht mitbekommt, dass Du sie plötzlich in einem ganz anderen Blatt verwendest, als wo Du sie erstellt hast).
[-] Folgende(r) 1 Nutzer sagt Danke an lupo1 für diesen Beitrag:
  • Goleo
Top


Gehe zu:


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