auf verschieden tabellenblaetter zugreifen

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: auf verschieden tabellenblaetter zugreifen

Re: auf verschieden tabellenblaetter zugreifen

von keksi1970 » Mo, 18.02.2008 07:52

Danke, ich werde es mal versuchen mit dem Exportieren

Gruß Andreas

Re: auf verschieden tabellenblaetter zugreifen

von turtle47 » So, 17.02.2008 17:39

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

von keksi1970 » So, 17.02.2008 14:25

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

Code: Alles auswählen

name=MyDlg.execute()
bekomme ich durch die Schaltfläche OK ja immer nur den Wert1

Gruß Andreas

Re: auf verschieden tabellenblaetter zugreifen

von turtle47 » So, 17.02.2008 13:47

Hallo Keksi,

Dein Schriftbild sieht jetzt viel besser aus. Danke. :lol:
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

von keksi1970 » So, 17.02.2008 13:24

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

von turtle47 » So, 17.02.2008 11:48

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. :x
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

von keksi1970 » So, 17.02.2008 09:51

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

Code: Alles auswählen

for zaehlen = 0 to 15
durch

Code: Alles auswählen

for zaehlen = tabelle to 15
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

von turtle47 » Sa, 16.02.2008 17:01

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. :lol:
komma4 hat geschrieben: willst Du das Geflacker tatsächlich sehen?

Das habe ich auch nicht verstanden.:shock:

Schöne Grüsse.

Jürgen

Re: auf verschieden tabellenblaetter zugreifen

von komma4 » Sa, 16.02.2008 16:57

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

von keksi1970 » Sa, 16.02.2008 16:42

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

von komma4 » Sa, 16.02.2008 16:21

(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

von turtle47 » Sa, 16.02.2008 15:58

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

auf verschieden tabellenblaetter zugreifen

von keksi1970 » Sa, 16.02.2008 15:14

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

Nach oben