Microsoft Excel

Herbers Excel/VBA-Archiv

letzte Spalte finden und Wert einfügen

Betrifft: letzte Spalte finden und Wert einfügen von: Stefanie
Geschrieben am: 19.08.2014 13:27:16

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!

  

Betrifft: AW: letzte Spalte finden und Wert einfügen von: Robert
Geschrieben am: 19.08.2014 13:35:22

Hallo Stefanie,

kein select bitte!
Probiere:

Columns(var).Paste

viele Grüße
robert


  

Betrifft: AW: letzte Spalte finden und Wert einfügen von: Stefanie
Geschrieben am: 19.08.2014 13:48:48

Funkioniert leider auch nicht :-( hab keine Idee mehr hilfe


  

Betrifft: AW: letzte Spalte finden und Wert einfügen von: Stefanie
Geschrieben am: 22.08.2014 11:42:01

Auch an dich vielen Dank für den Hinweis :-)


  

Betrifft: AW: letzte Spalte finden und Wert einfügen von: {Boris}
Geschrieben am: 19.08.2014 14:19:34

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


  

Betrifft: AW: letzte Spalte finden und Wert einfügen von: Stefanie
Geschrieben am: 19.08.2014 14:33:39

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.


  

Betrifft: AW: letzte Spalte finden und Wert einfügen von: {Boris}
Geschrieben am: 19.08.2014 14:39:51

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


  

Betrifft: AW: letzte Spalte finden und Wert einfügen von: Stefanie
Geschrieben am: 19.08.2014 14:45:54

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!


  

Betrifft: AW: letzte Spalte finden und Wert einfügen von: {Boris}
Geschrieben am: 19.08.2014 18:04:29

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


  

Betrifft: AW: letzte Spalte finden und Wert einfügen von: Ewald
Geschrieben am: 20.08.2014 01:26:21

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


  

Betrifft: AW: letzte Spalte finden und Wert einfügen von: Stefanie
Geschrieben am: 20.08.2014 07:51:07

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!


  

Betrifft: AW: letzte Spalte finden und Wert einfügen von: Stefanie
Geschrieben am: 20.08.2014 07:59:26

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!


  

Betrifft: AW: letzte Spalte finden und Wert einfügen von: {Boris}
Geschrieben am: 20.08.2014 12:56:34

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


  

Betrifft: Du weißt ja, Boris, warum der Recorder das ... von: Luc:-?
Geschrieben am: 21.08.2014 12:46:07

…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 …


  

Betrifft: Auch ich hab das... von: {Boris}
Geschrieben am: 22.08.2014 19:00:44

Hi Luc,

...ehrlich gesagt nicht gewusst. Bin so`n 71er Jahrgang - wahrscheinlich wirst Du schon etwas mehr Erfahrung haben?! ;-))

VG, Boris


  

Betrifft: AW: Auch ich hab das... von: Mullit
Geschrieben am: 22.08.2014 19:46:58

Hallo,

.....guuuuuter Jahrgang....

Gruß,


  

Betrifft: Yeah! ;-)) oT von: {Boris}
Geschrieben am: 22.08.2014 20:11:52

...


  

Betrifft: Na, da warst du doch schon 24 (wie meine ... von: Luc:-?
Geschrieben am: 23.08.2014 00:03:16

…Ä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 :-?


  

Betrifft: AW: letzte Spalte finden und Wert einfügen von: Stefanie
Geschrieben am: 22.08.2014 07:53:35

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!


  

Betrifft: Und auch das... von: {Boris}
Geschrieben am: 22.08.2014 14:28:50

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


 

Beiträge aus den Excel-Beispielen zum Thema "letzte Spalte finden und Wert einfügen"