b3nz0l Geschrieben 9. Mai 2012 Melden Share Geschrieben 9. Mai 2012 (bearbeitet) Moin, nachdem ich mehrere Stunden investiert habe bis ich zu dem gewünschten Ergebnis gekommen bin möchte ich dies hier nun zur verfügung stellen: Es ging darum eine Liste mit TV Kanälen zu erstellen ähnlich der oscam.srvid, als quelle diente mir die Kanalbelegung vom kdg-forum-helpdesk da diese immer recht aktuell ist. Und da ich manchmal ein verdammter pedant sein kann möchte ich dass diese Liste nach SID geordnet ist. Des weiteren möchte ich die SID in HEX angezeigt bekommen, was auch das Hauptproblem an der Sache war. Also haben wir die quelltabelle kopiert und in ein neues Tabellendokument eingefügt. Aufs sortieren gehe ich hier mal nicht ein , das funktioniert unter dem aktuellen OOo ja recht selbsterklärend, es ist nur darauf zu achten dass man wenn man danach gefragt wird die auswahl auf alle spalten legt und nicht nur auf die nach der man sortieren möchte damit die zuordnung der namen erhalten bleibt. um nun die dezimal angegebenen SIDs in HEX angezeigt zu bekommen bedienen wir uns der BASE funktion =BASE(inHEXanzuzeigenderWert;zahlensystembasis;minimaleanzeigelänge) es fällt auf dass unser Ausgangswert mitten in der Formel steht und da es eine menge werte sind die wir dann ändern müssten nehmen wir dafür einen Makro. der soll die aktuell ausgewählte zelle bearbeiten er schreibt dann vor die dez-zahl das "=BASE(" und dahinter das ";16;4)", wichtig ist auch dass es als formel reingeschrieben wird und nicht als string (zeichenkette). anschließend wollen wir mit dem fokus noch eine zelle tiefer springen damit wir den makro bei bedarf direkt nochmal ausführen können wenn wir den makro dann noch auf eine Tastenkombination legen können wir diese gedrückt halten und der Makro rattert schön die zellen in einer spalte von oben nach unten durch... lange rede kurzer sinn, hier der Makro: sub toHEX2 Dim Column as Integer Dim Row as Integer Dim nRow as Integer Dim myDoc as Object Dim mySheet as Object Dim myCell as Object Dim nCell as Object Dim myString as String myDoc = thisComponent oCtl = myDoc.getCurrentController mySheet = oCtl.ActiveSheet Column = getColumn() Row = getRow() mycell = mysheet.getCellByPosition(Column, Row) myString = mycell.string myString = "=BASE(" & myString & ";16;4)" mycell.formula = myString nRow = Row + 1 nCell = mysheet.getCellByPosition(Column, nRow) oCtl.select(nCell) End Sub function getColumn() as String dim oSel as Object dim oDesktop as Object dim oAdr as Object oDesktop = createUnoService( "com.sun.star.frame.Desktop" ) oSel = oDesktop.CurrentFrame.Controller.Selection oAdr = oSel.CellAddress getColumn = oAdr.Column end function function getRow() as String dim oSel as Object dim oDesktop as Object dim oAdr as Object oDesktop = createUnoService( "com.sun.star.frame.Desktop" ) oSel = oDesktop.CurrentFrame.Controller.Selection oAdr = oSel.CellAddress getRow = oAdr.Row end function bearbeitet 9. Mai 2012 von b3nz0l Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
MacFco Geschrieben 10. Mai 2012 Melden Share Geschrieben 10. Mai 2012 nachdem ich mehrere Stunden investiert habe bis ich zu dem gewünschten Ergebnis gekommen bin möchte ich dies hier nun zur verfügung stellen: Es ging darum eine Liste mit TV Kanälen zu erstellen ähnlich der oscam.srvid, als quelle diente mir die Kanalbelegung vom kdg-forum-helpdesk da diese immer recht aktuell ist. Und da ich manchmal ein verdammter pedant sein kann möchte ich dass diese Liste nach SID geordnet ist. Des weiteren möchte ich die SID in HEX angezeigt bekommen, was auch das Hauptproblem an der Sache war. Ist mir jetzt nicht ganz klar, warum die Mühe mit dem Umrechnen, denn die SIDs (PIDs) kann man schon immer auch in HEX exportieren lassen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Empfohlene Beiträge