Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1768to1772
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
Inhaltsverzeichnis

Laufzeitfehler 91 bei userform.show

Laufzeitfehler 91 bei userform.show
12.07.2020 22:52:29
Ingo
Hallo und einen schönen Abend zusammen,
ich habe folgenden Programmablauf:

Sub proKontaktdatenMarkieren()
wksKontaktKonf.Select
Selection.ClearContents
wksKontaktKonf.Select
wksKontaktKonf.Range("A:AAA").Clear
wksKontakt.Select
Dim lastrow As Long
lastrow = wksKontakt.Cells(Rows.Count, 1).End(xlUp).Row
Range("a3:q" & lastrow).Copy
wksKontaktKonf.Select
'    frmKonfiguratorKontakte.Show
Application.Goto Reference:=wksKontaktKonf.Range("A3")
wksKontaktKonf.Paste
frmKonfiguratorKontakte.Show
End Sub

durch die Zeile frmKonfiguratorKontakte.Show wird nun ein Laufzeitfehler 91 ausgeworfen.
Durch weitere Recherche habe ich schon rausgefunden, dass dies wohl an der Initialisierung des _
Userforms liegt. Wenn ich den initialize beim Userform auskommentiere funkioniert der .show vom _
Userform auch- aber eben die andere Funktionalität vom initialize nicht mehr:(

Private Sub UserForm_Initialize()
Dim NewCheckBox As Control
Dim i As Integer, inI As Integer
Dim loLast As Long
Dim lngZaehler As Long
With wksKontaktKonf ' alt Worksheets(1)
' Lutschi Version die fehler gemacht hat siehe Forum
loLast = .Cells(1, .Columns.Count).End(xlToLeft).Column
loLast = Rows(1).Find(What:="*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious). _
_
_
_
_
Column
For i = 1 To loLast
If Cells(1, i).Value  "" Then
Set NewCheckBox = Me.Controls.Add("Forms.CheckBox.1", Name:="chkB" & i)
With NewCheckBox
.Top = Application.Max(i * 23)
.Left = 5
.Caption = Cells(1, i).Value
.Tag = i
.Value = Not Columns(i).Hidden
ReDim Preserve chkBox(0 To inI)
Set chkBox(inI).CheckBox = NewCheckBox
inI = inI + 1
End With
End If
Next
End With
End Sub

Hab Ihr eine Idee was ich wie modifizieren muss
Vielen Dank

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 91 bei userform.show
12.07.2020 23:04:00
ralf_b
loLast = Rows(1).Find(What:="*",.....
das ergebnis von find sollte ein Objekt sein , wo ein "set" davor stehen muß
dim x as variant
set x = Rows(1).find .......
wenn du teile des initialize auskommentierst, kannst du dich dem Problem auch annähern.
AW: Laufzeitfehler 91 bei userform.show
12.07.2020 23:29:11
Ingo
Super, danke für den Tipp!
dann wäre die Anpassung doch so, oder?

Dim loLast As Variant
Set loLast = Rows(1).Find(What:="*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious). _
Column

bekomme mit dieser Anpassung immer noch den gleichen Fehler...
AW: Laufzeitfehler 91 bei userform.show
13.07.2020 05:56:21
ralf_b
gibt es immer noch zweimal die Zuweisung zu lolast?
und wo wird "chkBox" deklariert?
ReDim Preserve chkBox(0 To inI)
geh doch mittels F8-TAste durch die initialize und sieh wo es genau kracht.
Anzeige
AW: Laufzeitfehler 91 bei userform.show
13.07.2020 06:03:35
Luschi
Hallo Ingo,
der Tipp von ralf_b ist so richtig umgesetzt:

Dim rg As Range, loLast As Long
Set rg = Rows(1).Find(What:="*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious)
If rg Is Nothing Then
MsgBox "es gibt in Zeile '1' keinen Wert!", 16, "Programmabgruch!"
Exit Sub
End If
'und weiter geht's
loLast = rg.Column
Gruß von Luschi
aus klein-Paris
PS:
- Ursache des Fehlers: die gesamten Zellen der Zeile '1' sind leer
- bei dieser Variante: loLast = .Cells(1, Columns.Count).End(xlToLeft).Column
tritt der Fehler nie auf, denn dann ist loLast = 1
Und noch eine Ungenauigkeit:
If Cells(1, i).Value "" Then
richtig:
'denn der Punkt vor Cells ist entscheident
If .Cells(1, i).Value "" Then
Bei solcher Ursachenforschung sollten solche Begriffe:
Haltepunkt, F9, F8 Stop
keine 'böhmischen Dorfer' für einen sein; sprich unbekannt, noch nie gehöhrt etc.
Anzeige
AW: Laufzeitfehler 91 bei userform.show
13.07.2020 08:26:51
Ingo
Hi Lutschi,
vielen Dank für die passende Hilfe und vor allem für die genauere Fehleranalyse.
Das hat mir wieder sehr geholfen! Du warst doch auch derjenige, welcher mir beim der Erstellen diser Klasse vor einigen Jahren gehlfen hat. Ja so schließt sich der Kreis:))
Zur Abrundung für alle interessierten hier nochmal der Klassencode, welcher das dynamische ein/ausblenden von Spaltennummern über Checkboxen auf einem Useform durchführt:

Public WithEvents CheckBox As MSforms.CheckBox
Private Sub checkBox_Change()
ActiveSheet.Cells(1, CInt(CheckBox.Tag)).EntireColumn.Hidden = Not CheckBox.Value
If CheckBox.Value Then
Application.Goto ActiveSheet.Cells(3, CInt(CheckBox.Tag))
End If
End Sub
wünsche allen eine erfolgreiche Woche:)
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige