Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Fehler in Find Schleife


Betrifft: Fehler in Find Schleife von: Simon
Geschrieben am: 02.02.2019 16:13:24

Hallo ihr,

ich habe einen Fehler in meinem Code, finde aber nicht raus woran es liegt...

Private Sub CommandButton1_Click()


Dim wkb As Workbook
Dim geoeffnet As Boolean
Dim wkbName As String, wkbPath As String
Dim bereich As Range
Dim Datum As String
Dim Ergebnis As Range
Dim Urlaub As Range



wkbName = "Urlaub.xlsm"
wkbPath = "V:\21. BPH_E\Kivelitz\Basisdatenbank"

' feststellen, ob Datei schon geöffnet
For Each wkb In Application.Workbooks
    If wkb.Name = wkbName And wkb.Path = wkbPath Then geoeffnet = True
Next wkb
' entsprechend reagieren
If geoeffnet Then
    Workbooks(wkbName).Activate
Else
    Workbooks.Open Filename:=wkbPath & "\" & wkbName, UpdateLinks:=0
End If


For i = 1 To 12
   Set bereich = Workbooks(wkbName).Sheets(i).Rows(2).Find(CDate(TextBox1.Value), Lookat:= _
xlWhole)
   If Not bereich Is Nothing Then
   For d = 1 To 41
   Set Ergebnis = bereich.EntireColumn.Find("u", Lookat:=xlWhole)
   If Not Ergebnis Is Nothing Then
   Do
     Set Urlaub = Workbooks(wkbName).Sheets(i).Cells(Ergebnis.Row, 1)
     
   ErstesErgebnis = Ergebnis.Address
   
    With Tabelle1
      
         z = 3
         
nochmal:
            If .Cells(58, z) = "" Then
                .Cells(58, z) = Urlaub.Value
                
                Else
                 z = z + 1
                 GoTo nochmal
            End If
        
    End With
    
    Set Ergebnis = Ergebnis.FindNext(Ergebnis)

    Loop While Ergebnis.Address <> ErstesErgebnis
      
            Exit For
        End If
    Next d
      Exit For
   End If
Next i
End Sub
Zur Erklärung:

Ich habe eine Urlaubsliste mit 12 Blättern( Jan-Dez) in der Personen in Spalte "A" stehen, das Datum fortlaufend zum Monat in Zeile 2.

Mein Suchbefehl soll erst das Datum suchen, dann in der ganzen Spalte (von 1-41 mehr Personen habe ich nicht) nach "u". Wenn er das findet (z.B. in C7) soll er den Wert aus A7 nehmen und in eine andere Tabelle schreiben in welcher das Makro läuft.
Dort soll er in einer Bestimmten Zelle Starten (Cell(58,z) wobei das erste mal bei drei sein soll.

Dann soll er eigentlich den nächsten "u" Wert finden und den nächsten Namen ins freie Feld daneben schreiben (eben elso z + 1).
Das ganze bis er keine "u"s mehr findet, dann ist gut.

Das klappt auch alles echt wunderbar, er findet den ersten Namen und trägt ihn in Cell (58,3) ein, danach sucht er aber irgendwie nicht weiter.

Wo ist der Fehler bei meinem FindNext? :/

  

Betrifft: AW: Fehler in Find Schleife von: Mullit
Geschrieben am: 02.02.2019 16:36:32

Hallo,

Dein:

ErstesErgebnis = Ergebnis.Address

muß außerhalb der Schleife stehen...

Gruß, Mullit


  

Betrifft: AW: Fehler in Find Schleife von: Luschi
Geschrieben am: 02.02.2019 18:46:49

Hallo Simon,

- wozu die äußere For-Schleife (For i = 1 To 12) gut sein soll, kann ich nicht verstehen
- denn aus dem Vorgabedatum kann man doch die jeweilige Tabelle direkt ermitteln
- der 1. Mai kann nur in der Mai-Tabelle liegen (i = 5)
- der FindNext-Befehl ist auch falsch definiert:
  Set Ergebnis = Ergebnis.FindNext(Ergebnis)
  und muß so lauten:
  Set Ergebnis = bereich.EntireColumn.FindNext(Ergebnis)
  (siehe: https://docs.microsoft.com/de-de/office/vba/api/excel.range.find)
- die 1. Fundstelle muß sofort nach dem 1. Find-Befehl erfolgen
  also vor der SChleife


Gruß von Luschi
aus klein-Paris


  

Betrifft: AW: Fehler in Find Schleife von: Simon
Geschrieben am: 02.02.2019 21:21:04

Luschi du bist mein Gott, tausend Dank es läuft!

Zum i = Datum, wie kann ich das machen?

Dim y as interger
Dim DatumJahr as Date
Dim txt as String
txt =“TextBox1.Text“
DatumJahr = CDate(txt)
Y = year(Datum)
Den Code habe ich schon mal zum ermitteln des Jahres geschrieben (damit er die richtige Urlaubsdatei anhand des Datums wählt). Kann ich da statt year einfach month setzen?

LG und nochmal tausend Dank!


  

Betrifft: AW: Fehler in Find Schleife von: Hajo_Zi
Geschrieben am: 03.02.2019 08:13:16

einfach testen, ja
falls die Variable Datum ein Datum enthält.

GrußformelHomepage

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.


Beiträge aus dem Excel-Forum zum Thema "Fehler in Find Schleife"