VBA Code funktioniert nicht

Hallo,

ich habe ein Problem mit einer geschickten Excel-Tabelle, die einen hinterlegten VBA-Code beinhaltet. Dieser Code soll über 2 Schaltflächen ausgeführt werden, aber es funktioniert nicht. Bevor ich lange probiere, woran es nun liegt, dachte ich mir, ihr könnt es sicher schneller beantworten. :wink:
Ich füge die Mappe mal bei.

http://www.file-upload.net/download-3867470/Anzeige…

Sie besteht aus 3 Blättern. Das BLATT EINGABE hat den hinterlegten Code und die Schaltflächen. Das TabBlatt DATEN soll die eingebebenen Daten aus EINGABE dann übernehmen. Bei Blatt 3 handelt es sich wohl nur um ein Hilfsblatt (denke ich).

Könnt ihr mir helfen??

VG
VBA-Laie

verhunzte Namen
Moin,

der Button heißt btn_Speichern_ Bei Klick(), die Prozedur btn_Speichern_Klick() - das klappt so nicht.

Fürs Testen würde ich erstmal Protect / Unprotect stillegen.

Gruß Ralf

Moin Ralf,

der Button heißt btn_Speichern_ Bei Klick(),

nein.
Er heißt btn_Speichern und ist vom Typ eine Schaltfläche aus der Formular-Symbolliste.

Sub tt()
Dim S
For Each S In ActiveSheet.Shapes
 MsgBox S.Name
Next S
End Sub

die Prozedur btn_Speichern_Klick()

Nein. Sie heißt Private Sub btn_Speichern_Click()

Durch „Private“ kann man sie dem Button gar nicht als Makro zuweisen.

Die Gesamtmischung aus Buttons, Codes und Modulen der Codes insgesamt ist schon verhunzt :smile:

Gruß
Reinhard

ich habe ein Problem mit einer geschickten Excel-Tabelle, die
einen hinterlegten VBA-Code beinhaltet. Dieser Code soll über
2 Schaltflächen ausgeführt werden, aber es funktioniert nicht.
Bevor ich lange probiere, woran es nun liegt, dachte ich mir,
ihr könnt es sicher schneller beantworten. :wink:
http://www.file-upload.net/download-3867470/Anzeige…

Hallo Kerstin,

entferne die zwei Schaltflächen. Nimm dann zwei neue aus Symbolleiste Steuerelementtoolbox.
Dann benennst du CommandButton1 um in btn_Abbrechen.
CommandButton1 um in btn_Speichern

Berichte dann ob die Makros funktionieren. Wenn nicht, was geht was geht nicht, wenn der Debugger Codezeile markiert, welcher Fehler wird in welcher Zeile angezeigt usw.

Gruß
Reinhard

Moin, Reinhard,

die Suche nach den Shapes war mir zuviel Aufwand, deshalb habe ich einfach versucht, der Schaltfläche ein (in dem Fall: neues) Makro zuzuweisen, und dabei schlägt Excel mir den Namen

btn_Speichern_ Bei Klick()

vor. Wie kommt Excel auf diesen Namen?

(Dass der Button dann nicht Klick heißt, ist eh klar, aber nicht vor der zweiten Tasse Kaffee.)

Die Gesamtmischung aus Buttons, Codes und Modulen der Codes
insgesamt ist schon verhunzt :smile:

Fast beinahe schon abenteuerlich.

Gruß Ralf

Hallo Ralf,

die Suche nach den Shapes war mir zuviel Aufwand, deshalb habe
ich einfach versucht, der Schaltfläche ein (in dem Fall:
neues) Makro zuzuweisen, und dabei schlägt Excel mir den Namen

btn_Speichern_ Bei Klick()

vor. Wie kommt Excel auf diesen Namen?

den schlägt Excel gewissermaßen immer vor, also
Name & _BeiKlick
als namensvorschlag für das Makro.
Wäre sie neu angelegt gewesen hätte dir Excel
Schaltfläche1_BeiKlick
vorgeschlagen. Bei der nächsten Schaltfläche1_BeiKlick usw.

