Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
768to772
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
768to772
768to772
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Spalten ab Zeile 3 in Zwischenablage - VBA

Spalten ab Zeile 3 in Zwischenablage - VBA
02.06.2006 07:20:40
Wolfgang
Hallo*
Wieder einmal mehr erbitte ich die Hilfestellung aus dem Forum. Ich habe es mehrmals mit dem Macrorekorder versucht, bekomme es aber irgendwie nicht hin. Sachverhalt wie folgt: in Spalte A befinden sich Namen, in Spalte I die Lieferantennummern. Ich würde nun gerne erreichen, dass ab Zeile 3 der Inhalt der Spalten in die Zwischanablage kopiert wird. Allerdings zuerst Spalte I und daneben Spalte A. Das sieht ungefähr dann so aus:
I = Liefer-Nr.: - A = Name:
1234 - Müller KG
5464 - Meier KG
05444 - usw.
Gibt es da evtl. Ideen aus dem Forum? Ich danke schon jetzt wieder für die Unterstützung.
Herzliche Grüße
Wolfgang

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten ab Zeile 3 in Zwischenablage - VBA
02.06.2006 10:28:42
bst
Hallo Wolfgang,
Hierzu brauchst Du im VBA einen Verweis auf die Microsoft Forms x.y Object Library.
Im VBA ins Menue Extras-Verweise, dort das Teil suchen und ankreuzen.
Via CreateObject - d.h. OHNE diesen Verweis - habe ich das nicht hinbekommen :-(
Deshalb noch offen. Geht das irgendwie ?
cu, Bernd
--
Option Explicit

Const strRS = vbLf ' Das Trennzeichen zwischen den Zeilen
Const strFS = " " ' Das Trennzeichen zwischen den Spalten

Sub x()
    Dim lngZeile As Long, i As Long, ar1 As Variant, ar2 As Variant, ar As Variant
    Dim myData As DataObject
    
    Set myData = New DataObject
    ' Die letzte Zeile irgendwie bestimmen
    lngZeile = Cells(1, 1).End(xlDown).Row
    ' Spalte A in Array einlesen
    ar1 = Range(Cells(1, 1), Cells(lngZeile, 1))
    ' Spalte I in Array einlesen
    ar2 = Range(Cells(1, 9), Cells(lngZeile, 9))
    ' Die Spalten I und A zusammenbauen
    Redim ar(1 To lngZeile)
    For i = 1 To lngZeile
        ar(i) = ar2(i, 1) & strFS & ar1(i, 1)
    Next
    ' Hieraus einen String zusammenbauen
    myData.SetText Join(ar, strRS)
    ' Und in die Zwischenablage verschieben
    myData.PutInClipboard
    Set myData = Nothing
End Sub


Anzeige
AW: Spalten ab Zeile 3 in Zwischenablage - VBA
02.06.2006 10:29:57
bst
Hmm,
wollte das eigentlich noch offen lassen ...
cu, Bernd
AW: Spalten ab Zeile 3 in Zwischenablage - VBA
02.06.2006 12:13:11
Wolfgang
Hallo Bernd,
danke für Deine Rückmeldung; habe versucht, Deinen Code einzuarbeiten. Es scheitert bei mir bereits daran, dass ich diesen Verweis nicht hinkriege, weil ich Microsoft Forms x.y Object Library bei nirgends entdecke. Entdeckt habe ich wohl eine 2.0 und 10.0 Library die auch schon angehakt sind. Es funktioniert damit aber tatsächlich nicht. Vielleicht hat noch wer eine Idee. In dem Sinne danke nochmals.
Herzliche Grüße
Wolfgang
AW: Spalten ab Zeile 3 in Zwischenablage - VBA
02.06.2006 12:45:26
bst
Hallo Wolfgang,
mit "x.y" meinte ich die höchste bei Dir verfügbare Version, hätte das wohl dazuschreiben sollen.
Nimm also mal die 2.0 Version.
Bzw. siehe Anhang: https://www.herber.de/bbs/user/34115.xls
Wenn's nicht laufen sollte, geh mal im VBA im Einzelschrittmodus (F8) durch den Code und sage mir wo's nicht tut.
cu, Bernd
Anzeige
AW: Danke für Hinweis auf Library
02.06.2006 12:00:07
fcs
Hallo Bernd,
vielen Dank für den Hinweis auf die Library. Hab da auch schon rumgesucht, nachdem ich das DataObject nicht anlegen konnte.
Da gibt es unter der Hilfe von VBA ein wunderschönes Beispiel, wie man das umsetzen könnte. Aber das man auf eine zusätzliche und vor allem auf welche Library man verweisen muß, dieser Hinweis fehlt leider. :-(
Als Alternative könnte man unter Office 2003 die Werte der beiden Zellbereich in eine Hilfstabelle übertragen und dann kopieren. Dann gibt es aber ein Problem, wenn man die Hilfstabelle direkt wieder löscht. Abhängig davon, wie man die Office-Zwischenablage konfiguriert hat (diese muss auf "Sammeln ..." eingestelt sein), ist der Inhalt des kopierten Bereiches noch verfügbar oder auch nicht. Excel hat leider die unschöne Eigenschaft, dass die Zwischenablage nicht mehr verfügbar ist, wenn beim Kopieren von Zellbereichen der Kopiermodus abgebrochen wird oder eine andere Aktion ausgeführt wird.
Beispielcode:

Sub Test()
Dim Namen As Range, IdentNr As Range, wks As Worksheet
Set wks = ActiveSheet
Set Namen = wks.Range(Cells(3, "A"), Cells(wks.UsedRange.Row + wks.UsedRange.Rows.Count - 1, "A"))
Set IdentNr = wks.Range(Cells(3, "I"), Cells(wks.UsedRange.Row + wks.UsedRange.Rows.Count - 1, "I"))
'Zellinhalte in anderen Tabellenbereich übertragen
wks.Range(Cells(3, "IU"), Cells(wks.UsedRange.Row + wks.UsedRange.Rows.Count - 1, "IU")).Value = IdentNr.Value
wks.Range(Cells(3, "IV"), Cells(wks.UsedRange.Row + wks.UsedRange.Rows.Count - 1, "IV")).Value = Namen.Value
'Zellinhalte kopieren
wks.Range(Cells(3, "IU"), Cells(wks.UsedRange.Row + wks.UsedRange.Rows.Count - 1, "IV")).Copy
'Zellinhalte wieder löschen
wks.Range(Cells(3, "IU"), Cells(wks.UsedRange.Row + wks.UsedRange.Rows.Count - 1, "IV")).Clear
End Sub

ggf. letzte Zeile weglassen und Hilfswerte nach dem einfügen manuell löschen. Oder ein zweites Makro, mit dem man die Hilfsdaten wieder entfernt.
cu
Franz
Anzeige
Funktioniert - Danke !
02.06.2006 13:48:25
Wolfgang
Hallo Bernd,
Hallo Franz,
ich habe beide Versionen getestet, komme leider weiterhin mit dem Code von Dir, Bernd, nicht klar - akzeptiert anscheinend nicht die Libraryeinstellungen von mir. Ich habe mir dann den Code von Dir, Franz, eingebaut und ein wenig umgebaut. Er rennt und macht eigentlich das, was ich damit gerne erreicht hätte. Somit bin ich im Moment wunschlos glücklich und Danke Euch Beiden bzw. auch den anderen Forumsteilnehmern, die sich meines Problems angenommen haben. Allen schon jetzt frohe Pfingsttage und weiterhin alles Gute.
Herzliche Grüße
Wolfgang

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige