Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1592to1596
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Shapes auslesen
04.12.2017 07:48:57
Marco
Guten Morgen =)
ich habe in zwei Shapes Werte stehen und diese möchte ich mit VBA auslesen und übergeben, aber ich habe anscheinend noch nicht den richtigen Befehl gefunden.
     von = Sheets("Tabelle1").Shapes("Start_Datum").TextFrame.Characters.Text
bis = Sheets("Tabelle1").Shapes("End_Datum").TextFrame.Characters.Text
Kann mir da bitte jemand weiterhelfen?

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Shapes auslesen
04.12.2017 08:10:23
Luschi
Hallo Marco,
das klappt bei mir so:
von = Sheets("Tabelle1").OLEObjects("Start_Datum").Object.Value
Gruß von Luschi
aus klein-Paris
AW: Shapes auslesen
04.12.2017 08:19:22
Marco
Das funktioniert bei mir nicht Luschi. Also ich will der Variablen "von" den Wert aus dem Shape, also aus einem Rechteck übergeben
AW: Shapes auslesen
04.12.2017 08:24:48
Luschi
Hasllo Marco,
dieser Befehl: von = Sheets("Tabelle1").Shapes("Start_Datum").TextFrame.Characters.Text
ist eindeutig Word Vba und nicht Excel-Vba.
Bisher hast Du moch nicht erklärt um was für Art Shapes es sich bei Dir jhandelt.
Ich spreche von ActiveX-Textboxen auf den Tabellenblatt und da funnktionieren bei mir folgende 4 Möglichkeiten:
Dim von
von = Sheets("Tabelle1").OLEObjects("Start_Datum").Object.Value
von = Sheets("Tabelle1").Start_Datum.Value
von = Sheets("Tabelle1").Shapes("Start_Datum").DrawingObject.Object.Text
von = Sheets("Tabelle1").Shapes("Start_Datum").DrawingObject.Object.Value
Gruß von Luschi
aus klein-Paris
Anzeige
AW: @ Luschi
04.12.2017 08:32:06
hary
Moin Luschi
ist eindeutig Word Vba und nicht Excel-Vba.
Shapes("Start_Datum").TextFrame.Characters.Text
Nee, damit spricht man Formularsteuerelemente(nicht ActiveX) an und gibt den Text zurueck.
Eigentlich ist der Code richtig.
Marco, lad mal eine Bsp.-Mappe hoch.
gruss hary
AW: @ Luschi
04.12.2017 08:53:52
Luschi
Hallo hary,
in Excel 2013 & 2016 sind die Formularsteuerelemente TextBox, KombinationsListe und DropDown deaktiviert und können nicht mehr benutzt werden.
Gruß von Luschi
aus klein-Paris
AW: Aha, danke gruss owt
04.12.2017 08:56:56
hary
.
AW: Aha, danke gruss owt
04.12.2017 09:11:49
Marco
Also ich habe jetzt mal eine Datei angehängt mit den beiden Shapes. Ich möchte die Information aus diesen Shapes in die Variablen "von" und "bis" einlesen. Die vorher geposteten Befehle haben leider nicht funktioniert.
Anzeige
AW: Aha, danke gruss owt
04.12.2017 09:57:20
Nepumuk
Hallo Marco,
teste mal:
Public Sub Test()
MsgBox Tabelle1.Shapes("Start_Datum").OLEFormat.Object.Text
MsgBox Tabelle1.Shapes("End_Datum").OLEFormat.Object.Text
End Sub

Gruß
Nepumuk
AW: Aha, danke gruss owt
04.12.2017 10:12:39
Luschi
Hallo Marco,
Nepumuk's Vorschlag ist i.O. und es funktioniert auch so:

Dim x As Variant
x = CDate(Tabelle1.Shapes("Start_Datum").TextFrame.Characters.Text)
If VarType(x) = vbDate Then
Debug.Print "Startdatum: " & x
Else
MsgBox "Startdatum ist kein Datumswert!", 16
End If
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Aha, danke gruss owt
04.12.2017 12:24:09
Marco
Also die Antwort der MsgBox ist richtig aber ich wollte den Inhalt an die Variablen "von" und "bis" übergeben und das funktioniert leider nicht. Ich bekomme keine Fehlermeldung aber mein Code liefert auch kein Ergebnis. Wisst ihr warum
von = Tabelle1.Shapes("Start_Datum").OLEFormat.Object.Text
bis = Tabelle1.Shapes("End_Datum").OLEFormat.Object.Text
AW: Aha, danke gruss owt
04.12.2017 13:39:53
Luschi
Hallo Marco,
in Deiner bereitgestellten xlsx-Datei gibt es natürlich keine Makros, dafür ist eine xlsm-Datei erforderlich.
Die Frage dabei ist, wann soll die Ermittlung der beiden Werte erfolgen:
- Klick auf ein Button
- nach der Eingabe eines Wertes
- und vor alles wo erfolgt diese Eingabe (Textbox oder Zelle)
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Aha, danke gruss owt
04.12.2017 15:06:55
Marco
Ich lade mal die ganze Datei hoch ich kann es sonst nicht erklären. Es ist so ich klicke "Fehler anzeigen" an und dann werden alle Fehler in Abhängigkeit vom Datum angezeigt.
Aktuell wird das Datum in die gelben Kästchen eingegeben und von da abgerufen. Ich möchte aber die Shapes (schwarz eingerahmt // das obere ist Start das untere Ende) verwenden. Wenn man die anklickt kann man ein neues Datum eingeben. Der "Fehler Anzeigen" Button soll jetzt anstatt das Datum aus den gelben Kästchen das Datum im Schwarzen Rahmen hernehmen. Das macht es aber leider nicht.
Datei:
https://www.herber.de/bbs/user/118088.xlsm
Anzeige
AW: Aha, danke gruss owt
04.12.2017 18:30:51
Daniel
Hi
wenn du den Text aus den Textfeldern verwenden willst, musst du diesen explizit in ein Datum wandeln, da es sich um einen Text handelt:
von = cdate(Sheets("Dashboard").Shapes("Start_Datum").DrawingObject.Text)
bis = cdate(Sheets("Dashboard").Shapes("End_Datum").DrawingObject.Text)
Gruß Daniel
AW: Aha, danke gruss owt
04.12.2017 20:45:42
Marco
Super genau danach habe ich gesucht =) Danke Daniel und allen anderen
AW: Aha, danke gruss owt
05.12.2017 08:11:44
Luschi
Hallo Marco,
Du solltest natürlich auch prüfen, ob in den Textboxen auch ein Ausdruck steht,
der in ein Datum umgewandelt werden kann:

Dim v As Variant
von = Sheets("Dashboard").Shapes("Start_Datum").OLEFormat.Object.Text
If IsDate(v) Then
v = CDate(v)
Else
v = 0
MsgBox "ungültige Eingabe, kein Datumswert", vbSystemModal + 16
Exit Sub
End If
Gruß von Luschi
aus klein-Paris
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige