Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
712to716
712to716
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA Datum 2-fach in 12 Monatsregistern

VBA Datum 2-fach in 12 Monatsregistern
03.01.2006 11:56:44
Horst
Hallo nette Leute im Forum,
benötige Hilfe. Wie ist in einer Mappe mit 12 Monatsregistern in jedem Register jeweils in den Zellen (O2:BX2) das Datum TT.MM. (2fach nebeneinander mit 1. klein "x" und 2. mit groß "A") per VBA realisierbar? in den Zellen BY2:BZ2 analog dazu MM.JJJJ. Wer hat so etwas oder könnte mir ein solches script geben?
Es soll also per VBA, je nach Monat (also die unterschiedlichen Tagesanzahl 1 bis 28...31) passend zum Monat ausgefüllt werden. BY2:BZ2 sind immer an lgeicher Stelle. Die Register sind 01 ... 12.Eine Beispieldatei mit 1 Register ist anbei. Wäre prima, wenn mir jemand helfen könnte, Danke!
Gruß Horst
https://www.herber.de/bbs/user/29660.xls

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Datum 2-fach in 12 Monatsregistern
04.01.2006 11:10:45
Klaus-Dieter
Hallo Horst,
anbei ein Lösungsansatz:
Option Explicit

Sub ausfüllen()
Dim iSpalte As Integer
Dim vMonlg As Variant
Dim ml As Integer
Dim iTg As Integer
vMonlg = Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
ml = 0
For iSpalte = 1 To vMonlg(ml) * 2 Step 2
iTg = iTg + 1
If iTg < 10 Then iTg = "0" & iTg
Cells(2, 1 + iSpalte + 13) = iTg & "." & "01." & "x"
Cells(2, 2 + iSpalte + 13) = iTg & "." & "01." & "A"
Next iSpalte
End Sub

Es fehlt noch eine Schleife, die die einzelnen Monate abarbeitet. Ebenso die Einträge in den Spalten BY und BZ. Da kümmere ich mich heute Abend drum.
Viele Grüße Klaus-Dieter

Online-Excel
Anzeige
AW: VBA Datum 2-fach in 12 Monatsregistern
04.01.2006 11:17:09
Klaus-Dieter
Hallo Horst,
eine kleine Änderung war noch erforderlich, damit bei den Tagen die führende Null angezeigt wird.
Option Explicit

Sub ausfüllen()
Dim iSpalte As Integer
Dim vMonlg As Variant
Dim ml As Integer
Dim vTg As Variant
vMonlg = Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
ml = 0
For iSpalte = 1 To vMonlg(ml) * 2 Step 2
vTg = vTg + 1
If vTg < 10 Then vTg = "0" & vTg
Cells(2, 1 + iSpalte + 13) = vTg & "." & "01." & "x"
Cells(2, 2 + iSpalte + 13) = vTg & "." & "01." & "A"
Next iSpalte
End Sub

Viele Grüße Klaus-Dieter

Online-Excel
Anzeige
AW: VBA Datum 2-fach in 12 Monatsregistern
04.01.2006 11:42:33
Horst
Hallo Klaus-Dieter,
danke!! Das klappt ja schon teuflisch gut! Prima, freue mich schon auf weitere Post von dir!
Gruß Horst
AW: VBA Datum 2-fach in 12 Monatsregistern
05.01.2006 00:51:19
Klaus-Dieter
Hallo Horst,
wie versprochen, das erweiterte Makro. Ich bin davon ausgegangen, dass es die Tabellenblätter 01 bis 12 bereits gibt.
Option Explicit

