Fout 9 tijdens uitvoering

Status
Niet open voor verdere reacties.

ThomasGHI

Gebruiker
Lid geworden
1 feb 2019
Berichten
37
VBA: Fout 9 tijdens uitvoering; het subscript valt buiten het bereik

Ik krijg steeds bovenstaande foutmelding bij het script in VBA - Excell, kan niet vinden waar mijn fout is??????

Code:
Code VBA:

Option Explicit

Dim blnNew As Boolean
Dim TRows, i As Long


Private Sub cmdClose_Click()
    If cmdClose.Caption = "Close" Then
        Unload Me
    Else
        cmdClose.Caption = "Close"
        cmdNew.Enabled = True
        
        
    End If
End Sub

Private Sub cmdNew_Click()
    blnNew = True
    txtklant.Text = ""
    txttype.Text = ""
    txtdossier.Text = ""
    txtdatum.Text = ""
    txtbestand.Text = ""
    txtbestemming.Text = ""
    
    cmdClose.Caption = "Cancel"
    cmdNew.Enabled = False
    cmdSave.Enabled = True
    Frame2.Enabled = True
End Sub

Private Sub cmdSave_Click()
    If Trim(txtklant.Text) = "" Then
        MsgBox "Enter klant", vbCritical, "Save"
        txtklant.SetFocus
        Exit Sub
    End If
    Call prSave
    cmdClose.Caption = "Close"
    cmdNew.Enabled = True
    ThisWorkbook.Save
    
