Microsoft Excel

Herbers Excel/VBA-Archiv

Copy Paste Problem mit VBA

Betrifft: Copy Paste Problem mit VBA von: Chris
Geschrieben am: 08.08.2008 15:10:35

Hallo Leute,

ich habe ein Makro geschrieben, das ein aus SAP gezogenes Spreadsheet in ein formatiertes Excel File umwandelt.

Jetzt taucht plötzlich folgendes Problem auf:

Ein String wird in Zelle "A1" geschrieben, der Buchstaben und steuercode enthält.
D.H. ich habe in dieser Zelle alle Werte inclusive aller TAB's der gesamten Zeile stehen.

Beispiel: Sichtbar ist in dieser Zelle:
AutoOpel2500EUR

Eigentlich gehört dieser Text verteilt auf 4 Zellen:
Auto Opel 2500 EUR

Der String enthält aber die Informationen:

"Auto<TAB>Opel<TAB>2500<TAB>EUR"

Per Hand kann ich den Fehler einfach beheben, indem ich aus dem String den Teil hinter dem ersten Text heraus schneide und dan einfach in die erste Zelle der Zeile hereinkopiere

D.h. ich schneide mir mit "Strg+x" <TAB>Opel<TAB>2500<TAB>EUR ab und kopiere ihn in die erste Zelle und die Werte werden schön auf die Zelle B1, C1 und D1 verteilt. Dann schreibe ich in Zelle A1 das zuvor gemerkte "Auto"

Das habe ich jetzt versucht mit VBA nachzubasteln:

AA = Selection.Value

If Len(AA) > 4 Then
AA1 = Left$(AA, 4)
AA2 = Right$(AA, Len(AA) - 4)
ActiveCell.Value = AA2
ActiveCell.Value = AA1
End If

Leider verliert bei dieser Programmierung der String die "Tabs" für die nächtes Zellen.

Könnt Ihr mir weiterhelfen?

Vielen Dank
Chris

  

Betrifft: AW: Copy Paste Problem mit VBA von: Lars
Geschrieben am: 08.08.2008 15:35:58

Hi,

steht der String wirklich so:

"AutoOpel2500EUR"

also auch mit den "" in der Zelle?

mfg Lars


  

Betrifft: AW: Copy Paste Problem mit VBA von: Chris
Geschrieben am: 08.08.2008 16:34:16

Nein ohne ""


  

Betrifft: AW: Copy Paste Problem mit VBA von: Lars
Geschrieben am: 08.08.2008 16:44:38

Hi,

lies die Antwort von Horst, schneller und einfacher gehts nicht.

mfg Lars


  

Betrifft: Zellen splitten von: Backowe
Geschrieben am: 08.08.2008 15:48:56

Hi Chris,

probiere es mal so:

VBA-Code:
Sub ZellenSplitten()
Dim Zelle As Range
Dim Ergebnis As Variant
Dim i As Long
For Each Zelle In Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row)
  Ergebnis = Split(Zelle, "<TAB>")
  For i = 0 To UBound(Ergebnis)
    Cells(Zelle.Row, 2 + i) = Ergebnis(i)
  Next
Next
End Sub
Code eingefügt mit Syntaxhighlighter 4.15


Gruss Jürgen


  

Betrifft: Code angepasst! von: Backowe
Geschrieben am: 08.08.2008 16:40:56

Hi Chris,

VBA-Code:
Sub ZellenSplitten()
Dim Zelle As Range
Dim Ergebnis As Variant
Dim i As Long
For Each Zelle In Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row)
  Ergebnis = Split(Application.Substitute(Zelle, """", ""), "<TAB>")
  For i = 0 To UBound(Ergebnis)
    Cells(Zelle.Row, 2 + i) = Ergebnis(i)
  Next
Next
Columns(1).Delete
End Sub
Code eingefügt mit Syntaxhighlighter 4.15


Gruss Jürgen


  

Betrifft: AW: Copy Paste Problem mit VBA von: Horst
Geschrieben am: 08.08.2008 16:17:47

Hi,

Sub Splitter()

''Das sagt der Makrorekorder
    Cells.Replace What:="", Replacement:=" ", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
        Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1)), TrailingMinusNumbers:= _
        True
End Sub



mfg Horst


  

Betrifft: AW: Copy Paste Problem mit VBA von: Chris
Geschrieben am: 08.08.2008 17:18:15

Hallo Horst,


Super, das bringt mich um einiges weiter und...
mit kleiner Abänderung funktioniert das schon ganz gut.... statt Space= True -> Tab=True

Selection.TextToColumns Destination:=Range("A547"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1)), TrailingMinusNumbers:= _
True

Die <TAB> in meinem Beispiel sind von mir Platzhalter für die Steuerzeichen Tab im String

In meinem echten String sind aber leider auch mehrfach Tabs hintereinander. - <TAB> steht für Nächste Zelle
Um bei meinem Beispiel zu bleiben:
Auto<TAB><TAB>Opel<TAB>2500<TAB><TAB><TAB>EUR

Eigentlich möchte ich das die leeren Zellen auch leer bleiben, also das nach dem auslesen folgendes Ergebnis steht:

A1 B1 C1 D1 E1 F1 G1
Auto "Leer" Opel 2500 "Leer" "Leer" EUR

Wenn dieses Ergebnis erreicht ist, dann ist mein Problem gelöst :c)

Chris


  

Betrifft: AW: ConsecutiveDelimiter von: Erich G.
Geschrieben am: 08.08.2008 18:00:30

Hi Chris,
dann solltest du
ConsecutiveDelimiter:=True
umstellen in
ConsecutiveDelimiter:=False

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: ConsecutiveDelimiter von: Chris
Geschrieben am: 12.08.2008 13:04:42

Erich,

ich habe gerade erst die Zeit gehabt zum testen - Super funktioniert!!!!


Vielen Dank

Grüsse aus Schumi-Town Kerpen ;c)

Chris


  

Betrifft: AW: ConsecutiveDelimiter von: Chris
Geschrieben am: 12.08.2008 13:04:51

Erich,

ich habe gerade erst die Zeit gehabt zum testen - Super funktioniert!!!!


Vielen Dank

Grüsse aus Schumi-Town Kerpen ;c)

Chris


 

Beiträge aus den Excel-Beispielen zum Thema "Copy Paste Problem mit VBA"