Vul Validatie Lijst met VBA middels ADODB

  • Onderwerp starter Onderwerp starter dprod
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

dprod

Gebruiker
Lid geworden
2 jun 2010
Berichten
80
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.

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 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
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan