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

Makro mit Fehlern

Makro mit Fehlern
28.05.2022 09:59:16
MiSchi
Hallo liebe Helfer im Forum,
ich habe mir aus einem youtube Tutorial einen Code abgeschrieben, der beim Vorführen funktioniert.
Beim Testen kommt eine Fehlermeldung nach der anderen...
Ich habe keine Idee und überlege ob möglicherweise nicht alles sichtbar ist, was zum vollständigen Code gebraucht wird?
Den ersten Fehler konnte ich beheben in dem ich
Set tbl_Daten1 = ThisWorkbook.Worksheets("Daten1")
einsetzte
dann folgen weitere und ich bin leider mit meinem Latein am Ende.
Wäre jemand so freundlich - falls man hierzu keine Kristallkugel braucht - den Code zu korrigieren/vervollständigen.
Unter https://www.herber.de/bbs/user/153297.xlsm habe ich die Mappe hochgeladen.
Die Screenshots vom Tutorial musste ich wg der Größe entfernen - der link zum Tutorial habe ich auf Info abgelegt
Modul original ist der orignal Code
Modul Test meine Versuche ...
Tabelle Info sind die Screenshots
Daten1, Daten2, Ergebnis sollten dem Beispiel entsprechen
Herzlichen Dank und viele Grüße
MiSchi

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro mit Fehlern
28.05.2022 10:49:59
Oberschlumpf
Hi,
hier, schau mal
https://www.herber.de/bbs/user/153298.xlsm
Im Modul Test hab ich die vorher noch vorhandenen Fehler korrigiert.
Damit du weißt, was von mir im Code ist:
- die fehlerhafte Zeile beginnt immer mit ' und endet immer mit 'Fehler (wenn z Bsp Fehler 405 am Ende einer Zeile steht, ist das nicht von mir)
- direkt unter der fehlerhaften Zeile habe ich den korrekten Code geschrieben
So kannst du beide Zeilen miteinander vergleichen und solltest schnell erkennen, was in der oberen Zeile falsch ist.
Hilfts?
Ciao
Thorsten
Anzeige
AW: Makro mit Fehlern
28.05.2022 11:57:48
MiSchi
VIELEN DANK Thorsten!!!
Bis auf die 3 fehlenden Set... fehlten keine weiteren Zeilen.
Die restlichen Fehler waren Schreibfehler meinerseits, die ich nicht erkannte. Vielen Dank, dass Du Dir die Zeit genommen hast, diese zu korrigieren. Ich hab 3x verglichen und diese Fehler nicht gesehen...
Hast Du eine Idee wie der Code im Tutorial ohne die Set.... Definitionen laufen kann?
Viele Grüße
MiSchi
AW: Makro mit Fehlern
28.05.2022 12:47:35
Oberschlumpf
Hi,
Hast Du eine Idee wie...
Nein, habe ich leider nicht.
Denn die SET-Zeilen, wie du sie nachgetragen hast, sind erdorderlich.
Ich hatte mir das Video https://www.youtube.com/watch?v=OQyDAy0SsV8 angeschaut.
Eigentlich hätte es im Video in...

tbl_Erg.UsedRange.Clear
...zu einem Fehler kommen müssen - weil ja (im Video) der Variablen tbl_Erg gar kein Wert zugewiesen wurde - zumindest hab ich nix gefunden.
DU hast mit der Code-Korrektur (Set... usw) alles richtig gemacht - ohne dem funzt der Code nicht.
Was mir im Vodeo zusätzlich nicht gefällt, ist, dass die Zeile...

Option Explicit
...gar nicht vorhanden ist
Wieso diese Zeile (nach meiner + der Meinung vieler anderer) wichtig ist, kann dir Google beantworten.
Und noch ein Tipp von mir.
Im Code wird u. a. diese Zeile verwendet:

For i = 1 To 6
Funktioniert zwar problemlos, aber ich verwende lieber "sprechende" Variablen.
i ist einfach nur ein Buchstabe - nix weiter
Ich hätte anstelle von i z Bsp lieber lloSpalte verwendet....
Warum?
Der Code...

For i = 1 To 6
VarDatErg(lngZErg, i) = VarDat1(lngzeile, i)
Next i
...durchläuft die Spalten 1 bis 6 (A bis F)
Wenn ich mir den Code irgdwann viel später mal wieder anschaue, weiß ich zuerst gar nicht mehr, was genau passiert jetzt bei For i =...
Wenn da aber steht For lloSpalte = ... , dann weiß ich sofort, auf den 1. Blick wieder: "Ah, da müssen Spalten durchsucht/bearbeitet/sonstwas werden.
Und warum llo?
l steht für lokal (es gibt lokale und öffentliche Variablen; mehr Infos bei...Google :-) )
lo steht für LONG = einer von vielen Datentypen
Ich hab mir angewöhnt...
a) wie gesagt, "sprechende" Namen zu verwenden, damit ich auch später noch sofort, oder wenigstens schnell, erkenne, was ist das für eine Variable
b) eine Kennung für (l)okal oder (p)ublic (öffentlich) zu setzen, damit ich auch hier schnell erkenne, es handelt sich um eine lokale oder öffentliche Variable
c) eine Kennung für den Datentyp zu setzen, damit ich eben weiß, um was für eine Variable handelt es sich, die verwendet wird
lo = Long
i = Integer
str = String
bo = Boolean
...usw
So, hier hab ich deine Datei noch mal etwas erweitert, damit du zum Teil hofftl schneller verstehst, was ich versuchte, hier zu erklären
https://www.herber.de/bbs/user/153299.xlsm
Ciao
Thorsten
Anzeige
AW: Makro mit Fehlern
28.05.2022 12:53:53
MiSchi
Wow! Vielen Dank Thorsten!
Vielen Dank für Deine ausführliche Hilfe.
Herzliche Grüße
MiSchi
AW: Makro mit Fehlern
28.05.2022 13:44:13
Herbert_Grom
Hallo,
die hervorragenden Erklärungen von Thorsten, kann ich nur noch mit ein wenig zusätzlicher Info ergänzen:
'Der Long-Datentyp ist mit einem 64-Bit-Prozessor dem Integer vorzuziehen!
'Der Integer-Datentyp bietet in Verbindung nur mit einem 32-Bit-Prozessor eine optimale Leistung.
''Die Typdeklarationszeichen, anstatt "as", sind wie folgt:
''$ für "as String"
''@ für "as Currency" mit 4 Nachkommastellen, ist genauer als "Double"!
''# für "as Double" mit Fließkommastellen.
''& für "as Long" ohne Nachkommastellen
''"as Variant" kann man sich ganz sparen, denn ohne weitere Angabe wird jede Variable als "Variant" behandelt!
''
''Ich stelle dabei dem Variablen-Namen den 1. Buchstaben der Variablen-Bezeichnung voran. Damit weiß ich
''immer, welche Art von Variable ich da vor mir habe. Außerdem versuche ich kryptische, abgekürzte Vari-
''ablennamen, so gut es geht, zu vermeiden, denn so wird der Code sehr viel lesbarer! Auch für mich selbst!
''Denn nach Monaten oder sogar Jahren, kann ich selbst meinen Code sonst nur sehr viel schwerer lesen.
''
''Speicherverbrauch der einzelnen Variablentypen:
''Long 4 Byte Ganzzahlen -2.147.483.648 bis 2.147.483.647
''LongLong 8 Byte Ganzzahlen ca. ± 9 Trillionen
''Currency 8 Byte skalierte Ganzzahlen ca. ± 9 Billionen, 4 Nachkommastellen
''Double 8 Byte Gleitkommazahl
''Date 8 Byte Datum und Zeit
''Object 4 Byte abhängig vom Objekt
''String Anz. Zeichen * 2 Texte
''
''Currency ist intern eine Ganzzahl, die durch 10.000 geteilt wird und 4 feste Nachkommastellen hat.
'' Im Gegensatz zu „normalen“ Fließkommazahlen ist das ein sehr genaues Rechenverfahren und daher
'' besonders im Zusammenhang mit Geldbeträgen zu empfehlen.
Servus
Anzeige
AW: Makro mit Fehlern
30.05.2022 18:55:15
MiSchi
Vielen Dank Herbert für die weiteren Erklärungen!
MiSchi
AW: Makro mit Fehlern
28.05.2022 15:30:16
Anton
Hallo, vermutlich hat der Ursprungscode deswegen ohne die Sets funktioniert, weil der Autor diese Namen als technische Mappennamen direkt in den Eigenschaften vergeben hat. Wenn du im VBA-Editor dir die Eigenschaften einer Mappe anzeigen lässt, siehst du dort zwei Atrribute names Name. Der eine ist der tatsächliche Name der Mappe, der auch angezeigt wird. Der andere Name ist der technische Name der Mappe, der nach außen hin nicht in Erscheinung tritt. Dieser technische Name kann aber genutzt werden, um damit Mappen im VBA-Code direkt anzusprechen, ohne dass es einer vorherigen Deklaration und einer Zuweisung mit SET bedarf.
Viele Grüße
Anton
Anzeige
AW: Makro mit Fehlern
28.05.2022 17:14:51
Herbert_Grom
Hallo Anton,
kannst du mir bitte kurz erklären, wo ich die Datei-Eigenschaften im VBA-Editor finde, ich stehe gerade auf der Leitung. Vielen Dank im Voraus.
Servus
AW: Makro mit Fehlern
28.05.2022 17:54:00
Anton
Hallo, klar, hier im Screenshot sieht man besser, was ich meine. Wenn du im VBA-Editor bist, kriegst du mit F4 die Eigenschaftsliste. Mit STRG+R öffnest du dort den Projektexplorer, wo du dann alle Mappen deiner Excel-Datei siehst.
Userbild
Der grün hervorgehobene Name ist der technische Name der Mappe - in der Regel lautet er genauso wie der Name, der tatsächlich angezeigt wird (gelb hervorgehoben).
Den technischen Namen kannst du anpassen, in z.b tbl_beispiel und nutzen, um die Mappe anzusprechen.
Spricht man eine Mappe über den "sichtbaren" Namen an, dann lautet es worksheets("Tabelle1").Range("A1").value="hallo"
Spricht man eine Mappe hingegen über den technischen Namen an, geht es mit tbl_beispiel.Range("A1").value="hallo" deutlich eleganter. Darüber hinaus ist diese Art des Zugriffs viel stabiler, weil der sichtbare Name geändert werden kann und es nicht zum Abbruch des Makros führt.
Viele Grüße
Anton
Anzeige
AW: Makro mit Fehlern
28.05.2022 18:30:10
Herbert_Grom
Hallo Anton,
ach so, das meintest du. Dass das "technische Name" heißt, habe ich auch noch nie gehört. Und so lernt man immer wieder etwas dazu. Vielen Dank.
Servus
AW: Makro mit Fehlern
30.05.2022 19:02:26
MiSchi
Vielen Dank Anton!
Gute Idee und Schilderung!
Ich hatte mir noch überlegt ,ob es wohl möglich, dass die Schaltfläche eine userform ist und dort bereits eine globale Deklaration platziert ist? Nur so ein Gedanken von jemand mit wenig VBA-Kenntnissen.
Viele Grüße
MiSchi
AW: Makro mit Fehlern
29.05.2022 05:32:17
Oberschlumpf
Hi Anton,
jep, DAS könnt ne Möglichkeit sein - war mir als Grund aber nich eingefallen :-)
Danke für den Hinweis!
Ciao
Thorsten
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige