PDA

Vollständige Version anzeigen : Kalender simpel


strickerlion
10.03.2009, 16:20
Hallo, bin vba-laie und vielleicht kann ja einer helfen,

in spalte A habe ich:
01.01.2008
05.01.2008
03.01.2008

nun würde ich gern mittels einem Button, folgendes erhalten:
1. ermittle erste Zelle in Spalte A ohne Wert
2. Box öffnet sich, wo man den Monat eingeben muss und darauf basierend hängt der dann die Tage in diesem Format ran zelle für zelle

01.01.2008
02.01.2008
03.01.2008
...
31.01.2008

ist so etwas überhaupt möglich?

vielen dank im voraus!!

IngGi
11.03.2009, 09:00
Hallo strickerlion,

schau dir mal die hochgeladene Mappe an. Monat und Jahr werden über ein Userformular ausgewählt. Folgende Makros befinden sich im Modul des Userformulares:

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Private Sub</span> cmdOK_Click()
&nbsp;
<span class="TOKEN">Dim</span> rng <span class="TOKEN">As</span> Range
<span class="TOKEN">Dim</span> intZeile <span class="TOKEN">As</span> <span class="TOKEN">Integer</span>
&nbsp;
&nbsp;
Me.Hide
<span class="TOKEN">Set</span> rng = Worksheets(&quot;Tabelle1&quot;).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
rng = DateValue(&quot;01. &quot; &amp; lstMonat &amp; &quot; &quot; &amp; lstJahr)
&nbsp;
<span class="TOKEN">For</span> intZeile = 1 <span class="TOKEN">To</span> 30
rng.Offset(intZeile, 0).FormulaR1C1 = &quot;=r[-1]c+1&quot;
<span class="TOKEN">Next</span> <span class="REM">'intZeile</span>
&nbsp;
<span class="TOKEN">With</span> Range(rng.Offset(1, 0), rng.Offset(30, 0))
.Copy
.PasteSpecial xlPasteValues
<span class="TOKEN">End</span> <span class="TOKEN">With</span>
&nbsp;
<span class="TOKEN">For</span> intZeile = 30 <span class="TOKEN">To</span> 28 <span class="TOKEN">Step</span> -1
<span class="TOKEN">If</span> Month(rng) &lt;&gt; Month(rng.Offset(intZeile, 0)) <span class="TOKEN">Then</span>
rng.Offset(intZeile, 0).ClearContents
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">Next</span> <span class="REM">'intZeile</span>
&nbsp;
Unload Me
&nbsp;
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span><hr>&nbsp;
&nbsp;
<span class="TOKEN">Private Sub</span> UserForm_Initialize()
&nbsp;
lstMonat.List = Array(&quot;Januar&quot;, &quot;Februar&quot;, &quot;M&auml;rz&quot;, &quot;April&quot;, &quot;Mai&quot;, &quot;Juni&quot;, _
&quot;Juli&quot;, &quot;August&quot;, &quot;September&quot;, &quot;Oktober&quot;, &quot;November&quot;, &quot;Dezember&quot;)
lstJahr.List = Array(Year(Date) - 5, Year(Date) - 4, Year(Date) - 3, _
Year(Date) - 2, Year(Date) - 1, Year(Date), Year(Date) + 1, _
Year(Date) + 2, Year(Date) + 3, Year(Date) + 4, Year(Date) + 5)
&nbsp;
lstMonat.ListIndex = 0
lstJahr.ListIndex = 0
&nbsp;
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span>&nbsp;</pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)

Im Codemodul des Tabellenblattes befindet sich folgendes Startmakro, dass auf einen Commandbutton auf dem Tabellenblatt reagiert:

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Private Sub</span> CommandButton1_Click()
frmAuswahlMonat.Show
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span>&nbsp;</pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)

Gruß Ingolf