Discussion:
[Excel97] Variablen - Zuweisung im Makro
(zu alt für eine Antwort)
E.Wöger
2014-01-07 14:08:23 UTC
Permalink
Hallo Alle,
für Euch sicher ganz simpel, aber ich komm nicht drauf :

In einem Makro (Micr.Visual Basic) soll einer Variablen "Monat" der Inhalt einer Zelle A82 zugewiesen werden.
Dort steht aus der Formel : Jetzt() , formatiert mit "MMMM" der reale Namen des aktuellen Monats, z.B. Januar


Habe schon folgendes probiert :

Monat = Date ' liefert das aktuelle Datum
Monat = DatePart("m", Date) ' liefert die Zahl 1 bis 12, je nach Monat
Monat = "März" ' so ging's natürlich, aber es soll ja variabel sein entsprechend dem aktuellen Monatsnamen
Monat = Cells(A82) oder
Monat = Cells("A82") ' Fehlermeldung

Was muß ich hinter : Monat = ????? schreiben ?

Im Voraus Danke für guten Rat,

mfg Erich Wöger
Claus Busch
2014-01-07 14:31:06 UTC
Permalink
Hallo Erich,
Post by E.Wöger
In einem Makro (Micr.Visual Basic) soll einer Variablen "Monat" der Inhalt einer Zelle A82 zugewiesen werden.
Dort steht aus der Formel : Jetzt() , formatiert mit "MMMM" der reale Namen des aktuellen Monats, z.B. Januar
JETZT() ist ja das aktuelle Datum mit Zeit. Dann brauchst du eigentlich
nicht A82 zuweisen, sondern kannst direkt schreiben:
Monat = Month(Date)
Wenn du unbedingt A82 zuweisen willst, dann schreibe:
Monat = Month(Range("A82"))


Mit freundlichen Grüßen
Claus
--
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3
Claus Busch
2014-01-07 14:35:43 UTC
Permalink
Hallo Erich,
Post by Claus Busch
Monat = Month(Date)
Monat = Month(Range("A82"))
wenn du den Monatsnamen brauchst, dann mache es so:
Monat = Format(Date, "MMMM")
oder
Monat = Format(Range("A82"), "MMMM")
oder auch so:
Monat = MonthName(Month(Range("A82")))


Mit freundlichen Grüßen
Claus
--
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3
Claus Busch
2014-01-07 14:39:12 UTC
Permalink
Hallo nochmal,
Post by Claus Busch
Monat = MonthName(Month(Range("A82")))
es geht auch:
Monat = Range("A82").Text


Mit freundlichen Grüßen
Claus
--
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3
E.Wöger
2014-01-07 15:36:17 UTC
Permalink
Hallo Claus,
ich bin beeindruckt über die sofortige Hilfe.
Post by Claus Busch
Hallo nochmal,
Post by Claus Busch
Monat = MonthName(Month(Range("A82")))
Monat = Range("A82").Text
Mit freundlichen Grüßen
Claus
--
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3
Von allen Vorschlägen hat bei meinem Makro nur diese Version sofort funktioniert :

Monat = Range("A82").Text

Herzlichen Dank und nachtäglich noch a g'sund's nei's Jahr
Erich Wöher
Claus Busch
2014-01-07 15:50:52 UTC
Permalink
Hallo Erich,
Post by Claus Busch
Monat = Range("A82").Text
alles was ich poste, ist auch getestet.
Du musst dann irgendeinen Fehler in der Syntax haben. Hast du sie
herauskopiert oder eingeschrieben?


Mit freundlichen Grüßen
Claus
--
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3
HR Ernst
2014-01-07 15:46:55 UTC
Permalink
Post by Claus Busch
Hallo nochmal,
Post by Claus Busch
Monat = MonthName(Month(Range("A82")))
Monat = Range("A82").Text
Mit freundlichen Grüßen
Claus
Ich verwende zum Anzeigen des Monat-Namens:
=Text(A82;"MMMM")
--
Gruß

H.-R. Ernst
E.Wöger
2014-01-07 20:33:21 UTC
Permalink
Hallo,
Hier meine Testergebnisse, ich wollte ja noch was dazu lernen.
Dazu wurden die Vorschläge jeweils kopiert und in meinem Makro eingefügt, alle anderen jeweils auskommentiert :
Deklariert wurde vorher, weil danach noch eine FOR-NEXT-Schleife folgt, die jetzt wie gewünscht funktioniert:

Sub shBerechnen()
Dim Monat As String, i As Integer, Text As String
Post by HR Ernst
Post by Claus Busch
Hallo nochmal,
Post by Claus Busch
Monat = MonthName(Month(Range("A82")))
liefert "Sub oder Function nicht definiert"
Post by HR Ernst
Post by Claus Busch
Post by Claus Busch
Monat = Month(Range("A82"))
liefert "Typen unverträglich"
Post by HR Ernst
Post by Claus Busch
Monat = Range("A82").Text Das hat sofort funktioniert
Mit freundlichen Grüßen
Claus
=Text(A82;"MMMM")
Liefert "Erwartet Datenfeld"
Post by HR Ernst
--
Gruß
H.-R. Ernst
Ich vermute, daß die verschiedenen Vorschläge auch in verschiedenen VB-Versionen wirksam sind.
Meine Version ist Bestandteil von Excel97 und ich zeichne im Wesentlichen nur mit dem Recorder auf, weil ich eben leider das direkte Programmieren damit nicht gelernt habe. Dann versuche ich es mit Beispielen aus anderen Makros zu ergänzen.
Hier war's nur mir Euerer Hilfe möglich.
Dafür vielen Dank
Erich Wöger
Claus Busch
2014-01-07 20:46:07 UTC
Permalink
Hallo Erich,
Post by E.Wöger
Post by HR Ernst
Post by Claus Busch
Monat = MonthName(Month(Range("A82")))
liefert "Sub oder Function nicht definiert"
es kann sein, dass Monthname noch nicht Bestandteil von xl97 ist.
Post by E.Wöger
Post by HR Ernst
Post by Claus Busch
Monat = Month(Range("A82"))
liefert "Typen unverträglich"
Das gibt eine Zahl zurück und Monat müsste als Long deklariert sein
Post by E.Wöger
Post by HR Ernst
=Text(A82;"MMMM")
Liefert "Erwartet Datenfeld"
Das ist eine Tabellenblatt-Formel und hat mit VBA nichts zu tun.
Umgesetzt auf VBA wäre das:
Monat =Format(Range("A82"),"MMMM")


Mit freundlichen Grüßen
Claus
--
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3
HR Ernst
2014-01-08 09:06:29 UTC
Permalink
Post by Claus Busch
Hallo Erich,
Post by E.Wöger
Post by HR Ernst
Post by Claus Busch
Monat = MonthName(Month(Range("A82")))
liefert "Sub oder Function nicht definiert"
es kann sein, dass Monthname noch nicht Bestandteil von xl97 ist.
Post by E.Wöger
Post by HR Ernst
Post by Claus Busch
Monat = Month(Range("A82"))
liefert "Typen unverträglich"
Das gibt eine Zahl zurück und Monat müsste als Long deklariert sein
Post by E.Wöger
Post by HR Ernst
=Text(A82;"MMMM")
Liefert "Erwartet Datenfeld"
Das ist eine Tabellenblatt-Formel und hat mit VBA nichts zu tun.
Monat =Format(Range("A82"),"MMMM")
Mit freundlichen Grüßen
Claus
Entschuldigt bitte, dass ich mich mit meinem VBA-Unwissen eingemischt
habe. Bei Excel hatte ich noch nie etwas mit VBA zu tun. Ich wollte nur
mit meiner erfolgreich angewandten Formel helfen.
--
Gruß

H.-R. Ernst
E.Wöger
2014-01-08 15:21:06 UTC
Permalink
Hallo Claus,
Post by Claus Busch
Hallo Erich,
Post by E.Wöger
Post by HR Ernst
Post by Claus Busch
Monat = MonthName(Month(Range("A82")))
liefert "Sub oder Function nicht definiert"
es kann sein, dass Monthname noch nicht Bestandteil von xl97 ist.
Post by E.Wöger
Post by HR Ernst
Post by Claus Busch
Monat = Month(Range("A82"))
liefert "Typen unverträglich"
Das gibt eine Zahl zurück und Monat müsste als Long deklariert sein
Post by E.Wöger
Post by HR Ernst
=Text(A82;"MMMM")
Liefert "Erwartet Datenfeld"
Das ist eine Tabellenblatt-Formel und hat mit VBA nichts zu tun.
Monat =Format(Range("A82"),"MMMM")
ja genau, hab ich sofort eingesetzt und das hätte auch so funktioniert, wurde aber leider in dieser Weise nicht vorgeschlagen.
Als Laie vermute ich jetzt, daß es mit Deiner Formel > Monat = Range("A82").Text < trotzdem funktioniert, weil ich die Zelle A82 schon mit > "MMMM" formatiert hatte und dort schon der Realname z.B "Januar" erscheint und in einer FOR-NEXT-Schleife mit realen Monatsnamen verglichen und weiterbearbeitet wird.

Letztendlich funktioniert mein Makro jetzt genauso wie geplant und ich beende jetzt diesen Thread, hab aber schon wieder eine Frage und suche Rat in einem neuen Thread.

Nochmals Dank an Alle

mfg Erich Wöger

Loading...