Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
516to520
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
516to520
516to520
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro mehrfach durchlaufen lassen

Makro mehrfach durchlaufen lassen
14.11.2004 17:59:17
Fritz
Hallo,liebe Helfer,
um mich zu entspannen, excele ich ein bißchen herum. Ich möchte meiner Kneipenwirtin einen Zimmerbelegungsplan basteln. Teile davon sind auch fertig. Mit dem folgenden Code wird gesucht, ob das Zimmer in einem bestimmten Zeitraum belegt ist und an welchen Tagen. Das klappt so weit. Jetzt müsste ich diesen Code für insgeamt 15 Zimmer schreiben. Um das zu vermeiden, wollte ich mal nachfragen, ob es da nicht eine elegantere Lösung gibt. Es wäre nett, wenn Ihr nicht nur antworten würdet :" Ja, gibt es!" :-)) , sondern mir vielleicht bißchen weiter helfen könntet. Liege ich z.B. einigermaßen richtig, wenn ich statt Cells(r, 1) oder so mit Activecell.Offset arbeiten würde und dann das Makro für jedes Zimmer in einer Schleife unterbrächte?
Danke für Eure Mühe.
Fritz

Sub Suchen1()
Dim Datum1 As Date, Datum2 As Date, Anfang As Long
Dim Ende As Long, Zeile As Long, wks As Worksheet
Dim str As String
Set wks = Sheets("Belegung")
Datum1 = CDate(frmMaske.txtvon.Value)
Datum2 = CDate(frmMaske.txtbis.Value)
For Zeile = 2 To 366
If Cells(Zeile, 1).Value = Datum1 Then
Anfang = Zeile
Exit For
End If
Next Zeile
For Zeile = 2 To 366
If Cells(Zeile, 1).Value = Datum2 Then
Ende = Zeile
Exit For
End If
Next Zeile
If Anfang <> Ende Then
For Zeile = Anfang To Ende
If Cells(Zeile, 2) = "" Then str = str & Cells(Zeile, 1).Value & Chr(13) 'Address & Chr(13)
Next
If str <> "" Then
frmMaske.Label1.Caption = Left(str, Len(str) - 1) & Chr(13)
Else
frmMaske.Label1.Caption = ""
End If
With frmMaske
If .Label1 = "" Then
.cmd1.Locked = True
.cmd1.BackColor = vbRed
Else
.cmd1.Locked = False
.cmd1.BackColor = vbYellow
End If
End With
End If
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro mehrfach durchlaufen lassen
14.11.2004 18:21:31
123-Dex
Du brauchst das Ganze doch nur für die einzelnen Zimmer in einer weiteren Schleife verschachteln. z.B
for zi = 0 to 14
zi = zi +1
(dein Code)
ActiveCell = Zimmer(zi)
Next zi
Allerdings mußt deine Zähler noch initialisieren ( auf Null setzen).
AW: Makro mehrfach durchlaufen lassen
14.11.2004 18:36:37
Fritz
Danke Dir,
dann werde ich mal sehen, ob ich das hinkriege.
Ich lassse die Frage noch offen, weil - manchmal stelle ich mich ausgesprochen dämlich an :-(
Grüße, Fritz
Teilerfolg gehabt, aber noch eine Frage...
14.11.2004 20:12:33
Fritz
Hallo noch einmal.
Ich habe es hingekriegt, dass nun alle Spalten durchlaufen werden und die Werte in das Label1 geschrieben werden (untereinander von allen Spalten).
Um die Labels jetzt einzeln anzusprechen (von Label1 bis Label14) habe ich mir die Variablen intLabel und objLabel gebildet.
Dann wollte ich Set objLabel = "und hier verließen Sie mich"
Meine Frage ist , wie ich aus Label1.Caption Label2.Caption kriege.
Wäre nett, wenn ich hier auch noch einmal Hilfe bekäme.
Grüße, Fritz
If str "" Then
frmMaske.Label1.Caption = Left(str, Len(str) - 1) & Chr(13)
Else
frmMaske.Label1.Caption = ""
End If
With frmMaske
If .Label1 = "" Then
.cmd1.Locked = True
.cmd1.BackColor = vbRed
Else
.cmd1.Locked = False
.cmd1.BackColor = vbYellow
End If
End With
End If
Anzeige
AW: Teilerfolg gehabt, aber noch eine Frage...
14.11.2004 20:21:59
123-Dex
Label1 = Label(x) und x ist der Zähler, dafür mußt du ein Array deklarieren zb:

dim Label(15) as integer
und dann halt
for x = 0 to 14
x=x +1
cells(2,1+x). Activate
ActiveCell = Label(x)
next x
Vielen Dank :-)) o.T.
14.11.2004 20:39:02
Fritz

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige