Clever-Excel-Forum

Normale Version: Feldtransformation funktioniert nicht
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo VBA Gemeinde,

ich habe eine kleines VBA Programm geschrieben. fFeld1 speichert aus der Spalte A  leere und nichtleere Werte ab.
fFeld2 wiederum speichert alle Werte aus fFeld1 ab, die nichtleer sind. Am Ende meines Programmes sollen die in fFeld2 abgespeicherten
Werte, in der Spalte B ausgegeben werden. Leider klappt dies nicht so ganz. Ich habe etwas falsch gemacht.

Für eure Hilfe wäre ich sehr dankbar.
Code:
Sub Feldtransformation()
Dim q As Long, i As Long
ReDim fFeld1(1 To Cells(Rows.Count, 1).End(xlUp).Row)
ReDim fFeld2(1 To Application.CountA(Columns(1)))

fFeld1 = Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
q = 1
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Not IsEmpty(fFeld1(i, 1)) Then
fFeld2(q) = fFeld1(i, 1) '!!
q = q + 1
End If
Next i

'Ausgabe der Werte von fFeld2 in Spalte B
'!!! Fehler !!! In allen Zellen der Spalte B steht nur
'der erste Feldwert von fFeld2
Range("B1:B" & Application.CountA(Columns(1))) = fFeld2

End Sub
Hallo,

Du musst transponieren.


Code:
Range("B1:B" & Application.CountA(Columns(1))) = Application.Transpose(fFeld2)

'oder
Range("B1:B" & q - 1) = Application.Transpose(fFeld2)

'oder
Range("B1:B" & UBound(fFeld2)) = Application.Transpose(fFeld2)
Hallo,

hier sind zwei Varienten:

Code:
Sub sSelect()
Dim rng as range
Set rng = columns(1).specialcells(xlcelltypeconstants)
For each c in rng
i = i +1
Cells(i, "B") = c.value
Next
'oder einfacher
rng.copy range("c1")
End sub

Beim Testen hat es erst im zweiten Anlauf funktioniert.

Mfg