PDA

Vollständige Version anzeigen : VBA-Newbie


Seppi13
26.02.2008, 09:14
Hallo zusammen,

habe folgenden Code gefunden:

Option Explicit

Sub rundeGeb()
Dim intZeile As Integer
For intZeile = 2 To 20
If (Year(Now) - Year(Cells(intZeile, 1))) Mod 10 = 0 Then
Cells(intZeile, 2) = Year(Now) - Year(Cells(intZeile, 1))
End If
Next intZeile
End Sub

Es sind in einer Spalte abwärts Geburtsdaten eingeben. Dieser Code soll Runde Geburtstage anzeigen in der Spalte neben an.

Wie kann ich das Makro ausführen, bzw. wie kann ich der nebenstehenden Spalte diese VBA-Funktion zuweisen??

Danke schon mal.

MFG

chris-kaiser
26.02.2008, 09:50
hiho

darf es auch eine Formel sein ?

<P><blockquote><table border=3 cellpadding=1><tr><td>&nbsp;</td><td align=center bgcolor=#C0C0C0>A</td><td align=center bgcolor=#C0C0C0>B</td><td align=center bgcolor=#C0C0C0>C</td><td align=center bgcolor=#C0C0C0>D</td></tr><tr><td align=center bgcolor=#C0C0C0>1</td><td bgcolor=#FFFFFF>27.02.1946</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>Faktor</td></tr><tr><td align=center bgcolor=#C0C0C0>2</td><td bgcolor=#FFFFFF>03.10.1920</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>10</td></tr><tr><td align=center bgcolor=#C0C0C0>3</td><td bgcolor=#FFFFFF>23.02.1999</td><td bgcolor=#FFFFFF>wird&nbsp;10</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>&nbsp;</td></tr><tr><td align=center bgcolor=#C0C0C0>4</td><td bgcolor=#FFFFFF>15.12.1964</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>&nbsp;</td></tr><tr><td align=center bgcolor=#C0C0C0>5</td><td bgcolor=#FFFFFF>23.03.1917</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>&nbsp;</td></tr><tr><td align=center bgcolor=#C0C0C0>6</td><td bgcolor=#FFFFFF>08.03.1928</td><td bgcolor=#FFFFFF>wird&nbsp;80</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>&nbsp;</td></tr><tr><td align=center bgcolor=#C0C0C0>7</td><td bgcolor=#FFFFFF>04.10.1949</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>&nbsp;</td></tr><tr><td align=center bgcolor=#C0C0C0>8</td><td bgcolor=#FFFFFF>16.03.1924</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>&nbsp;</td></tr><tr><td align=center bgcolor=#C0C0C0>9</td><td bgcolor=#FFFFFF>05.07.1914</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>&nbsp;</td></tr><tr><td align=center bgcolor=#C0C0C0>10</td><td bgcolor=#FFFFFF>02.08.1928</td><td bgcolor=#FFFFFF>wird&nbsp;80</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>&nbsp;</td></tr><tr><td align=center bgcolor=#C0C0C0>11</td><td bgcolor=#FFFFFF>24.08.1948</td><td bgcolor=#FFFFFF>wird&nbsp;60</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>&nbsp;</td></tr></td></tr></table></blockquote></P><br><br>

<P><blockquote><table border=3 cellpadding=1><tr><td>&nbsp;</td><td align=center bgcolor=#C0C0C0>A</td><td align=center bgcolor=#C0C0C0>B</td><td align=center bgcolor=#C0C0C0>C</td><td align=center bgcolor=#C0C0C0>D</td></tr><tr><td align=center bgcolor=#C0C0C0>1</td><td bgcolor=#FFFFFF>27.02.1946</td><td bgcolor=#FFFFFF>=WENN((REST(DATEDIF(A1;HEUTE();"y")+1;D$2)=0);"wird&nbsp;"&nbsp;&&nbsp;DATEDIF(A1;HEUTE();"y")+1;"")</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>Faktor</td></tr><tr><td align=center bgcolor=#C0C0C0>2</td><td bgcolor=#FFFFFF>03.10.1920</td><td bgcolor=#FFFFFF>=WENN((REST(DATEDIF(A2;HEUTE();"y")+1;D$2)=0);"wird&nbsp;"&nbsp;&&nbsp;DATEDIF(A2;HEUTE();"y")+1;"")</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>10</td></tr><tr><td align=center bgcolor=#C0C0C0>3</td><td bgcolor=#FFFFFF>23.02.1999</td><td bgcolor=#FFFFFF>=WENN((REST(DATEDIF(A3;HEUTE();"y")+1;D$2)=0);"wird&nbsp;"&nbsp;&&nbsp;DATEDIF(A3;HEUTE();"y")+1;"")</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>&nbsp;</td></tr><tr><td align=center bgcolor=#C0C0C0>4</td><td bgcolor=#FFFFFF>15.12.1964</td><td bgcolor=#FFFFFF>=WENN((REST(DATEDIF(A4;HEUTE();"y")+1;D$2)=0);"wird&nbsp;"&nbsp;&&nbsp;DATEDIF(A4;HEUTE();"y")+1;"")</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>&nbsp;</td></tr><tr><td align=center bgcolor=#C0C0C0>5</td><td bgcolor=#FFFFFF>23.03.1917</td><td bgcolor=#FFFFFF>=WENN((REST(DATEDIF(A5;HEUTE();"y")+1;D$2)=0);"wird&nbsp;"&nbsp;&&nbsp;DATEDIF(A5;HEUTE();"y")+1;"")</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>&nbsp;</td></tr><tr><td align=center bgcolor=#C0C0C0>6</td><td bgcolor=#FFFFFF>08.03.1928</td><td bgcolor=#FFFFFF>=WENN((REST(DATEDIF(A6;HEUTE();"y")+1;D$2)=0);"wird&nbsp;"&nbsp;&&nbsp;DATEDIF(A6;HEUTE();"y")+1;"")</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>&nbsp;</td></tr><tr><td align=center bgcolor=#C0C0C0>7</td><td bgcolor=#FFFFFF>04.10.1949</td><td bgcolor=#FFFFFF>=WENN((REST(DATEDIF(A7;HEUTE();"y")+1;D$2)=0);"wird&nbsp;"&nbsp;&&nbsp;DATEDIF(A7;HEUTE();"y")+1;"")</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>&nbsp;</td></tr><tr><td align=center bgcolor=#C0C0C0>8</td><td bgcolor=#FFFFFF>16.03.1924</td><td bgcolor=#FFFFFF>=WENN((REST(DATEDIF(A8;HEUTE();"y")+1;D$2)=0);"wird&nbsp;"&nbsp;&&nbsp;DATEDIF(A8;HEUTE();"y")+1;"")</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>&nbsp;</td></tr><tr><td align=center bgcolor=#C0C0C0>9</td><td bgcolor=#FFFFFF>05.07.1914</td><td bgcolor=#FFFFFF>=WENN((REST(DATEDIF(A9;HEUTE();"y")+1;D$2)=0);"wird&nbsp;"&nbsp;&&nbsp;DATEDIF(A9;HEUTE();"y")+1;"")</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>&nbsp;</td></tr><tr><td align=center bgcolor=#C0C0C0>10</td><td bgcolor=#FFFFFF>02.08.1928</td><td bgcolor=#FFFFFF>=WENN((REST(DATEDIF(A10;HEUTE();"y")+1;D$2)=0);"wird&nbsp;"&nbsp;&&nbsp;DATEDIF(A10;HEUTE();"y")+1;"")</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>&nbsp;</td></tr><tr><td align=center bgcolor=#C0C0C0>11</td><td bgcolor=#FFFFFF>24.08.1948</td><td bgcolor=#FFFFFF>=WENN((REST(DATEDIF(A11;HEUTE();"y")+1;D$2)=0);"wird&nbsp;"&nbsp;&&nbsp;DATEDIF(A11;HEUTE();"y")+1;"")</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>&nbsp;</td></tr></td></tr></table></blockquote></P><br><br>

Seppi13
26.02.2008, 09:55
hi, danke für die schnell Antwort.

Ich möchte es jedoch in vba verwirklichen.

Den Code hab ich ja schon, weiß nur nicht wie ich das Makro ausführe für die Spalte C!??

MFG

rastrans
26.02.2008, 10:06
Hallo!

Das Cells(intZeile, 1) sagt dir welche Zelle bearbeitet wird. Hierbei wird erst die Zeile dann die Spalte angegeben. 1 ist die erste Spalte - also A. entsprechend ist die Spalte C die Nummer 3.

Aufrufen kannst du das dann über einen Button. Entwender in einer Symbolleiste oder direkt auf dem Arbeitsblatt.

Die Funktion von chris-kaiser finde ich persönlich aber sinnvoller!

Grüße
rastrans

chris-kaiser
26.02.2008, 10:42
hiho

ich habe den Code mal überarbeitet ;)

Sub rundeGeb()
Dim lngZeile As Long, Jahre As Integer
Dim gebSpalte As String, AusSpalte As String
Dim teiler As Integer
teiler = 5 'welcher Intervall
AusSpalte = "C"
gebSpalte = "A" 'Das A anpassen falls die Geb.daten nicht in A stehen
For lngZeile = 2 To Cells(Rows.Count, gebSpalte).End(xlUp).Row
Jahre = DateDiff("yyyy", Cells(lngZeile, gebSpalte), Date)
If Jahre Mod teiler = 0 Then
Cells(lngZeile, AusSpalte).Value = "runder Geb: " & Jahre
End If
Next
End Sub

und benutzfreundlicher gestaltet

aber würde denoch immer eine Formel vorziehen

mir ist aufgefallen das der Highlighter bei );"wird " & DATEDIF
vor und nach dem & ein Leerzeichen eingefügt hat dieses bitte bei der Formel entfernen