• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

"Overloop" ERROR 6

Status
Niet open voor verdere reacties.

Atwist

Terugkerende gebruiker
Lid geworden
24 jan 2006
Berichten
1.055
Besturingssysteem
Wndows 10
Office versie
2016
hallo

Heb een probleem met mijn script die gemaakt is met Excel 2013.
En deze moet nu draaien op Excel 2016.
Het script heeft goed gewerkt maar nu krijg ik in onderstaan een "Overloop" fout
Het loopt vast op regel in het blauw gemarkeerd ik weet in wat er nu precies fout is, Ik hoop dat jullie mij kunnen helpen.


Code:
Option Explicit                                     ' Variablendefinition erforderlich
Dim InI As Integer                                  ' Schleifenvariable für den gesamten Code der Userform
Dim ByWert As Byte                                  ' Zeilenvariable für den gesamten Code der Userform
Dim iAnzeige As Integer
Dim objShell As Object
Dim lngDauer As Long
Private Sub UserForm_Initialize()
    
        ' 0: Manuell;
        ' 1: Fenstermitte
        ' 2: Bildschirmmitte
        ' 3: Windows-Standard
        Me.StartUpPosition = 2
    ComboBox1.Tag = "1"
        ' Tage des aktuellen Monats in ComboBox1 eintragen
    For InI = 1 To Day(CDate("01." & Month(Date) + 1 & "." _
        & Year(Date)) - 1)
        ComboBox1.AddItem InI
    Next InI
    For InI = 1 To 12                               ' Monate als Wort in ComboBox2 eintragen
        ComboBox2.AddItem Format(DateSerial(1900, InI, 1), _
            "MMMM")
    Next InI
    ' Jahre in Combobox3 eintragen
    For InI = 1900 To 2222
        ComboBox3.AddItem InI
    Next InI
    
    ComboBox1.Value = Day(Date)                     ' Aktuelles Datum als Startwert setzen
    ComboBox2.Value = Format(Date, "MMMM")
    ComboBox3.Value = Year(Date)
    ComboBox1.ListRows = 31                         ' Länge der angezeiten Liste für Tag und Monat anpassen
    ComboBox2.ListRows = 12
    ComboBox1.Tag = ""                              ' Eigenschaft zurücksetzen
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
'   Damit mit X nicht geschloßen werden kann
    If CloseMode = 0 Then
        MsgBox "Bitte schließen Sie die Anwendung mit der -Zurück- Schaltfläche.", vbCritical
        Cancel = 1
    End If
End Sub

Private Sub Cmd_01_Click()
Sheets("Leistungs").Visible = True
Worksheets("Leistungs").Select
Range("A1:F43").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=Frmformulare.Tb_01, Collate:=True, _
IgnorePrintAreas:=False
Set objShell = CreateObject("WScript.Shell")
lngDauer = 3
iAnzeige = objShell.Popup("Dass Formular LEISTUNG wirt gedruckt", _
lngDauer, "Bitte warten", vbOKOnly)
Sheets("Leistungs").Visible = False
Unload Me
End Sub
Private Sub Cmd_02_Click()
Sheets("Leistungs").Visible = True
Worksheets("Leistungs").Select
Range("A1:F43").Select
Unload Me
ActiveWindow.SelectedSheets.PrintPreview
Frmformulare.Show
End Sub
Private Sub Cmd_03_Click()
Sheets("Leistungs").Visible = True
Worksheets("Leistungs").Select
Range("A1:F43").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=Frmformulare.Tb_01, Collate:=True, _
IgnorePrintAreas:=False
        Set objShell = CreateObject("WScript.Shell")
lngDauer = 3
iAnzeige = objShell.Popup("Dass Formular LEISTUNG wirt gedruckt", _
lngDauer, "Bitte warten", vbOKOnly)
Sheets("Leistungs").Visible = False
Unload Me
End Sub
Private Sub CommandButton2_Click()
Frmkalenderleistung.Cmd_01.Visible = False
Frmkalenderleistung.Cmd_02.Visible = False
Frmkalenderleistung.Cmd_03.Visible = False
Unload Me
End Sub

Private Sub CMD_Übernehmen_Click()
    ' Eintragen Datum in Tabelle
    Sheets("Leistungs").Visible = True
    Worksheets("Leistungs").Select
    Range("A11") = _
        CDate(ComboBox1 & "." & ComboBox2 & "." & ComboBox3)
        
    Range("A11").Select
    Selection.AutoFill Destination:=Range("A11:A41"), Type:=xlFillDefault
    Range("A11:A41").Select
    End Sub

Private Sub ComboBox1_Change()
    ' ausgewählte Zeile auf Variable schreiben
[B][COLOR="#0000FF"]    If ComboBox2.Tag = "" Then ByWert = ComboBox1.ListIndex[/COLOR][/B]
End Sub

Private Sub ComboBox2_Change()
    If ComboBox1.Tag = "1" Then Exit Sub    ' Start der UserForm
    ' Eigenschaft setzen damit der Code im Change Ereignis der ComboBox1
    ' beim Auswahl (ComboBox1.ListIndex =... ) nicht ausgeführt wird
    ComboBox2.Tag = 1
    ' ausgewählte Zeile in ComboBox1 merken,
    ' da ComboBox1 gelöscht geleert wird
    ByWert = ComboBox1.ListIndex
    ComboBox1.Clear                                 ' ComboBox1 leeren
    If ComboBox2.ListIndex = 11 Then                ' Dezember gewählt
        For InI = 1 To 31
            ComboBox1.AddItem InI
        Next InI
    Else
        ' Ende Schleife 1. des Folgemonats -1,
        ' damit Monatsende vom ausgewählten Monat
        For InI = 1 To Day(CDate("01." _
            & ComboBox2.ListIndex + 2 & "." & ComboBox3) - 1)
            ComboBox1.AddItem InI
        Next InI
    End If
    ' ausgewählten Tag in ComboBox1 wieder anzeigen
    If ByWert > ComboBox1.ListCount - 1 Then
        ' falls ausgewählter Tag größer als Tage
        ' im ausgewählten Monat, wird der letzten Tag angezeigt
        ComboBox1.ListIndex = ComboBox1.ListCount - 1
    Else
        ComboBox1.ListIndex = ByWert
    End If
    ComboBox2.Tag = ""                              ' Eigenschaft zurücksetzen
End Sub

Private Sub ComboBox3_Change()
    If ComboBox1.Tag = "" Then
        ' Schleife verlassen, wenn Monat verschieden von Februar
        If ComboBox2.ListIndex = 1 Then
            ' Eigenschaft setzen damit der Code im
            ' Change Ereignis der ComboBox1 beim Auswahl
            ' (ComboBox1.ListIndex =... ) nicht ausgeführt wird
            ComboBox2.Tag = 1
            ' ausgewählte Zeile in ComboBox1 merken,
            ' da ComboBox1 gelöscht geleert wird
            ByWert = ComboBox1.ListIndex
            ' Tage entsprechend Jahr und Monat füllen
            ComboBox1.Clear
            For InI = 1 To Day(CDate("01.03." & ComboBox3) - 1)
                ComboBox1.AddItem InI
            Next InI
            If ByWert > ComboBox1.ListCount - 1 Then
                ' falls ausgewählter Tag größer als Tage
                ' im ausgewählten Monat, wird der letzten Tag angezeigt
                ComboBox1.ListIndex = ComboBox1.ListCount - 1
            Else
                ComboBox1.ListIndex = ByWert
            End If
            ComboBox2.Tag = ""                      ' Eigenschaft zurücksetzen
        End If
    End If
End Sub
 
En wat is de waarde van Combobox1.ListIndex op dat moment?
Als dat hoger is dan 255 of -1 is dan is dat de oorzaak van je probleem.
Declareer ByWert dan als Short of Integer in plaats van Byte.

Ook kan je Option Explicit weg laten om zonder variabele declaratie te kunnen werken.
 
Laatst bewerkt:
Hallo Ed dank voor je reactie.

De overloop is nu weg door explicit weg te laten en bywert als Interger te maken.
Maar nu krijg ik een fout 13 "Typen komen niet met elkaar overeen"
loopt vast bij het overnemen van de datum
Heb bywert ook als Long gemaakt, het blijft gelijk.



Code:
Dim InI As Long                                  ' Schleifenvariable für den gesamten Code der Userform
Dim ByWert As Integer                                  ' Zeilenvariable für den gesamten Code der Userform
Dim iAnzeige As Long
Dim objShell As Object
Dim lngDauer As Long
Private Sub UserForm_Initialize()
    
        ' 0: Manuell;
        ' 1: Fenstermitte
        ' 2: Bildschirmmitte
        ' 3: Windows-Standard
        Me.StartUpPosition = 2
    ComboBox1.Tag = "1"
        ' Tage des aktuellen Monats in ComboBox1 eintragen
    For InI = 1 To Day(CDate("01." & Month(Date) + 1 & "." _
        & Year(Date)) - 1)
        ComboBox1.AddItem InI
    Next InI
    For InI = 1 To 12                               ' Monate als Wort in ComboBox2 eintragen
        ComboBox2.AddItem Format(DateSerial(1900, InI, 1), _
            "MMMM")
    Next InI
    ' Jahre in Combobox3 eintragen
    For InI = 1900 To 2222
        ComboBox3.AddItem InI
    Next InI
    
    ComboBox1.Value = Day(Date)                     ' Aktuelles Datum als Startwert setzen
    ComboBox2.Value = Format(Date, "MMMM")
    ComboBox3.Value = Year(Date)
    ComboBox1.ListRows = 31                         ' Länge der angezeiten Liste für Tag und Monat anpassen
    ComboBox2.ListRows = 12
    ComboBox1.Tag = ""                              ' Eigenschaft zurücksetzen
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
'   Damit mit X nicht geschloßen werden kann
    If CloseMode = 0 Then
        MsgBox "Bitte schließen Sie die Anwendung mit der -Zurück- Schaltfläche.", vbCritical
        Cancel = 1
    End If
End Sub

Private Sub Cmd_01_Click()
Sheets("Leistungs").Visible = True
Worksheets("Leistungs").Select
Range("A1:F43").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=Frmformulare.Tb_01, Collate:=True, _
IgnorePrintAreas:=False
Set objShell = CreateObject("WScript.Shell")
lngDauer = 3
iAnzeige = objShell.Popup("Dass Formular LEISTUNG wirt gedruckt", _
lngDauer, "Bitte warten", vbOKOnly)
Sheets("Leistungs").Visible = False
Unload Me
End Sub
Private Sub Cmd_02_Click()
Sheets("Leistungs").Visible = True
Worksheets("Leistungs").Select
Range("A1:F43").Select
Unload Me
ActiveWindow.SelectedSheets.PrintPreview
Frmformulare.Show
End Sub
Private Sub Cmd_03_Click()
Sheets("Leistungs").Visible = True
Worksheets("Leistungs").Select
Range("A1:F43").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=Frmformulare.Tb_01, Collate:=True, _
IgnorePrintAreas:=False
        Set objShell = CreateObject("WScript.Shell")
lngDauer = 3
iAnzeige = objShell.Popup("Dass Formular LEISTUNG wirt gedruckt", _
lngDauer, "Bitte warten", vbOKOnly)
Sheets("Leistungs").Visible = False
Unload Me
End Sub
Private Sub CommandButton2_Click()
Frmkalenderleistung.Cmd_01.Visible = False
Frmkalenderleistung.Cmd_02.Visible = False
Frmkalenderleistung.Cmd_03.Visible = False
Unload Me
End Sub

Private Sub CMD_Übernehmen_Click()
    ' Eintragen Datum in Tabelle
    Sheets("Leistungs").Visible = True
    Worksheets("Leistungs").Select
  [B][COLOR="#0000FF"]  Range("A11") = _
        CDate(ComboBox1 & "." & ComboBox2 & "." & ComboBox3)[/COLOR][/B]
        
    Range("A11").Select
    Selection.AutoFill Destination:=Range("A11:A41"), Type:=xlFillDefault
    Range("A11:A41").Select
    End Sub

Private Sub ComboBox1_Change()
    ' ausgewählte Zeile auf Variable schreiben
    If ComboBox2.Tag = "" Then ByWert = ComboBox1.ListIndex
End Sub

Private Sub ComboBox2_Change()
    If ComboBox1.Tag = "1" Then Exit Sub    ' Start der UserForm
    ' Eigenschaft setzen damit der Code im Change Ereignis der ComboBox1
    ' beim Auswahl (ComboBox1.ListIndex =... ) nicht ausgeführt wird
    ComboBox2.Tag = 1
    ' ausgewählte Zeile in ComboBox1 merken,
    ' da ComboBox1 gelöscht geleert wird
    ByWert = ComboBox1.ListIndex
    ComboBox1.Clear                                 ' ComboBox1 leeren
    If ComboBox2.ListIndex = 11 Then                ' Dezember gewählt
        For InI = 1 To 31
            ComboBox1.AddItem InI
        Next InI
    Else
        ' Ende Schleife 1. des Folgemonats -1,
        ' damit Monatsende vom ausgewählten Monat
        For InI = 1 To Day(CDate("01." _
            & ComboBox2.ListIndex + 2 & "." & ComboBox3) - 1)
            ComboBox1.AddItem InI
        Next InI
    End If
    ' ausgewählten Tag in ComboBox1 wieder anzeigen
    If ByWert > ComboBox1.ListCount - 1 Then
        ' falls ausgewählter Tag größer als Tage
        ' im ausgewählten Monat, wird der letzten Tag angezeigt
        ComboBox1.ListIndex = ComboBox1.ListCount - 1
    Else
        ComboBox1.ListIndex = ByWert
    End If
    ComboBox2.Tag = ""                              ' Eigenschaft zurücksetzen
End Sub

Private Sub ComboBox3_Change()
    If ComboBox1.Tag = "" Then
        ' Schleife verlassen, wenn Monat verschieden von Februar
        If ComboBox2.ListIndex = 1 Then
            ' Eigenschaft setzen damit der Code im
            ' Change Ereignis der ComboBox1 beim Auswahl
            ' (ComboBox1.ListIndex =... ) nicht ausgeführt wird
            ComboBox2.Tag = 1
            ' ausgewählte Zeile in ComboBox1 merken,
            ' da ComboBox1 gelöscht geleert wird
            ByWert = ComboBox1.ListIndex
            ' Tage entsprechend Jahr und Monat füllen
            ComboBox1.Clear
            For InI = 1 To Day(CDate("01.03." & ComboBox3) - 1)
                ComboBox1.AddItem InI
            Next InI
            If ByWert > ComboBox1.ListCount - 1 Then
                ' falls ausgewählter Tag größer als Tage
                ' im ausgewählten Monat, wird der letzten Tag angezeigt
                ComboBox1.ListIndex = ComboBox1.ListCount - 1
            Else
                ComboBox1.ListIndex = ByWert
            End If
            ComboBox2.Tag = ""                      ' Eigenschaft zurücksetzen
        End If
    End If
End Sub
 
Ik weet dat het de Duitse notatie is, maar wijzig dat eens in dit:
Code:
 Range("A11") = _
        CDate(ComboBox1 & "-" & ComboBox2 & "-" & ComboBox3)

Plaats anders een voorbeeld document.
 
Dank je Ed dat was het :thumb::thumb::thumb:

Ben helemaal HAPPY
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan