Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 20:05:21
28.04.2024 18:33:31
28.04.2024 18:25:12
28.04.2024 14:18:05
Anzeige
Archiv - Navigation
1932to1936
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 ´-2147417848 (80010108)´

Laufzeitfehler ´-2147417848 (80010108)´
04.06.2023 00:57:14
Bernd

Hallo Zusammen,

ich hoffe das ihr mir bei meinem folgenden Problem helfen könnt, und mit vor allem erklären könnt, wie der Fehler entsteht was ich falsch gemacht habe und auf was ich achten sollte.
Ich bin VBA-Anfänger verstehe zwar den Code, wenn ich Ihn lese, oder ein Tutorial abarbeite, um weiter zu lernen, aber hier kann ich mir nicht erklären was passiert:

Fehlermeldung:
Laufzeitfehler ´-2147417848 (80010108)´:
Die Methode ´Value´für das Objekt ´Range´ ist fehlgeschlagen

Das Makro besteht aus einem Tabellenblatt das als Datenbank dient. Über einen Button in dem Tabellenblatt wird eine Userform mit Listbox aufgerufen.
Auf der Userform funktioniert bisher nur die ListBox. Nach Klick auf den Button „Neuer Eintrag“ öffnet sich eine andere Userform
in dieser können Daten eingetragen werden um sie dann mit einem Maus Klick auf Speichern in das Tabellenblatt eintragen zu lassen.
Und hier ist das Problem direkt nach Klick auf Speichern bricht das Makro mit obiger Fehlermeldung ab.
Excel bricht dann auch komplett ab schließt sich und startet sich neu.

Wenn ich die zweite Userform zum Daten Eintragen alleine über die VBA-Oberfläche starte, Daten eingebe und auf Speichern Klicke funktioniert die Datenübernahme in das Tabellenblatt. Über die erste UserForm eben leider nicht. Ich hoffe ihr könnt mir helfen und diesen Mysteriösen Fehler finden. Ich selbst bin am Verzweifeln.
Vielen Dank Schonmal im Voraus.

Excel Version aus Office 365


Grüße Bernd

Arbeitsmappe: https://www.herber.de/bbs/user/159454.xlsm

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

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler ´-2147417848 (80010108)´
04.06.2023 01:33:39
onur
Kann passieren, wenn man "intelligente" Tabellen benutzt.
Wandele die "intelligente" Tabelle einfach in Bereich um.


AW: Laufzeitfehler ´-2147417848 (80010108)´
04.06.2023 02:55:56
ralf_b
https://www.herber.de/bbs/user/159455.xlsm

wenn man intelligente Tabellen nutzt, dann aber auch deren Objekte.
Hinweis: Datensätze löscht man nicht. Sie werden als gelöscht markiert.
Was weg ist, ist weg. Für Auswertungen, die man meist bei Datenbanken machen will, ist löschen suboptimal.

Die Neuer Eintrag und Ändern-Userform ist überflüssig. Das kannst du auch in der Haupt-UF machen.


Anzeige
AW: Laufzeitfehler ´-2147417848 (80010108)´
04.06.2023 03:55:59
Bernd
Hallo onur
Hallo ralf_b

Vielen dank für eure Hilfen.

@onur
Ich habe deine Lösung getestet und die Intelligente Tabelle umgewandelt, funktioniert wie gewünscht. Danke dafür.

@ ralf_b
Danke für deine Anpassungen, auch wenn ich da noch nicht ganz dahintersteige aber ich werde mir das morgen mal intensiv angucken und versuchen nachzu vollziehen was du eingefügt hast. Falls du Zeit und Lust hast würde ich dich gerne bitten deine Anpassungen im Code zu kommentieren. Das würde mir weiterhelfen ihn zu verstehen.

Welche der Beiden Lösungen ich nutze entscheide ich morgen und ob ich die Anpassungen von ralf_b nachvollziehen kann, denn eigentlich ist es egal ob ich eine Intelligent oder "normale" Tabelle nutze.

Zur Erklärung was das Makro überhaupt für einen Zweck hat.
Diese Tabelle dient nur dazu Informationen zu Sammeln und nach eingabe eines suchbegriffs in der oberen Textbox, und anschließendem auswählen des Eintrages in der Listbox der Haupt UF soll mir das Makro alle hinterlegten Informationen in den Textfeldern rechts in der Haupt UF Anzeigen. Es soll dort nur Text ausgegeben werden mehr nicht. Eingabe eines Fehlercodes das eine defekte Maschine Produziert und in den Textfeldern dann die Klar Meldung was der Fehler zu bedeuten hat. Ich stelle mir vor das mir das Zeit spart statt in PDF oder Papier Ordnern nach den Infos zu wühlen.
Deshalb sollen die Feldern rechts in der Haupt UF nicht veränderbar sein, daher benötige ich die zweite UF um Daten Eintragen/Bearbeiten zu können. Ob ich die Löschen funktion nutze oder sie lösche weis ich im augenblick noch nicht da nur ich das Makro nutzen werde, ausserdem werden es höchstens knapp um die 150 Einträge.

Grüße Bernd


Anzeige
AW: Laufzeitfehler ´-2147417848 (80010108)´
04.06.2023 12:50:59
ralf_b
denn eigentlich ist es egal ob ich eine Intelligent oder "normale" Tabelle nutze.

Nein, ist es nicht. Wenn du das automatisierst spielt es schon eine gewisse Rolle. Wie alles im Leben hat auch bei Excel jedes Ding so seine Vor- und Nachteile.
Bei intelligenten Tabellen sehe ich es als Vorteil das man die Tabellengrenzen nicht immer neu ermitteln muß und die Referenzierung der Spalten und Zeilen im Listobject ortsunabhängig von der Lage der Tabelle im Blatt stattfindet.
Wenn man aber gewohnt ist mit rows.count... die Tabellengrenzen zu ermitteln und in for Schleifen immer die erste Datenzeile fest vorgegeben werden muß ...for i = 2 to....
dann ist schon ein Umdenkprozess nötig, um sich mit Listobjects, Listrows, Listcolumns und deren Untermenge Databodyrange oder Headerrowrange anzufreunden.

Die Schwierigkeit bei deinen zusätzlichen Userforms ist die Übergabe der aktiven Zeile. Ich habe hier die Tag Eigenschaft der Hauptuserform verwendet.
Das sie ein Textwert ist, muß der Tag erst noch auf Zahl umgesetzt werden bevor man ihn als Zeilennummer oder Indexnummer der Datenzeilen in der intelligentenTabelle benutzt.
Und für die Referenz der Zeile in der Listbox ist eine Reduzierung des Zahlenwertes notwendig. Listboxindex =0 ist die erste Zeile, Tabellenzeile 1 ist der Index = 1

Das Listboxfüllen habe ich aufgeteilt. Ich schätze daher stammte auch dein Fehler mit dem Absturz. Ich erhielt noch einen Stapel-Fehler. Das deutet auf eine sich selbst aufrufende Funktion hin, die dann den Speicher vollschreibt und Tschüß Excel.
Im Initialize wird nur die Größe und die erste Belegung festgelegt. Im weiteren Verlauf reicht nur eine Aktualisierung. Ich habe die Quelle der Listbox umgestellt von .Rowssource auf .List. Es reicht hier aus die Intelligente Tabelle nochmal der List zuzuordnen und die Listbox auf die aktive Zeile zu setzen. Vorteil der intelligenten Tabelle: Keine Bestimmung der Größe notwendig.

Die Textboxen in der Haupt-UF werden durch das Changeereignis der Listbox gefüllt. Die aktive Zeile kommt hier wieder zum tragen.

Was deine Unter-UF's angeht, halte ich sie immer noch für überflüssig. Du als Nutzer des Programmes wirst sicher nicht aus Versehen die Daten bearbeiten. Womit eine einfache Msgbox , mit einer Rückfrage bei Änderungen der Textboxen, ausreicht. Das verhindert auch Probleme bei der Informationsübertragung von UF zu UF und vereinfacht die Programmierung.

gruß

rb


Anzeige
AW: Laufzeitfehler ´-2147417848 (80010108)´
04.06.2023 23:01:29
Bernd
Hallo Ralf

Vielen Danke für deine Erklärung.
Listobjects, Listrows, Listcolumns, Databodyrange, Headerrowrange werde ich mir genauer angucken und mir lesestoff dazu ergoogeln.

Du als Nutzer des Programmes wirst sicher nicht aus Versehen die Daten bearbeiten

Da hast du vermutlich recht.

Das verhindert auch Probleme bei der Informationsübertragung von UF zu UF und vereinfacht die Programmierung.

Hier gibst du mir zu denken.
Jede gesparte UF mit deren Code macht das Programm nicht nur schlanker sondern natürlich auch übersichtlicher.
Die Textboxen auf der Haupt UF sind ja vorhanden. Über diese Textboxen müsste es ja möglich sein Daten anzeigen zu lassen Neue Daten hinzuzufügen und Daten zu Ändern.
Ich werde mir das Morgen Abend mal in ruhe angucken und versuchen das umzusetzen.

Vielen Dank für deine Mühe
Grüße Bernd


Anzeige
AW: Laufzeitfehler ´-2147417848 (80010108)´
05.06.2023 11:26:32
Alwin WeisAngler
Hallo Bernd,
du musst auch noch folgendes Bedenken:
Wenn du im Suchfenster die Auswahl in der Listboxausgabe eingrenzt und die markierte Zeile der Listbox dann egal ob in andere Userform oder nicht übergibst, musst du an Hand der ID oder was anderen eindeutig Indentifizierbaren vorgehen. So wie es jetzt ist, läuft das schief.
Auch das neu Eintragen macht man bei formatierten Tabellen mit .ListRows.Add.
Ansonsten gilt, was ralf_b bereits angemerkt hat.
Anbei mal ein Weg, wie ich es machen würde.
https://www.herber.de/bbs/user/159469.xlsm

Gruß Uwe

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige