create a new page, using OOobbs2/1 as a template.
Front page
Search
掲示板
Reload
Help
Browse Log
掲示板の使い方
OOo 掲示板3
OOo 掲示板2
OOo 掲示板
掲示板
雑談掲示板
New
List of pages
Recent changes
Backup
簡単ヘルプ
整形ルール
Start:
** [[OOobbs2/1]] [#wecf89c5]
-''サマリ'': 選択セルが変更されたときマクロを起動する方法...
-''環境'': Calc
-''状態'': 未解決
-''投稿者'': [[ゆうこ]]
-''投稿日'': 2006-10-01 (日) 15:45:27
*** 質問 [#p84de463]
Excel & VBA ではよく使っているのですが、OOo Basic での実...
Excel の場合のソース。
Private Sub Worksheet_Activate()
Application.MoveAfterReturnDirection = xlToRight
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Ra...
tr = Target.Row
tc = Target.Column
If tc = 3 Then
Cells(tr+1, 1).Select
End If
End Sub
これをワークシートのモジュールにコーディングしています。
ワークシートを選択した際に、エンターキーを押したときの移...
3列目にカーソルがくると次の行の1列目にカーソルが移動し...
データをぱたぱた入力する際にとても便利です。
いろんなところを調べたのですが、
どうやってOOo Basic で記述するのか全くわかりません。
イベントリスナを使うのでしょうか?
*** 回答 [#k77845f1]
- 一つ目の、移動方向の変更はこんな感じでしょうか。
まず、アクティブシートが変更されたときに呼び出されるリス...
リスナーは Global 変数に保持しないと、リスナーを追加した...
あとは、リスナーのためのプロシージャを用意しておきます。
Global oActiveSheetChangeListener As Object
Public oController As Object
Sub Add_isActiveListener()
oController = ThisComponent.CurrentController
oActiveSheetChangeListener = CreateUnoListener( _
"ActiveSheetChange_", _
"com.sun.star.sheet.XActivationEventListener")
oController.addActivationEventListener( _
oActiveSheetChangeListener )
End Sub
Sub Remove_isActiveListener()
oController = ThisComponent.CurrentController
oController.removeActivationEventListener( _
oActiveSheetChangeListener )
End Sub
Sub ActiveSheetChange_activeSpreadsheetChanged( evt )
change_movedirection()
End Sub
Sub ActiveSheetChange_disposing( evt )
End Sub
Sub change_movedirection
Dim oGSheetSettings As Object
oGSheetSettings = CreateUnoService( _
"com.sun.star.sheet.GlobalSheetSettings")
oGSheetSettings.MoveDirection = _
com.sun.star.sheet.MoveDirection.RIGHT
End Sub
Enter キーを押したときの入力範囲の移動方向は、ツールメニ...
-二つ目の、セルのカーソルが列 C になったときに次の行の列 ...
ここでもやはりリスナーを追加してやります。選択範囲の変更...
Global oSelectionChangeListener As Object
Public oController As Object
Sub Add_SelectionChangeListener()
oController = ThisComponent.CurrentController
oSelectionChangeListener = CreateUnoListener( _
"SelectionChange_", _
"com.sun.star.view.XSelectionChangeListener" )
oController.addSelectionChangeListener( _
oSelectionChangeListener )
End Sub
Sub Remove_SelectionChangeListener()
oController = ThisComponent.CurrentController
oController.removeSelectionChangeListener( _
oSelectionChangeListener )
End Sub
Sub SelectionChange_selectionChanged( evt )
obj = evt.Source.Selection
If obj.ImplementationName = "ScCellObj" Then
tr = obj.CellAddress.Row
tc = obj.CellAddress.Column
If tc = 2 Then
ThisComponent.CurrentController.select( _
obj.SpreadSheet.getCellByPosition( 0, tr+1 ) )
oFrame = ThisComponent.CurrentController.getFrame()
executeCommand( ".uno:Deselect", oFrame )
End If
End If
End Sub
Sub SelectionChange_disposing( )
End Sub
Sub executeCommand( sCommand As String, oFrame As Object )
Dim aArr(0) As New com.sun.star.beans.PropertyValue
Dim oDispatch As Object
oDispatch = CreateUnoService( _
"com.sun.star.frame.DispatchHelper")
oDispatch.executeDispatch( _
oFrame, sCommand, "", 0, aArr())
End Sub
選択範囲が変更されたときに呼び出される SelectionChange_se...
-OOo Calc のセルのインデックスは 0 から始まるの
-getCellByPosition メソッドの引数は列、行の順
続く処理は順に、
セルを ''select'' メソッドで選択状態にします。セルの範囲...
セルが選択状態では不都合なので、セルの選択状態を解除して...
[[リスナー>OOoBasic/Generic/listener]]、[[Enter を押した...
一応、作成したファイルを添付しておきます。&ref(OOobbs2-1....
-- [[はにゃ?]] &new{2006-10-01 (日) 21:02:23};
- ".uno.GoToCell" を使うとセルを選択状態にしなくてもセル...
-".uno.GoToCell" を使ってみました。
Sub SelectionChange_selectionChanged( evt )
obj = evt.Source.Selection
If obj.ImplementationName = "ScCellObj" Then
tr = obj.CellAddress.Row
tc = obj.CellAddress.Column
If tc = 2 Then
oCell = obj.SpreadSheet.getCellByPosition( 0, tr+1 )
oCellRangeAddress = ThisComponent.createInstance( _
"com.sun.star.sheet.SheetCellRanges" )
oCellRangeAddress.insertByName( "cell", oCell )
sCellName = oCellRangeAddress.getRangeAddressesAsStr...
Dim aArr(0) As New com.sun.star.beans.PropertyValue
aArr(0).Name = "ToPoint"
aArr(0).Value = GetCellName( sCellName )
oFrame = ThisComponent.CurrentController.getFrame()
executeCommand( ".uno:GoToCell", oFrame, aArr() )
End If
End If
End Sub
Sub executeCommand( _
sCommand As String, oFrame As Object, aArg )
Dim oDispatch As Object
oDispatch = CreateUnoService( _
"com.sun.star.frame.DispatchHelper")
oDispatch.executeDispatch( _
oFrame, sCommand, "", 0, aArg())
End Sub
Function GetCellName( sRange As String ) As String
nCom = InStr( sRange, "." )
If nCom > 0 Then
GetCellName = Mid( sRange, nCom +1 )
Else
GetCellName = sRange
End If
End Function
-- [[はにゃ?]] &new{2006-10-01 (日) 23:03:53};
#comment
*** 感想,コメント,メモ [#z81007eb]
#comment
End:
** [[OOobbs2/1]] [#wecf89c5]
-''サマリ'': 選択セルが変更されたときマクロを起動する方法...
-''環境'': Calc
-''状態'': 未解決
-''投稿者'': [[ゆうこ]]
-''投稿日'': 2006-10-01 (日) 15:45:27
*** 質問 [#p84de463]
Excel & VBA ではよく使っているのですが、OOo Basic での実...
Excel の場合のソース。
Private Sub Worksheet_Activate()
Application.MoveAfterReturnDirection = xlToRight
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Ra...
tr = Target.Row
tc = Target.Column
If tc = 3 Then
Cells(tr+1, 1).Select
End If
End Sub
これをワークシートのモジュールにコーディングしています。
ワークシートを選択した際に、エンターキーを押したときの移...
3列目にカーソルがくると次の行の1列目にカーソルが移動し...
データをぱたぱた入力する際にとても便利です。
いろんなところを調べたのですが、
どうやってOOo Basic で記述するのか全くわかりません。
イベントリスナを使うのでしょうか?
*** 回答 [#k77845f1]
- 一つ目の、移動方向の変更はこんな感じでしょうか。
まず、アクティブシートが変更されたときに呼び出されるリス...
リスナーは Global 変数に保持しないと、リスナーを追加した...
あとは、リスナーのためのプロシージャを用意しておきます。
Global oActiveSheetChangeListener As Object
Public oController As Object
Sub Add_isActiveListener()
oController = ThisComponent.CurrentController
oActiveSheetChangeListener = CreateUnoListener( _
"ActiveSheetChange_", _
"com.sun.star.sheet.XActivationEventListener")
oController.addActivationEventListener( _
oActiveSheetChangeListener )
End Sub
Sub Remove_isActiveListener()
oController = ThisComponent.CurrentController
oController.removeActivationEventListener( _
oActiveSheetChangeListener )
End Sub
Sub ActiveSheetChange_activeSpreadsheetChanged( evt )
change_movedirection()
End Sub
Sub ActiveSheetChange_disposing( evt )
End Sub
Sub change_movedirection
Dim oGSheetSettings As Object
oGSheetSettings = CreateUnoService( _
"com.sun.star.sheet.GlobalSheetSettings")
oGSheetSettings.MoveDirection = _
com.sun.star.sheet.MoveDirection.RIGHT
End Sub
Enter キーを押したときの入力範囲の移動方向は、ツールメニ...
-二つ目の、セルのカーソルが列 C になったときに次の行の列 ...
ここでもやはりリスナーを追加してやります。選択範囲の変更...
Global oSelectionChangeListener As Object
Public oController As Object
Sub Add_SelectionChangeListener()
oController = ThisComponent.CurrentController
oSelectionChangeListener = CreateUnoListener( _
"SelectionChange_", _
"com.sun.star.view.XSelectionChangeListener" )
oController.addSelectionChangeListener( _
oSelectionChangeListener )
End Sub
Sub Remove_SelectionChangeListener()
oController = ThisComponent.CurrentController
oController.removeSelectionChangeListener( _
oSelectionChangeListener )
End Sub
Sub SelectionChange_selectionChanged( evt )
obj = evt.Source.Selection
If obj.ImplementationName = "ScCellObj" Then
tr = obj.CellAddress.Row
tc = obj.CellAddress.Column
If tc = 2 Then
ThisComponent.CurrentController.select( _
obj.SpreadSheet.getCellByPosition( 0, tr+1 ) )
oFrame = ThisComponent.CurrentController.getFrame()
executeCommand( ".uno:Deselect", oFrame )
End If
End If
End Sub
Sub SelectionChange_disposing( )
End Sub
Sub executeCommand( sCommand As String, oFrame As Object )
Dim aArr(0) As New com.sun.star.beans.PropertyValue
Dim oDispatch As Object
oDispatch = CreateUnoService( _
"com.sun.star.frame.DispatchHelper")
oDispatch.executeDispatch( _
oFrame, sCommand, "", 0, aArr())
End Sub
選択範囲が変更されたときに呼び出される SelectionChange_se...
-OOo Calc のセルのインデックスは 0 から始まるの
-getCellByPosition メソッドの引数は列、行の順
続く処理は順に、
セルを ''select'' メソッドで選択状態にします。セルの範囲...
セルが選択状態では不都合なので、セルの選択状態を解除して...
[[リスナー>OOoBasic/Generic/listener]]、[[Enter を押した...
一応、作成したファイルを添付しておきます。&ref(OOobbs2-1....
-- [[はにゃ?]] &new{2006-10-01 (日) 21:02:23};
- ".uno.GoToCell" を使うとセルを選択状態にしなくてもセル...
-".uno.GoToCell" を使ってみました。
Sub SelectionChange_selectionChanged( evt )
obj = evt.Source.Selection
If obj.ImplementationName = "ScCellObj" Then
tr = obj.CellAddress.Row
tc = obj.CellAddress.Column
If tc = 2 Then
oCell = obj.SpreadSheet.getCellByPosition( 0, tr+1 )
oCellRangeAddress = ThisComponent.createInstance( _
"com.sun.star.sheet.SheetCellRanges" )
oCellRangeAddress.insertByName( "cell", oCell )
sCellName = oCellRangeAddress.getRangeAddressesAsStr...
Dim aArr(0) As New com.sun.star.beans.PropertyValue
aArr(0).Name = "ToPoint"
aArr(0).Value = GetCellName( sCellName )
oFrame = ThisComponent.CurrentController.getFrame()
executeCommand( ".uno:GoToCell", oFrame, aArr() )
End If
End If
End Sub
Sub executeCommand( _
sCommand As String, oFrame As Object, aArg )
Dim oDispatch As Object
oDispatch = CreateUnoService( _
"com.sun.star.frame.DispatchHelper")
oDispatch.executeDispatch( _
oFrame, sCommand, "", 0, aArg())
End Sub
Function GetCellName( sRange As String ) As String
nCom = InStr( sRange, "." )
If nCom > 0 Then
GetCellName = Mid( sRange, nCom +1 )
Else
GetCellName = sRange
End If
End Function
-- [[はにゃ?]] &new{2006-10-01 (日) 23:03:53};
#comment
*** 感想,コメント,メモ [#z81007eb]
#comment
Page: