Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
432to436
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
432to436
432to436
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Schutzverletzung mit CheckBox

Schutzverletzung mit CheckBox
27.05.2004 19:46:00
Joachim
Hallo Excel-User,
Ich habe folgendes Problem:
In einer UserForm habe ich 4 CheckBoxen, sowie ich per Code eine davon anspreche
schließt Excel mit folgender Schutzverletzung.
„Die Anweisung in „0x00000000“ verweist auf Speicher in „0x00000000“.
„Der Vorgang „read“ konnte nicht auf dem Speicher durchgeführt werden.“
Habe ich den VBA-Editor geöffnet funzt es wie gewünscht!?
Ich habe auch schon versucht die CheckBoxen durch OptionsButton zu ersetzen,
aber gleiches Verhalten von Excel!
Hat jemand einen Rat für mich!
Verzweifelter Gruß Joachim

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schutzverletzung mit CheckBox
27.05.2004 20:57:54
Nepumuk
Hallo Joachim,
sollen wir raten, was da nicht passt? Wie wäre es mit der Mappe oder wenigstens ein Codeschnipsel?
Gruß
Nepumuk
AW: Schutzverletzung mit CheckBox
28.05.2004 08:05:01
Joachim


Sorry,
hier der Code für die Schaltfläche :
Private Sub cbDatEinlesen_Click()
'MA-Daten einlesen zur Urlaubsberechnung
Dim rng As Range 'Jornal
Dim MA As String 'Mitarbeiter
'Ermittlung der Urlaubs-Art
   Dim dValue As String 'Summe der U-Tage lt. U-Anträge
   Dim RU As String 'RestUrlaub lt. U-Anträge
   Dim iRow As Integer
   Dim MaNr As String 'MA-Nr.
   Dim WB As String 'U-Kürzel "WB"
   Dim WbT As String 'Weiterbildungstage/Jahr
   Dim Tag As String 'Anzahl der Tage beim Einlesen von UrlaubsAntrag
   Dim Abt As String 'Abteilung
   Dim As Integer
   Dim As Integer
   Dim UA As Worksheet
   
Application.ScreenUpdating = False
    Set UA = Sheets("UrlaubsAntrag")
    WbT = Sheets("INI").Range("B33").Value 'Weiterbildungstage/Jahr
With UserForm1
''Textboxen leeren
    .TextBox146.Value = ""
    .TextBox156.Value = ""
    .TextBox148.Value = ""
    .TextBox149.Value = ""
    .TextBox154.Value = ""
    .TextBox162.Value = ""
    If .TextBox7.Text = "" Then
        MsgBox "Es ist kein Mitarbeiter ausgewählt!", 16
        Exit Sub
    End If
 Call CommandButton6_Click 'Einlesen MA-Daten in allen Registern
'Ein/Aus-Schalten der "TZ-MA" Urlaub in Std. Umrechnung
    If .TextBox94.Value = "TZ" Then
        .Frame41.Visible = True
    Else
        .Frame41.Visible = False
    End If
''Prüung ob ein neuer U-Antrag ohne Jornal ausgestellt werden soll
          i = MsgBox("Welche MA-Daten möchten sie einlesen?" _
            & vbCr & "" _
            & vbCr & "-Ja-   = Daten die im Jornal-Listenfeld gewählt wurden?" _
            & vbCr & "-Nein- = nur Mitarbeiter-Daten? ", _
            vbYesNoCancel + vbQuestion, "Rest-Weiterbildungs-Abfrage")
        If i = 2 Then
            Exit Sub
        ElseIf i = 6 Then
            If .TextBox7.Text = "" Then
                MsgBox "Es ist kein Mitarbeiter ausgewählt!" _
                    & vbCr & "Sie müssen im ListenFeld einen MA mit DoppelKlick" _
                    & vbCr & "auswählen!", vbCritical
                Exit Sub
            End If
            GoTo weiter2
        ElseIf i = 7 Then
                Y = MsgBox("Welche ART von Urlaubschein möchten sie erstellen?" _
                        & vbCr & "" _
                        & vbCr & "-Ja-............= Tarif-Urlaub?" _
                        & vbCr & "-Nein-..........= Weiterbildung?" _
                        & vbCr & "-Abbrechen-..= Sonderurlaub / unbezahlter Urlaub?" _
                        , vbYesNoCancel + vbQuestion, "Urlaubs-ART-Abfrage")
                    If Y = 2 Then
                        UserForm1.obUU.Value = True'OptionsButton für unbezahlter Urlaub
                        GoTo weiter3
                    ElseIf Y = 6 Then
                        UserForm1.obTU.Value = True'OptionsButton für TarifUrlaub
                        GoTo weiter3
                    ElseIf Y = 7 Then
                        UserForm1.obWB.Value = True'OptionsButton für Weiterbildung
                        GoTo weiter3
                    End If
        End If
'Prüfung der Daten-Herkunft - Jornal oder UrlaubsAntrag
weiter2:
If .ToggleButton4.Value = True Then 'auslesen aus "UrlaubsAntrag"
    .CommandButton149.Visible = True
        .ListBox3.TextColumn = 1
        MA = .ListBox3.Text
        Set rng = Worksheets("UrlaubsAntrag"). _
                  Columns(1).Find(What:=MA, LookIn:=xlValues, LookAt:=xlWhole)
            If Not rng Is Nothing Then 'nur einlesen wenn MA gewählt
                .TextBox148.Value = rng.Offset(0, 11).Value 'Anfangsdatum
                .TextBox149.Value = rng.Offset(0, 12).Value 'Enddatum
                .TextBox162.Value = rng.Offset(0, 2).Value 'Abteilung
                Tag = rng.Offset(0, 9).Value 'Anzahl-Urlaub
                .TextBox146.Text = Tag
                .TextBox160.Text = rng.Offset(0, 15).Value 'Std. bei TZ
            'TarifUrlaub / SonderUrlaub / Weiterbildung / unbez. Urlaub
                If rng.Offset(0, 8).Value = "U" Then
                    .obTU.Value = True'OptionsButton für TarifUrlaub
                Else
                    .obTU.Value = False
                End If
                If rng.Offset(0, 8).Value = "WB" Then
                    .obWB.Value = True'OptionsButton für Weiterbildung
                Else
                    .obWB.Value = False
                End If
                If rng.Offset(0, 8).Value = "uU" Then
                    .obUU.Value = True'OptionsButton für unbezahlter Urlaub
                Else
                    .obUU.Value = False
                End If
                .TextBox157.Text = rng.Offset(0, 13).Value 'Bemerkung
            Else
                MsgBox "Es wurde kein " & MA & " gefunden!"
            End If
Else 'auslesen aus "Jornal"
'Prüfung ob JornalEintrag vorliegt
    .CommandButton149.Visible = True
        .ListBox3.TextColumn = 16
        MA = .ListBox3.Text
            Set rng = Worksheets("Jornal"). _
                      Columns(16).Find(What:=MA, LookIn:=xlValues, LookAt:=xlWhole)
            If Not rng Is Nothing Then 'nur einlesen wenn MA gewählt
                .TextBox148.Value = rng.Offset(0, -4).Value 'Anfangsdatum
                .TextBox149.Value = rng.Offset(0, -3).Value 'Enddatum
                .TextBox162.Value = rng.Offset(0, -13).Value 'Abteilung
            'Füllen der CheckBoxen
                If rng.Offset(0, -7).Value = "gWB" Or rng.Offset(0, -7).Value = "WB" Then
                    .obWB.Value = True
                ElseIf rng.Offset(0, -7).Value = "gU" Or rng.Offset(0, -7).Value = "U" Then
                    .obTU.Value = True
                    .obWB.Value = False
                    .obSU.Value = False
                End If
            Else
                MsgBox "Es wurde kein " & MA & " gefunden!"
            End If
End If
weiter3:
            .TextBox144.Value = .TextBox8.Value 'Name, Vorname
            .TextBox156.Value = .TextBox104.Value 'T/Std
            .TextBox140.Value = .TextBox104.Value 'T/Std
            .TextBox152.Value = .TextBox104.Value 'T/Std
            .TextBox150.Value = .JahresBox45.Value 'Jahr
            .TextBox153.Value = .JahresBox45.Value 'Jahr
'Prüfung der UrlaubsArt
If .obWB.Value = True Then
        dValue = 0
        MaNr = .TextBox7.Value
        WB = "WB"
         iRow = 6
     For iRow = 6 To 2000
        If UA.Range("D" & iRow).Value = "" Then Exit For
        If UA.Range("D" & iRow).Value = MaNr And UA.Range("I" & iRow).Value = WB Then
            dValue = dValue + CDbl(UA.Range("J" & iRow).Value)
        End If
     Next iRow
'Rest-Weiterbildung
'Prüfung ob Jornal oder Neueingabe
    If Tag = "" Then
        RU = CDbl(WbT) - CDbl(dValue) 'Weiterbildungstage/Jahr - bereits beansbruchte WB-Tage
    Else
        RU = CDbl(WbT) - CDbl(dValue)
        RU = CDbl(RU) + CDbl(Tag) 'Ausgabe des Vorherigen Anspruches
    End If
          i = MsgBox("Der Rest-WEITERBILDUNGS-Anspruch vor Ablauf des aktuellen Monats" _
            & vbCr & "beträgt: " & RU & " Tage  " _
            & vbCr & " " _
            & vbCr & "Der Mitarbeiter hat bisher" _
            & vbCr & dValue & " Tage Weiterbildung beansprucht/beantragt!" _
            & vbCr & "" _
            & vbCr & "-Ja-.....= rechne mit " & RU & " T  Rest-Weiterbildungstagen!" _
            & vbCr & "-Nein-...= keine Vorgabe in den Rest-Weiterbildungstagen!", _
            vbYesNoCancel + vbQuestion, "Rest-Weiterbildungs-Abfrage")
        If i = 2 Then
            Exit Sub
        ElseIf i = 6 Then
            .TextBox151.Value = RU
        ElseIf i = 7 Then
            .TextBox151.Value = ""
        End If
'Ermittlung des RestUrlaubs anhand der vergebenen Urlaubsanträge
ElseIf .obTU.Value = True Then
        dValue = 0
        MaNr = .TextBox7.Value
        WB = "U"
         iRow = 6
     For iRow = 6 To 2000
        If UA.Range("D" & iRow).Value = "" Then Exit For
        If UA.Range("D" & iRow).Value = MaNr And UA.Range("I" & iRow).Value = WB Then
            dValue = dValue + CDbl(UA.Range("J" & iRow).Value)
        End If
    Next iRow
'AusgangsUrlaub wenn Datenherkunft UrlaubsAntrag ist
    If Tag = "" Then
        RU = CDbl(.TextBox65.Value) - CDbl(dValue)
    Else
        RU = CDbl(.TextBox65.Value) - CDbl(dValue)
        RU = CDbl(RU) + CDbl(Tag) 'Ausgabe des Vorherigen Anspruches
    End If
        i = MsgBox("Der Resturlaubsanspruch nach Ablauf des aktuellen Monats" _
            & vbCr & "beträgt: " & .TextBox73.Value & " Tage  " _
            & vbCr & " " _
            & vbCr & "Der Resturlaub anhand der ausgestellten Urlaubsanträge" _
            & vbCr & "beträgt: " & RU & " Tage " _
            & vbCr & " " _
            & vbCr & "-Ja-............= rechne mit " & .TextBox73.Value & " Tagen Rest-Urlaub!" _
            & vbCr & "-Nein-..........= rechne mit " & RU & " Tage errechnet aus den Urlaubsanträgen!" _
            & vbCr & "-Abbrechen-...= keine Vorgabe in den Rest-Weiterbildungstagen!", _
           vbYesNoCancel + vbQuestion, "Rest-Urlaubs-Abfrage")
        If i = 2 Then
            Exit Sub
        ElseIf i = 6 Then
            .TextBox151.Value = .TextBox73.Value
        ElseIf i = 7 Then
            .TextBox151.Value = RU
        End If
End If
'Berechnen des RestUrlaubes
            .TextBox162.Value = .ComboBox6.Text
            If Not .TextBox151.Value = "" And Not .TextBox146.Value = "" Then
                .TextBox154.Value = CDbl(.TextBox151.Value) - CDbl(.TextBox146.Value)
            End If
End With
End Sub
Anzeige
AW: Schutzverletzung mit CheckBox
28.05.2004 16:40:42
Nepumuk
Hallo Joachim,
ich habe keine Lust ein Userform mit hunderten von Textboxen nachzubauen, Tabellen anzulegen, diese mit Daten zu füllen um den Code zum laufen zu bringen. Versuch mal folgendes: Öffne zu der Mappe eine leere Mappe. Im Projektexplorer kannst du mit Drag&Drop die Module und Formulare in die neue Mappe kopieren. Wie du die Tabellen kopierst, muss ich sicher nicht beschreiben. Den Code von DieseArbeitsmappe nicht vergessen und dann einfach mal versuchen ob es läuft. Schutzverletzungen sind häufig falsche Zuweisungen von Active-X-Steuerelementen an die entsprechende DLL.
Gruß
Nepumuk
Anzeige
AW: Schutzverletzung mit CheckBox
29.05.2004 22:01:52
Joachim
Hallo Nepumuk,
hab dennoch vielen Dank für Deine Bemühung.
Ich habe jetzt den kompletten Code für die Urlaubsberechnung in eine neue Userform gepackt.
Nun funktioniert es!
Mit freundlichen Grüßen Joachim

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige