AW: Runtime Error 80020005
11.02.2016 13:53:49
fcs
Hallo Rudi,
etliche Sachen hat Hansueli dir ja schon erläutert.
Mir ist noch aufgefallen, dass du für Tabellenblätter
With tabCodeName
End With
Konstrukte verwendest. Damit der Bezug zu dem Tabellenblatt hergestellt wird muss vor jedem zugehörigen Objekt (Range, Cells oder auch andere) ein Punkt stehen.
Auf jeden Fall scheint die Variable "zeile" beim Übergang vom Userform1 zum Userform2 ein Sensibelchen zu sein. Zumindest einmal bekamm ich inter Excel2010 einen ähnlichen Fehler angezeigt. Scheinbar verliert die Variable gelgentlich ihren Wert oder bekommt ihn nicht rechtzeitig, so dass in der 1. Anweisung im Userform2 in der die Variable "zeile" auftaucht eine Fehlermeldung angezeigt wird.
Ich hab die folgenden Makros in den Userformen umgestaltet, um den Wert der Zeilennummer des gwählten Datensatzes zu übergeben.
Probiere mal, ob es mit diesen Versionen auf deinem Bürorechner stabiler läuft.
Gruß
Franz
'Userform 1
Private Sub CommandButton1_Click()
'Lupen-Schaltfläche
If ComboBox1.ListIndex >= 0 Then
UserForm2.Tag = Format(Me.ComboBox1.ListIndex + 2, "0") 'gewählte Zeilennummer an das _
Userform übergeben
Me.Hide
UserForm2.Show
Unload Me
End If
End Sub
'Code im Userform2
Private Sub UserForm_Activate() 'Ist in diesem Fall zur Fehlervermeidung günstiger
'Private Sub UserForm_Initialize()
With tbl_Kuli
zeile = CLng(Me.Tag) 'übergebene Zeilennummer einer Variablen zuweisen
headerZR = .Cells(zeile, 1) 'ZR Nummer Gross oben
headerName = .Cells(zeile, 2) 'Kundename Gross oben
txtZR = .Cells(zeile, 1)
txtKurz = .Cells(zeile, 2)
txtKube = .Cells(zeile, 7)
txtAum = .Cells(zeile, 9)
txtInx = .Cells(zeile, 20)
txtBem = .Cells(zeile, 21)
txtStart = .Cells(zeile, 22)
cmbMopo = .Cells(zeile, 3)
Me.cmbMopo.RowSource = "Tabelle2!H2:H14"
cmbBC = .Cells(zeile, 4)
Me.cmbBC.RowSource = "Tabelle2!J2:J30"
cmbPM = .Cells(zeile, 6)
Me.cmbPM.RowSource = "Tabelle2!L2:L9"
cmbDom = .Cells(zeile, 11)
Me.cmbDom.RowSource = "Tabelle2!A1:A150"
cmbNat = .Cells(zeile, 12)
Me.cmbNat.RowSource = "Tabelle2!A1:A150"
cmbTax = .Cells(zeile, 13)
Me.cmbTax.RowSource = "Tabelle2!F2:F4"
cmbRef = .Cells(zeile, 8)
Me.cmbRef.AddItem ("EUR")
Me.cmbRef.AddItem ("CHF")
Me.cmbRef.AddItem ("USD")
Me.cmbRef.AddItem ("GBP")
'Jetzt kommen die Länderrestriktionen
If .Cells(zeile, 14).Value = "CH" Then
cbxCH.Value = True
End If
If .Cells(zeile, 16).Value = "UK" Then
cbxUK.Value = True
End If
If .Cells(zeile, 15).Value = "FR" Then
cbxFR.Value = True
End If
If .Cells(zeile, 17).Value = "US" Then
cbxUS.Value = True
End If
If .Cells(zeile, 19).Value = "US/EU" Then
cbxSP.Value = True
cbxEU.Value = True
End If
If .Cells(zeile, 19).Value = "EU" Then
cbxEU.Value = True
End If
If .Cells(zeile, 19).Value = "US" Then
cbxSP.Value = True
End If
If .Cells(zeile, 5).Value = "Ja" Then
cbxMopo.Value = True
End If
If .Range(.Cells(zeile, 1), .Cells(zeile, 13)).Interior.ColorIndex = 38 Then
cbxHold.Value = True
End If
End With
End Sub