Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Werte suchen mit VBA in einer Schleife

Werte suchen mit VBA in einer Schleife
26.10.2005 07:58:44
Thomas
Guten Morgen
Ich habe einen Spinnbutton, über den ich das Jahr verändern kann. Danach werden in einer Zeile alle Tage dieses Jahres geschrieben, einschließlich der Tage des letzten Jahres, welche sich noch in der KW des 01.01 befinden. Jetzt möchte ich mit Hilfe von VBA und einer Schleife immer die Zelle des ersten und des letzten Tages eines jeden Monats ermitteln um festzustellen welche Zellen immer zu einem Monat gehören.
Gruß Thomas
PS: ich hoffen ich hab mich verständlich ausgedrückt :)
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte suchen mit VBA in einer Schleife
26.10.2005 08:32:24
Rolf
Hallo Thomas,
hier mal das Prinzip -
musst du deinen Gegebenheiten anpassen.
fG
Rolf

Sub firstandlastday()
On Error Resume Next
Dim Bereich As Range, Feld As Range
Set Bereich = Intersect(ActiveSheet.UsedRange, Columns(1))
For Each Feld In Bereich
If Day(Feld) = 1 Then
Feld.Interior.ColorIndex = 3
Feld.Offset(-1, 0).Interior.ColorIndex = 3
End If
Next
End Sub

Anzeige
AW: Werte suchen mit VBA in einer Schleife
26.10.2005 08:42:01
Matthias
Hallo Thomas,
mein Vorschlag:

Function BereichMonat(jahr As Integer, monat As Integer) As Range
Const Spalte = 1 'Spalte mit Daten
Dim z1 As Double, z2 As Double
With Sheets("Tabelle1") 'anpassen
z1 = WorksheetFunction.Match(CLng(DateSerial(jahr, monat, 1)), .Columns(Spalte), 0)
z2 = WorksheetFunction.Match(CLng(DateSerial(jahr, monat + 1, 1)) - 1, .Columns(Spalte), 0)
Set BereichMonat = .Range(.Cells(z1, Spalte), .Cells(z2, Spalte))
End With
End Function
Sub test()
BereichMonat(2005, 3).Select
End Sub

Gruß Matthias
Anzeige
AW: Werte suchen mit VBA in einer Schleife
26.10.2005 09:12:33
Thomas
Hallo Mathias
Wenn ich das so mache, dann bekomme ich immer einen Laufzeitfehler 1004.
"Die Match-Eigenschaften des WorksheetFunktion-Objektes kann nicht zugeordnet werden"
Kann man das auch über einen fest definierten Bereich machen? Die Daten stehen bei mir im Bereich D4:GQ4 (1. Halbjahr des Jahres). Ich will eigentlich nur die Zellen eines Jeden Monats über dem jeweiligen Datum zusammenfassen um dort einen Text als Monatsüberschrift einzufügen.

Thomas
Anzeige
AW: Werte suchen mit VBA in einer Schleife
26.10.2005 09:26:59
Matthias
Hallo Thomas,
sorry, ich habe das mit der Zeile überlesen und die Daten in einer Spalte vermutet.

Function BereichMonat(jahr As Integer, monat As Integer) As Range
Const Zeile = 4 'Zeile mit Daten
Dim z1 As Double, z2 As Double
With Sheets("Tabelle1") 'anpassen
z1 = WorksheetFunction.Match(CLng(DateSerial(jahr, monat, 1)), .Rows(Zeile), 0)
z2 = WorksheetFunction.Match(CLng(DateSerial(jahr, monat + 1, 1)) - 1, .Rows(Zeile), 0)
Set BereichMonat = .Range(.Cells(Zeile, z1), .Cells(Zeile, z2))
End With
End Function
Sub test()
With BereichMonat(2005, 3).Offset(-1, 0) 'Zeile über den Daten
.Merge     'Zusammenfassen
.HorizontalAlignment = xlCenter 'zentrieren
.Value = "Überschrift" 'Überschrift setzen
End With
End Sub

