Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

TextToColumns

Betrifft: TextToColumns von: Andreas
Geschrieben am: 17.11.2014 19:51:02

Hallo,
ich möchte eine Variable, die durch den Benutzer definiert wird, als Argument der Methode "TextToColumns" benutzen. Genauer, die Argumente "DecimalSeparator" und "Comma" und "Semicolon". Der user soll zum Beispiel auf einer Oberfläche diese Argumente definieren, und dann soll mit diesen Argumenten eine csv Datei geöffnet werden.
Sheets("calc").Range("B2:B35").TextToColumns(,xlDelimited, , , , ,True)
gibt mir immer den Fehler " Compile ERROR. Expected:=". Ich vetsehe nicht, wieso die Argumente oder die ganze Zeile vom Compiler als Variable angesehen wird.
Was mache ich hier falsch?
vielen Dank für einen Tipp!
Andreas

  

Betrifft: AW: TextToColumns von: yummi
Geschrieben am: 18.11.2014 09:19:24

Hallo Andreas,

gib mal vor deinen Argumenten an wofür die sind:

Sheets("calc").Range("B2:B35").TextToColumns(DataType:=xlDelimited,Space:=True)

ob Du mit True auf Space zugreifen wolltest weiß ich nicht, musst Du evtl anpassen

Gruß
yummi


  

Betrifft: AW: TextToColumns von: Andreas
Geschrieben am: 18.11.2014 10:17:36

Hallo Yummi,

vielen Dank für Deine Antwort.

Die Definition lautet:
expression.TextToColumns(Destination, DataType, TextQualifier, ConsecutiveDelimiter, Tab, Semicolon, Comma, Space, Other, OtherChar, FieldInfo, DecimalSeparator, ThousandsSeparator, TrailingMinusNumbers)

"True" steht an Position 7, also soll die Position 7 der Argumente, also Comma:=TRUE sein.

Kann man überhaupt die von mir benutzte Notation in diesem Fall nehmen?

Die Methode funktioniert, wenn ich named Arguments beutze, aber dann kann ich keine Variablen einsetzen, oder doch?
Wenn ich nur ein Boolean als Argument habe, kann ich mit Variablen arbeiten. Das ist mein Ziel.
Ich habe das getestet, und es funktioniert nicht:

Dim myVar as Boolean
myVar = True
Sheets("calc").Range("B2:B35").TextToColumns DataType:=xlDelimited, Comma:=myVar

Fehler:
Runtime error '9'
Subscript out of range.

Die Notation mit Argumenten in Klammern funktioniert bei mir überhaupt nicht.

Andreas


  

Betrifft: AW: TextToColumns von: Daniel
Geschrieben am: 18.11.2014 09:32:54

Hi
du verwendest die Anweisung TextToColumns als einfachen Befehl, dh die Probgrammzeile enthält nur den Befehl und seine Parameter und nichts weiter.
In diesem Fall werden die Parameter des Befehls nicht in Klammern gesetzt!

Sheets("calc").Range("B2:B35").TextToColumns ,xlDelimited, , , , ,True
Gruß Daniel


  

Betrifft: AW: TextToColumns von: Andreas
Geschrieben am: 18.11.2014 10:27:52

Hi Daniel,

OK, das funktioniert!
Vielen Dank!

Andreas


  

Betrifft: AW: TextToColumns von: fcs
Geschrieben am: 18.11.2014 10:58:39

Hallo Andreas,

so könnte es aussehen, wenn du das Trennzeichen variabel setzen möchtest.

Gruß
Franz

Sub aaTest()
  Dim strTrennzeichen As String
  Dim rng As Range
  Dim bolTab As Boolean, bolSemi As Boolean, bolComma As Boolean, _
        bolSpace As Boolean, bolOther As Boolean, strOther As String
  
  Set rng = Sheets("calc").Range("B2:B35")
  
  strTrennzeichen = InputBox("Trennzeichen für Text in Spalten ( ,  ;  .  oder tab )", _
        "Text in Spalten Zellbereich " & rng.Address(False, False), ";")
  
  Select Case LCase(strTrennzeichen)
    Case "" 'Abbrechen wurde gewählt
    Case ".", ",", ";", "tab" 'zulässige Trennzeichen
        Select Case LCase(strTrennzeichen)
          Case "." 'Punkt
            bolOther = True: strOther = strTrennzeichen
          Case "," 'Komma
            bolComma = True
          Case ";" 'Semikolon
            bolSemi = True
          Case "tab" 'Tabulator
            bolTab = True
        End Select
        With rng
          .TextToColumns Destination:=.Range("A1"), DataType:=xlDelimited, _
              Tab:=bolTab, Semicolon:=bolSemi, Comma:=bolComma, Space:=bolSpace, _
              Other:=bolOther, otherChar:=strOther
        End With
    Case Else
      MsgBox "unzulässiges Trennzeichen"
  End Select
    
End Sub



  

Betrifft: AW: TextToColumns von: Andreas
Geschrieben am: 18.11.2014 11:43:26

Hallo Franz,

genau diesen Code suchte ich!

Vielen Dank,

Andreas