# Benötige einfaches Makro für EXCEL 2003



## Gunnii (12. Juli 2009)

Hallo ihr User,
ich probiere + suche schon lange erfolglos rum, aber vielleicht finde ich hier Hilfe.

Ich möchte einen Makro (für Excel - Office 2003) haben, das in die aktuelle Zelle das aktuelle Datum einträgt.
Klar, das geht mit  =HEUTE()

Es soll aber nachträglich davon ein Semikolon gesetzt werden, damit es reiner Text ist.
Beispiel:  '12.07.2009

Wenn ich das Datum kopiere und als Wert einfüge, dann editiere und links mein Semikolon ergänze, sieht alles ganz gut aus. Aber in meinem Makro-Code (den ich aufzeichne), steht dann 12.07.2009 drin.

Das klappt natürlich *morgen nicht mehr*, denn da haben wir den *13.* und es wird wieder der 12. eingetragen.

-----
Weiter möchte ich anderes Makro haben, das auf jeden Knopfdruck das Datum um einen Tag reduziert. - Vorrangig ist erstmal das oben beschriebene.

Hat jemand eine Idee?


----------



## Drogist (12. Juli 2009)

Moin Gunnii,

eigentlich brauchst du nicht wirklich VBA ...

```
=TEXT(HEUTE();"TT.MM.JJJJ")
```
fügt das aktuelle Datum automatisch als Text ein. 

Aber natürlich geht es auch per VBA: 

```
Function HeuteText()
   HeuteText = Format(Date, "dd.mm.yyyy")
End Function
```
Achte nur darauf, dass du die Function in ein Modul einfügst. In die entsprechende Zelle schreibst du dann nur 

```
=HeuteText()
```
und das heutige Datum wird als Text eingetragen.

[EDIT]
Und auch noch als einfaches Makro, wo dann das Datum mit führendem Auslassungszeichen (Semikolon => *;* => Strichpunkt) in die aktuelle/aktive Zelle geschrieben wird:

```
Sub DatumAlsText()
   ActiveCell.Formula = Format(Date, "'dd.mm.yyyy")
End Sub
```
[/EDIT]


----------



## Gunnii (12. Juli 2009)

jo - DANKE

das ist es doch schon.

-----
Und ist es möglich (sogar mit dem gleichen Makro) beim nächsten Start das Datum um 1 runter zu rechnen usw. Mit jedem Klick auf einen Button (den ich schon habe) ein Tag weniger.

Und wenn ich danach zu einer andere Zelle gehe, dann zuerst wieder das aktuelle Datum und dann immer einen weniger.

___
ab morgen bin ich für 1 Woche im Urlaub, dann kann ich nicht antworten.
Nicht das es unhöflich erscheint, wenn ich nicht reagiere...


----------



## Drogist (13. Juli 2009)

Gunnii hat gesagt.:


> jo - DANKE
> das ist es doch schon.


Gern geschehen! Aber was war/ist es denn? Das Makro, meine Funktion oder die Excel-Funktion?





> Und ist es möglich (sogar mit dem gleichen Makro) beim nächsten Start das Datum um 1 runter zu rechnen usw. Mit jedem Klick auf einen Button (den ich schon habe) ein Tag weniger.
> 
> Und wenn ich danach zu einer andere Zelle gehe, dann zuerst wieder das aktuelle Datum und dann immer einen weniger.


Das macht einfach mehr Sinn, das in ein getrenntes Makro zu packen und dieses dann einer Schaltfläche zuzuweisen:

```
Sub Minus1Tag()
   Dim Inhalt As Variant
   
   Inhalt = ActiveCell.Value
   If IsDate(Inhalt) Then
      Inhalt = CDate(Inhalt) - 1
      ActiveCell.Formula = Format(Inhalt, "'dd.mm.yyyy")
   Else
      MsgBox "Die Zelle enthält kein Datum!", vbCritical + vbOKOnly, "Fehler!"
   End If
End Sub
```



> ab morgen bin ich für 1 Woche im Urlaub, dann kann ich nicht antworten.
> Nicht das es unhöflich erscheint, wenn ich nicht reagiere...


Danke für den Hinweis! Leider sind in diesem Board mehrere "Kandidaten", die ein Feedback oder gar ein "Danke" für überflüssig halten ...  

Na, dann man einen schönen Urlaub!


----------



## Gunnii (13. Juli 2009)

sehr schön - DANKE
ich bekomme es nur noch nicht genau an die Stelle, wo es erwartet wird.

Immer steht es in einem anderen Modul - ich bin da auch nicht so vertraut mit den Modulen...

Nach dem Urlaub klappt es hoffentlich besser.

----
Dann versuche ich noch was zu finden, damit ich gezielt in die erste Spalte springe.
Mit der Pos1 Taste geht es, aber ich habe die ersten 2 Spalten fixiert.
So bleibt die aktive Zelle immer in der Spalte C stehen.
Bin mir sicher dass es da auch wieder einen ganz einfachen Befehl gibt in dem riesigen "Angebot"

Bis bald
Gunnii


----------



## Drogist (13. Juli 2009)

Schreibe nach dem Urlaub bitte noch einmal genauer, wo das Problem liegt ...

Und das mit Spalte A verstehe ich auch nicht so ganz Du willst nach A_x_ oder A1?


----------



## Gunnii (20. Juli 2009)

Hi Drogist,
egal welche Zelle gewählt ist, in dieser Zeile soll *ganz nach links* gesprungen werden. Also in die Spalte A.


Gruß
Gunnii


----------



## Drogist (20. Juli 2009)

Hi Gunnii,

[Strg]+[Cursor-Links]
dann bist du in der gleichen Zeile Spalte 1.


----------



## Gunnii (20. Juli 2009)

ich hab's mir doch gedacht, dass es ganz easy ist...
(und so logisch...)

DANKE

---
Hier wird man ja gut geholfen!

Ich habe noch soviel auf dem Zettel.
Brauch noch ein Makro für OUTLOOK 2003.
Leider kann man da nicht "Aufzeichnen".
Aber das hat ja hier nichts bei EXCEL zu suchen - oder kennst du dich da auch aus?


----------



## Drogist (20. Juli 2009)

Gunnii hat gesagt.:


> [..] DANKE
> ---
> Hier wird man ja gut geholfen!
> [..]
> Brauch noch ein Makro für OUTLOOK 2003.


So ganz richtig fit bin ich nicht in OL, habe 3-4 Mal etwas für Kunden erstellt, aber das ist schon eine ganze Weile her.

Und natürlich: Schön, dass ich dir helfen konnte!


----------



## Gunnii (21. Juli 2009)

Jetzt habe ich noch einen:

Ich möchte ein Makro starten und danach die *aktuelle Zeilennummer minus 1* in der Zwischenablage haben.

Beispiel:
meine Zellenauswahl ist z.B. C1164

Wenn ich Strg V mache, soll 1163 eingefügt werden.

(zwschendurch würde ich zu WORD wechseln und brauche die Nummer um einen bestimmten Serienbrief anzuwählen.

Wie muss der Makrocode dafür aussehen?


----------



## Drogist (21. Juli 2009)

Na gut,

mit etwas mehr Aufwand ist auch das machbar. 

Also, im VBA-Editor gehst du auf Extras>Verweise und aktivierst dann die Microsoft Forms 2.0 (siehe Abb.)

Und dann hier der Code:

```
Option Explicit
Dim oZeNr As DataObject

Sub ZeNr_decrement()
   Dim ZeNr As Long
   
   Set oZeNr = New DataObject
   ZeNr = ActiveCell.Row - 1
   oZeNr.SetText ZeNr
   oZeNr.PutInClipboard
End Sub
```
feddisch (sprich: fertig)


----------



## Gunnii (21. Juli 2009)

es klappt - WOH - danke

Dieses Makro steht bei mir im Modul 14 - ich weiß ehrlich gesagt nicht warum.

Manchmal sehe ich alle meine Makros in einer Anzeige untereinander.

Was das mit den Modulen auf sich hat, verstehe ich leider noch nicht - bin aber noch etwas lernfähig.

Der Verweis mit den Forms war schon aktiviert. Aber danke für deine übersichtliche Erklärung.

----
Nun habe ich so schöne Makros...
Warum kann man den Code nicht einfach zu Outlook (Extra/Makro) kopieren und dann erwarten, dass dort ein Makro mit dem in EXCEL oder WORD erzeugten Code funktioniert, um eine eMail in bestimmter Form zu bearbeiten.

Das ist doch alles VBA... oder?


----------



## Drogist (22. Juli 2009)

Moin,

du bist ja genau solch eine Nachteule wie ich 



> Dieses Makro steht bei mir im Modul 14 - ich weiß ehrlich gesagt nicht warum.


OK, du erstellst immer wieder ein neues Modul und das wird automatisch mit der nächsten Nummer versehen.

Aber du kannst den Code auch in Modul1 kopieren und das andere Modul löschen. Dann wird das etwas übersichtlicher.

Und nun gehe ich in die Horizontale!


----------



## Gunnii (22. Juli 2009)

Drogist hat gesagt.:


> Aber du kannst den Code auch in Modul1 kopieren und das andere Modul löschen. Dann wird das etwas übersichtlicher.



und wie finde ich das Modul 1 ?

Im Augenblick gibt es nur Modul 14 - aber alle anderen Makros funktionieren.

Haben sich wohl versteckt die Burschen...

NACHT

----
Aber was ist, wenn in mehreren Modulen die gleichen Makros stehen?
Oder darf das nicht sein? Dann muss ich da mal Ordnung machen.


----------



## Gunnii (22. Juli 2009)

wenn ich alles in ein Modul zusammen kopieren kann und es dann noch funktioniert werde ich es hin bekommen.

Jetzt mal eine weitere Frage, bevor ich wieder stundenlang Blindleistung produziere.

*Ich möchte folgendes erreichen:*

Habe eine EXCEL Tabelle und in der Spalte B steht ein Name (Vorname Nachname) und in der Spalte I die dazugehörige eMail Adresse. (so bleibt das auch!)

In der Spalte H steht entweder: *Du *oder *Sie*


Nun möchte ich einen Makro auslösen das:

- sich aus der Spalte B den Vor- oder Nachnamen holt (ja nachdem ob Du oder Sie)

- die Zelle I gelb macht
- ein "mailto" auslöst
- die Anrede einfügt
 Hallo *Vorname,* oder Hallo Herr *Nachname,*

- einen bestimmten weiteren Text (html-Format) "übergibt"
- einige Dateien an die Mail als Anhang anhängt

und die Mail *in meinen Ausgangskorb* schickt, so dass ich noch mal drauf schauen kann.

Kann jemand sowas für ne Kiste Bier o.ä. hin bekommen?

Wahrscheinlich muss man noch Randbedingungen klären....  evtl. ne PN oder mail an mich.

Das scheint ja wieder in Outlook (2003 nuzte ich) abzudriften. Oder kann man das alles aus EXCEL heraus machen?

Gruß
Gunnii

Mal schauen, wer eine Idee oder andere Vorschläge hat.


----------

