こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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
しかし、アクティブセルを取得する方法がわかりません。誰か教えてください。

投稿日時 - 2006-04-11 20:43:18

QNo.2086063

困ってます

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

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)

投稿日時 - 2006-04-11 23:55:14

ANo.2

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

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

投稿日時 - 2006-04-11 21:14:44

あなたにオススメの質問