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.

Feldzuordnung funktioniert nicht
#1
Hallo VBA Profis,

habe über die Spalte A verteilt in einigen Zellen Werte drin stehen. Diese Werte möchte ich gern in ein Feld varZ schreiben. Leider

funktioniert der folgende Code nicht. Es kommt die Fehlermeldung Typen unverträglich. Was ist falsch an diesem Code?

Die Anzahl der Feldelemente von varZ ist doch genauso groß, wie die Anzahl der Zellen aus Spalte A, in denen ein Wert steht.

Code:
Sub Testcode()
ReDim varZ(Range("A:A").SpecialCells(xlCellTypeConstants).Count)
varZ = Range("A:A").SpecialCells(xlCellTypeConstants).Value 'Fehlermeldung: Typen unverträglich??
End Sub
Antworten Top
#2
Hallo,
ungeprüft:

Anstelle von redim
Varz = range(... usw wie gehabt

In der Zeile

Varz kann nicht .value sein, nur .cout wie eine Zeile darüber.

Mfg
Antworten Top
#3
@Fennek

Auf ReDim verzichten wird wohl nicht funktionieren, da ohne Deklaration varZ als Variable nicht definiert ist.

Aber vielleicht meinst du auch was anderes. Dann bitte poste deinen Code.
Antworten Top
#4
Hallo,

die Fehlermeldung beruht wohl darauf, dass in Deiner Spalte A nur Zahlen stehen.
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#5
Hallo,

bevor ich im Nebel stochere, erkläre bitte (kurz) deine Absicht und die Datenstruktur, insbesondere, ob in Spalte A verschiedene Arten von Konstanten stehen oder auch anderes, z.b. Formeln, Wahrheitswerte.

Falls du nur 'alle' Zellen in ein Array übergeben möchtest, geht das auch direkter.

Mfg
Antworten Top
#6
Also es steht in irgendwelchen Zellen der Spalte A irgendetwas drin. Zahlen, Konstanten, Texte. Egal. Viele Zellen sind natürlich auch leer.

Schaut euch diesen funktionierenden Code als Analogie dazu an:


Code:
Sub Feldauffüllung()
ReDim varF(1 To 10)
varF = Range("A1:A10").Value
End Sub

Das Feld varF wird mit Werten aus dem Bereich von A1 bis A10 aufgefüllt.

Gelingt es mir nun mit den SpecialCells(xlCellTypeConstants) das Feld aufzufüllen würde ich mir ja, als grundsätzlich fauler Mensch, das Programmieren mit einer If Anweisung sparen,  da ich nicht mehr überprüfen müßte, ob nun in den einzelnen Zellen etwas steht oder der nicht.
Antworten Top
#7
Hallo,

hier ein paar Beispiele, in Spalte A stehen nur Texte.

Code:
Sub sAr()
Dim rng as range
ar = application.transpose(range("a1:a4"))
For i = 1 to 4
Debug.print ar(i)
Next i
'Nur falls keine Leerzeilen existieren
ar2 = application.transpose(columns(1).specialcells(xlcelltypeconstants))
For i = 1 to ubound(ar2)
Debug.print ar2(i)
Next
Set rng = columns(1).specialcells(xlcelltypeconstants)
Debug.print rng.address
For each ar3 in columns(1).specialcells(xlcelltypeconstants).areas
Debug.print ar3.address
Next
End sub
Antworten Top
#8
Hallo,

So:

Sub Feldauffüllung()
Dim varF
varF = Range("A1:A10").Value
End Sub
Gruß Atilla
Antworten Top
#9
@Attila: Ich glaub du hast das gemacht, was ich auch oft tue: Diagonal gelesen und das Problem noch nicht erkannt.

@Fennek. Danke für den Code. Ich fasse mal zusammen:

Code:
Sub Code()

Dim rng As Range, ar3 As Variant
Set rng = Columns(1).SpecialCells(xlCellTypeConstants)
Debug.Print rng.Address
For Each ar3 In Columns(1).SpecialCells(xlCellTypeConstants).Areas
Debug.Print ar3.Address
Next

End Sub
Der Code macht genau das, worauf ich hinaus wollte. Dabei ist "Columns(1).SpecialCells(xlCellTypeConstants)" eine Objektvariable und keine Feldvariable. Deshalb wohl die
Typenunverträglichkeit. Ergo gehts wohl auch nicht mit einer einfachen Feldvariablen. Aber vielleicht hat jemand noch einen zusätzlichen Einfall.
Zunächst einmal aber nochmals Danke.
Antworten Top
#10
Beitrag folgt noch...
Antworten Top


Gehe zu:


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