アクティブセル

アクティブセルの行番号と列番号と列名を確認するマクロを作成しました。

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




スマートフォン版で見る