VBA/ Einträge finden

BLR

Erfahrenes Mitglied
Hallo, ich möchte ab einer Koordinate, bsp. A:1 rausfinden ob in A:2, A:3 usw.. ein Text drin steht.
Dafür mache ich folgendes:


Code:
Dim rg As Range
                
Set rg = Cells.Find("Artikel")  ' Da bekomme ich die Zelle, wo das Wort "Artikel" drin steht.
Nun möchte ich einfach eine Zeile runterspringen:

Code:
Call ActiveCell.Offset(rg.Row + 1, rg.Column).Activate
Ich erwarte, dass bei rg.Row+1 er von der Zeile 1 (Position A:1) auf die Zeile 2 (Position A:2) springt.
Aber es kommen ganz komische Zahlen daraus und keine 9....

Wie könnte ich von einer bestimmten Koordinate in die Zeile dadrunter springen****
Danke für jeden Tipp.
 
Danke für den Tipp Yaslaw, aber irgendwie kann ich nix mehr von ActiveSheet machen.

Ich wollte dann auslesen, ob ein Text in ActiveSheet mit
ActiveSheet.Text oder sowas auslesen, aber es lässt nichts von ActiveSheet aufrufen....

Aber vielleicht ist mein Ansatz net so gut....
Ich habe folgendes Konstalation:
A
1
2 Eintrag
3 ich
4 du
5 er
6

Nun möchte ich alle Einträge zusammenzählen, die am dem Wort "Eintrag" aufgeführt sind.
Dafür finde ich zunächst, in welcher Zelle das Wort "Eintrag" sich befindet.
Und dann möchte ich mit einer Do-While Schleife eine Zeile runterspringen um zu schauen, ob da sich ein Eintrag befindet.

Code:
Dim rg As Range              
Set rg = Cells.Find("Eintrag")

Call ActiveSheet.Cells(rg.Row + 1, rg.Column).Activate

Do While len(ActiveSheet.Adress.Text)>0

      Zahl = Zahl+1
      ActiveSheet.Cells(rg.Row + 1, rg.Column).Activate

loop
Sprich soll in der Schleife eine Zeile nach der anderen runtergesprungen werden um zu schauen, ob sich da was befindet, aber leider kenne ich diese Objekte nicht. Wie könnte man das umsetzen?

Danke im Voraus
 
Ungetestet so vielleicht:

Visual Basic:
Dim rg As Range              
Dim zeile As Integer

Set rg = Cells.Find("Eintrag")

zeile = rg.Row + 1
 
Call ActiveSheet.Cells(zeile, rg.Column).Activate
 
Do While len(ActiveSheet.Cells(zeile, rg.Column).Text)>0
      zeile = zeile + 1
      ActiveSheet.Cells(zeile, rg.Column).Activate
Loop
 
Lass das activate-Zeugs sein. Greife direkt auf die Felder und die Values zu
Visual Basic:
    Dim rg As Range
    Dim r, c, zaehler As Long
    
    Set rg = ActiveSheet.Cells.Find("Eintrag")
    
    r = rg.Row + 1
    c = rg.Column
    zaehler = 0
     
    Do While Len(ActiveSheet.Cells(r + zaehler, c).Value) > 0
          zaehler = zaehler + 1
    Loop
    
    Set rg = Nothing
    
    MsgBox (zaehler)
 
Super vielen dank für die Antworten.
@Yaslaw
Bei der Zeile:

Code:
len(ActiveSheet.Cells(lngRow + zaehler, lngColumn).Values) >0

bekomme ich allerdings nen Laufzeitfehler, dass das Objekt diese Eigenschaft oder Methode nicht unterstützt.
Komischeweise ist es bei mir auch so, wenn ich "ActiveSheet" benutze, dann auf nen Punkt drücke um mir anzuschauen, was das Objekt alles für Methoden und Eigenschaften hat, wird mir nichts angezeigt...und auch keine Parameter von "cells" oder sowas...
 
Abschreiben will gelernt sein. value <> values.

cells() liestet keine Methoden und Properties auf. Das ist normal. Aber das Ergebnis von Cells() ist ein Range.
 
IMHO hat das Intellisense im VBA-Editor von Word/Excel ein Problem mit Klammern.

Gib im VBA-Editor nur Cells ein (ohne Klammern) gefolgt von einem Punkt, und du bekommst deine Eigenschaften und Methoden
 

Neue Beiträge

Zurück