Jetzt hatte aber jemand dieser Schaltfläche den Namen btn_Speichern verpasst, ergo schlägt dir Excel
btn_Speichern_BeiKlick
vor.

aber nicht vor der zweiten Tasse Kaffee.)

Carpe Diem :smile:

Gruß
Reinhard

Die zweite 1 ist eine 2 :smile: o.w.T.

Hi Reinhard,

mir geht ein Licht auf: Mein Excel-VBA spricht deutsch - daher der Name Hase BeiKlick. Ist mir bislang nicht begegnet, mein Access kann nur Englisch :wink:

Gruß Ralf

entferne die zwei Schaltflächen. Nimm dann zwei neue aus
Symbolleiste Steuerelementtoolbox.
Dann benennst du CommandButton1 um in btn_Abbrechen.
CommandButton1 um in btn_Speichern

Berichte dann ob die Makros funktionieren. Wenn nicht, was
geht was geht nicht, wenn der Debugger Codezeile markiert,
welcher Fehler wird in welcher Zeile angezeigt usw.

Gruß
Reinhard

Hallo Reinhard,

du bist ja sooooooooo guuut! Ich wusste doch: „Da werden Sie geholfen!“ :smiley:

Ich musste es zwar ein paar Mal ausprobieren mit den neuen Schaltflächen aber zuguter letzt hat es dann doch geklappt. Vielen herzlichen Dank dafür. Im Leben hätte ich das ja nie rausbekommen … :wink:

Nun muss ich nur noch experimentieren, ob und wie es auch unter OO-Calc läuft. Hast du da auch eine gute Idee parat?? :wink:

Liebe Grüße
Kerstin

Hallo Kerstin,

Ich musste es zwar ein paar Mal ausprobieren mit den neuen
Schaltflächen aber zuguter letzt hat es dann doch geklappt.

da mußtest du durch für die Zukunft. Wichtig ist zu wissen daß es
Steuerelemnte aus den Symbolleisten „Formular“ und aus „Steuerelementtoolbox“ gibt und daß die unterschiedlich zu handeln sind.
In XL 2007 und höher findest du die hier:
http://www.uploadagent.de/show-180035-1320925752.html

Wenn du eine mappe bekommst und siehst da ein Steuerelement, z.B. eine Schaltfläche so gibt es einen einfachen Test herauszufinden
woher dieses Element stammt.
Klicke einfach mit rechter Maustaste darauf.
(Blattschutz muß aus sein)

Tut sich was so ist das Element aus „Formular“, wenn nicht ist ein ActiveX Steuerelement bzw. aus der Steuerelemnttoolbox.
Dann mußt du in den Entwurfsmodus schalten durch das entsprechende Symbol für Entwurfsmodus klicken.
Dann kannst du die Elemente umbenenennen u.v.m.

Vielen herzlichen Dank dafür. Im Leben hätte ich das ja nie
rausbekommen … :wink:

Aber natürlich :smile:

Nun muss ich nur noch experimentieren, ob und wie es auch
unter OO-Calc läuft. Hast du da auch eine gute Idee parat??
:wink:

Ja, lasse es :smile:
Mal angenommen, du wärest soweit fit daß du diesen von dir gezeigten Vba-Code weitestgehend selbst mal einfach so schreiben könntest.
Dann hast du die innere Logik der Codes verstanden und kannst dies auch in die Sprache Vba umsetzen.

OO versteht aber kein Vba. Es hat eigene Sprachen.
Darunter auch OO Basic bzw. das nennt man auch StarBasic.
Damit kannst du schon die gleiche Funktionalität eines Codes in OO erreichen, aber du mußt das in der Sprache von OO tun, also z.B. Starbasic.

D.h. du mußt „übersetzen“ in eine fremde Sprache.