End Sub
Private Sub prSave()
     ''''' Save the DMS
    If blnNew = True Then
        TRows = Worksheets("DMS").Range("A1").CurrentRegion.Rows.Count
        With Worksheets("DMS").Range("A1")
            .Offset(TRows, 0).Value = txtklant.Text
            .Offset(TRows, 1).Value = txttype.Text
            .Offset(TRows, 2).Value = txtdossier.Text
            .Offset(TRows, 3).Value = txtdatum.Text
            .Offset(TRows, 4).Value = txtbestand.Text
            .Offset(TRows, 11).Value = txtbestemming.Text
         End With
            txtklant.Text = ""
            txttype.Text = ""
            txtdossier.Text = ""
            txtdatum.Text = ""
            txtbestand.Text = ""
            txtbestemming.Text = ""
            Call prComboBoxFill
     Else
        For i = 2 To TRows
            If Trim(Worksheets("DMS").Cells(i, 1).Value) = Trim(ComboBox3.Text) Then
                Worksheets("DMS").Cells(i, 1).Value = txtklant.Text
                Worksheets("DMS").Cells(i, 2).Value = txttype.Text
                Worksheets("DMS").Cells(i, 3).Value = txtdossier.Text
                Worksheets("DMS").Cells(i, 4).Value = txtdatum.Text
                Worksheets("DMS").Cells(i, 5).Value = txtbestand.Text
                Worksheets("DMS").Cells(i, 13).Value = txtbestemming.Text
                txtklant.Text = ""
                txttype.Text = ""
                txtdossier.Text = ""
                txtdatum.Text = ""
                txtbestand.Text = ""
                txtbestemming.Text = ""
                Exit For
            End If
        Next i
      End If
    blnNew = False
    
    If Trim(txtklant.Text) = "" Then
        cmdSave.Enabled = False
        Frame2.Enabled = False
    Else
        cmdSave.Enabled = True
        Frame2.Enabled = True
    End If
End Sub

Private Sub cmdSearch_Click()
    blnNew = False
    txtklant.Text = ""
    txttype.Text = ""
    txtdossier.Text = ""
    txtdatum.Text = ""
    txtbestand.Text = ""
    txtbestemming.Text = ""
   
    TRows = Worksheets("DMS").Range("A1").CurrentRegion.Rows.Count
    If OptionButton1.Value = True Then
        For i = 2 To TRows
            If Trim(Worksheets("DMS").Cells(i, 1).Value) = Trim(ComboBox2.Text) Then
                    
                txtklant.Text = Worksheets("DMS").Cells(i, 1).Value
                txttype.Text = Worksheets("DMS").Cells(i, 2).Value
                txtdossier.Text = Worksheets("DMS").Cells(i, 3).Value
                txtdatum.Text = Worksheets("DMS").Cells(i, 4).Value
                txtbestand.Text = Worksheets("DMS").Cells(i, 5).Value
                txtbestemming.Text = Worksheets("DMS").Cells(i, 12).Value
                
                Exit For
            End If
        Next i
    Else
        For i = 2 To TRows
        
            If Trim(Worksheets("DMS").Cells(i, 2).Value) = Trim(ComboBox3.Text) Then
                    
                txtklant.Text = Worksheets("DMS").Cells(i, 1).Value
                txttype.Text = Worksheets("DMS").Cells(i, 2).Value
                txtdossier.Text = Worksheets("DMS").Cells(i, 3).Value
                txtdatum.Text = Worksheets("DMS").Cells(i, 4).Value
                txtbestand.Text = Worksheets("DMS").Cells(i, 5).Value
                txtbestemming.Text = Worksheets("DMS").Cells(i, 12).Value
                
                Exit For
            End If
        Next i
    End If
    
    
    If Trim(txtklant.Text) = "" Then
        cmdSave.Enabled = False
        Frame2.Enabled = False
    Else
        cmdSave.Enabled = True
        Frame2.Enabled = True
    End If
End Sub

Private Sub ComboBox2_Change()

End Sub

Private Sub ComboBox3_Change()

End Sub


Private Sub Frame2_Click()

End Sub

Private Sub Label1_Click()

End Sub

Private Sub Label2_Click()

End Sub

Private Sub Label3_Click()

End Sub

Private Sub OptionButton1_Click()
    ComboBox2.Enabled = True
    ComboBox3.Enabled = False
End Sub

Private Sub OptionButton2_Click()
    ComboBox2.Enabled = False
    ComboBox3.Enabled = True
End Sub


Private Sub prComboBoxFill()
    TRows = Worksheets("DMS").Range("A1").CurrentRegion.Rows.Count
    ComboBox2.Clear
    For i = 2 To TRows
        ComboBox2.AddItem Worksheets("DMS").Cells(i, 1).Value
            
    Next i
End Sub
Private Sub prComboBoxFill2()
    TRows = Worksheets("DMS").Range("A1").CurrentRegion.Rows.Count
    ComboBox3.Clear
    For i = 2 To TRows
        ComboBox3.AddItem Worksheets("DMS").Cells(i, 2).Value
            
    Next i
End Sub

Private Sub txtdatum_Change()

End Sub

Private Sub txtklant_Change()

End Sub

Private Sub txttype_Change()

End Sub

Private Sub UserForm_Initialize()
    Call prComboBoxFill
    Call prComboBoxFill2
    cmdSave.Enabled = False
    Frame2.Enabled = False
    OptionButton1.Value = True


Dim wb As Workbook: Set wb = ThisWorkbook
Dim WS As Worksheet
Dim LastRow As Long
Dim aCell As Range

Set WS = wb.Sheets("Type DMS")

With WS
    LastRow = .Cells(.Rows.Count, "C").End(xlUp).Row
    
    For Each aCell In .Range("C1:C" & LastRow)
        If aCell.Value <> "" Then
            Me.txttype.AddItem aCell.Value
        End If
    Next
End With



Set WS = wb.Sheets("Type DMS")

With WS
    LastRow = .Cells(.Rows.Count, "O").End(xlUp).Row
    
    For Each aCell In .Range("O1:O" & LastRow)
        If aCell.Value <> "" Then
            Me.txtbestand.AddItem aCell.Value
        End If
    Next
End With
End Sub

Dits het bestand. Ik weet niet wat er juist verkeerd is in het bestand bij formulier : Userform1
De bedoeling van dit formulier is dat ik via de commandoknop"Zoeken" in sheet "Home" het scherm krijg waar ik a.d.h.v. 2 Comboboxen dat terug krijg uit sheet"DMS".
Via de eerste combobox zoek ik op naam van de klant en via de 2de combobox op Referte ui het sheet DMS, via de knop "Search" zou dan in het formulier de velden moeten ingevuld worden die ik nodig heb.

2019-02-01_19h29_32.png
 

Bijlagen

  • test_DMS.xls
    527 KB · Weergaven: 36
Laatst bewerkt:
Begin eens met het plaatsen van codetags. Je hebt een .xls als voorbeeld geplaatst deze geeft bij mij een veiligheidwaarschuwing dus verder niet bekeken. Werk je nog met Xl-2003 of ouder?
 
code tags

Hi,

Bedankt dat je al even wilt kijken, maar ik begrijp uw vraag niet.
Ik werk met excel voor office 365.
 
Ik heb de code tussen code tags geplaats. Ik bedoel met de .xls.
Ik kan deze op verschillende pc's opendoen vanuit forum.
 
@ThomasGHI:
Zie de roze regel.
Plaats een .xlsx bestand wat al sinds Office 2007 standaard is.

Fout.JPG
 
sorry, niet bij stil gestaan.
Bijlage beter? Moest in .xlsm plaatsen anders werkte de VBA-code niet meer.
 

Bijlagen

  • test_DMS.xlsm
    213,1 KB · Weergaven: 32
Laatst bewerkt:
Mij lijkt een .xlsm of .xlsb iets handiger.;)
 
Inderdaad, foutje van mij :confused:
 
'Het subscript valt buiten het bereik' krijg je als je iets met array's doet wat niet klopt. Deze kan ik niet vinden. Bestaan alle tabjes wel waar je naar verwijst in de code? Set iets wat niet bestaat zal ook deze melding geven.
 
ben al meer dan uur alles zitten controleren, er is in feite niets mis met de code als ik u juist begrijp?
 
Laat even weten op welke regel je die fout 9 krijgt.
Dus welke regel in je code dan geel is.
 
Er is van alles mis met jouw code maar dat terzijde. Mijn aanname in #10 was juist. De tab 'Type DMS' bestaat niet.
 
Ik ben n u ook geen crack maar beginnende :)

ik zie nochtans het tabblad2019-02-01_20h50_48.png DMS staan ??
 
Ja, maar niet het blad "Type DMS". En daar verwijs je naar bij het openen van de Userform.
Dat is wat VenA ook zei.
 
Sorry, Echt dom van mij. Had een find and replace gedaan zonder bij die ene regel erbij te staan.

dank u voor de goede opmerkingen, het werkt nu terug.

Ik heb enkel nog een vraagje, hoe maak ik de code dat hij ipv van combobox 1 of combobox 2 de data ophaalt maar op basis van Combobox 1 en Combobox 2.
Ik heb namelijk in de desbetreffende sheet een klant die meerdere maal kan terugkeren maar steeds met een andere refertenummer.
M.a.w. de data zou moeten weergegeven worden op basis van naam klant en op basis van referte zodat de juiste data naar boven komt.

bedankt voor jullie hulp.
 
gevonden en dan wat zelf uitgezocht en zoeken op internet, forums, ...
Moet eerlijk zeggen heb daar nooit enige opleiding voor gekregen, dus ik prijs ùij blij als het werkt :)
 
Zover reikt mijn kennis nu ook niet.
Kan iemand mij helpen qua code... ?
 
@edmoor, zou jij mij kunnen bijstaan bij mijn 2de probleem met de comboboxen ?
 
Laatst bewerkt door een moderator:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan