エクセルVBAについて。VBA初心者です。

ユーザーがsheet1の任意のセルを選択。
その後、ユーザーの意志でsheet2に移動し、そこでダブルクリックのイベントプロシージャを実行します。
そのプロシージャの中で、sheet1でユーザーが選択したセルの位置情報を取得したいのですが、どうしたら良いかわかりません。
基本的かも知れませんが、よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:2006/06/05 15:59:02
  • 終了:2006/06/05 16:44:46

ベストアンサー

id:Kenju No.1

Kenju回答回数30ベストアンサー獲得回数22006/06/05 16:19:09

ポイント60pt

たぶん、Selectionはシートがアクティブじゃないと取れないと思います。

こんなんでいかがでしょう。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Application.ScreenUpdating = False

Worksheets(1).Activate

MsgBox Selection.Address

Worksheets(2).Activate

Application.ScreenUpdating = True

End Sub

id:maashi

ちゃんとできました。

ありがとうございました。

2006/06/05 16:43:03

その他の回答(1件)

id:Kenju No.1

Kenju回答回数30ベストアンサー獲得回数22006/06/05 16:19:09ここでベストアンサー

ポイント60pt

たぶん、Selectionはシートがアクティブじゃないと取れないと思います。

こんなんでいかがでしょう。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Application.ScreenUpdating = False

Worksheets(1).Activate

MsgBox Selection.Address

Worksheets(2).Activate

Application.ScreenUpdating = True

End Sub

id:maashi

ちゃんとできました。

ありがとうございました。

2006/06/05 16:43:03
id:ota2244 No.2

ota2244回答回数77ベストアンサー獲得回数42006/06/05 16:43:34

ポイント10pt

モジュールレベルでRange型のオブジェクトを定義し

「SelectionChange」イベントで保存、「BeforeDoubleClick」イベントで使用すれば良いかと思います。

具体的には

[標準モジュール-Module1]

Public SelRange As Range

[Sheet1]

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

 Set SelRange = Target

End Sub

[Sheet2]

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

 SelRange.Value = "1"

End Sub

とすれば、Sheet2のセルをクリックすると、Sheet1で選択した範囲に"1"が設定されます。

  • id:maashi
    ota2244さん、ありがとうございました。
    人力検索は初めてで、ota2244さんの回答を見る前に終了してしまいました。
  • id:tfujiyama
    http://q.hatena.ne.jp/1151570394 のご質問の件ですが、私でよろしければこちらにアドレスがあるので、送ってください。

    http://fuji.tea-nifty.com/

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません