von turtle47 » Mi, 18.06.2008 21:09
Hi WorstCases,
WorstCases hat geschrieben:Aber: Ich möchte diesen "+1" bzw clear-Button gerne für ca. 50+ Felder benutzen. Muss ich da für jeden Button ein eigenes Makro schreiben (wegen dem Feld, dass mit dem Button verändert werden soll)?
Nicht unbedingt.
WorstCases hat geschrieben:Was passiert, wenn das Makro als Position z.B. A1 hat und ich füge zusätzliche Spalten/Reihen davor ein? Ist das Makro und der Button dann funktionsunfähig?
Ja, aber es bezieht sich immer noch auf die Zelle "A1".
Folgender Code bezieht sich immer auf die Zelle(n) die selektiert ist/sind:
Code: Alles auswählen
Sub plus_eins
oDoc = ThisComponent
If Not oDoc.supportsService _
("com.sun.star.sheet.SpreadsheetDocument" ) then
MsgBox "Das ist ein kein Calc-Dokument! Die Anwendung kann deshalb nicht ausgeführt werden! " , 16 , "plus_eins"
Exit Sub
end if
if End_Row > 65534 then
msgbox "Ganze Spalten markieren ist nicht möglich!" & CHR(13) & "Der Vorgeng wird jetzt abgebrochen!",,"plus_eins"
end if
oSheet = ThisComponent.CurrentController.getActiveSheet()
oZell = oDoc.getCurrentSelection()
oZell.supportsService("com.sun.star.sheet.SheetCellRange")
oSelect=ThisComponent.CurrentSelection.getRangeAddress
oSelectColumn=ThisComponent.CurrentSelection.Columns
oSelectRow=ThisComponent.CurrentSelection.Rows
CountColumn=oSelectColumn.getCount
CountRow=oSelectRow.getCount
Start_Column=oSelect.StartColumn
End_Column=oSelect.EndColumn
Start_Row =oSelect.StartRow
End_Row=oSelect.EndRow
if End_Row > 65534 then
msgbox "Ganze Spalten markieren ist nicht möglich!" & CHR(13) &_
"Der Vorgang wird jetzt abgebrochen!",,"plus_eins"
exit sub
end if
For sp = Start_Column to End_Column
For ze = Start_Row to End_Row
oCell = oSheet.getCellByPosition(sp,ze)
myvalue = oCell.value
myvalue = myValue +1
ocell.value = myValue
next ze
next sp
msgbox "Der Vorgang ist abgeschlossen" ,64, "plus_eins"
End Sub
Für den Reset nimm folgenden Code:
Code: Alles auswählen
Sub reset
oDoc = ThisComponent
If Not oDoc.supportsService _
("com.sun.star.sheet.SpreadsheetDocument" ) then
MsgBox "Das ist ein kein Calc-Dokument! Die Anwendung kann deshalb nicht ausgeführt werden! " , 16 , "plus_eins"
Exit Sub
end if
if End_Row > 65534 then
msgbox "Ganze Spalten markieren ist nicht möglich!" & CHR(13) & "Der Vorgeng wird jetzt abgebrochen!",,"plus_eins"
end if
oSheet = ThisComponent.CurrentController.getActiveSheet()
oZell = oDoc.getCurrentSelection()
oZell.supportsService("com.sun.star.sheet.SheetCellRange")
oSelect=ThisComponent.CurrentSelection.getRangeAddress
oSelectColumn=ThisComponent.CurrentSelection.Columns
oSelectRow=ThisComponent.CurrentSelection.Rows
CountColumn=oSelectColumn.getCount
CountRow=oSelectRow.getCount
Start_Column=oSelect.StartColumn
End_Column=oSelect.EndColumn
Start_Row =oSelect.StartRow
End_Row=oSelect.EndRow
if End_Row > 65534 then
msgbox "Ganze Spalten markieren ist nicht möglich!" & CHR(13) &_
"Der Vorgang wird jetzt abgebrochen!",,"plus_eins"
exit sub
end if
For sp = Start_Column to End_Column
For ze = Start_Row to End_Row
oCell = oSheet.getCellByPosition(sp,ze)
ocell.value = 0
next ze
next sp
msgbox "Der Vorgang ist abgeschlossen" ,64, "plus_eins"
End Sub
Ist es das was Du Dir vorstellst?
Jürgn
Hi WorstCases,
[quote="WorstCases"]Aber: Ich möchte diesen "+1" bzw clear-Button gerne für ca. 50+ Felder benutzen. Muss ich da für jeden Button ein eigenes Makro schreiben (wegen dem Feld, dass mit dem Button verändert werden soll)?[/quote]
Nicht unbedingt.
[quote="WorstCases"]Was passiert, wenn das Makro als Position z.B. A1 hat und ich füge zusätzliche Spalten/Reihen davor ein? Ist das Makro und der Button dann funktionsunfähig?[/quote]
Ja, aber es bezieht sich immer noch auf die Zelle "A1".
Folgender Code bezieht sich immer auf die Zelle(n) die selektiert ist/sind:
[code]Sub plus_eins
oDoc = ThisComponent
If Not oDoc.supportsService _
("com.sun.star.sheet.SpreadsheetDocument" ) then
MsgBox "Das ist ein kein Calc-Dokument! Die Anwendung kann deshalb nicht ausgeführt werden! " , 16 , "plus_eins"
Exit Sub
end if
if End_Row > 65534 then
msgbox "Ganze Spalten markieren ist nicht möglich!" & CHR(13) & "Der Vorgeng wird jetzt abgebrochen!",,"plus_eins"
end if
oSheet = ThisComponent.CurrentController.getActiveSheet()
oZell = oDoc.getCurrentSelection()
oZell.supportsService("com.sun.star.sheet.SheetCellRange")
oSelect=ThisComponent.CurrentSelection.getRangeAddress
oSelectColumn=ThisComponent.CurrentSelection.Columns
oSelectRow=ThisComponent.CurrentSelection.Rows
CountColumn=oSelectColumn.getCount
CountRow=oSelectRow.getCount
Start_Column=oSelect.StartColumn
End_Column=oSelect.EndColumn
Start_Row =oSelect.StartRow
End_Row=oSelect.EndRow
if End_Row > 65534 then
msgbox "Ganze Spalten markieren ist nicht möglich!" & CHR(13) &_
"Der Vorgang wird jetzt abgebrochen!",,"plus_eins"
exit sub
end if
For sp = Start_Column to End_Column
For ze = Start_Row to End_Row
oCell = oSheet.getCellByPosition(sp,ze)
myvalue = oCell.value
myvalue = myValue +1
ocell.value = myValue
next ze
next sp
msgbox "Der Vorgang ist abgeschlossen" ,64, "plus_eins"
End Sub[/code]
Für den Reset nimm folgenden Code:[code]Sub reset
oDoc = ThisComponent
If Not oDoc.supportsService _
("com.sun.star.sheet.SpreadsheetDocument" ) then
MsgBox "Das ist ein kein Calc-Dokument! Die Anwendung kann deshalb nicht ausgeführt werden! " , 16 , "plus_eins"
Exit Sub
end if
if End_Row > 65534 then
msgbox "Ganze Spalten markieren ist nicht möglich!" & CHR(13) & "Der Vorgeng wird jetzt abgebrochen!",,"plus_eins"
end if
oSheet = ThisComponent.CurrentController.getActiveSheet()
oZell = oDoc.getCurrentSelection()
oZell.supportsService("com.sun.star.sheet.SheetCellRange")
oSelect=ThisComponent.CurrentSelection.getRangeAddress
oSelectColumn=ThisComponent.CurrentSelection.Columns
oSelectRow=ThisComponent.CurrentSelection.Rows
CountColumn=oSelectColumn.getCount
CountRow=oSelectRow.getCount
Start_Column=oSelect.StartColumn
End_Column=oSelect.EndColumn
Start_Row =oSelect.StartRow
End_Row=oSelect.EndRow
if End_Row > 65534 then
msgbox "Ganze Spalten markieren ist nicht möglich!" & CHR(13) &_
"Der Vorgang wird jetzt abgebrochen!",,"plus_eins"
exit sub
end if
For sp = Start_Column to End_Column
For ze = Start_Row to End_Row
oCell = oSheet.getCellByPosition(sp,ze)
ocell.value = 0
next ze
next sp
msgbox "Der Vorgang ist abgeschlossen" ,64, "plus_eins"
End Sub[/code]
Ist es das was Du Dir vorstellst?
Jürgn