Der Fachmann staunt und der Laie wundert sich.
letzteres mag ja so sein, nur wenn Du Zeile innerhalb eines Makros als Variable deklarierst und gleichzeitig unter diesem Namen ein Makro aufrufen willst reagiert OOo verständlicherweise 'sauer'.
(Ob das bei einem Aufruf mittels Call nun so sein muß sei dahingestellt, nur es ist der Sache nach schon kein guter Stil für eine Prozedur und eine Variable den gleichen Namen zu verwenden.)
Liegt das wirklich nur an der Namensvergabe???
Natürlich habe ich dafür das Makro "Zeile" in "aktuelleZeile" umbenannt!
Ja. Du hättest auch den Namen der Variable "zeile" verändern können.
Habe jetzt folgendes eigegeben:
Code:
if msgbox ("Spalten A bis IV sind ausgewertet."+ Chr(13) + _
"Die aktuelle Spalte ist: " & Wert, 4 , "Abfrage aktuelle Spalte") = 6 then
Call Zeile
else
exit sub
end if
End Sub
Bekomme die Fehlermeldung: Basic-Lauzeitfehler.
Eigenschaft oder Methode nicht gefunden.
Weil OOo 'nervös' auf das Leerzeichen hinter "_" in Zeile:
Code: Alles auswählen
if msgbox ("Spalten A bis IV sind ausgewertet."+ Chr(13) + _
reagiert, entferne es einfach.
Mit dem Code:
Code:
Sub Test
Call Zeile
End Sub
kann ich das Makro "Zeile" aber aufrufen.
Der Code dafür ist ja auch vorhanden.
Ja, weil dort keine Deklaration von "zeile" als Integer-Variable erfolgt und die Deklarition von innerhalb der anderen Prozedur (Sub Spalte ) keine Gültigkeit mehr hat.
Das sich das mit der Gültigkeit so verhält kannst Du leicht selbst prüfen mittels:
Code: Alles auswählen
Sub Spalte
dim Ergebnis as new com.sun.star.sheet.GoalResult
dim FormelAdresse as new com.sun.star.table.CellAddress
dim VariablenAdresse as new com.sun.star.table.CellAddress
dim Zielwert as integer
dim zeile as integer
oDoc = ThisComponent
oSheet = ThisComponent.Sheets(1)
oCelle=oDoc.getCurrentSelection().getCellAddress()
Wert=oCelle.column
if msgbox ("Spalten A bis IV sind ausgewertet."+ Chr(13) + _
"Die aktuelle Spalte ist: " & Wert, 4 , "Abfrage aktuelle Spalte") = 6 then
Call Test
else
exit sub
end if
End Sub
Sub Test
Call Zeile
End Sub
sub Zeile
dim Ergebnis as new com.sun.star.sheet.GoalResult
dim FormelAdresse as new com.sun.star.table.CellAddress
dim VariablenAdresse as new com.sun.star.table.CellAddress
dim Zielwert as integer
dim spalte as integer
oDoc = ThisComponent
oSheet = ThisComponent.Sheets(1)
oCelle=oDoc.getCurrentSelection().getCellAddress()
Wert1 = oCelle.Row
msgbox ("Zeilen 0 bis 32.000 sind ausgewertet." + Chr(13) + "Die aktuelle Zeile ist: " & Wert1, 64 , "Abfrage aktuelle Zeile") 'Ausgabe als Messagebox
End Sub
Gruß
Stephan
[quote]Der Fachmann staunt und der Laie wundert sich. [/quote]
letzteres mag ja so sein, nur wenn Du Zeile innerhalb eines Makros als Variable deklarierst und gleichzeitig unter diesem Namen ein Makro aufrufen willst reagiert OOo verständlicherweise 'sauer'.
(Ob das bei einem Aufruf mittels Call nun so sein muß sei dahingestellt, nur es ist der Sache nach schon kein guter Stil für eine Prozedur und eine Variable den gleichen Namen zu verwenden.)
[code]dim zeile as integer[/code]
[quote]Liegt das wirklich nur an der Namensvergabe???
Natürlich habe ich dafür das Makro "Zeile" in "aktuelleZeile" umbenannt! [/quote]
Ja. Du hättest auch den Namen der Variable "zeile" verändern können.
[quote]Habe jetzt folgendes eigegeben:
Code:
if msgbox ("Spalten A bis IV sind ausgewertet."+ Chr(13) + _
"Die aktuelle Spalte ist: " & Wert, 4 , "Abfrage aktuelle Spalte") = 6 then
Call Zeile
else
exit sub
end if
End Sub
Bekomme die Fehlermeldung: Basic-Lauzeitfehler.
Eigenschaft oder Methode nicht gefunden. [/quote]
Weil OOo 'nervös' auf das Leerzeichen hinter "_" in Zeile:
[code]if msgbox ("Spalten A bis IV sind ausgewertet."+ Chr(13) + _ [/code]
reagiert, entferne es einfach.
[quote]Mit dem Code:
Code:
Sub Test
Call Zeile
End Sub
kann ich das Makro "Zeile" aber aufrufen.
Der Code dafür ist ja auch vorhanden. [/quote]
Ja, weil dort keine Deklaration von "zeile" als Integer-Variable erfolgt und die Deklarition von innerhalb der anderen Prozedur (Sub Spalte ) keine Gültigkeit mehr hat.
Das sich das mit der Gültigkeit so verhält kannst Du leicht selbst prüfen mittels:
[code]Sub Spalte
dim Ergebnis as new com.sun.star.sheet.GoalResult
dim FormelAdresse as new com.sun.star.table.CellAddress
dim VariablenAdresse as new com.sun.star.table.CellAddress
dim Zielwert as integer
dim zeile as integer
oDoc = ThisComponent
oSheet = ThisComponent.Sheets(1)
oCelle=oDoc.getCurrentSelection().getCellAddress()
Wert=oCelle.column
if msgbox ("Spalten A bis IV sind ausgewertet."+ Chr(13) + _
"Die aktuelle Spalte ist: " & Wert, 4 , "Abfrage aktuelle Spalte") = 6 then
Call Test
else
exit sub
end if
End Sub
Sub Test
Call Zeile
End Sub
sub Zeile
dim Ergebnis as new com.sun.star.sheet.GoalResult
dim FormelAdresse as new com.sun.star.table.CellAddress
dim VariablenAdresse as new com.sun.star.table.CellAddress
dim Zielwert as integer
dim spalte as integer
oDoc = ThisComponent
oSheet = ThisComponent.Sheets(1)
oCelle=oDoc.getCurrentSelection().getCellAddress()
Wert1 = oCelle.Row
msgbox ("Zeilen 0 bis 32.000 sind ausgewertet." + Chr(13) + "Die aktuelle Zeile ist: " & Wert1, 64 , "Abfrage aktuelle Zeile") 'Ausgabe als Messagebox
End Sub[/code]
Gruß
Stephan