Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Feldtransformation funktioniert nicht
#1
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
Antworten Top
#2
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)
Gruß Atilla
Antworten Top
#3
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste