VBA Select Case

Bild

Betrifft: VBA Select Case
von: WalterK
Geschrieben am: 04.06.2015 16:06:33

Hallo,
der folgende Codeteil soll Überschriften in Zeile 1 vergleichen und falls gefunden die Spalte ab Zelle 2 formatieren.
Allerdings werden die 3 Zeilen ab ".TextTocolumns ...." gelb unterlegt, die Fehlermeldung lautet: Laufzeitfehler 438: Objekt unterstützt diese Eigenschaft oder Methode nicht.
Der Code läuft in einem allgemeinen Modul, wksPool ist der Blattname.

    Dim blnTTC As Boolean
    Dim i As Long
    For i = 1 To wksPool.Cells(1, Columns.Count).End(xlToLeft).Column
        With Range(wksPool.Cells(1, i), wksPool.Cells(LzA, i))
            Select Case wksPool.Cells(1, i)
                Case "Kontobeginn", "Kontoende"
                    .NumberFormat = "m/d/yyyy"
                    .HorizontalAlignment = xlCenter
                    blnTTC = True
            End Select
          If blnTTC Then
             If Application.WorksheetFunction.CountA(wksPool.Cells) > 0 Then
                   .TextToColumns Destination:=wksPool.Cells(2, i), _
                   TextQualifier:=xlDoubleQuote, Tab:=True, _
                   Other:=False, FieldInfo:=.Array(1, 1)
             End If
             blnTTC = False
          End If
       End With
    Next i
Besten Dank für die Hilfe und Servus, Walter

Bild

Betrifft: AW: VBA Select Case
von: Daniel
Geschrieben am: 04.06.2015 17:28:13
Hi
der Punkt Bei "FieldInfo:=.Array(1, 1)" ist zuviel und muss weg.
da du in einer WITH-Klammer bist, sagt dieser Punkt aus, dass Array ein Unterobjekt oder eine eine Eigenschaft des in der WITH-Klammer definierten Objekts sein soll. Das trifft hier aber nicht zu, "Array" ist aber eine eigenständige Funktion.
Gruß Daniel

Bild

Betrifft: AW: VBA Select Case
von: WalterK
Geschrieben am: 04.06.2015 18:04:32
Hallo Daniel,
wenn ich den Punkt weg nehme kommt die Meldung:
Laufzeitfehler 1004.
Zielbezug ist ungültig
Danke uns Servus, Walter

Bild

Betrifft: AW: VBA Select Case
von: Daniel
Geschrieben am: 04.06.2015 18:31:42
HI
ich gehe mal davon aus, dass du mit dem Text in Spalten Textzahlen in echte Zahlen wandeln willst und daher die angegebenen Zellbereiche mit dem Ergebnis überschrieben werden sollen.
Dann musst du bei Destination die linke obere Zelle es Bereichs angeben.
Du versetzt aber den Zielbereich um eine Zeilen nach unten (Zeile 2 statt Zeile 1) und das kann nicht funktionieren und ist auch nicht sinnvoll.
dh entweder:
Destination:=wksPool.Cells(1, i)
oder weil du ja in der WITH-Klammer den Quellbereich schon definert hast, kannst du auch das Ziel inabhängigkeit von diesem angeben und die ober Linke Zelle dieses Bereichs angeben:
Destination:=.Cells(1, 1)
Gruß Daniel

Bild

Betrifft: AW: VBA Select Case
von: WalterK
Geschrieben am: 04.06.2015 19:07:26
Hallo Daniel,
besten Dank!
Destination:=wksPool.Cells(1, i) hat geholfen.
Servus, Walter

 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA Select Case"