Gruß Matthias
Anzeige
AW: Werte suchen mit VBA in einer Schleife
26.10.2005 10:02:05
Thomas
Hi Mathias
Die Fehlermeldung kommt immer noch.
"Die Match-Eigenschaften des WorksheetFunktion-Objektes kann nicht zugeordnet werden"
Thomas
AW: Werte suchen mit VBA in einer Schleife
26.10.2005 10:30:18
Matthias
Hallo Thomas,
wenn ein Fehler kommt, kann er die Daten in Zeile 4 nicht finden.
Sind die sicher in der Zeile vorhanden?
Gruß Matthias
Anzeige
AW: Werte suchen mit VBA in einer Schleife
26.10.2005 10:52:15
Thomas
Ich raf es nich.
Hier mal ein Bild von der Datei.
Userbild
Über den Spinbutton wähle ich das Jahr aus und dann werden automatisch die Tage in die Zeile ab D4 (Formatiert mit "TT") eingetragen. Ich will jetzt einfach die Zellen in der ersten Zeile die zwischen den Rahmen liegen verbinden und mit dem dazu passenden Monatsnamen versehen.
Ich hoffe das hilft dir weiter
Thomas
Anzeige
AW: Werte suchen mit VBA in einer Schleife
26.10.2005 11:56:52
Matthias
Hallo Thomas,
stehen in Zeile 4 ab D4 Formeln? Wie lauten die?
Gruß Matthias
AW: Werte suchen mit VBA in einer Schleife
26.10.2005 11:59:50
Thomas
Ja, dort steht
=DATUM(C2;1;1)-WOCHENTAG(DATUM(C2;1;1);2)+1
Dies bezieht sich auf das ausgewählte Jahr in C2.
Thomas
AW: Werte suchen mit VBA in einer Schleife
26.10.2005 12:08:20
Matthias
Hallo Thomas,
ich kann deinen Fehler nicht nachvollziehen:
https://www.herber.de/bbs/user/27844.xls
Gruß Matthias
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Werte suchen mit VBA in einer Schleife


Schritt-für-Schritt-Anleitung

Um die ersten und letzten Tage eines Monats in Excel mithilfe von VBA zu ermitteln, kannst Du folgende Schritte ausführen:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" und wähle Einfügen > Modul.
  3. Kopiere den folgenden Code in das Modul:

    Function BereichMonat(jahr As Integer, monat As Integer) As Range
       Const Zeile = 4 ' Zeile mit Daten
       Dim z1 As Double, z2 As Double
       With Sheets("Tabelle1") ' anpassen
           z1 = WorksheetFunction.Match(CLng(DateSerial(jahr, monat, 1)), .Rows(Zeile), 0)
           z2 = WorksheetFunction.Match(CLng(DateSerial(jahr, monat + 1, 1)) - 1, .Rows(Zeile), 0)
           Set BereichMonat = .Range(.Cells(Zeile, z1), .Cells(Zeile, z2))
       End With
    End Function
    
    Sub test()
       With BereichMonat(2005, 3).Offset(-1, 0) ' Zeile über den Daten
           .Merge ' Zusammenfassen
           .HorizontalAlignment = xlCenter ' Zentrieren
           .Value = "Überschrift" ' Überschrift setzen
       End With
    End Sub
  4. Ändere den Namen des Arbeitsblattes (z.B. "Tabelle1") und die Zeile (in diesem Beispiel Zeile 4), falls nötig.

  5. Führe das test-Makro aus:

    • Gehe zurück zu Excel, drücke ALT + F8, wähle test und klicke auf Ausführen.

Häufige Fehler und Lösungen

  • Laufzeitfehler 1004:

    • Dieser Fehler tritt auf, wenn die gesuchten Daten in der angegebenen Zeile nicht gefunden werden. Stelle sicher, dass die Daten in der Zeile 4 tatsächlich vorhanden sind.
  • Fehler in der Match-Funktion:

    • Überprüfe, ob die Zellen in der angegebenen Zeile korrekt formatiert sind und keine Leerwerte enthalten.

Alternative Methoden

Wenn Du keine VBA-Lösungen verwenden möchtest, kannst Du auch die Funktion SVERWEIS in Kombination mit WENN-Bedingungen nutzen, um die ersten und letzten Tage eines Monats zu ermitteln. Diese Methode erfordert jedoch manuelle Eingaben und ist weniger flexibel.


Praktische Beispiele

Angenommen, Du hast in Zeile 4 Daten von D4 bis GQ4, die die Tage eines Jahres darstellen. Um die Zellen für den Monat März 2005 zu verbinden und eine Überschrift einzufügen, kannst Du das oben stehende test-Makro verwenden. Es wird automatisch die entsprechenden Zellen finden und zusammenfassen.


Tipps für Profis

  • Fehlerbehandlung: Füge On Error Resume Next am Anfang Deiner Sub-Prozeduren hinzu, um Fehler elegant zu behandeln.

  • Verwende Named Ranges: Um die Lesbarkeit und Wartbarkeit Deines Codes zu erhöhen, kannst Du benannte Bereiche verwenden, anstatt feste Zellreferenzen.


FAQ: Häufige Fragen

1. Wie kann ich den Code anpassen, um mehrere Monate gleichzeitig zu verarbeiten? Du kannst eine Schleife innerhalb der test-Sub-Prozedur einfügen, um durch die Monate zu iterieren.

2. Was mache ich, wenn meine Daten nicht in der Zeile 4 stehen? Ändere die Konstante Zeile in der BereichMonat-Funktion, um die richtige Zeile anzugeben, in der Deine Daten stehen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige