Inputbox - Eingabe in eine bestimmte Zelle in Calc einfügen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Inputbox - Eingabe in eine bestimmte Zelle in Calc einfügen

von cldi » Do, 23.11.2006 15:06

*andenkopflang*

daran hab ich echt nicht mehr gedacht, sorry, hatte mich schon gewundert warum auch nichts ausgegeben wird mit print ...

danke und nochmals sorry

von Karolus » Do, 23.11.2006 14:57

Hallo

Code: Alles auswählen

oText = oMonat.string & oJahr.string & oMName.string & sVersion
oMonat, oJahr und oMName sind doch nur die Platzhalter der Zelladressen, und nicht ihr Inhalt.

Gruß Karo

von cldi » Do, 23.11.2006 14:02

Karolus hat geschrieben:

Code: Alles auswählen


Dim oZielzelle As Object

oDoc = thisComponent
oZielzelle = oDoc.sheets(0).getCellRangeByName("E6") 'Dein Bereich ist nicht größer!
oZielzelle.string = sName    'für Text
'oZielzelle.value =           'Verwendung bei Zahlenwerten
'oZielzelle.formula =        'um Formeln als solche zu definieren
@Karolus
Ich habe jetzt nach diesem Schema versucht bei einer anderen Baustelle von mir weiterzukommen:

Code: Alles auswählen


Dim oJahr as Object
Dim oMonat as Object
Dim sVersion as String
Dim oMName As Object
Dim oCalc As Object 
Dim sText As String


  oCalc = ThisComponent
   
   oMonat = oCalc.Sheets(1).getCellRangeByName("C1")  
   sVersion = "V1.0_OOo"	
   oJahr = oCalc.Sheets(1).getCellRangeByName("E1") 
   oMName = oCalc.Sheets(1).getCellRangeByName("F1") 

   oText = oMonat & oJahr & oMName & sVersion
Und genau an dieser Zeile hängt es:

oText = oMonat & oJahr & oMName & sVersion

Wenn ich Text als String deklariere, kommt die Fehlermeldung "Falscher Wert für Eigenschaft, obwohl es doch eigentlich ein String ergeben sollte.

Aber mit dem Objekt ist es leider auch nicht lösbar, da entweder die obige Fehlermeldung kommt oder irgendwas mit Objekt falsch belegt (bekomm die genaue Fehlermeldung leider nicht mehr hin ;) )

Welche Möglichkeiten habe ich den noch, die ausgelesenen Werte zu einem String hinzuzufügen?

Ein ganz dickes Danke schon im Voraus!!!
komm leider grad echt nicht weiter...

von kannenklaus » Mi, 22.11.2006 08:25

hallo karolus,
zb. mit 1 bis 2 'for'-Schleifen:
danke für den tipp; meine heimliche hoffnung zielte jedoch auf setContent ab.

beste grüße

klaus

von Karolus » Di, 21.11.2006 19:19

Hallo
Schade, dass es mit dem automatischen Ausführen leider nicht so einfach ist, könnte es auch an einer anderen Stelle gebrauchen
Du könntest doch evtl im Makro zuerst prüfen, ob bestimmte Zellen gefüllt sind, und abhängig davon beenden oder durchlaufen lassen, und das ganze dann mit dem Ereigniss 'Dokument öffnen' verbinden. Wäre dann 'quasi-automagisch'.

Gruß Karo

von cldi » Di, 21.11.2006 18:22


Nun weiss ich ja nicht, welche Gesamtapplikation du endgültig vorhast, aber wäre nicht möglicherweise deine ganze Aktion direkt mit Formularen etc zu lösen? Ehrlich, ich sehe keinen Sinn im Aufwand, eine Input-Box aufzurufen, um dann den dort eingetragenen Wert 1:1 in eine Zelle zu kopieren - da kannst du ihn doch gleich dort reinschreiben??

Vielleicht erläuterst du ein wenig deine Zielsetzung - möglicherweise gibt es andere Lösungsansätze?
Erstmal Danke für deine Antwort.

Die Zielsetzung:
Ich muss immernoch eine Stundenabrechnung von Excel in Open Office umsetzen.

Im Excel war das mit den Namen eingeben eine von mir erstelle frm.
Es wird der Name nur einmal eingegeben (in Excel wurde das Makro auch durch einen Button aufgerufen) und auf alle anderen Datenblätter übertragen, da die Mitarbeiter immer vergessen haben ihre Sheets zu Personalisieren.
Eigentlich ist es schon unnötig (im nachinhein gedacht) es auf einen Umweg zu machen, aber bisher hat es dadurch jetzt auch kein Mitarbeiter vergessen einmalig seinen Namen hinzuschreiben...

Ich habe es mir ja jetzt eigentlich schon mit der Inputbox einfacher gemacht, bin aber auch gerne offen für neue Ideen.

Die bisherige würde auch funktionieren, von daher könnte man sie auch belassen

Schade, dass es mit dem automatischen Ausführen leider nicht so einfach ist, könnte es auch an einer anderen Stelle gebrauchen

von Karolus » Di, 21.11.2006 18:18

Hallo @Klaus

zb. mit 1 bis 2 'for'-Schleifen:

Code: Alles auswählen

Sub nameneingeben

Dim sName As String
dim mySheet as Object
Dim oziel As Object

 sName=Inputbox("Bitte Vor- und Nachname eingeben", "Name eingeben")

oDoc = thisComponent
for s = 0 to 5  'Sp.A-F
for z = 0 to 6  'Zeile 1 bis 7
oziel = oDoc.Sheets(0).getCellByPosition(s,z)
oziel.string = sName
next z
next s

