Fout in code bij afsluiten en opslaan

Status
Niet open voor verdere reacties.

missie91

Gebruiker
Lid geworden
12 jun 2013
Berichten
17
Goedendag,

met Excel ben ik bezig om een userform te maken. deze is bijna helemaal volledig alleen als ik het af wil sluiten en hem op wil slaan wat deze automatisch doet bij het klikken van een knop. geeft deze een foutmelding weer dat er iets niet goed zit met een tekstvlak.
Ben er achter dat het alleen is bij afsluiten en dat het verder helemaal wel doet. ziet iemand misschien het licht en dus waar ik de fout in ga?

De foutmelding die ik krijg is fout 9, subscript valt buiten bereik. Waarbij de foutmelding het dik gedrukte in de code geel maakt.
Code:
Dim sn

Private Sub datum_Change()

End Sub

Private Sub tekst6_Click()

End Sub

Private Sub UserForm_Initialize()
    sn = Sheets("database").Cells(1).CurrentRegion
  

For j = 1 To UBound(sn)
        If InStr(c01 & ",", "," & sn(j, 1) & ",") = 0 Then c01 = c01 & "," & sn(j, 1)
    Next
    
    keus1.List = Split(Mid(c01, 2), ",")
    keus2.Clear
    keus3.Clear
    keus4.Clear
    
   datum.Text = Format(Now(), "dd-mm-yyyy")
    

End Sub
Private Sub CheckBox1_Click()
    For i = 3 To 4
    Me("keus" & i).Enabled = Me.CheckBox1
Next i

End Sub

Function lijst(x)
    For j = 1 To UBound(sn)
        For jj = 1 To x
            If sn(j, jj) <> Me("keus" & jj).Value Then Exit For
        Next
        If jj = x + 1 And InStr(c01 & ",", "," & sn(j, jj) & ",") = 0 Then c01 = c01 & "," & sn(j, jj)
    Next
    lijst = Mid(c01, 2)
End Function

Private Sub keus1_Change()
    keus2.ListIndex = -1
    keus3.ListIndex = -1
  
    If keus1.ListIndex > -1 Then keus2.List = Split(lijst(1), ",")
End Sub

Private Sub keus2_Change()
    If keus2.ListIndex > -1 Then keus3.List = Split(lijst(2), ",")
    
         c01 = keus1.Value & keus2.Value
    
    For j = 1 To UBound(sn)
        If sn(j, 1) & sn(j, 2) = c01 Then Exit For
    Next
    
    'tekst met standaard actie komt te voorschijn na combobox 1 en 2
        For jj = 5 To 5
      [B]  Me("tekst" & jj).Caption = sn(j, jj)[COLOR="#FF0000"][/COLOR][/B]
    Next
End Sub

Private Sub keus3_Change()
'combobox voor constatering
 If keus3.ListIndex > -1 Then keus4.List = Split(lijst(3), ",")
End Sub

Private Sub keus4_Change()
'combobox voor oorzaak

 If keus4.ListIndex = -1 Then Exit Sub
    
    c02 = keus3 & keus4.Value
    
    For j = 1 To UBound(sn)
        If sn(j, 3) & sn(j, 4) = c02 Then Exit For
    Next
  
  'tekst met oplossing wat er gedaan moet worden
      For jj = 6 To 6
        Me("tekst" & jj).Caption = sn(j, jj)
    Next
End Sub

Private Sub CommandButton1_Click()
'afsluiten en opslaan actie

Dim irow As Long
Dim ws As Worksheet
    Set ws = Worksheets("data")
    
'find first row in database
irow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
With ws
    ws.Range("A" & irow) = keus1.Value
    ws.Range("B" & irow) = keus2.Value
    ws.Range("C" & irow) = keus3.Value
    ws.Range("D" & irow) = keus4.Value
    ws.Range("E" & irow) = datum.Value
   
    
    
End With
    keus1.Value = ""
    keus2.Value = ""
    keus3.Value = ""
    keus4.Value = ""


Unload Me

End Sub

Hoop dat iemand mij kan helpen
 
In eerste plaats is die lus helemaal niet nodig (jj heeft gewoon de waarde 5).
Maar wat is de waarde van ubound(sn, 2)?
Daar zit denk ik de fout.
jj is gelijk aan 5, sn(j,jj) is gelijk aan sn(j,5), maar als ubound(sn,2) maar 4 is zit daar je fout.

Te controleren door:
Code:
msgbox ubound(sn)
msgbox ubound(sn,2)
 
In eerste plaats is die lus helemaal niet nodig (jj heeft gewoon de waarde 5).
Maar wat is de waarde van ubound(sn, 2)?
Daar zit denk ik de fout.
jj is gelijk aan 5, sn(j,jj) is gelijk aan sn(j,5), maar als ubound(sn,2) maar 4 is zit daar je fout.

Te controleren door:
Code:
msgbox ubound(sn)
msgbox ubound(sn,2)

kan niet vinden wat u bedoeld met het stukje code wat u omschrijft.
 
Voeg de rode regel maar eens tussen de jouwe, en reageer dan eens weer met de uitkomst van de msgbox.
Code:
Private Sub UserForm_Initialize()
    sn = Sheets("database").Cells(1).CurrentRegion
 [COLOR=#FF0000] msgbox ubound(sn,2)[/COLOR]

For j = 1 To UBound(sn)
 
Laatst bewerkt:
Als ik de regel toevoeg krijg ik een schermpje met 6.
Maar kan de Userform wel opstarten en doorlopen, echter bij opslaan afsluiten krijg ik weer fout subscript valt buiten bereik.

is dat wat je bedoelt?
 
Misschien kun je het bestand plaatsen.
 
Laatst bewerkt:
Heb het al gevonden. nu alleen het checkbox vinkje juist in programmeren... toch bedankt HVS
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan