Menüband Icon aufs Tabellenblatt
#11
Hi Sabina,

es wird noch ein wenig verrückter. Ich habe mal mit zwei verschiedenen Buttons gespielt.

Doch zuerst einmal die Maske manuell:
   

Hier ist alles in Ordnung - Buchungen wie gewohnt

Dann mit einem Button aus den Formularsteuerelementen:
   

Hier die Fehlermeldung 400

Ich hab's dann mit einem Button aus den ActiveX-Steuerelementen probiert:
   

Jetzt meckert XL über einen Laufzeitfehler

Den Code habe ich hinter das Tabellenblatt eingetragen. Versuche mit Code in einem Modul und Button aus Formularsteuerelementen brachten den gleichen Laufzeitfehler.

Und nu guck ich noch dümmer aus der Wäsche :05:
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antworten Top
#12
Hallo!

Ich würde das mit Application.CommandBars.ExecuteMso "idMso" versuchen.

Gruß, René
Antworten Top
#13
Kleines Beispiel:

Private Sub CommandButton1_Click()
 Application.CommandBars.ExecuteMso "FileSaveAs"
End Sub


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:René Holtz

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


Damit auch das passende Icon zugewiesen wird:
Private Sub Workbook_Open()
  Sheets("Tabelle1").CommandButton1.Picture = Application.CommandBars.GetImageMso("FileSaveAs", 32, 32)
End Sub


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:René Holtz

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0

Antworten Top
#14
Hallo Günter,

das hat mir jetzt keine Ruhe gelassen ...
Stelle mal den Cursor irgendwo in deine Tabelle und probier mal das ...


PHP-Code:
Sub x()
Application.CommandBars.ExecuteMso ("DataFormExcel")
End Sub 

Die Liste der idMSO für Excel ab 2010, findet man hier https://msdn.microsoft.com/en-us/library...e.12).aspx
Antworten Top
#15
Hallo Sabina, hallo René,

nachdem ich diesen Thread komplett aus den Augen verloren hatte   Blush (danke Sabina für die nette Erinnerung), habe heute zum einen die von euch gemachten Vorschläge ausprobiert: sie arbeiten einwandfrei. Aber auch mir ließ es keine Ruhe, warum mein aufgezeichneter Code, der identisch mit Sabinas zuerst gepostetem ist, diese Fehlermeldungen produziert hat.

Hier mein Ergebnis: die Datei, die ich heruntergeladen hatte, muss wohl daran schuld gewesen sein. Auch beim erneuten Nachstellen der Situation mit der geposteten Datei kamen die Meldungen. Danach habe ich das kleine Daten-Beispiel in eine neue Mappe kopiert und die Makros der Reihe nach getestet: alles lief fehlerfrei.

Danke für eure Tipps. Zudem werde ich wohl zukünftig in derartigen Situationen zuerst mit neuer Datei testen.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antworten Top
#16
Ich kann die Datenmaske auch bei leerem Blatt starten  :05: 


Am sichersten ist es, wenn man einen Bereich im aktiven Blatt hat, 
der Datenbank heißt. Dann funktioniert das ohne Murren. 

Falls man das nicht hat, versucht die Datenmaske "intelligent" zu sein 
und das geht schon mal schief. Da ist es am besten, der Cursor befindet
sich im Bereich der Daten. Aber das ist auch keine Garantie für den
Erfolg.
Antworten Top
#17
Hallöchen,

ich habe mir das auch etwas genauer angeschaut.

Excel hat in der geposteten Datei ein Problemmit dem Listobject, wenn man per VBA die Datenmaske aufrufen will.
Wenn man vor dem Aufruf eine Zelle im Object markiert, kommt trotzdem ein Fehler.
Wenn man ein neues Blatt anlegt und dort ohne Listobject mt einer Maske Daten eingeben will, kommt auch ein Fehler.
Manuell kann man die Datenmaske aufrufen.

Löscht man das Blatt mit dem Listobject, funktioniert der VBA - Code.

Was ist nun das besondere an dem Listobject? Es fängt nicht in A1 an. Hat man die Tabelle in A1 beginnend, funktioniert der Code.

Noch ein anderer Versuch:

Ich lege zwei Listobjects auf dem Tabellenblatt an, das erste ab A1, das zweite irgendwo. Den Cursor stelle ich in das zweite.
Der Aufruf der Maske funktioniert. Allerdings wird mir, obwohl ich im zweiten Object bin, die Maske auf das erste gerichtet.
Manuell funktioniert es korrekt.

Ich markiere daraufhin das zweite object und gebe den Namen Datenmaske ein.
Es kommt wieder ein Fehler 1004.
Manuell funktioniert es korrekt.

Ich Lösche den Namen Datenmaske und benenne das zweite Object in Datenmaske um.
Der Aufruf der Maske funktioniert. Allerdings wird mir, obwohl ich im zweiten Object bin, die Maske auf das erste gerichtet.
Manuell funktioniert es korrekt.

Resümee:
Entweder man hat das Listobject ab A1 und kann VBA verwenden oder man startet die Maske manuell …
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#18
Hallo André,

hast Du das wirklich mit Datenmaske benannt oder mit Datenbank?

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • schauan
Antworten Top
#19
Das Listobject einfach einen zweiten Namen geben, dann geht das.


Angehängte Dateien
.xlsm   0055719E2.xlsm (Größe: 99,35 KB / Downloads: 2)
[-] Folgende(r) 1 Nutzer sagt Danke an Storax für diesen Beitrag:
  • schauan
Antworten Top
#20
Hallo Uwe,

ja, Datenmaske.

Markiere ich das zweite Listobjekt und benenne den Bereich in Datenbank um (nicht das Object), funktioniert die Datenmaske und ich komme auf dem aktiven Blatt immer auf den entsprechend benannten Bereich.

Benenne ich stattdessen das zweite Listobjekt in Datenbank um, bekomme ich einen Fehler 1004

Versuche ich dann, auf einem weiteren Tabellenblatt eine Datenmaske mit VBA zu verwenden, bekomme ich dort den Fehler 1004.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 3 Gast/Gäste