Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1904to1908
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

Warum funktioniert das Makro nicht

Warum funktioniert das Makro nicht
07.11.2022 15:47:04
Frank
Hallo Zusammen.
in folgender Datei möchte ich wenn die UF Kontoführung geöffnet ist, das beim Klick auf das Fernglas er mir alle vorhandenen Daten welche in Spalte 100 mit dem Datum aus TextBox1 übereinstimmen anzeigt. Leider zeigt er mir nur eine Zeile an, Wo liegt mein Fehler? Kann sich das jemand bitte mal anschauen und mir auf die Sprünge zu helfen?
https://www.herber.de/bbs/user/156071.xlsm
Danke im Vorraus!
L.G. Frank H.

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Warum funktioniert das Makro nicht
07.11.2022 16:21:11
peterk
Hallo
2 Dinge sind mir aufgefallen (CommandButton28_Click()):
* avntValues = .Range(.Cells(12, 100), .Cells(.Rows.Count, 111).End(xlUp)).Value
Bei Rows.Count hat der Punkt gefehlt
Spalte 112 hat keine Einträge
* If avntValues(lng, 1) &gt CDate(TextBox2) Then Exit For
Du hattest Cells(lng,1)
Peter
AW: Warum funktioniert das Makro nicht
07.11.2022 18:19:20
snb
Bei Rows.Count hat der Punkt gefehlt
Bei Rows.count ist der Punkt immer 100% überflüssig.
AW: Warum funktioniert das Makro nicht
07.11.2022 16:23:02
Yal
Hallo Frank,
Versuche
.ListBox2.List = Application.Transpose(Daten)
anstatt
.ListBox2.Column = Daten
VG
Yal
AW: Warum funktioniert das Makro nicht
07.11.2022 16:47:17
GerdL
Moin Frank,
wenn du die Spalte 100 als Meßlatte haben willst:

Private Sub CommandButton28_Click()
Dim Daten() As Variant, avntValues As Variant
Dim lng As Long, lngCount As Long
With Worksheets("Kontoführung")
avntValues = .Range(.Cells(12, 100), .Cells(.Rows.Count, 100).End(xlUp).Offset(, 12)).Value
End With
'.....................
Gruß Gerd
Anzeige
AW: Warum funktioniert das Makro nicht
07.11.2022 18:12:08
Frank
Hallo alle miteinander,
kein aufgezeigter Weg führt zum Erfolg. Woran kann es denn nur liegen?
L.G. Frank H.
AW: Warum funktioniert das Makro nicht
07.11.2022 18:56:28
Yal
Hallo Frank,
ziemlich viele "Ungenauigkeit" in deinem Code. In "CommandButton1_Click" steht einem

    For Each Cell In Range("bed:bd51")
was sicher nicht richtig ist. Im Vergleich steht in "CommandButton2_Click"

    For Each Cell In Range("be2:be51")
also nehme ich an dass es "bd2:.." sein sollte.
Da der Code innerhalb des Objekts "frmKontoführung", brauchst Du keinen "With frmKontoführung". Alles was nicht spezifiziert wird, bezieht sich auf frmKontoführung. Wie zum Beispiel alle deine
TextBox2 = ...
Funktioniert ohne frmKontoführung.
Achte auf ein sauberes Einrücken deines Codings. Es ist das A&O, um ein lesbaren Code zu haben und -dumme- Fehler sofort zu erkennen. Leere Zeilen helfen an der Stelle gar nicht, machen sogar das Lesen schwerer.
Wenn Du einen Text mit CDate konvertiert, musst Du sicherstellen, dass auf die andere Seite des vergleichs auch ein Datum vorhanden ist.
"Exit Sub" ist der Notausstieg-Hammer. Es wird meistens in sehr kurze Subs mit nur ein einzige, simple Aufgabe verwendet. Bei "Kaum VBA-Kenntnisse", vermeiden: es steigt aus, und Du weisst nicht warum.
Wenn es etwas wie eine "Quelle" und ein "Ziel", dann schlage ich vor, die Variable dementsprechend zu nennen (Geschmacksache).
Ohne Header muss man ab Zeile 13 starten und dein Code könnte so aussehen:

Private Sub CommandButton28_Click()
Dim QuellDat As Variant
Dim ZielDat() As Variant
Dim QuellNr As Long
Dim ZielNr As Long
With Worksheets("Kontoführung")
QuellDat = .Range(.Cells(13, 100), .Cells(.Rows.Count, 112).End(xlUp)).Value
End With
For QuellNr = LBound(QuellDat) To UBound(QuellDat)
If IsDate(QuellDat(QuellNr, 1)) Then
If CDate(QuellDat(QuellNr, 1)) 
VG
Yal
Anzeige
AW: Warum funktioniert das Makro nicht
07.11.2022 19:11:42
Frank
Hallo Yal,
auch dir Danke.
Auch bei deinem Code kommt die selbe Fehlermeldung wie bereits beschrieben.
L.G. Frank H.
AW: Warum funktioniert das Makro nicht
07.11.2022 18:34:44
snb
Es fängt hier an:

Private Sub UserForm_Initialize()
with Sheets("Kontoführung")
cbJahr.List = [row(2014:2040)]
cbJahr = .cbJahr
cbMonat.List = Application.GetCustomListContents(8)
cbMonat = .cbMonat
For j = 1 To 11
Me("ComboBox" & j).List = .Columns(55 + j).SpecialCells(2).Value
Next
End With
End Sub

AW: Warum funktioniert das Makro nicht
07.11.2022 18:39:51
snb
Du versuchst eien falsche Datenstruktuur mit VBA zu beheben.
Es wäre besser die Daten in Database-form zu strukturieren.
Dann hilft Excel mit Autofilter, Advancedfilter, Pivottable, dynamische Tabelle, Slicers usw.
Anzeige
AW: Warum funktioniert das Makro nicht
07.11.2022 18:43:30
Frank
Hallo,
Danke für deine Nachricht. Aber es kommt auch hier eine Fehlermeldung.
Eigenschaft List konnte nicht gesetzt werden. Index des Eigenschaftenfeldes ungültig.
Ne andere Idee?
L.G. Frank H.
AW: Warum funktioniert das Makro nicht
07.11.2022 20:20:46
snb
ändere

Private Sub UserForm_Initialize()
with Sheets("Kontoführung")
cbJahr.List = [row(2014:2040)]
cbJahr = .cbJahr
cbMonat.List = Application.GetCustomListContents(2)
cbMonat = .cbMonat
For j = 1 To 11
Me("ComboBox" & j).List = .Columns(55 + j).SpecialCells(2).Value
Next
End With
End Sub

wo soll ich anfangen?
07.11.2022 20:37:40
ralf_b
vielleicht mal damit?

With Worksheets("Kontoführung")
avntValues = .Range(.Cells(11, 100), .Cells(Rows.Count, 100).End(xlUp)).Resize(, 12).Value
End With
With frmKontoführung
.ListBox2.ColumnCount = 12
.ListBox2.ColumnWidths = "100;290;70;60;30;120;50;85;85;85;85;0"
.ListBox2.Clear
For lng = LBound(avntValues) To UBound(avntValues)
If avntValues(lng, 1) > CDate(TextBox2) Then Exit For
If avntValues(lng, 1)  "" Then
lngCount = lngCount + 1
ReDim Preserve Daten(0 To 11, 1 To lngCount)

Anzeige
AW: wo soll ich anfangen?
07.11.2022 20:44:46
Frank
Hallo Ralf,
jetzt funzt es. Danke und einen schönen abend noch!
L.G. Frank H.
dann kann man abschliessen
07.11.2022 21:42:56
Yal
Frank,
auf Grund von einigen sensible Daten, die Du in der Datei "vergessen" hast ( Name, vn, iban) würde ich dir empfehlen, einen Mail an Hans (Mail findest Du im Impressum) zu schreiben und bitten, die Datei zu löschen.
VG
Yal

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige