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

解決済みの質問

エクセル VBA ユーザーフォームの表示

excel2000にてシートのB列のみで65行目以下をWクリックするとユーザーフォームが表示されるというコードを教えてください。
以下は調べたりした結果のコードです。B列をWクリックすると表示される状態です。
B60とかをクリックしても表示されないようにしたいです。
Worksheetのコード
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
If Target.Column = 2 Then 'B列なら
  行 = Target.Row '行番号を取得する
  UserForm1.Show 'ユーザーフォームを表示する
End If
End Sub

標準モジュールのコード
Option Explicit
Public 行 As Variant '行番号

Sub auto_open()
Load UFnyuuryoku 'ユーザーフォームをメモリに読み込む
End Sub

ご存知の方よろしくお願いします。

投稿日時 - 2009-07-30 16:53:36

QNo.5168278

困ってます

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

回答は出てますが一言。

Cancel = True は下記●の位置が理に適っていると思われます。

'-------------------------------------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  If Target.Row >= 65 And Target.Column = 2 Then
    Cancel = True  '●ここ
    行 = Target.Row
    UFnyuuryoku.Show
  End If
End Sub
'--------------------------------------------------

それから、
>Sub auto_open()
>Load UFnyuuryoku 'ユーザーフォームをメモリに読み込む
>End Sub

これも不要でしょう。
以上です。
 

投稿日時 - 2009-07-30 17:24:49

お礼

ありがとうございます。希望通りの動きをしました。

投稿日時 - 2009-07-31 10:17:00

ANo.2

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

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

回答(2)

ANo.1

列(B列)はチェックしているのに、行をチェックしていませんね。
せっかく、
> 行 = Target.Row  '行番号を取得する
としているのに、それを利用してチェックをしなければ意味がありません。

1回チェックするだけなので、変数にいれなくてもよいですし、例えば、
If Target.Row < 65 Then Exit Sub
としておくとか。

投稿日時 - 2009-07-30 17:02:44

お礼

分かりやすい説明ありがとうございます。勉強になります。

投稿日時 - 2009-07-31 10:18:18

あなたにオススメの質問