VBA Ergebnis mit Makro in Spalte übergeben
#1
Hallo, 
mein Name ist Thomas und ich bin neu dabei VBA zu programmieren, weshalb ich zurzeit schnell an meine Grenzen stoße. Ich möchte eine Tabelle nach bestimmten Buchstaben absuchen und den Wert dan in einer Spalte ausgeben lassen, nicht zusammengezählt, sondern in für jede Zeile separat ausgegeben. Ich habe schon einen Code geschrieben der jedoch nicht klappt, bei dem ich aber denke, dass ich kurz davor bin. Das Arbeitsblatt indem es zum Einsatz kommen soll heißt "Eingabeliste (2)". Beim Ausführen des Codes lande ich dan jedoch in einer Dauerschleife 19 . Ich hoffe ich konnte mein Anliegen bestmöglich erklären sodass ihr mir helfen könnt.
VG Thomas

Private Sub Buchstabensuche ()
Dim z As Integer
Dim s As Integer
Dim suchwort As String
Dim zelleninhalt As String
suchwort = InputBox("bitte suchwort eingeben", "suchwort eingeben")
For s = 1 to 10
     For z = 2 To Sheets("Eingabeliste (2)"). UsedRange.SpecialCells(x1CellTypeLastCell).Row
     MsgBox (Cells(z, s).value)
If Cells(z, s) <>"#NV" Then
          zelleninhalt = Cells(z, s)
     End If
     If InStr(1, zelleninhalt, suchwort) > 0 Then
          Cells(z, 11). value = InStr(1, Cells(z, s), suchwort)
     End If
Next z
Next s
End Sub
Antworten Top
#2
Hi

Ohne Datei und Daten zu kennen ist helfen nicht immer leicht. Evtl machst du eine Bsp Datei.

Zitat:Beim Ausführen des Codes lande ich dan jedoch in einer Dauerschleife
Was wird ausgegeben wenn du die Codezeile mal einbaust.

Code:
Msgbox Sheets("Eingabeliste (2)"). UsedRange.SpecialCells(x1CellTypeLastCell).Row

Gruß Elex
Antworten Top
#3
Hi,

wenn ich Dich richtig verstanden habe, dann geht das auch kürzer:

Code:
Private Sub Buchstabensuche()

Dim suchwort As String, zelleninhalt As String
Dim z As Long
Dim Anz As Integer
Dim zelle

suchwort = InputBox("bitte suchwort eingeben", "suchwort eingeben")
zelleninhalt = suchwort & " ist in Spalte "
z = 2

With Worksheets("Eingabeliste (2)")
    .Columns(11) = ""
    For Each zelle In .Range("A2:J" & .Cells.SpecialCells(xlCellTypeLastCell).Row)
        If z = zelle.Row Then
            If InStr(1, zelle, suchwort) > 0 Then Anz = Anz + 1: zelleninhalt = zelleninhalt & zelle.Column & ", ": .Cells(z, 11) = Left(zelleninhalt, Len(zelleninhalt) - 2) & " also " & Anz & " mal in dieser Zeile."
        Else
            z = zelle.Row
            Anz = 0
            zelleninhalt = suchwort & " ist in Spalte "
        End If
    Next
End With

End Sub
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top
#4
Hallo, ok ich versuch mal zeitnah eine Beispieldatei einzubauen

Hi Ralf, 
danke für deinen Code. den werde ich nachher einmal ausprobieren und mich dan wieder melden.
VG Thomas
Antworten Top
#5
Hallo, 
zuerst einmal danke Ralf für deine Mühe. der Code arbeitet aber nicht wie gewünscht. Ich habe eine Beispieldatei erstellt. wenn ich nach dem Buchstaben "a" suche dan sollen mir für jede Zeile die genaue Anzahl in der Spalte K für die jeweilige Zeile präsentiert werden. Ich habe auch einige Zellen in den ich "NV"s habe. bei diesen soll ungeachtet dessen auch die Anzahl angezeigt werden.     
Antworten Top
#6
Moin!
Lade die Datei als .xlsx hoch, dann braucht das vorhandene Beispiel niemand abzutippen.
Und schreibe das Wunschergebnis erkennbar in die Datei.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#7
Hallo, das Wunschergebnis wäre die spalte K. Dies soll lediglich nur eine Beispieldatei darstellen. originale Code von meinem ersten Post soll hierbei zum Einsatz kommen. Ich will mit der Beispieldatei nur aufzeigen, was ich ausgegeben haben möchte.
VG Thomas


Angehängte Dateien
.xlsx   Mappe1.xlsx (Größe: 10,38 KB / Downloads: 3)
Antworten Top
#8
Hi,

was soll wo gesucht werden????
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#9
Ich bin verwirrt!
WAS soll in Spalte K WARUM ausgegeben werden?
(das verstehe ich unter einem nachvollziehbaren Wunschergebnis)

Und noch etwas:
Es gibt kein x1CellTypeLastCell
die Konstante lautet xlCellTypeLastCell
(L statt eins, außerdem ist das eine sehr unzuverlässige Methode)

Wahrscheinlich verwendest Du kein Option Explicit
Gerade ein Anfänger sollte dies unbedingt in den Modulkopf schreiben.
Dann meckert VBA nämlich spätestens beim ersten Kompilieren, dass die Variable nicht definiert ist.
xlCellTypeLastCell ist eine Konstante mit dem Wert 11
x1CellTypeLastCell ist eine nicht deklarierte Variant-Variable mit dem Wert empty

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#10
Hi,

hier mal ein Ansatz der einfachen Art:

Code:
Sub test()
Dim strSuch As String
Dim loA As Long
Dim loB As Long
Dim loC As Long
Dim strText(10)
loA = Cells(Rows.Count, 1).End(xlUp).Row

strSuch = UCase(Range("M2"))
For loB = 2 To loA
    For loC = 1 To 10
        If Cells(loB, loC) <> "#NV" Then strText(loB - 2) = strText(loB - 2) & UCase(Cells(loB, loC))
    Next
    Cells(loB, 11) = Len(strText(loB - 2)) - Len(Replace(strText(loB - 2), strSuch, ""))
Next
End Sub

In M2 steht der gesuchte Buchstabe!
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste