Beste mede-forum leden,
Bij het vullen van een validatie lijst krijg ik een foutmelding die ik niet helemaal kan plaatsen.
"Door de toepassing of door object gedefinieerde fout"
Ik gebruik hierbij ADODB.connection met een db.xls bestand.
Het vreemde is als ik de tabel kleiner maak hij de validatie lijst wel netjes vult.
Hierbij de code om het e.e.a. wat duidelijker te maken.
Deze wordt als volgt benaderd:
Hierbij is Range("5") de strTable (table name)
Hierbij is 0 de iTableCol (column in table)
Hierbij is "G5" de strRange (range welke gevuld dient te worden met de validatie)
De Table bevat 106 rows, welke in een Array geplaatst worden en vervolgens middels Join aan de validatie lijst worden toegevoegd.
Ik hoop dat iemand mij kan helpen!
Alvast bedankt...
Groeten,
dProd
Bij het vullen van een validatie lijst krijg ik een foutmelding die ik niet helemaal kan plaatsen.
"Door de toepassing of door object gedefinieerde fout"
Ik gebruik hierbij ADODB.connection met een db.xls bestand.
Het vreemde is als ik de tabel kleiner maak hij de validatie lijst wel netjes vult.
Hierbij de code om het e.e.a. wat duidelijker te maken.
Code:
Public Sub FillValFromDB(strTable As String, iTableCol As Integer, strRange As String)
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim wb As Workbook
Dim ws As Worksheet
Dim strSQL As String
Dim ary() As String
Dim i As Integer, rSQL As Integer
strSQL = "SELECT * FROM " & strTable
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & USED_DBFILEPATH & ";" & _
"Extended Properties=""Excel 8.0;HDR=Yes"";"
rs.Open strSQL, cn, adOpenStatic, adLockReadOnly
rSQL = rs.RecordCount
ReDim ary(0 To rSQL)
Do
ary(i) = rs(iTableCol)
rs.MoveNext
i = i + 1
Loop Until rs.EOF
Set wb = ThisWorkbook
Set ws = wb.ActiveSheet
With ws.Range(strRange).Validation
.Delete
.Add Type:=xlValidateList, Formula1:=Join(ary, ",")
End With
Erase ary()
rs.Close
End Sub
Deze wordt als volgt benaderd:
Code:
FillValFromDB Range("C5"), 0, "G5"
Hierbij is 0 de iTableCol (column in table)
Hierbij is "G5" de strRange (range welke gevuld dient te worden met de validatie)
De Table bevat 106 rows, welke in een Array geplaatst worden en vervolgens middels Join aan de validatie lijst worden toegevoegd.
Ik hoop dat iemand mij kan helpen!
Alvast bedankt...
Groeten,
dProd