• ベストアンサー

VBからExcelのアクティブセルの位置を知る方法

VB6でExcel2000のワークシートを操作するプログラムを作成しています。次のようなことをやりたいと思ってます。 (1)Excelのワークシートを開く (2)ワークシートの1点をクリックして、アクティブセルとする。(例えばA1) (3)VBのプログラムのボタンを押すと、アクティブセルを基点に3×3を選択範囲とする。 そこで次のようなプログラムを書いてみました。 Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = GetObject(, "Excel.Application") If Err.Number Then MsgBox "Excel が起動されていません。" Err.Clear Else ' MsgBox "Excel はすでに起動中です。" Set xlBook = xlApp.Workbooks.Item(1) Set xlSheet = xlBook.Worksheets.Item(1)     'アクティブセルを取得する     'アクティブセルを3x3に拡張する計算 xlSheet.Range("3x3に拡張した範囲").Select Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing End If しかし、アクティブセルを取得する方法がわかりません。誰か教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

ActiveCellは各Sheetに1つありえると思います。 下記で、全ての各シートのアクチブセルをうまく捉えるようです。 シートの限定が必要のように思います。 下記後半(2)のコードを参考に質問のコードに組み込んでください。 (1) Sub test02() Dim sh As Worksheet For Each sh In ActiveWorkbook.Worksheets 'MsgBox sh.Name sh.Activate MsgBox ActiveCell.Address Next End Sub (2) 3X3の範囲は Sub test02() Dim sh As Worksheet For Each sh In ActiveWorkbook.Worksheets 'MsgBox sh.Name sh.Activate Range(ActiveCell, ActiveCell.Offset(3, 3)).Select Next End Sub でうまくいくようです。 あるシートだけを問題にするなら、シート名、シートのインデックスを指定して、限定すればどうですか。 Worksheets("Sheet1") Worksheets(1)

その他の回答 (1)

回答No.1

Active なセルは、複数のブックを同時に開いている Excel アプリケーションの中で唯一の存在です。 すなわち xlApp.ActiveCell が正解。

関連するQ&A