Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1604to1608
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
Inhaltsverzeichnis

Kalender mit Zellen füllen

Kalender mit Zellen füllen
07.02.2018 21:12:26
Rene123
Hallo zusammen,
Bin gerade dabei einen Kalender in Excel zu machen. In jeder Spalte ein Tag bis Jahresende und in jeder Reihe ein Fahrzeug.
Ich frage mit einem DTPicker1 Startdatum, DTPicker2 Enddatum und Listbox das Fahrzeug ab.
Um im Kalender den Bereich zu markieren habe ich diesen Code eingefügt.
Private Sub TERMIN_EINTRAGEN()
Dim x1 As Integer ' X-Achse also START Datum um Positionsübergabe zu machen
Dim x2 As Integer ' X-Achse also END Datum um Positionsübergabe zu machen
Dim y As Integer  ' Y-Achse also Maschinentyp um Positionsübergabe zu machen
'Startdatum Spalte in Tabelle2 auslesen
Dim rng As Range
For Each rng In Range("A1:ND1")
If rng = DTPicker1.Value Then
x1 = rng.Column
End If
Next rng
'Enddatum Spalte in Tabelle2 auslesen
Dim rng_2 As Range
For Each rng_2 In Range("A1:ND1")
If rng_2 = DTPicker2.Value Then
x2 = rng_2.Column
End If
Next rng_2
'Maschine Spalte in Tabelle2 auslesen
Dim rng_3 As Range
For Each rng_3 In Range("A1:A300")
If rng_3 = ListBox1.Value Then
y = rng_3.Row
End If
Next rng_3
Tabelle2.Range(Cells(y, x1), Cells(y, x2)).Interior.ColorIndex = 4
End Sub

Wenn ich es durchdebugge stimmt der Code und er markiert richtig.
Wenn ich es normal ausführe wird x1 und x2 auf 0 gesetzt. Y hat immer den korrekten Wert.
Kann mir wer von euch weiterhelfen wie ich den Code verbessern könnte damit er immer richtig funktioniert?
Danke.
Gruß,
Rene123

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kalender mit Zellen füllen
08.02.2018 03:11:09
Rainer
Hallo Rene,
hier wäre vermutlich die Beispielmappe hilfreich, um zu sehen wie der DTPicker eingebaut ist.
Vom Code her sind x1 und x2 leer wenn DTPicker1.Value einen falschen Wert hat ODER garkeinen, weil es vielleicht nicht oder falsch übertragen wurde.
Ich würde ähnliches Vermuten, wenn die Variablen nicht zueinander passen (Range vs. Value), aber da kenne ich mich selber nicht so gut aus und mache meist Fehler. Außerdem würde ich vermuten, dass dann die "IF" Abfrage schon mit Fehler stoppen sollte, anstatt weiterzuspringen.
Ich markiere den Beitrag als offen.
Gruß,
Rainer
Anzeige
AW: Kalender mit Zellen füllen
08.02.2018 07:37:11
Florian
Hallo,
probier mal die Spaltennummer bzw die Zeilennummer mit
Dim Spalte1 As Integer
Dim Spalte2 As Integer
Spalte = rng.Cells(rng.Cells.Count).Column
Spalte2 = rng_2.Cells(rng_2.Cells.Count).Column
herauszufinden.
mfg Flo
AW: Kalender mit Zellen füllen
08.02.2018 09:24:30
Rene123
Hallo,
Danke für deine schnelle Antwort Flo! Hab nun herumprobiert und herausgefunden das anscheinend der Verweis auf das richtige Datenblatt den Fehler verursacht hat. Durch Tabelle2.Range wurde das Problem gelöst. Anbei nochmal der Korrigierte Code.
Seit dieser Änderung sehe ich durchs debuggen nun, das er die richtigen Werte bei X1, X2 einträgt, jedoch bekomm ich beim ausführen den Fehler"Laufzeitfehler 1004- Die Methode 'Range' für das Objekt _Worksheet ist fehlgeschlagen."
Tabelle2.Range(Cells(y, x1), Cells(y, x2)).Interior.ColorIndex = 4
Es liegt an dieser Zeile im Code. Hab auch schon ohne Verweis auf Tabelle2. probiert jedoch markiert er dann in Tabelle1. Habs ebenso mit Sheets(). oder Worksheets(). probiert gleicher Fehler.
Kann mir wer bei diesem Problem weiterhelfen?
Private Sub TERMIN_EINTRAGEN()
Dim x1 As Integer ' X-Achse also START Datum um Positionsübergabe zu machen
Dim x2 As Integer ' X-Achse also END Datum um Positionsübergabe zu machen
Dim y As Integer  ' Y-Achse also Maschinentyp um Positionsübergabe zu machen
'Startdatum Spalte in Tabelle2 auslesen
Dim rng As Range
For Each rng In Tabelle2.Range("A1:ND1")
If rng = DTPicker1.Value Then
x1 = rng.Column
End If
Next rng
'Enddatum Spalte in Tabelle2 auslesen
Dim rng_2 As Range
For Each rng_2 In Tabelle2.Range("A1:ND1")
If rng_2 = DTPicker2.Value Then
x2 = rng_2.Cells(rng_2.Cells.Count).Column
End If
Next rng_2
'Maschine Spalte in Tabelle2 auslesen
Dim rng_3 As Range
For Each rng_3 In Tabelle2.Range("A1:A300")
If rng_3 = ListBox1.Value Then
y = rng_3.Row
End If
Next rng_3
Tabelle2.Range(Cells(y, x1), Cells(y, x2)).Interior.ColorIndex = 4
End Sub
DANKE!
Gruß,
Rene123
Anzeige
AW: Kalender mit Zellen füllen
08.02.2018 15:52:28
Rainer
Hallo Rene,
du musst auch den "Cells" das Blatt angeben.
Probiere mal so:
 Tabelle2.Range(Tabelle2.Cells(y, x1), Tabelle2.Cells(y, x2)).Interior.ColorIndex = 4
Außerdem sehe ich in deinem Code keine Zuweisung für den Namen "Tabelle2"?
Sowas etwa:
Dim Tabelle2 as Worksheet
Set Tabelle2 = ThisWorkbook.Sheets("Tabelle2")
Gruß,
Rainer

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige