Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1540to1544
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

Die Methode Value für.... Automatisierungsfehler

Die Methode Value für.... Automatisierungsfehler
14.02.2017 12:18:53
Xanaa
Hallo,
nach langer Abwesenheit bitte ich noch einmal um Eure geschätzte Hilfe:
Unser Betrieb hat auf Excel 2013 umgestellt.
Nun tritt in einer UserForm ein Problem auf, dem ich nicht auf die Spur komme:
Es werden aus der User Form Eingaben in eine Liste geschrieben. Beim Klick auf den Button zur Übernahme folgt "214717848 (80010108) - Die Methode Value für das Objekt Range ist fehlgeschlagen" .
Ich starte den Debugger, es folgt "Automatisierungsfehler. Das aufgerufene Objekt wurde vom Client getrennt"
Egal wohin ich nun klicke, Excel verabschiedet sich im Nirwana (Neustart / Beenden)
Ich habe das mal komplett einkopiert:
Die Abfrage der leeren Felder funktioniert noch, bei der Variablen "p" hängt es dann ( an der Stelle .Range("A" & p).Value = ComboBox7.Text)
Hat jemand eine Idee für mich? Achtung, ihr müsst mir das für Dumme erklären, hab nicht viel Erfahrung....
Euch schon mal ein großes Dankeschön!
Private Sub CommandButton1_Click()
Dim p As Long
If TextBox1.Text = "" Or _
ComboBox1.Value = "" Or _
ComboBox2.Value = "" Or _
ComboBox3.Value = "" Or _
ComboBox4.Value = "" Or _
ComboBox5.Value = "" Or _
ComboBox6.Value = "" Or _
ComboBox7.Value = "" Then
MsgBox "Bitte alle Felder ausfüllen!", vbInformation, "Hinweis"
Exit Sub
End If
With Sheets("Verbrauchsliste")
p = IIf(IsEmpty(.Range("A65536")), .Range("A65536").End(xlUp).Row, 65536) + 1
 .Range("A" & p).Value = ComboBox7.Text
.Range("B" & p).Value = ComboBox1.Text
ComboBox1.Text = ""
.Range("C" & p).Value = ComboBox2.Text
ComboBox2.Text = ""
.Range("D" & p).Value = ComboBox3.Text
ComboBox3.Text = ""
.Range("E" & p).Value = ComboBox4.Text
ComboBox4.Text = ""
.Range("F" & p).Value = ComboBox5.Text
ComboBox5.Text = ""
.Range("G" & p).Value = TextBox1.Text
TextBox1.Text = ""
.Range("H" & p).Value = ComboBox6.Text
ComboBox6.Text = ""
'usw. für die restlichen ComboBoxen.
ListBox1.RowSource = .Range("A3:H" & p).Address(External:=True)
End With
End Sub

Private Sub ComboBox1_Change()
TextBox2 = Date
End Sub

Private Sub CommandButton2_Click()
If TextBox3.Text "geheim" Then
Application.Quit
Else
Unload Me
End If
End Sub

Private Sub Label12_Click()
End Sub

Private Sub Label8_Click()
End Sub

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim p As Long, q As Long
q = ListBox1.ListCount
If ListBox1.ListIndex MsgBox "Dieser Eintrag kann nicht mehr geändert werden!", vbCritical, "Hinweis"
Exit Sub
End If
p = ListBox1.ListIndex + 3
ComboBox1.Value = Range("B" & p).Value
ComboBox2.Value = Range("C" & p).Value
ComboBox3.Value = Range("D" & p).Value
ComboBox4.Value = Range("E" & p).Value
ComboBox5.Value = Range("F" & p).Value
ComboBox6.Value = Range("H" & p).Value
ComboBox7.Value = Range("G" & p).Value
End Sub

Private Sub TextBox2_Change()
End Sub

Private Sub TextBox4_Change()
End Sub

