Seite 1 von 1

Makro für alle Tabellenblätter

Verfasst: Fr, 08.10.2010 09:25
von Fireflash
Hallo!

Ich habe ein Makro das auf allen Tabellenblättern ausgeführt werden soll. Im Moment macht es das nur auf dem 1. Blatt. Was muss ich denn ändern damit das funktioniert?

Code: Alles auswählen

REM ***** BASIC *****

Sub Main

End Sub



sub Tom
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 ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$CZ$27:$EL$31"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$CZ$33"


Moderation,4: Zweitposting im CALC-Bereich gelöscht; CODE-Tags gesetzt

Re: Makro für alle Tabellenblätter

Verfasst: Fr, 08.10.2010 16:50
von gripslund
hej,

nur ein Tipp:

Code: Alles auswählen

oSheet=Document.Sheets.getByName("Daten")
In dem Fall geht's zum Tabellenblatt "Daten".

oder:

Code: Alles auswählen

oSheet=Document.Sheets(n)
In dem Fall geht's zum Tabellenblatt mit der Nummer n (es wird bei 0 (Null) angefangen zu zaehlen).

gripslund

Re: Makro für alle Tabellenblätter

Verfasst: Fr, 08.10.2010 18:34
von kannenklaus
hallo fireflash,

packe deinen aufgegzeichneten code in die u.g. for/next-schleife.

Code: Alles auswählen

Sub AlleBlaetter
Dim i as Integer

oDoc = ThisComponent

	for i=0 to oDoc.Sheets.count-1
	
	REM dein code rein


	next i
end Sub
grüße klaus

Re: Makro für alle Tabellenblätter

Verfasst: Fr, 08.10.2010 21:20
von Karolus
Hallo
@Klaus
Dein "Rahmenwerk" nutzt dem aufgezeichnetem Code herzlich wenig, er wird trotzdem nur auf dem Tabellenblatt arbeiten das aktuell selektiert ist.

Code: Alles auswählen

sub copyall
oDoc = thisComponent
for i = 0 to odoc.sheets().count -1
    oquelle = odoc.sheets(i).getCellrangebyName("CZ27:EL31").getRangeAddress
    oziel = odoc.sheets(i).getCellrangebyName("CZ33").getcellAddress
    odoc.sheets(i).copyRange( oziel , oQuelle )
next i
end sub
abgewandelt aus http://www.dannenhoefer.de/faqstarbasic ... l#Zweig194

Gruß Karo

Re: Makro für alle Tabellenblätter

Verfasst: So, 10.10.2010 14:47
von Fireflash
Danke für eure Hilfe. Hab aber herausgefunden daß das Makro was ich hier rein habe gar nicht das richtige ist was zuständig ist für meine Berechnung. Diese Makro hier macht wohl das Richtige. Es steht aber als "VBA-Projekt" drin. Kann man das auch so ändern das auf allen Blättern immer gleich gerechnet wird?

Code: Alles auswählen

Rem Attribute VBA_ModuleType=VBADocumentModule
Option VBASupport 1


Private Sub CommandButton1_Click()
'
' GrpA Makro
' Makro am 22.02.2002 von Kai Moczyk aufgezeichnet
'

'
    Range("BM24:BS27").Select
    Selection.Sort Key1:=Range("BO24"), Order1:=xlDescending, Key2:=Range( _
        "BS24"), Order2:=xlDescending, Key3:=Range("BP24"), Order3:=xlDescending _
        , Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:= _
        xlTopToBottom
    Range("I34").Select
End Sub

Re: Makro für alle Tabellenblätter

Verfasst: So, 10.10.2010 14:55
von Fireflash
Unter Module liegt dann auch noch ein Makro. Für was ist das denn zuständig?

Code: Alles auswählen

Rem Attribute VBA_ModuleType=VBAModule
Option VBASupport 1
Sub GrpA()
'
' GrpA Makro
' Makro am 22.02.2002 von Kai Moczyk aufgezeichnet
'

'
    Range("BM31:BR35").Select
    Selection.Sort Key1:=Range("BM31"), Order1:=xlDescending, Key2:=Range( _
        "BR31"), Order2:=xlDescending, Key3:=Range("BO31"), Order3:=xlDescending _
        , Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:= _
        xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _
        DataOption3:=xlSortNormal
End Sub

Re: Makro für alle Tabellenblätter

Verfasst: So, 10.10.2010 19:46
von Fireflash
Hallo!

Problem habe ich anders gelöst! Trotzdem Danke!