Seite 1 von 1
Funktions Parameter Range
Verfasst: Mo 23. Jul 2018, 11:26
von DKS_007
Hallo Zusammen,
ich habe eine ganz einfache frage finde aber keine Antwort für Calc bei Excel war es ganz einfach.
Ich möchte eine Funktion erstellen über die VBA die einen Bereichsparameter (Array) erhält und in dieser Funktion muss ich die Länge und die Breite ermitteln.
z.B.
Code: Alles auswählen
Function FunctionsName(Bereich)
breite = Bereich.[Breite ermitteln]
länge = Bereich.[Länge ermitteln]
End Function
Für die Länge habe ich eine art Lösung gefunden die auch funktioniert
Re: Funktions Parameter Range
Verfasst: Mo 23. Jul 2018, 12:25
von nikki
Hallo,
LO/AOO kennen kein VBA sondern stattdessen u. a. StarBasic. Informationen für StarBasic findest Du unter
http://www.dannenhoefer.de/faqstarbasic/index.html
Re: Funktions Parameter Range
Verfasst: Mo 23. Jul 2018, 19:30
von DKS_007
Ich habe mir die Webseite jetzt angesehen und habe etwas Herumgekriegt.
Habe jetzt ein Befehl gefunden aber irgend wir klappt da was nicht.
Der Befehl steht so dringe.
Code: Alles auswählen
...
oCellRange = osheet.getCellRangeByName("A1:B10")
breite =oCellRange.rangeAddress.startRow
aber für meine Zwecke benötige ich in ungefähr so.
Code: Alles auswählen
...
oCellRange = osheet.getCellRangeByName(Bereich)
breite = oCellRange.rangeAddress.startRow
aber so geht es nicht? Hat jemand da eine Idee was ich falsch mache.
Re: Funktions Parameter Range
Verfasst: Mo 23. Jul 2018, 23:44
von DavidG
Hallo,
ein Beispiel:
Code: Alles auswählen
REM ***** BASIC *****
Sub Main
Dim oDoc as Object
Dim oCC as Object
Dim oSheet as Object
Dim oCellRange as Object
Dim Breite as Long
Dim Länge as Long
' MRI ist eine Extension, welche der Code-Inspektion dient.
' Hiermit kann man sich z.B. Eigenschaften, Methoden, Schnittstellen usw.
' des übergebenen Objektes anzeigen lassen.
' Download:
' extensions.openoffice.org/en/projectrelease/mri-uno-object-inspection-tool-133
oDoc = ThisComponent
'mri oDoc
oCC=oDoc.getCurrentcontroller
' mri oCC
oSheet=oCC.ActiveSheet
'mri oSheet
oCellRange = osheet.getCellRangeByName("A1:B10")
'mri oCellRange
Breite = oCellRange.Columns.Count
Laenge = oCellRange.Rows.Count
Msgbox "Breite = " & Chr(9) & Breite & Chr(10) & _
"Laenge = " & Chr(9) & Laenge,64,"Zähler:"
End Sub
Gruß
David
Re: Funktions Parameter Range
Verfasst: Di 24. Jul 2018, 08:11
von DKS_007
Hallo DavidG,
genau so kann ich es ja nicht machen da es ja keine "Sub" Makro wäre soll, ich benötige ein "Function" Makro.
und keine
und genau das ist ja mein Problem
Ich Übergebe der Funktion einen Bereich der unbestimmt ist.
Re: Funktions Parameter Range
Verfasst: Di 24. Jul 2018, 09:25
von F3K Total
Moin, so sollte es klappen:
Code: Alles auswählen
Function GET_RANGE_COLUMNS_AND_ROWS(sRange as string) as string
oSheet = ThisComponent.currentcontroller.activeSheet
oRange = oSheet.getcellrangebyName(sRange)
aRA = oRange.RangeAddress
C1 = aRA.StartColumn
C2 = aRA.EndColumn
R1 = aRA.StartRow
R2 = aRA.EndRow
nC = C2-C1 + 1
nR = R2-R1 + 1
if nC = 1 Then
sC = " Spalte und "
else
sC = " Spalten und "
endif
if nR = 1 Then
sR = " Zeile."
else
sR = " Zeilen."
endif
GET_RANGE_COLUMNS_AND_ROWS = "Der Bereich " & sRange & " hat " & nC & sC & nR & sR
End function
Beispiel anbei.
Gruß R
EDIT: so geht's kürzer:
Code: Alles auswählen
Function GET_RANGE_COLUMNS_AND_ROWS(sRange as string) as string
oSheet = ThisComponent.currentcontroller.activeSheet
oRange = oSheet.getcellrangebyName(sRange)
nC = oRange.Columns.count
nR = oRange.Rows.count
if nC > 1 Then sC = "n"
if nR > 1 Then sR = "n"
GET_RANGE_COLUMNS_AND_ROWS = "Der Zellbereich " & sRange & " hat " & nC & " Zeile" & sC & " und " & nR & " Spalte" & sR & "."
End function
Re: Funktions Parameter Range
Verfasst: Di 24. Jul 2018, 15:16
von DKS_007
Hallo,
Ich danke auch allen für eure Hilfe.
Danke auch an F3K Total deine Antwort hat auch geholfen.
Bin aber jetzt auf die kompaktere Lösung gekommen und dabei war Sie direkt vor meinen Augen.
Code: Alles auswählen
Function FunctionsName(Bereich)
' UBound(Array, dimension) ; Dimension 1 = y (Spalte) ; 2 = x (Zeile)
breite = UBound(Bereich, 2)
laenge = UBound(Bereich, 1)
End Function
Re: Funktions Parameter Range
Verfasst: So 29. Jul 2018, 14:29
von mikele
Hallo,
nur zur Sicherheit: Damit das Makro korrekt funktioniert, muss der Funktionsaufruf nun so
erfolgen und nicht, wie im ursprünglichen Post mit Anführungszeichen.