*セルのテキスト [#o1e59460] セル内のテキストへアクセスします。この場合は,文字ごとにフォントを変更したり,文字列の一部を上付きにしたりなどを行います。 #contents **テキストカーソル [#a5ea3649] セル内のテキストを取り扱うにはテキストカーソルオブジェクトを使用します。これは, createTextCursor() メソッドを使用して取得します。 Sub textcursor_1 Dim oSheet As Object, oCell As Object Dim oTextCursor As Object oSheet = ThisComponent.Sheets( 0 ) oCell = oSheet.getCellByPosition( 1, 1 ) oTextCursor = oCell.createTextCursor()' <-- End Sub **移動 [#a8ade25d] テキストカーソルは com.sun.star.text.XTextCursor インターフェースです。ここからのメソッドを使用してセルのテキスト内を移動します。 最後の二つは,文字列の最初と最後に移動します。次のコードで試してみます。 Sub textcursor_2 Dim oCell As Object Dim oTextCursor As Object oCell = ThisComponent.Sheets( 0 ).getCellByPosition( 1, 1 ) oCell.setString( "1234" ) oTextCursor = oCell.createTextCursor()' <-- oTextCursor.gotoStart( False ) oTextCursor.gotoEnd( False ) oTextCursor.goLeft( 2, True ) MsgBox oTextCursor.getString() End Sub goLeft メソッドの二つ目の引数に True をとって,後ろから二文字を選択して表示しています。"34" と表示されます。getString() メソッドは選択した文字列を取得するメソッドです。 **文字の入力と取得 [#s127d3e2] テキストカーソルで文字を取得したり入力するには,getString() と setString メソッドを使用します。 Sub textcursor_3 Dim oCell As Object Dim oTextCursor As Object oCell = ThisComponent.Sheets( 0 ).getCellByPosition( 1, 1 ) oCell.setString( "1234" ) oTextCursor = oCell.createTextCursor() With oTextCursor .gotoStart( False ) .setString( "0" ) .goRight( 2, True ) End With MsgBox oTextCursor.getString() End Sub 上のコードでは "0" が文字列の先頭に入力されて "01234" になり,"012" と表示されます。goRight メソッドでは二文字しか選択していませんが,三文字表示されました。これは,先に入力した文字が選択状態だったことを示しています。前から二文字取得するには, gotoStart( False ) を入れておく必要があります。 setString メソッドは,選択中の字列を置換することも出来ます。 Sub textcursor_4 Dim oCell As Object Dim oTextCursor As Object oCell = ThisComponent.Sheets( 0 ).getCellByPosition( 1, 1 ) oCell.setString( "1234" ) oTextCursor = oCell.createTextCursor() With oTextCursor .gotoStart( False ) .gotoEnd( True ) .goLeft( 2, True ) .setString( "ab" ) End With MsgBox oTextCursor.getString() End Sub 後ろから二文字の "34" が "ab" に置換されます。 **プロパティー [#b6b7a65e] 選択した文字列の部分だけのプロパティーを設定することが出来ます。上付きや下付きなどさまざまなプロパティーを設定できます。 まず,上付きと下付きです。 Sub textcursor_5 Dim oCell As Object Dim oTextCursor As Object oCell = ThisComponent.Sheets( 0 ).getCellByPosition( 1, 1 ) oCell.setString( "1234" ) oTextCursor = oCell.createTextCursor() With oTextCursor .gotoStart( False ) .goRight( 1, True ) .setPropertyValue( "CharEscapement", -101 ) .setPropertyValue( "CharEscapementHeight", 58 ) .gotoEnd( False ) .goLeft( 1, True ) .setPropertyValue( "CharEscapement", 101 ) .setPropertyValue( "CharEscapementHeight", 58 ) End With MsgBox oTextCursor.getString() End Sub "1" が下付きに, "4" が上付きになります。 CharEscapement プロパティーが "0" のときは普通です。上付きには "101" を,下付きには "-101" を指定します。CharEscapementHeight プロパティーには相対フォントサイズを % で指定します。アプリケーションのデフォルト値は 58 % です。このプロパティーを指定しなければ,文字が小さくならないので上付きや下付きに見えません。 そのほかのプロパティーについてはプロパティーを見てください。残念ながら多すぎて一つずつ取り上げられません。 |