Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1872to1876
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

Fehler im Makro

Fehler im Makro
03.03.2022 13:44:09
walter
Hallo zusammen,
ich habe dieses Makro, was bisher funktionierte.
Jetzt wollte ich anstatt 10.000 eine Varible einbringen ohne Erfolg

Private Sub TextBox1_Change()
Dim Z As Long, nam, i As Long
Dim ez As Long
With ActiveSheet
ez = .Cells(3, 3).End(xlUp).Row      'die länge aus der Splate 3 bestimmen.
For Z = 3 To ez
 ' For Z = 3 To 10000
nam = Cells(Z, 2) & Cells(Z, 3)
If nam  "" And InStr(UCase(nam), UCase(TextBox1)) Then
Call AddList(i, Z)
i = i + 1
End If
Next Z
End With
End Sub
gruß walter b

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

Betreff
Datum
Anwender
Anzeige
AW: Fehler im Makro
03.03.2022 13:56:47
Rudi
ez = .Cells(.rows.count, 3).End(xlUp).Row
Danke Dir !!! -)
03.03.2022 13:58:13
walter
Habe selbst jetzt gefunden... -)
03.03.2022 13:56:48
walter
Hallo,
habe gerade selbst rausgefunden.
With ActiveSheet
ez = .Cells(.Rows.Count, 3).End(xlUp).Row
For Z = 3 To ez
gruß walter b
AW: Fehler im Makro
03.03.2022 13:59:25
GerdL
Hallo Walter,
statt einer Variablen, die nur einmal benutzt wird, kann man deren Quelle direkt einsetzen.
Das Zauberwort heißt hier Rows.Count . Anstelle vom "Change" würde ich TextBox1_AfterUpdate() nehmen.

Private Sub TextBox1_Change()
Dim Z As Long, nam, i As Long
With ActiveSheet
For Z = 3 To .Cells(.Rows.Count, 3).End(xlUp).Row
nam = .Cells(Z, 2) & .Cells(Z, 3)
If nam  "" And InStr(UCase(nam), UCase(TextBox1)) Then
Call AddList(i, Z)
i = i + 1
End If
Next Z
End With
End Sub
Gruß Gerd
Anzeige
Herzlichen Dank Gerd -)
03.03.2022 14:36:24
walter
Fast richtig ...
03.03.2022 14:34:21
Daniel
... Nur musst du, wenn du die obere Zelle des Blocks als Absprungpunkt nimmst, nach unten springen und nicht nach oben, also
ez = .Cells(3, 3).End(xlDown).Row
Allerdings hat diese Methode ein paar Einschränkungen bzw Sonderfälle, in denen sie nicht richtig funktioniert:
a) wenn zwischendrin leerzellen vorhanden sind, geht der Sprung nur bis zur ersten leerzelle.
b) wenn die Liste unterhalb von C3 leer ist (nur C3 gefüllt) geht der Sprung bis ganz ans Ende des Tabellenblatts.
Aus diesen Gründen springt man von der untersten Zelle der Spalte nach oben, das funktioniert immer.
Gruß Daniel
Anzeige
Hallo Daniel, danke für die Tipps. -)
03.03.2022 17:45:10
Walter

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige