Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: letzte Spalte finden und Wert einfügen

letzte Spalte finden und Wert einfügen
19.08.2014 13:27:16
Stefanie
Hey eine neue kurze Frage,
eine letzte Spalte kann so gefunden werden:
Cells(ActiveCell.Row, Columns.Count).End(xlToLeft).Offset(0, 1).Select
Jetzt habe ich versucht:
Dim var as integer
var= Cells(ActiveCell.Row, Columns.Count).End(xlToLeft).Offset(0, 1)
Var.Select
Var.Paste
Wie kann ich in die gefundene letzte Spalte nun einen Wert einfügen, den ich bereits in der Zwischenablage habe?
Vielen Dank!

Anzeige

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: letzte Spalte finden und Wert einfügen
19.08.2014 13:35:22
Robert
Hallo Stefanie,
kein select bitte!
Probiere:
Columns(var).Paste

viele Grüße
robert

AW: letzte Spalte finden und Wert einfügen
19.08.2014 13:48:48
Stefanie
Funkioniert leider auch nicht :-( hab keine Idee mehr hilfe

AW: letzte Spalte finden und Wert einfügen
22.08.2014 11:42:01
Stefanie
Auch an dich vielen Dank für den Hinweis :-)

Anzeige
AW: letzte Spalte finden und Wert einfügen
19.08.2014 14:19:34
{Boris}
Hi Stefanie,
Du dimensionierst var als Integer - also als ganze Zahl bis max. 32767.
Cells(ActiveCell.Row, Columns.Count).End(xlToLeft).Offset(0, 1)

gibt aber einen Range (Bereich) zurück - und diesen kann man nicht an eine Integer-Variable zuweisen (abgesehen davon, dass Bereichszuweisungen das Schlüsselwort Set erfordern).
Es reicht daher diese Codezeile:
Cells(ActiveCell.Row, Columns.Count).End(xlToLeft).Offset(0, 1) = "Dein Wert"

oder mit Copy & Paste:
Range("A4:A6").Copy Cells(ActiveCell.Row, Columns.Count).End(xlToLeft).Offset(0, 1)

VG, Boris

Anzeige
AW: letzte Spalte finden und Wert einfügen
19.08.2014 14:33:39
Stefanie
Hey danke für deine Hilfe. Ich weiß leider noch nicht wie ech es umsetzen soll?
Haben jetzt ein Selection.Copy
und das möchste ich in die nächste freie Spalte einfügen.
Sorry bin noch nicht so fitt in VBA, wäre toll wenn du ein kleines Bsp. hättest.

AW: letzte Spalte finden und Wert einfügen
19.08.2014 14:39:51
{Boris}
Hi Stefanie,
bei
Range("A4:A6").Copy Cells(ActiveCell.Row, Columns.Count).End(xlToLeft).Offset(0, 1)

musst Du nur Range("A4:A6") durch Selection ersetzen, also
Selection.Copy Cells(ActiveCell.Row, Columns.Count).End(xlToLeft).Offset(0, 1)
VG, Boris

Anzeige
AW: letzte Spalte finden und Wert einfügen
19.08.2014 14:45:54
Stefanie
Aber ich benötige doch noch irgendwo ein Paste?
Der kopierte Wert ist ja bereits in der Ziwschenablage und diesen möchte ich in die nächste freie Spalte einfügen ?
Oder steht mir gerade jemand auf dem Schlauch ?

Selection.Copy
'letzte Freie Spalte ermitteln
Selection.Copy Cells(ActiveCell.Row, Columns.Count).End(xlToLeft).Offset(0, 1)
ActiveSheet.Paste
ActiveSheet.Paste meckert er allerdings!

Anzeige
AW: letzte Spalte finden und Wert einfügen
19.08.2014 18:04:29
{Boris}
Hi Stefanie,
mach doch einfach nur das, was ich Dir geschrieben habe.
NUR diese eine Zeile.
Die Copy-Methode hat den optionalen Parameter Destination = Ziel.
Den muss man nicht "betiteln" - im folgenden mache ich das aber mal:
Sub stefanie()
Selection.Copy Destination:=Cells(ActiveCell.Row, Columns.Count).End(xlToLeft).Offset(0,  _
1)
End Sub
VG, Boris

Anzeige
AW: letzte Spalte finden und Wert einfügen
20.08.2014 01:26:21
Ewald
Hallo,
wenn ich das richtig verstehe, geht es nicht um das normale Kopieren/einfügen,du willst aus der Zwischenablage einfügen.
Mit Paste geht das nicht, Paste steht nur zur Verfügung wenn der CutCopymodus aktiv ist.Beim Starten eines Mskros wird dieser aber beendet.
Um aus der Zwischanablage zu kopieren, kommt es darauf an was drinsteht,ist es nur Text geht es mit dem Dataobjekt.
Um jetzt auch alles andere einzufügen, kenne ich keinen Code.
Denn die manuelle Vorgehensweise Zelle markieren/Zwischenablage öffnen/Klick auf den Eintrag ist wohl mit Makros nicht zu machen,ist mir jedenfalls nicht bekannt.
Vielleicht kennt ja jemand eine Lösung.
Gruß Ewald

Anzeige
AW: letzte Spalte finden und Wert einfügen
20.08.2014 07:51:07
Stefanie
Vielen Dank für eure Antworten.
Danke Boris das hat jetzt funktioniert, entschuldige das mit der Destination habe ich nicht gesehen!
Falls es jemand interessiert, diese Methode habe ich auch noch gefunden:
Cells(1, IIf(IsEmpty(Cells(1, Columns.Count)), _
Cells(1, Columns.Count).End(xlToLeft).Column, Columns.Count) + 1).Select
Wisst ihr zufällig wie ich mir nun die Spalte die ich gefunden habe, auf eine Variable legen kann? Ich benötige die Spalte, um mit Cells(1,gefundenenSpalte) zu arbeiten ?
Danke für eure Hilfe!

Anzeige
AW: letzte Spalte finden und Wert einfügen
20.08.2014 07:59:26
Stefanie
Vielen Dank für eure Antworten.
Danke Boris das hat jetzt funktioniert, entschuldige das mit der Destination habe ich nicht gesehen!
Falls es jemand interessiert, diese Methode habe ich auch noch gefunden:
Cells(1, IIf(IsEmpty(Cells(1, Columns.Count)), _
Cells(1, Columns.Count).End(xlToLeft).Column, Columns.Count) + 1).Select

Wisst ihr zufällig wie ich mir nun die Spalte die ich gefunden habe, auf eine Variable legen kann? Ich benötige die Spalte, um mit Cells(1,gefundenenSpalte) zu arbeiten ?
Danke für eure Hilfe!

Anzeige
AW: letzte Spalte finden und Wert einfügen
20.08.2014 12:56:34
{Boris}
Hi Stefanie,
Falls es jemand interessiert, diese Methode habe ich auch noch gefunden:
Cells(1, IIf(IsEmpty(Cells(1, Columns.Count)), _
Cells(1, Columns.Count).End(xlToLeft).Column, Columns.Count) + 1).Select

Ich merke, du "fummelst" Dich gerade ein wenig in VBA rein - gut so!
Allerdings gibt es Methoden (hier: die Select-Methode), die tatsächlich zu nahzu 100% überflüssig ist.
Da gibt es wesentlich elegantere Möglichkeiten.
Beispielsweise muss man einen Zellinhalt nicht kopieren, um ihn dann irgendwo wieder einzufügen.
Das löst man in der Regel mit einer direkten Zuweisung:
Range("D1").Value = Range("A1").Value
So macht es der Makrorecorder - ihm sei es verziehen, aber die Programmierung ist gruselig:
Range("A1").Select
Selection.Copy
Range("D1").Select
ActiveSheet.Paste
Um nur mal 1 Beispiel zu nennen.
Und wenn Du mal Dein Problem konkret schilderst - am besten mittels Beispielmappe - dann kann man Dir auch noch anders helfen - und Dich vor allen Dingen beim VBA-Lernen direkt in die richtige Richtung "schubsen" ;-))
VG, Boris

Anzeige
Du weißt ja, Boris, warum der Recorder das ...
21.08.2014 12:46:07
Luc:-?
…macht, aber für alle, die es nicht wissen,
das ist überwiegend historisch bedingt, denn der Recorder hatte wohl ursprünglich die primäre Aufgabe, MausBewegungen aufzuzeichnen, um so einfache DemoPgmm zu erstellen. Unter Xl/MSO95 lief der Mauszeiger mit.
Gruß, Luc :-?
Besser informiert mit …

Anzeige
Auch ich hab das...
22.08.2014 19:00:44
{Boris}
Hi Luc,
...ehrlich gesagt nicht gewusst. Bin so`n 71er Jahrgang - wahrscheinlich wirst Du schon etwas mehr Erfahrung haben?! ;-))
VG, Boris

AW: Auch ich hab das...
22.08.2014 19:46:58
Mullit
Hallo,
.....guuuuuter Jahrgang....
Gruß,

Yeah! ;-)) oT
22.08.2014 20:11:52
{Boris}
...

Anzeige
Na, da warst du doch schon 24 (wie meine ...
23.08.2014 00:03:16
Luc:-?
…Älteste, die inzwischen seit Jahren in D'dorf arbeitet), Boris;
was wohl auch meinerseits die Frage nach der Güte dieses Jahrgangs beantwortet… ;-)
(Aber auch '78 ist nicht ohne — meine 2.!)
Gruß, Luc :-?

AW: letzte Spalte finden und Wert einfügen
22.08.2014 07:53:35
Stefanie
Hi Boris,
ja genau ich fummel mich zur Zeit wirklich etwas so durch ;-) langsam klappt es auch ganz gut. Vielen Dank für den Tipp. Das habe ich nicht gewusst. So ist es wohl wirklich viel eleganter!
Ich hatte sowas hier gemeint (hab mein Problem mittlerweise behoben) :
 aktuelle_spalte = ActiveCell.EntireColumn.Column
Das nächste mal versuche ich mein Problem näher zu beschreiben!
Vielen Dank für eure Hilfe. Ist wirklich super das Forum!

Anzeige
Und auch das...
22.08.2014 14:28:50
{Boris}
Hi Stefanie,
...ist noch "von hinten durch die Brust ins Auge und wieder zurück"... ;-))
aktuelle_spalte = ActiveCell.EntireColumn.Column
Die ActiveCell-Eigenschaft gibt ein OBJEKT zurück - und zwar die aktive Zelle. Dieses Objekt hat mehrere Eigenschaften - unter anderem die bereits von Dir benötigte: die Column-Eigenschaft. Damit bekommst Du als Rückgabewert die gewünschte Nr. der Spalte.
Mit Deiner Codezeile gehst Du also einen unnötigen Umweg dadurch, dass Du aus der aktiven Zelle zunächst mittels der EntireColumn-Eigenschaft ein neues Range-Objekt erzeugst (=überflüssig), das in diesem konkreten Fall die gesamte Spalte der aktiven Zelle ist. Dieses Objekt (=die ganze Spalte) wiederum besitzt auch die Column-Eigenschaft, wodurch Du auch so an das gewünschte Ergebnis - also die Spaltennummer - kommst. Ist aber eben "von hinten durch die Brust ins Auge und wieder zurück" ;-)
Einfacher wäre es halt so:
aktuelle_spalte = ActiveCell.Column
Und um jetzt noch einen drauf zu setzen: In den allermeisten Fällen benötigt man die Spaltennummer NICHT ... ;-)) - will heißen: es gibt andere / bessere Wege der Programmierung. Aber das ist nun Spekulation, denn ich kenne Dein gesamtes Vorhaben nunmal nicht.
VG, Boris
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Letzte Spalte in Excel finden und Wert einfügen


Schritt-für-Schritt-Anleitung

Um die letzte Spalte in Excel zu finden und einen Wert einzufügen, kannst du den folgenden VBA-Code verwenden. Dieser Code ermittelt die letzte Spalte mit Inhalt und fügt den gewünschten Wert in die nächste freie Spalte ein.

  1. Öffne den VBA-Editor (ALT + F11).
  2. Füge ein neues Modul hinzu (Rechtsklick auf „VBAProject“ > Einfügen > Modul).
  3. Kopiere den folgenden Code in das Modul:
Sub LetzteSpalteEinfügen()
    Dim letzteSpalte As Long
    ' letzte Spalte ermitteln
    letzteSpalte = Cells(ActiveCell.Row, Columns.Count).End(xlToLeft).Column
    ' Wert in die nächste freie Spalte einfügen
    Cells(ActiveCell.Row, letzteSpalte + 1).Value = "Dein Wert"
End Sub
  1. Schließe den VBA-Editor und führe das Makro aus (ALT + F8 und wähle „LetzteSpalteEinfügen“).

Häufige Fehler und Lösungen

  • Fehler: "Typ-Mismatch" beim Zuweisen von Werten

    • Ursache: Wenn du versuchst, einen Bereich in eine Integer-Variable zuzuweisen.
    • Lösung: Verwende Long statt Integer für Variablen, die Spaltennummern speichern.
  • Fehler: "Method 'Range' of object '_Global' failed"

    • Ursache: Wenn das Ziel nicht korrekt angegeben wird.
    • Lösung: Achte darauf, dass die Zielzelle korrekt referenziert wird, wie in den obigen Beispielen gezeigt.

Alternative Methoden

Wenn du die letzte Spalte in Excel ermitteln und Werte einfügen möchtest, gibt es verschiedene Ansätze. Hier sind zwei alternative Methoden:

  1. Verwendung von Selection:

    Selection.Copy
    Cells(ActiveCell.Row, Columns.Count).End(xlToLeft).Offset(0, 1).PasteSpecial
  2. Direkte Zuweisung: Anstatt zu kopieren und einzufügen, kannst du auch direkt den Wert zuweisen:

    Cells(ActiveCell.Row, Columns.Count).End(xlToLeft).Offset(0, 1).Value = "Dein Wert"

Praktische Beispiele

Hier sind einige praktische Beispiele, die dir helfen, die letzte Spalte in Excel zu finden und Werte einzufügen:

  1. Einfügen eines Wertes aus der Zwischenablage:

    Sub EinfügenAusZwischenablage()
       Selection.Copy
       Cells(ActiveCell.Row, Columns.Count).End(xlToLeft).Offset(0, 1).PasteSpecial
    End Sub
  2. Ermitteln der letzten Spalte mit Inhalt:

    Sub LetzteSpalteMitInhalt()
       Dim spalte As Long
       spalte = Cells(ActiveCell.Row, Columns.Count).End(xlToLeft).Column
       MsgBox "Die letzte Spalte mit Inhalt ist: " & spalte
    End Sub

Tipps für Profis

  • Verwende die Destination-Eigenschaft bei der Copy-Methode, um den Code zu vereinfachen und die Notwendigkeit für Select-Befehle zu vermeiden.
  • Überlege, ob du die Spaltennummer wirklich benötigst. Oftmals kannst du direkt mit Zellreferenzen arbeiten, was den Code klarer und einfacher macht.
  • Nutze die Range-Objekte effizient, um zu vermeiden, dass du unnötige Variablen erstellst.

FAQ: Häufige Fragen

1. Wie kann ich die letzte Spalte in Excel ermitteln, ohne VBA zu verwenden? Du kannst die letzte Spalte manuell finden, indem du die Daten nach rechts scrollst oder die Tastenkombination CTRL + Pfeil nach rechts verwendest.

2. Wie kann ich den letzten Wert in einer Spalte ermitteln? Du kannst die End-Methode verwenden, um den letzten Wert in einer bestimmten Spalte zu finden:

letzterWert = Cells(Rows.Count, "A").End(xlUp).Value

3. Was ist der Unterschied zwischen Select und direkter Zuweisung? Select ist oft überflüssig und macht den Code langsamer. Direkte Zuweisungen sind effizienter und klarer, da sie die Notwendigkeit für Bildschirmaktualisierungen und zusätzliche Objekte vermeiden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige