アクティブセル
アクティブセルの行番号と列番号と列名を確認するマクロを作成しました。
Sub ma0030_ActiveCell Dim maCurrentS as Object maCurrentS = ThisComponent.CurrentSelection On Error Goto error1 With maCurrentS.CellAddress MsgBox _ " シート番号 = " + .Sheet + _ " シート名 = " + ThisComponent.Sheets.getByIndex(maCurrentS.CellAddress.Sheet).Name + chr(13) + _ " Row = " + .Row + _ " Column = " + .Column + " 列名 = " + maCurrentS.Columns.getByIndex(0).Name _ ,64,"ActiveCell" End With Exit Sub error1: MsgBox _ " セルが1つ以上選択されました。" + chr(13) + chr(13) +_ " 選択範囲の行数と列数マクロ (ma0020_Selection_EndRow_EndColumn) で計算します。" ,48 , "ActiveCell" ma0020_Selection_EndRow_EndColumn End Sub |
マクロの機能(添字は0から始ります)
アクティブシート番号、アクティブシート名
アクティブセルの行番号、列番号、列名の表示
マクロの説明
ThisComponent.Sheets(maCurrentS.CellAddress.Sheet).Name を
ThisComponent.Sheets(.Sheet).Name に変更すると
OOo1.0.3, OOo1.1.0, OOo1.1.1, OOo2.0, StarSuite8 では、Basicシンタックスエラーが発生しました。
OOo1.1.2, OOo1.1.3, OOo1.1.4, OOo1.1.5, StarSuite7 では、正常でした。
ThisComponent.CurrentSelection を
ThisComponent.CurrentController.ActiveSheet.getCellRangeByName("C25") に変更すれば、
マクロの実行結果は、選択範囲が、 "C25" に修正されます。
ThisComponent.CurrentController.ActiveSheet.getCellRangeByName("C25") と
ThisComponent.CurrentController.ActiveSheet.getCellRangeByName("C25").getCellByPosition(0,0) と
ThisComponent.CurrentController.ActiveSheet.getCellRangeByName("A21:C25").getCellByPosition(2,4)
のマクロの実行結果は、同じになります。
又、getCellRangeByName("A21:C25").getCellByPosition( Column_i,Row_i) の場合は
Column_i=0,1,2 ,Row_i=0,1,2,4 の数値を指定することが出来ます。
Excelでは、下記のようになります。
Sub X0030_ActiveCell()
Dim maStr As String
Dim maColumnName As String
With Application.ActiveWindow.ActiveCell
maStr = .Address(RowAbsolute:=False, ColumnAbsolute:=False)
maColumnName = ""
Do Until Left(maStr, 1) < "A" Or Left(maStr, 1) > "Z"
maColumnName = maColumnName & Left(maStr, 1)
maStr = Mid(maStr, 2)
Loop
MsgBox _
" シート番号= " & ThisWorkbook.ActiveSheet.Index & _
" シート名= " & ThisWorkbook.ActiveSheet.Name & Chr(13) & Chr(13) & _
" Row= " & .Row & " Column= " & .Column & " 列名= " & maColumnName _
, 64, "ActiveCell"
End With
End Sub
又、「Application.ActiveWindow.ActiveCell」を「ActiveCell」に
「ThisWorkbook.ActiveSheet」を「ActiveSheet」に変更した標準版では、下記のようになります。
Sub X0031_ActiveCell()
Dim maStr As String
Dim maColumnName As String
With ActiveCell
maStr = .Address(False, False)
maColumnName = ""
Do Until Left(maStr, 1) < "A" Or Left(maStr, 1) > "Z"
maColumnName = maColumnName & Left(maStr, 1)
maStr = Mid(maStr, 2)
Loop
MsgBox _
" シート番号= " & ActiveSheet.Index & _
" シート名= " & ActiveSheet.Name & Chr(13) & Chr(13) & _
" Row= " & .Row & " Column= " & .Column & " 列名= " & maColumnName _
, 64, "ActiveCell"
End With
End Sub
サンプルマクロ(Calc)
「ファイルのダウンロード」について 一旦ファイルを保存して
「ma0030_activecell.zip」を「ma0030_activecell.sxc」に変更後、実行して下さい。
2006年11月03日(金) 10:54:03 Modified by zizidai_3373