End Sub
Praktischerweise geht das auch gut über aufgezeichneten Code der Aktionen ->Bearbeiten ->Ausfüllen->...->...

Gruß Karo

von Toxitom » Di, 21.11.2006 17:50

Hey cldi,
a) automatisch ausgeführt werden d.h. sobald man auf E6 klickt soll das Makro ausgeführt werden bzw. die InputBox erscheinen
Dafür müsstest du einen "Listener" schreiben, der auf Mausklicks bzw. das Aktivieren einer Zelle reagiert. Sehr kompliziert, nicht empfehlenswert.
b) als Alternative über einen Button
wie ich eine Schaltfläche über einen Dialog erstell weiss ich, aber nicht wie ich dann nur die Schaltfläche in Calc einbette
Über ein Formular. Dazu aktivierst du zuerst die Symbolleisten "Formularentwurf" und "Formularsteuerelemente" (über Ansicht - Symbolleisten) und fügst dann (im Entwurfsmodus) einen Button ins Calc-Sheet ein - geht wie bei Dialogen auch ;-)
Über das Kontextmenü öffnest du die Eigenschaften - und dort weist du dem Ereignis "beim Auslösen" dein Makro zu.

Nun weiss ich ja nicht, welche Gesamtapplikation du endgültig vorhast, aber wäre nicht möglicherweise deine ganze Aktion direkt mit Formularen etc zu lösen? Ehrlich, ich sehe keinen Sinn im Aufwand, eine Input-Box aufzurufen, um dann den dort eingetragenen Wert 1:1 in eine Zelle zu kopieren - da kannst du ihn doch gleich dort reinschreiben??

Vielleicht erläuterst du ein wenig deine Zielsetzung - möglicherweise gibt es andere Lösungsansätze?

Gruss
Thomas

von kannenklaus » Di, 21.11.2006 17:49

hallo karolus,
Natürlich geht das,
kannst du mir sagen wie ich werte in einen zellbereich kpl. einsetzen kann?

freue mich auf deine antwort

grüße

klaus

von Karolus » Di, 21.11.2006 17:45

Hallo

]
b) als Alternative über einen Button
aus dem Tabellenblatt heraus :
->Ansicht ->Symbolleisten ->Formular-Steuerelmente
den Rest prinzpiell ganz ähnlich wie beim Dialogentwurf.

Gruß Karo

von cldi » Di, 21.11.2006 16:01

Hallo,

vielen Dank für den ausführlichen Code, es ist genau so wie ich es wollte und hat mir somit sehr geholfen.

Des mit einer Zelle passt schon, hatte nur ein Beispiel aus einem Buch genommen, da ich ja schon verschiedene Methoden ausprobiert hatte.

Ich bräuchte nocheinmal einen Lösungsvorschlag.

Wie könnte den das Makro entweder

a) automatisch ausgeführt werden d.h. sobald man auf E6 klickt soll das Makro ausgeführt werden bzw. die InputBox erscheinen

b) als Alternative über einen Button
wie ich eine Schaltfläche über einen Dialog erstell weiss ich, aber nicht wie ich dann nur die Schaltfläche in Calc einbette. (habe ich leider nicht rausfinden können, auch nicht über die Suchfunktion des Forums)

Über eine Symbolleiste will ich es nicht machen (aber des wüsste ich wenigstens wie es geht *lol*)

Wäre um eine nochmalige Hilfe sehr dankbar.

cldi

von Karolus » Di, 21.11.2006 13:16

Hallo Klaus
Natürlich geht das, nur seine usprüngliche Frage war :
ich will die Eingabe von einer Inputbox in eine bestimmte Zelle in Calc reinschreiben
Dahingehend hab ich den Code korrigiert.

Gruß Karo

von kannenklaus » Di, 21.11.2006 11:30

hallo karo,

wahrscheinlich will clidi, dass der wert in dem kompletten bereich und nicht wie bei dir in einer zelle eingetragen wird. geht das?

grüße

klaus

von Karolus » Di, 21.11.2006 02:55

Hallo

"Name" als Namensbezeichnung einer Sub ist falsch, weil 'Name' ein Basic-befehl ist.

Code: Alles auswählen

Sub NamenEinfuegen

Dim sName As String
Dim oZielzelle As Object

 sName=Inputbox("Bitte Vor- und Nachname eingeben", "Name eingeben")

 rem print sName

oDoc = thisComponent
oZielzelle = oDoc.sheets(0).getCellRangeByName("E6") 'Dein Bereich ist nicht größer!
oZielzelle.string = sName    'für Text
'oZielzelle.value =           'Verwendung bei Zahlenwerten
'oZielzelle.formula =        'um Formeln als solche zu definieren

End Sub
ich hab obereich durch oZielzelle ersetzt(nur für die Lesbarkeit)

Gruß Karo

Inputbox - Eingabe in eine bestimmte Zelle in Calc einfügen

von cldi » Mo, 20.11.2006 21:42

Hallo,

ich will die Eingabe von einer Inputbox in eine bestimmte Zelle in Calc reinschreiben.

Der Name bzw. der Inhalt meiner Variable sName soll in das erste Sheet in die Zelle E6 geschrieben werden, ich scheiter aber leider an der richtigen Methode. Leider ist setContent falsch.

Mein bisheriger Code:

Code: Alles auswählen

Sub Name

Dim sName As String
Dim oBereich As Object

 sName=Inputbox("Bitte Vor- und Nachname eingeben", "Name eingeben")

 rem print sName

oDoc = thisComponent
oBereich = oDoc.sheets(0).getCellRangeByName("E6:E7")
oBereich.setContent(sName)

End Sub
Welche Methode zum setzen des Inhalts könnte noch in Frage kommen?

Vielen Dank für die Hilfe

Nach oben