Seite 1 von 1
auf verschieden tabellenblaetter zugreifen
Verfasst: Sa, 16.02.2008 15:14
von keksi1970
hi, ich weiss ich nerve
aber warum funktioniert das nicht ?
Code: Alles auswählen
for zaehlen = 0 to 15
test1=Inputbox("Name", "0")
if test1 = "" then
exit sub
end if
oDoc = thisComponent
oZielzelle = oDoc.sheets(zaehlen).getCellRangeByName("a1")
oZielzelle.string = test1
next zaehlen
der effekt soll sein, dass in 15 existierenden tabellenblaettern der eingegebene name in zelle a1 erscheint
es funktioniert bei tabellenblatt 1 (zaehlen = 0 // 1. eingegebener name)
bei tabellenblatt 2 steht der wert von tabellenblatt 3 drin, also der 3. eingegeben name
den 2. wert unterschlägt das programm irgendwie
und was muss zusätzlich in den code, damit das makro automatisch das aktuelle tabellenblatt anzeigt ??(also bei eingabe zaehlen=0 das erste tabellenblatt, bei zaehlen =1 das 2. usw)
wer hilft *mal ganz lieb guckt
Re: auf verschieden tabellenblaetter zugreifen
Verfasst: Sa, 16.02.2008 15:58
von turtle47
Hallo Keksi,
keksi1970 hat geschrieben:
den 2. wert unterschlägt das programm irgendwie
Kann ich nicht bestätigen!
keksi1970 hat geschrieben:und was muss zusätzlich in den code, damit das makro automatisch das aktuelle tabellenblatt anzeigt ??(also bei eingabe zaehlen=0 das erste tabellenblatt, bei zaehlen =1 das 2. usw)
Code: Alles auswählen
Sub Eingabe
oDoc = thisComponent
for zaehlen = 0 to 15
myView = oDoc.CurrentController
mySheet = oDoc.Sheets(zaehlen)
myView.setActiveSheet(mySheet)
test1=Inputbox("Name", "Eingabe")
if test1 = "" then
exit sub
end if
oZielzelle = oDoc.sheets(zaehlen).getCellRangeByName("a1")
oZielzelle.string = test1
next zaehlen
End Sub
Hilft das weiter?
Jürgen
Re: auf verschieden tabellenblaetter zugreifen
Verfasst: Sa, 16.02.2008 16:21
von komma4
(a) zum Einen bearbeitest Du 16 Blätter ( 0 als Index, das erste...). Dann solltest Du auch so viele
"Tabelle" & X in Deiner Calc haben.
(b) der Index einer Tabelle muss nicht mit dem Namen übereinstimmen:
Code: Alles auswählen
Sub testCalcSheetIndex
sMakroName = "testCalcSheetIndex"
ThisComponent.Sheets().insertNewByName( sMakroName, 0 )
print _
"Name des Index=0 Blattes: " & _
ThisComponent.Sheets(0).Name
ThisComponent.Sheets().removeByName( sMakroName )
End Sub
So kannst Du an erster Stelle eine "
Tabelle999" erzeugen, wenn Du willst.
Setze zur Kontrolle den Zähler mit in die Zelle
automatisch das aktuelle tabellenblatt anzeigt ??
willst Du das Geflacker tatsächlich sehen?
Code: Alles auswählen
oBlatt = _
ThisComponent.Sheets().getByName(sMakroName)
ThisComponent.getCurrentController().setActiveSheet(oBlatt)
oBereich = _
oBlatt.getCellRangeByName("Z99")
ThisComponent.getCurrentController().select(oBereich)
Steht alles in
Andrews Makro-Dokument oder ist mit
XRay
herauszufinden.
Hilft Dir das weiter?
Re: auf verschieden tabellenblaetter zugreifen
Verfasst: Sa, 16.02.2008 16:42
von keksi1970
danke fuer die antworten, aber ganz so fit bin ich nicht.
ich habe dieses macro im forum gesucht und fuer meine probleme versucht anzupassen *zwinker
@ jürgen
Code: Alles auswählen
myView = oDoc.CurrentController
mySheet = oDoc.Sheets(zaehlen)
myView.setActiveSheet(mySheet)
schient der teil zu sein, der das tabellenblatt, in dem grade eingetragen wird, aktiv macht. (?)
@komma4
es ist eine nicht von mir erstellte datei, die ich nur zu bearbeiten habe und es mir daher etwas einfacher machen will. ich vermute, du willst damit sagen, dass jemand die tabelle2(oder index1) gelöscht hat, also der index von tabelle1 = 0,tabelle2 ist gleich 2, index 3 = 3 usw.
da ich noch nicht so tief in der materie drin bin, kann ich das ganze auch per namen machen ? die einzelnen tabellenblätter sind durchnummeriert, von T01 bis T015
und wieso geflacker ?
ich aendere doch jedes tabellenblatt einzeln, mit mehreren eingaben per inputbox, nur nach der letzten sollte er auf das naechste blatt umschalten, so dass ich sehe, was ich eingebe ^^
Re: auf verschieden tabellenblaetter zugreifen
Verfasst: Sa, 16.02.2008 16:57
von komma4
Der Zugriff auf Tabellenblätter ist auch über den Namen möglich
Code: Alles auswählen
for i = 1 to 15
sBlatt = "T0" & i ' das ist te-null ziffer
test1=Inputbox( "Eingabe für Blatt " & sBlatt , "Blatt: " & sBlatt )
oBlatt = ThisComponent.Sheets().getByName( sBlatt )
' [...weiteren Code]
next i
HTH
Re: auf verschieden tabellenblaetter zugreifen
Verfasst: Sa, 16.02.2008 17:01
von turtle47
Hi Keksi,
keksi1970 hat geschrieben:schient der teil zu sein, der das tabellenblatt, in dem grade eingetragen wird, aktiv macht. (?)
Jou, so ist es.
Probiere es doch einfach mal aus.
Versuch macht kluch.
komma4 hat geschrieben:
willst Du das Geflacker tatsächlich sehen?
Das habe ich auch nicht verstanden.
Schöne Grüsse.
Jürgen
Re: auf verschieden tabellenblaetter zugreifen
Verfasst: So, 17.02.2008 09:51
von keksi1970
danke jürgen
ich hatte gestern nur mein office nicht dabei, sonst haett ich das schon ausprobiert. aber es funktioniert
und was schoen waere, wenn folgendes funktionieren wuerde
sozusagen ein auswahlfeld mit 3 schaltflächen (NEU // Bearbeiten // ENDE)
wobei NEU zur 1. tabelle innerhalb meines dokuments springt, dessen feld a1 leer ist, wobei
Code: Alles auswählen
Sub Eingabe
oDoc = thisComponent
for zaehlen = 0 to 15
myView = oDoc.CurrentController
mySheet = oDoc.Sheets(zaehlen)
myView.setActiveSheet(mySheet)
test1=Inputbox("Name", "Eingabe")
if test1 = "" then
exit sub
end if
oZielzelle = oDoc.sheets(zaehlen).getCellRangeByName("a1")
oZielzelle.string = test1
next zaehlen
End Sub
die variable zaehlen natürlich auch den index der ersten freien tabelle annehmen muss
mein lösungsansatz wäre
durch
wobei die variable tabelle en index der ersten freien tabelle annehmen muss (kein testen möglich, da ich noch nicht weiss, wie ich das mit dem index hinkriege)
bearbeiten soll das makro ganz normal starten
und ende halt exit sub
Re: auf verschieden tabellenblaetter zugreifen
Verfasst: So, 17.02.2008 11:48
von turtle47
Hi Keksi,
irgendwie klemmt Deine Shifttaste. Die ist auf der linken und rechten Seite Deiner Tastatur mit dem Pfeil nach oben.
Es ist für mich extrem schwierig Deine Texte die komplett kleingeschrieben sind zu lesen.
keksi1970 hat geschrieben:sozusagen ein auswahlfeld mit 3 schaltflächen (NEU // Bearbeiten // ENDE)
Dann musst Du Dir einen eigenen Dialog erstellen.
keksi1970 hat geschrieben:wobei NEU zur 1. tabelle innerhalb meines dokuments springt, dessen feld a1 leer ist
Dazu muss Du zuerst alle Tabellen durchfosten um festzustellen bei welchem Tabellenblatt A1 leer ist.
Code: Alles auswählen
Sub LeereZelleA1
doc=thisComponent
for i = 0 to doc.sheets.count - 1
if doc.sheets(i).getcellbyposition(0,0).string = "" then
msgbox i
exit Sub
end if
next
End Sub
Alles klar?
Jürgen
Re: auf verschieden tabellenblaetter zugreifen
Verfasst: So, 17.02.2008 13:24
von keksi1970
Hi Jürgen,
ich versuche mich zu Bessern, obwohl ich mit der neuen Rechtschreibung wohl Probleme haben werde.
zu den Dialogen hab ich eigentlich im Moment nur eine Frage, da ich mich noch nie damit beschäftigt habe : Sind die Dialoge genauso aufgebaut wie ein Makro und wie kann ich sie exportieren auf einen anderen Rechner, auf dem ich keine Fremddatei öffnen darf. Makros kann ich ja per Hand eingeben, aber wie verhindere ich die Arbeit eines neuen Dialogs erstellen auf dem Zielrechner ?
So, und nun werde ich mich mal mit den Dialogen befassen.
Gruß Andreas
Re: auf verschieden tabellenblaetter zugreifen
Verfasst: So, 17.02.2008 13:47
von turtle47
Hallo Keksi,
Dein Schriftbild sieht jetzt viel besser aus. Danke.
keksi1970 hat geschrieben:Makros kann ich ja per Hand eingeben, aber wie verhindere ich die Arbeit eines neuen Dialogs erstellen auf dem Zielrechner ?
Jetzt geht es aber ans Eingemachte.
Am besten legst Du dazu in Deinem Dokument oder unter "Meine Makros" eine neue Bibliothek an.
Dort hinein schreibst Du den Code und erstellst den Dialog.
Diese Bibliothek kann man dann später mit dem geschriebenen Makro und und dem zugehörigen Dialog als Extension exportieren und diese Extension auf einem anderen Rechner in OO.o installieren.
Siehe auch mal
hier.
Ich denke, da bleiben noch viele Fragen offen.
Jürgen
Re: auf verschieden tabellenblaetter zugreifen
Verfasst: So, 17.02.2008 14:25
von keksi1970
Hi,
Muss ich mir halt doch die Erlaubnis besorgen, dass ich das installieren darf.
also im Groben hab ich das verstanden, mit dem Erstellen des Dialogs, nur wie ordne ich nun die EIngaben im Dialog den verschiedenen Variablen zu ? mit
bekomme ich durch die Schaltfläche OK ja immer nur den Wert1
Gruß Andreas
Re: auf verschieden tabellenblaetter zugreifen
Verfasst: So, 17.02.2008 17:39
von turtle47
keksi1970 hat geschrieben:Muss ich mir halt doch die Erlaubnis besorgen, dass ich das installieren darf.
Normalerweise nicht, denn die Extension wird in das Benutzerverzeichnis geschrieben.
Re: auf verschieden tabellenblaetter zugreifen
Verfasst: Mo, 18.02.2008 07:52
von keksi1970
Danke, ich werde es mal versuchen mit dem Exportieren
Gruß Andreas