Sub ausfüllen()
Dim iSpalte As Integer
Dim vMonlg As Variant
Dim ml As Integer
Dim vTg As Variant
Dim Blatt As Object
Dim sBlatt As String
vMonlg = Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
For Each Blatt In ActiveWorkbook.Sheets
sBlatt = Blatt.Name
vTg = 0
ml = Blatt.Name
For iSpalte = 1 To vMonlg(ml - 1) * 2 Step 2
vTg = vTg + 1
If vTg < 10 Then vTg = "0" & vTg
Worksheets(sBlatt).Cells(2, 1 + iSpalte + 13) = vTg & "." & Blatt.Name & ".x"
Worksheets(sBlatt).Cells(2, 2 + iSpalte + 13) = vTg & "." & Blatt.Name & ".A"
Next iSpalte
Worksheets(sBlatt).Cells(2, iSpalte + 14) = Blatt.Name & "." & Format(Now, "YYYY") & ".x"
Worksheets(sBlatt).Cells(2, iSpalte + 15) = Blatt.Name & "." & Format(Now, "YYYY") & ".A"
Next Blatt
End Sub

Viele Grüße Klaus-Dieter

Online-Excel
Anzeige
AW: VBA Datum 2-fach in 12 Monatsregistern
05.01.2006 10:24:26
Horst
Hallo Klaus-Dieter,
Danke!! Eine wunderbare Vorlage. Das läuft wie 'geschmiert'. Habe lediglich die letzten beiden Zeilen mit fixen Spalten versehen, damit die Jahreszahlen in allen Registern an gleicher Position sind. Frage: Obwohl die letzten beiden Zeilen des scripts nicht in der Schleife sind, werden diese in jedes Register geschrieben. Kannst Du mir bitte noch sagen, woran das liegt? Sicher ist es For each ... next Blatt.Möchte gerne dazulernen. Danke für die Bemühungen - finde ich von dir ganz prima!
Gruß Horst
geänderte Zeilen:
Worksheets(sBlatt).Cells(2, 77) = Blatt.Name & "." & Format(Now, "YYYY") & ".x"
Worksheets(sBlatt).Cells(2, 78) = Blatt.Name & "." & Format(Now, "YYYY") & ".A"
Anzeige
AW: VBA Datum 2-fach in 12 Monatsregistern
05.01.2006 10:36:06
Klaus-Dieter
Hallo Horst,
mit deiner Vermutung liegst du ganz richtig. For Each Next ist auch eine Schleife, da werden diese Zeilen abgearbeitet. Die For To Next Schleife ist die innere Schleife, da werden die Spalten abgearbeitet. Die For Each Next Schleife arbeitet als äußere Schleife die Tabellenblätter ab.
Viele Grüße Klaus-Dieter

Online-Excel
AW: VBA Datum 2-fach in 12 Monatsregistern
05.01.2006 10:42:44
Horst
Danke!
Gruß Horst
AW: VBA Datum 2-fach in 12 Monatsregistern
05.01.2006 12:05:44
Horst
Hallo Klaus-Dieter,
habe doch noch eine abschließende Frage bitte:
habe versucht, direkt in der inneren Schleife "Rahmenzeichnungen" zu implizieren. Das funktioniert aber nicht. Geht das nur explizit, außerhalb von Schleifen? Könntest Du mir das bitte beantworten zu diesem Thema? Wäre prima!
Gruß Horst
...
For iSpalte = 1 To vMonlg(ml - 1) * 2 Step 2
vTg = vTg + 1
If vTg &lt 10 Then vTg = "0" & vTg
Worksheets(sBlatt).Cells(2, 1 + iSpalte + 13) = vTg & "." & Blatt.name & ".x"
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Worksheets(sBlatt).Cells(2, 2 + iSpalte + 13) = vTg & "." & Blatt.name & ".A"
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Next iSpalte
...
Anzeige
AW: VBA Datum 2-fach in 12 Monatsregistern
05.01.2006 13:04:34
Klaus-Dieter
Hallo Horst,
das geht schon über die Schleife, nur dein Ansatz ist verkehrt. Ich sehe mir das noch mal an und melde mich wieder.
Viele Grüße Klaus-Dieter

Online-Excel

336 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige