Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6226 / 13644 ツリー ←次へ | 前へ→

【46489】セルを普通の選択状態にもどすには fryday 07/2/5(月) 14:37 質問[未読]
【46495】Re:セルを普通の選択状態にもどすには ハチ 07/2/5(月) 15:25 回答[未読]
【46497】Re:セルを普通の選択状態にもどすには Kein 07/2/5(月) 15:32 発言[未読]
【46502】Re:セルを普通の選択状態にもどすには fryday 07/2/5(月) 16:05 お礼[未読]
【46511】Re:セルを普通の選択状態にもどすには ハチ 07/2/5(月) 16:51 回答[未読]
【46512】Re:セルを普通の選択状態にもどすには Kein 07/2/5(月) 17:00 発言[未読]
【46518】Re:セルを普通の選択状態にもどすには fryday 07/2/5(月) 19:27 お礼[未読]

【46489】セルを普通の選択状態にもどすには
質問  fryday  - 07/2/5(月) 14:37 -

引用なし
パスワード
   sheetの特定セルをダブルクリックしてフォームを下記の記述で表示させています。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
   Dim CEL
   CEL = Left(Target.Address, 5)
   If CEL = "$Q$18" Or CEL = "$Q$19" Or CEL = "$Q$20" Then
  ※実際には40箇所を設定しています※   
    UserForm1.Show
   Else
   End If
End Sub

フォーム内のボタンでsheetにデータを入力するなどの処理をさせてます。
また閉じるボタンを作り、閉じるときに下記の記述で

Private Sub CommandButton1_Click()
Unload UserForm1
ActiveCell.Offset(1, 0).Select
End Sub

うまく下のセルに移動してくれるようになったのですが…

フォームを表示させたあと何もせずに、フォーム右上の×でフォームを閉じると
セルが選択された状態でセル内のカーソルが点滅しています、
これを通常のセルの選択状態に戻す、または下のセルに移動させるには
どうしたらよいのでしょうか?、ご指導、宜しくお願い致します。

【46495】Re:セルを普通の選択状態にもどすには
回答  ハチ  - 07/2/5(月) 15:25 -

引用なし
パスワード
    ▼fryday さん:
>sheetの特定セルをダブルクリックしてフォームを下記の記述で表示させています。
>
>Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
>   Dim CEL
>   CEL = Left(Target.Address, 5)
>   If CEL = "$Q$18" Or CEL = "$Q$19" Or CEL = "$Q$20" Then

'ここらへんで
Cancel = True

>  ※実際には40箇所を設定しています※   
>    UserForm1.Show
>   Else
>   End If
>End Sub
>
>フォーム内のボタンでsheetにデータを入力するなどの処理をさせてます。
>また閉じるボタンを作り、閉じるときに下記の記述で
>
>Private Sub CommandButton1_Click()
>Unload UserForm1
>ActiveCell.Offset(1, 0).Select
>End Sub
>
>うまく下のセルに移動してくれるようになったのですが…
>
>フォームを表示させたあと何もせずに、フォーム右上の×でフォームを閉じると
>セルが選択された状態でセル内のカーソルが点滅しています、
>これを通常のセルの選択状態に戻す、または下のセルに移動させるには
>どうしたらよいのでしょうか?、ご指導、宜しくお願い致します。

>  ※実際には40箇所を設定しています※
これは・・全部Or でつないで書いてるんでしょうか?
Leftで切り出すのではなくて
他の方法でチェックしたほうが良いのでは?
Intersect とか。


【46497】Re:セルを普通の選択状態にもどすには
発言  Kein  - 07/2/5(月) 15:32 -

引用なし
パスワード
   >フォーム右上の×でフォームを閉じる
このときに発生するイベントは

Private Sub UserForm_Terminate()

というタイトルのマクロです。
これにセルを移動するコードを記述してみて下さい。

【46502】Re:セルを普通の選択状態にもどすには
お礼  fryday  - 07/2/5(月) 16:05 -

引用なし
パスワード
   ハチさん、Keinさん、有り難うございます

お二方の指摘されたヒントで、無事にレクト状態になりました♪
しかしCancel=true は簡単な記述なんですねぇ、
確か…BeforeDoubleClickのヘルプ説明にCancelについて
書いてあったようなんですが…理解出来ませんでした。

さて、ハチさんご指摘の…
>これは・・全部Or でつないで書いてるんでしょうか?
>Leftで切り出すのではなくて
>他の方法でチェックしたほうが良いのでは?
>Intersect とか。

ズハリOrでつないでます…お恥ずかしい…
Intersectのヘルプ説明読んで見ました〜
そうですねぇ、セル範囲に名前を設定しておいて、
ダブルクリックしたセルが その名前こ含まれていたら
フォームを表示するが簡単ですね。
ただスキルがなくてその記述が…
改めてご指導頂ければ幸いです。

【46511】Re:セルを普通の選択状態にもどすには
回答  ハチ  - 07/2/5(月) 16:51 -

引用なし
パスワード
   ▼fryday さん:
>ズハリOrでつないでます…お恥ずかしい…
>Intersectのヘルプ説明読んで見ました〜
>そうですねぇ、セル範囲に名前を設定しておいて、
>ダブルクリックしたセルが その名前こ含まれていたら
>フォームを表示するが簡単ですね。
>ただスキルがなくてその記述が…
>改めてご指導頂ければ幸いです。

セルの範囲に名前を付けて良いのなら、
新規ブックで試してみてください。

対象のセルに名前"対象"をつけておいてください。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  
  If Not Application.Intersect(Target, Range("対象")) Is Nothing Then
    Cancel = True
    MsgBox "対象です"
  End If
End Sub

【46512】Re:セルを普通の選択状態にもどすには
発言  Kein  - 07/2/5(月) 17:00 -

引用なし
パスワード
   かなりバラバラの範囲なら、名前を付ける方法も効果的ですが
> If CEL = "$Q$18" Or CEL = "$Q$19" Or CEL = "$Q$20" Then
「列はQ列に限定」というような条件なら、

With Target
  If .Column <> 17 Then Exit Sub   
  Select Case .Row
   Case 18 To 20, 23, 29, 35 To 40
   Case Else: Exit Sub
  End Select
End With

などと分岐することも出来ます。もちろん列も Select Case して複数の
列に対応できます。

【46518】Re:セルを普通の選択状態にもどすには
お礼  fryday  - 07/2/5(月) 19:27 -

引用なし
パスワード
   ハチさん、Keinさん
お礼のレス遅くなりすみません

KeinさんのColumn とRowでは
ifとSelect Case組み合わせで可能なことが判りました。

ハチさんセル範囲では
↓の記述が判らなかったので助かりました。
>Not Application.Intersect(Target, Range("対象")) Is Nothing Then

いろいろな方法で可能になるんですね!
実は…Or繋ぎは私のエクセルマクロに沢山使ってます…
早速ご指導頂いた方法を状況に合わせて試して見たいと思います
他にも応用ができそうですし、大変勉強になりました

お二方には(^人^)感謝です♪
また壁にぶつかったときはお邪魔させて頂きますので、
今後とも宜しくお願い致します。
本当に有り難う御座いました。

6226 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free