Kleines Beispiel, in Excel ohne Vba beziehst du dich in einer normalen Excelformel auf
=Tabelle1 ! A1
Wenn du das jetzt in OO Calc machen willst mußt du sogar das übersetzen in
=Tabelle1 . A1

Zu Vba bzw. Starbasic
In Vba
Sheets(1) —> erstes tabellenblatt
In StarBasic
Sheets(0) —> erstes tabellenblatt

Das wären nur Peanuts aber es kommt noch schlimmer.
Du kennst Begriffe wie Worksheet, Activesheet usw.?
StarBasic aber nicht.
Also mußt du herausfinden wie denn Objekte die du aus Excel/Vba kennst in Starbasic angesprochen werden wollen.
Die Hilfe in OO hilft dir kaum bis Null.

Die Makroaufzeichnungsmöglichkeit in Calc nützt dir auch nix,
daß sieht dann z.B. so aus:

sub FormelnAusblenden
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService(„com.sun.star.frame.DispatchHelper“)
rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, „.uno:open_mouth:ptionsTreeDialog“, „“, 0, Array())
end sub

Zeichne mal Makros in OO auf und probiers aus :smile:)
Und dieses uno, sub beam zeugs ist was völlig anderes als das Vba-Modell deshalb beschäftige ich mich nicht damit.

Was ich inzwischen mit viel Mühe kann ist so ein Code in Calc/starbasic:

sub nn
Dim oDoc as Object
Dim oSheet as Object
dim oSheets as Object
oDoc = thisComponent
oView=thisComponent.CurrentController
oSheets = ThisComponent.Sheets
oSheet = oDoc.Sheets.getByName(„Tabelle3“)
oView.setActiveSheet(oSheet)
end sub

Dabei entspricht
thiscomponent in Vba Thisworkbook
oDoc.Sheets.getByName(„Tabelle3“) in Vba Thisworkbook.Worksheets(„Tabelle3“)

Nochmals, wenn du nicht in der lage bist die beiden Codes von dir zu über 70% selbst zu entwickeln und zu verstehen dann lasse es.
Wenn das sitzt, erst dann lohnt sich sich Literatur zu StarBasic zu besorgen oder/und in Calc-Foren, deren Archiven mitzulesen.

Direkte Anfragen in OO Calc Foren ob da mal wer dir die Codes umschreiben würde wird schief laufen *schätz*.
Leute die in Vba und Starbasic ähnlich gleichgut sind, sind sehr rar gesät *find*

So wie du hier meiner Erfahrung nach keinen Vbaler finden wirst der dir das mal so umschreibt nach StarBasic, außer du schickst mir einen gedeckten Scheck *gg*, so wirst du wahrscheinlich dort
http://de.openoffice.info/
keinen finden der das macht.
Andrerseits war Vba früher da, von daher wird es da wohl schon mehr geben die Vba können und jetzt auch noch Starbasic, quien sabe.

Gruß
Reinhard

Guten Abend, Reinhard,

danke für deine ausführliche Antwort. Das mit den Formular-/Steuerelementen habe ich soweit verstanden, da ich damit auch schon gelegentlich gearbeitet habe …

Nun muss ich nur noch experimentieren, ob und wie es auch
unter OO-Calc läuft. Hast du da auch eine gute Idee parat??
:wink:

Ja, lasse es :smile:

-D So eine ähnliche Antwort hatte ich im Gefühl …

Nun ja, ich tüftele ja gerne aber für dieses komplexe VBA fehlt mir oft einfach die Zeit … Also f i t bin ich da nicht. Aber „Aufgeben“ ist auch nicht meine Stärke! :wink:

… außer du schickst mir einen gedeckten Scheck *gg* …

wenn es soweit ist, melde ich mich.

Vorerst versuch’ ich noch mein Glück … ! :wink:
Wunder gibt es immer wieder … heute oder morgen können sie geschehen … *gg*

Nochmals herzlichen Dank für deine Mühe.
LG
Kerstin