Private Sub UserForm_Initialize()
Dim z As Long, lz As Long
With Sheets("Listbox-Felder")
ListBox1.ColumnWidths = "110 Pt;150 Pt;40 Pt; 40 Pt;100 Pt;70 Pt"
For z = 3 To .Cells(65536, 1).End(xlUp).Row
ComboBox1.AddItem .Cells(z, 1).Value
Next z
For z = 3 To .Cells(65536, 2).End(xlUp).Row
ComboBox2.AddItem .Cells(z, 2).Value
Next z
For z = 3 To .Cells(65536, 3).End(xlUp).Row
ComboBox3.AddItem .Cells(z, 3).Value
Next z
For z = 3 To .Cells(65536, 4).End(xlUp).Row
ComboBox4.AddItem .Cells(z, 4).Value
Next z
For z = 3 To .Cells(65536, 5).End(xlUp).Row
ComboBox5.AddItem .Cells(z, 5).Value
Next z
For z = 3 To .Cells(65536, 6).End(xlUp).Row
ComboBox6.AddItem .Cells(z, 6).Value
Next z
For z = 3 To .Cells(65536, 7).End(xlUp).Row
ComboBox7.AddItem .Cells(z, 7).Value
Next z
End With
With Sheets("Verbrauchsliste")
lz = .Cells(65536, 1).End(xlUp).Row
ListBox1.RowSource = .Range("A3:H" & lz).Address(External:=True)
ListBox1.ColumnHeads = True
End With
Me.Top = 0
Me.Left = 0
Me.Height = Application.Height
Me.Width = Application.Width
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If TextBox3.Text "geheim" Then Cancel = True
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Automatisierungsfehler
14.02.2017 12:26:18
mumpel
Hallo!
Als Erstes sollte Du mal .Range("A" & Rows.Count) nutzen, damit setzt Du die Zeiger immer auf die mögliche Zeilenanzahl.
Gruß, René
AW: Automatisierungsfehler
14.02.2017 13:40:47
Leo
Hallo Renè,
erst mal vielen Dank.
Wie gesagt, Erklärung bitte für Dumme :-)
Ich habe jetzt die Zeilen
= IIf(IsEmpty(.Range("A65536")), .Range("A65536").End(xlUp).Row, 65536) + 1
.Range("A" & p).Value = ComboBox7.Text
.Range("B" & p).Value = ComboBox1.Text
ComboBox1.Text = ""
.Range("C" & p).Value = ComboBox2.Text
ComboBox2.Text = ""
.Range("D" & p).Value = ComboBox3.Text
ComboBox3.Text = ""
.Range("E" & p).Value = ComboBox4.Text
ComboBox4.Text = ""
.Range("F" & p).Value = ComboBox5.Text
ComboBox5.Text = ""
.Range("G" & p).Value = TextBox1.Text
TextBox1.Text = ""
.Range("H" & p).Value = ComboBox6.Text
ComboBox6.Text = ""
entsprechend geändert in
Range("A" & Rows.Count)
Range("B" & Rows.Count)
usw.
Richtig?
Der Fehler tritt dann nicht mehr auf, allerdings werden auch keine Einträge mehr in der Liste gemacht...
Was mache ich falsch?
Noch mal Dankeschön, auch für das "Dummie - Aushalten" :-)
Anzeige
AW: Automatisierungsfehler
14.02.2017 18:38:28
mumpel
Auch die anderen Zeilenangaben angepasst?
IIf(IsEmpty(.Range("A" & Rows.Count)), .Range("A" & Rows.Count).End(xlUp).Row, Rows.Count) + 1
AW: Automatisierungsfehler
15.02.2017 11:19:35
Leo
Hi,,
ich denke, ich habe das richtig ausgetauscht. Ich bekomme auch keinen Fehler mehr, eben aber auch keinen Eintrag in meiner Liste...
So ein Elend. Kannst Du mir - unverschämterweise - meinen Beitrag mal anpassen, wie es ausshen sollte? Vielleicht mache ich ja ein Fehler in der Anpassung....
Dankeschön!
AW: Automatisierungsfehler
15.02.2017 14:11:46
Michael
Hi,
ich denke, es war insgesamt so gemeint:
Private Sub CommandButton1_Click()
Dim p As Long
If TextBox1.Text = "" Or _
ComboBox1.Value = "" Or _
ComboBox2.Value = "" Or _
ComboBox3.Value = "" Or _
ComboBox4.Value = "" Or _
ComboBox5.Value = "" Or _
ComboBox6.Value = "" Or _
ComboBox7.Value = "" Then
MsgBox "Bitte alle Felder ausfüllen!", vbInformation, "Hinweis"
Exit Sub
End If
With Sheets("Verbrauchsliste")
p = .Range("A" &.rows.count) + 1
' das IIf schließt nur den Fall aus,
' daß die Tabelle bis ca. 1 Mio. zeilen gefüllt ist
msgbox "Die nächste, leere Zeile ist " & p
.Range("A" & p).Value = ComboBox7.Text
.Range("B" & p).Value = ComboBox1.Text
ComboBox1.Text = ""
.Range("C" & p).Value = ComboBox2.Text
ComboBox2.Text = ""
.Range("D" & p).Value = ComboBox3.Text
ComboBox3.Text = ""
.Range("E" & p).Value = ComboBox4.Text
ComboBox4.Text = ""
.Range("F" & p).Value = ComboBox5.Text
ComboBox5.Text = ""
.Range("G" & p).Value = TextBox1.Text
TextBox1.Text = ""
.Range("H" & p).Value = ComboBox6.Text
ComboBox6.Text = ""
'usw. für die restlichen ComboBoxen.
ListBox1.RowSource = .Range("A3:H" & p).Address(External:=True)
End With
End Sub

Allerdings: wenn Du in die Zelle Range("A" & rows.count) bereits geschrieben hast, lösche das dort bitte.
Schöne Grüße,
Michael
Anzeige
AW: Automatisierungsfehler
15.02.2017 14:32:32
Leo
Hallo,
erst mal Dankeschön!
Soweit keine Fehlermeldung, allerdings wird immer die erste Zelle als freie Zelle übernommen, sprich überschrieben. Was mache ich noch falsch?
LG, Leo
Option Explicit ' IMMER!
Private Sub ComboBox5_Change()
End Sub

Private Sub ComboBox7_Change()
End Sub

Private Sub CommandButton1_Click()
Dim p As Long
If TextBox1.Text = "" Or _
ComboBox1.Value = "" Or _
ComboBox2.Value = "" Or _
ComboBox3.Value = "" Or _
ComboBox4.Value = "" Or _
ComboBox5.Value = "" Or _
ComboBox6.Value = "" Or _
ComboBox7.Value = "" Then
MsgBox "Bitte alle Felder ausfüllen!", vbInformation, "Hinweis"
Exit Sub
End If
With Sheets("Verbrauchsliste")
p = .Range("A" & .Rows.Count) + 1
' das IIf schließt nur den Fall aus,
' daß die Tabelle bis ca. 1 Mio. zeilen gefüllt ist
MsgBox "Die nächste, leere Zeile ist " & p
.Range("A" & p).Value = ComboBox7.Text
.Range("B" & p).Value = ComboBox1.Text
ComboBox1.Text = ""
.Range("C" & p).Value = ComboBox2.Text
ComboBox2.Text = ""
.Range("D" & p).Value = ComboBox3.Text
ComboBox3.Text = ""
.Range("E" & p).Value = ComboBox4.Text
ComboBox4.Text = ""
.Range("F" & p).Value = ComboBox5.Text
ComboBox5.Text = ""
.Range("G" & p).Value = TextBox1.Text
TextBox1.Text = ""
.Range("H" & p).Value = ComboBox6.Text
ComboBox6.Text = ""
'usw. für die restlichen ComboBoxen.
ListBox1.RowSource = .Range("A3:H" & p).Address(External:=True)
End With
End Sub
Private Sub ComboBox1_Change()
TextBox2 = Date
End Sub

Private Sub CommandButton2_Click()
If TextBox3.Text  "geheim" Then
Application.Quit
Else
Unload Me
End If
End Sub

Private Sub Label12_Click()
End Sub

Private Sub Label8_Click()
End Sub

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim p As Long, q As Long
q = ListBox1.ListCount
If ListBox1.ListIndex 

Private Sub TextBox2_Change()
End Sub

Private Sub TextBox4_Change()
End Sub

Private Sub UserForm_Initialize()
Dim z As Long, lz As Long
With Sheets("Listbox-Felder")
ListBox1.ColumnWidths = "110 Pt;150 Pt;40 Pt; 40 Pt;100 Pt;70 Pt"
For z = 3 To .Cells(65536, 1).End(xlUp).Row
ComboBox1.AddItem .Cells(z, 1).Value
Next z
For z = 3 To .Cells(65536, 2).End(xlUp).Row
ComboBox2.AddItem .Cells(z, 2).Value
Next z
For z = 3 To .Cells(65536, 3).End(xlUp).Row
ComboBox3.AddItem .Cells(z, 3).Value
Next z
For z = 3 To .Cells(65536, 4).End(xlUp).Row
ComboBox4.AddItem .Cells(z, 4).Value
Next z
For z = 3 To .Cells(65536, 5).End(xlUp).Row
ComboBox5.AddItem .Cells(z, 5).Value
Next z
For z = 3 To .Cells(65536, 6).End(xlUp).Row
ComboBox6.AddItem .Cells(z, 6).Value
Next z
For z = 3 To .Cells(65536, 7).End(xlUp).Row
ComboBox7.AddItem .Cells(z, 7).Value
Next z
End With
With Sheets("Verbrauchsliste")
lz = .Cells(65536, 1).End(xlUp).Row
ListBox1.RowSource = .Range("A3:H" & lz).Address(External:=True)
ListBox1.ColumnHeads = True
End With
Me.Top = 0
Me.Left = 0
Me.Height = Application.Height
Me.Width = Application.Width
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If TextBox3.Text  "geheim" Then Cancel = True
End Sub

Anzeige
Beispieldatei?
16.02.2017 12:05:59
Michael
Hallo Leo,
kannst Du mal ne Beispieldatei mit ein paar (anonymen) Spieldaten hochladen?
Hilfsweise füge mal eine Zeile zwischen dem End If und dem With ein und schreibe
stop
rein, dann springt das Makro während der Ausführung an dieser Stelle in den VBA-Editor, wo Du den Code dann mit F8 zeilenweise (bzw. den Rest dann mit F5) ausführen lassen kannst.
Während der zeilenweisen Abarbeitung wird der Wert von Variablen in einem Tooltip-Fensterchen angezeigt, wenn Du mit dem Mauszeiger drüberfährst.
Ach so: "die erste Zelle"... Heißt das, daß Deine Tabelle noch leer ist, bis auf die Überschrift in Zeile 1? Naja, aber selbst dann ergibt
p = .Range("A" &.rows.count) + 1
für p den Wert 2: eben die erste, freie Zeile.
Kurzum: ich kann das Problem nicht recht nachvollziehen: mit Beispieldatei wird das besser.
Schöne Grüße,
Michael
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige