Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Function GetRangeWithValue(oSheet)
- '''' Die Funktionen zum ermitteln der letzten Zelle finden nur die erste Zelle die wirklich leer ist (UsedRange)
- '''' Ich will aber die letzte Zelle deren Inhalt nicht "" ist. Weil da z.B eine Formel drinsteht:
- '''' =WENN(ISTZAHL(C63);LOG(2)/LOG(M63);"")
- '''' Diese funktion hier schreibt zuerst eine Formel in die Zelle rowCountCell: =count(B5:B369) *deutsch: anzahl...
- '''' liest dann den Wert aus und erstellt damit die Formel für die Zelle colCountCell: =count(B59:AV59) (wenn der Wert 59 ist)
- '''' Dieser Wert wird dann auch ausgelesen (z.B: 15 ist Spalte 'P') und nun wird daraus eine Rangeangabe gemacht:
- '''' sRange="A1:" & chr(64+iCountCols+1)&iCountRows
- '''' A1 Von links Oben
- '''' chr(64+iCountCols+1) der ASCII Code von A = 64 plus das Ergebnis aus iCountCols (= 64 + 15 = P)
- '''' iCountRows Anzahl der Zeilen in denen das Ergebnis <> "" ist
- '''' Ergebnis: Range z.B. für den Druckbereich
- '
- '''' Hinweis: Formelnamen müssen englisch sein: <http://www.ooowiki.de/DeutschEnglischCalcFunktionen(2f)Statistik.html>
- ' Dim oSheet As object
- dim rowCountCell$
- dim colCountCell$
- dim firstDataRow as Integer
- Dim lastDataRow As integer
- Dim topLeft$,firstDataColumn$
- Dim iCountRows As Integer
- Dim iCountCols As integer
- Dim sRange$
- '''' Bereiche definieren
- topLeft="A1"
- colCountCell="Z2" 'Zelle in die die zweite Formel eingetragen wird
- rowCountCell="Z1" 'Zelle in die die erste Formel eingetragen wird
- firstDataColumn="B" ' Linke Spalte des Datenbereichs
- firstDataRow="5" '1. Zeile des Datenbereichs (Ohne Spaltenüberschrift)
- lastDataRow="369" 'Letze Zeile des Datenbereichs kann auch 104876 sein :)
- ' oSheet = ThisComponent.sheets.getByName("Daten") ' Tabelle
- '''' 1. Formel eintragen
- oSheet.getCellRangeByName(rowCountCell).formula="=count("_
- & firstDataColumn _
- & firstDataRow _
- & ":" _
- & firstDataColumn _
- & lastDataRow _
- & ")"
- '''' Wert für Anzahl der Zeilen holen
- iCountRows=oSheet.getCellRangeByName(rowCountCell).value+firstDataRow-1
- '''' 2.Formel eintragen
- oSheet.getCellRangeByName(colCountCell).formula="=count(" _
- & firstDataColumn _
- & iCountRows _
- & ":AV" _
- & iCountRows &")"
- '''' Wert für Anzahl der Spalten holen
- iCountCols=oSheet.getCellRangeByName(colCountCell).value
- '''' String für Range erstellen
- sRange=topLeft _
- & ":" _
- & chr(64+iCountCols+1) _
- & iCountRows
- 'msgbox "Range =" & sRange
- '''' FormelZellen wieder leeren
- oSheet.getCellRangeByName(rowCountCell).formula=""
- oSheet.getCellRangeByName(colCountCell).formula=""
- GetRangeWithValue=sRange
- End Function
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement