Autor
|
Thema: vba variant type mismatch (1038 / mal gelesen)
|
sto.teac Mitglied CAD Designer / LV series production
Beiträge: 66 Registriert: 23.07.2010
|
erstellt am: 15. Aug. 2018 16:34 <-- editieren / zitieren --> Unities abgeben:
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 LongtempAdd = 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
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 / zitieren --> Unities abgeben: Nur für sto.teac
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 FunctionSub 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
Beiträge: 66 Registriert: 23.07.2010
|
erstellt am: 16. Aug. 2018 14:37 <-- editieren / zitieren --> Unities abgeben:
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
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 / zitieren --> Unities abgeben: Nur für sto.teac
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|