Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  vba variant type mismatch

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  vba variant type mismatch (1038 / mal gelesen)
sto.teac
Mitglied
CAD Designer / LV series production


Sehen Sie sich das Profil von sto.teac an!   Senden Sie eine Private Message an sto.teac  Schreiben Sie einen Gästebucheintrag für sto.teac

Beiträge: 66
Registriert: 23.07.2010

erstellt am: 15. Aug. 2018 16:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,

ich habe die unten stehende Funktion, um ein variant array wiederholt erstellen zu lassen.
Leider erhalte ich einen "type missmatch" Fehler den ich nicht verstehe.

Vielen Dank fuer eure Hilfe! 

Code:
Function SetFilterWrd(strFilterKey As String) As Variant
Dim tempAdd As String
Dim eRow As Long, sRow As Long, wCol As Long

tempAdd = FilterAddress(WSKeyWords, "A1:AA4", strFilterKey, True)
wCol = WSKeyWords.Range(tempAdd).Column
eRow = EmptyROW(WSKeyWords, tempAdd, wCol, False)
sRow = WSKeyWords.Range(tempAdd).Row + 1

SetFilterWrd (eRow - sRow)                              '<--| ReDim would cause the error "invalid redim"
For i = 0 To eRow - sRow
    SetFilterWrd(i) = WSKeyWords.Cells(i + sRow, wCol)  '<--| i causes the type missmatch
Next

End Function


Die Funktion wird ueber folgenden Code aufgerufen, der sich im selben Module befindet.
Den unwichtigen kram habe ich mal entfernt, um es (hoffentlich) etwas uebersichtlicher zu machen.

Code:
Sub filterWS(WSName As String)
Dim wWS As Worksheet
Dim arrWSfilterPool(2) As String, strFilterAddress As String, fltrKIFA As String, fltrProj As String, fltrPhase As String
Dim lngFilterRow As Long, lngFilterCol As Long, lngListEnd As Long, sCol As Long
Dim bolDelLine As Boolean: bolDelLine = True

' a bunch of not very interesting stuff

fltrProj = SetFilterWrd(WSadmin.Cells(lngFilterRow, sCol))
fltrPhase = SetFilterWrd(WSadmin.Cells(lngFilterRow, sCol + 1))
fltrKIFA = SetFilterWrd(WSadmin.Cells(lngFilterRow, sCol + 2))


End Sub



[Diese Nachricht wurde von sto.teac am 15. Aug. 2018 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

HenryV
Mitglied
Konstrukteur, Engineering


Sehen Sie sich das Profil von HenryV an!   Senden Sie eine Private Message an HenryV  Schreiben Sie einen Gästebucheintrag für HenryV

Beiträge: 778
Registriert: 18.05.2005

SolidWorks 2020 x64 SP3.0
Dell Precision 5820
Intel Xeon W-2125 4x4GHz
NVIDIA Quadro P2000 5GB
32GB RAM
2x Dell U2412M, 24" TFT
Windows 10 Enterprise x64 21H1
Microsoft Office 365 ProPlus
Microsoft Visual Studio Enterprise 2022

erstellt am: 16. Aug. 2018 11:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für sto.teac 10 Unities + Antwort hilfreich

Hallo
Benutze einen Temp-Variant in deiner Funktion, das sollte das Problem lösen.
Code:
Function SetWord(txt As String) As Variant
    Dim i As Integer
    Dim tempVar() As Variant
    For i = 0 To 10
        ReDim Preserve tempVar(i)
        tempVar(i) = txt & ": " & CStr(i)
    Next
    SetWord = tempVar
End Function

Sub Tester()
    Dim x As Integer
    Dim testVar() As Variant
    testVar = SetWord("Hallo")
    For x = 0 To UBound(testVar)
        Debug.Print testVar(x)
    Next
End Sub


------------------
21 ist nur die halbe Antwort.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

sto.teac
Mitglied
CAD Designer / LV series production


Sehen Sie sich das Profil von sto.teac an!   Senden Sie eine Private Message an sto.teac  Schreiben Sie einen Gästebucheintrag für sto.teac

Beiträge: 66
Registriert: 23.07.2010

erstellt am: 16. Aug. 2018 14:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Vielen Dank, ich werde den Code entsprechend anpassen und Rueckmeldung geben.

Aber kannst du mir den Hintergrund erklaeren? Ich verstehe nicht warum der Fehler entsteht und das mag ich nicht 

Danke,
sto

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

HenryV
Mitglied
Konstrukteur, Engineering


Sehen Sie sich das Profil von HenryV an!   Senden Sie eine Private Message an HenryV  Schreiben Sie einen Gästebucheintrag für HenryV

Beiträge: 778
Registriert: 18.05.2005

SolidWorks 2020 x64 SP3.0
Dell Precision 5820
Intel Xeon W-2125 4x4GHz
NVIDIA Quadro P2000 5GB
32GB RAM
2x Dell U2412M, 24" TFT
Windows 10 Enterprise x64 21H1
Microsoft Office 365 ProPlus
Microsoft Visual Studio Enterprise 2022

erstellt am: 16. Aug. 2018 16:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für sto.teac 10 Unities + Antwort hilfreich

Das Zuweisen eines Wertes in der Funktion an die Funktion veranlasst VBA diesen Wert an die Aufrufende Prozedur zurückzugeben.
Code:
SetFilterWrd(i) = WSKeyWords.Cells(i + sRow, wCol)
d.H. diese Zeile entspricht z.B. in VB.net dieser
Code:
Return WSKeyWords.Cells(i + sRow, wCol)

How to Return a result from a VBA Function

------------------
21 ist nur die halbe Antwort.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz