Excel VBA質問箱 IV

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

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


1116 / 13645 ツリー ←次へ | 前へ→

【76262】セルダブルクリック 複数マクロ コーヒー 14/10/22(水) 15:19 発言[未読]
【76263】Re:セルダブルクリック 複数マクロ 独覚 14/10/22(水) 15:52 回答[未読]
【76264】Re:セルダブルクリック 複数マクロ コーヒー 14/10/22(水) 16:44 お礼[未読]

【76262】セルダブルクリック 複数マクロ
発言  コーヒー  - 14/10/22(水) 15:19 -

引用なし
パスワード
   はじめまして。
A列空白セルをダブルクリックしたら、「今日の日付」、H列空白セルをダブルクリックしたら「●」が入るようにしたいです。A列の場合は上手くいくのですが、H列には何も反映がされません。調べてみましたが、分からず質問させていただきました。

ご教授をお願いいたします。

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


If Intersect(Target, Range("A2:A10000")) Is Nothing Then Exit Sub

 
If ActiveCell = "" Then
ActiveCell = Date
Cancel = True
End If

If Intersect(Target, Range("H2:H10000")) Is Nothing Then Exit Sub

 
If ActiveCell = "" Then
ActiveCell = "●"
Cancel = True
End If


End Sub

【76263】Re:セルダブルクリック 複数マクロ
回答  独覚  - 14/10/22(水) 15:52 -

引用なし
パスワード
   ▼コーヒー さん:
Exit Sub
はそこでマクロを抜ける命令です。

なので今のままでは
>If Intersect(Target, Range("A2:A10000")) Is Nothing Then Exit Sub
で、TargetがA2:A10000以外の場合、そこでマクロを抜けてしまってマクロを終了することになります。

回避策としてはいくつかありますがたとえば

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

  If Not Intersect(Target, Range("A2:A10000")) Is Nothing Then
 
    If Target.Value = "" Then
      Target.Value = Date
      Cancel = True
    End If
  ElseIf Not Intersect(Target, Range("H2:H10000")) Is Nothing Then
    If Target.Value = "" Then
      Target.Value = "●"
      Cancel = True
    End If
  End If

End Sub

としてみたり、フラグを追加して

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim CHK_FLG  As Boolean
  
  CHK_FLG = True
  If Intersect(Target, Range("A2:A10000")) Is Nothing Then CHK_FLG = False
  
  If CHK_FLG Then
    If Target.Value = "" Then
      Target.Value = Date
      Cancel = True
    End If
    Exit Sub
  End If
  
  CHK_FLG = True
  If Intersect(Target, Range("H2:H10000")) Is Nothing Then CHK_FLG = False
  
  If CHK_FLG Then
    If Target.Value = "" Then
      Target.Value = "●"
      Cancel = True
    End If
  End If

End Sub

で、どうでしょうか?
後者の場合は処理の追加に対応しやすいです。

【76264】Re:セルダブルクリック 複数マクロ
お礼  コーヒー  - 14/10/22(水) 16:44 -

引用なし
パスワード
   ▼独覚 さん:

ご丁寧に応用例までご教授いただき、ありがとうございました!
色々と勉強になります。


>▼コーヒー さん:
>Exit Sub
>はそこでマクロを抜ける命令です。
>
>なので今のままでは
>>If Intersect(Target, Range("A2:A10000")) Is Nothing Then Exit Sub
>で、TargetがA2:A10000以外の場合、そこでマクロを抜けてしまってマクロを終了することになります。
>
>回避策としてはいくつかありますがたとえば
>
>Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
>
>  If Not Intersect(Target, Range("A2:A10000")) Is Nothing Then
> 
>    If Target.Value = "" Then
>      Target.Value = Date
>      Cancel = True
>    End If
>  ElseIf Not Intersect(Target, Range("H2:H10000")) Is Nothing Then
>    If Target.Value = "" Then
>      Target.Value = "●"
>      Cancel = True
>    End If
>  End If
>
>End Sub
>
>としてみたり、フラグを追加して
>
>Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
>  Dim CHK_FLG  As Boolean
>  
>  CHK_FLG = True
>  If Intersect(Target, Range("A2:A10000")) Is Nothing Then CHK_FLG = False
>  
>  If CHK_FLG Then
>    If Target.Value = "" Then
>      Target.Value = Date
>      Cancel = True
>    End If
>    Exit Sub
>  End If
>  
>  CHK_FLG = True
>  If Intersect(Target, Range("H2:H10000")) Is Nothing Then CHK_FLG = False
>  
>  If CHK_FLG Then
>    If Target.Value = "" Then
>      Target.Value = "●"
>      Cancel = True
>    End If
>  End If
>
>End Sub
>
>で、どうでしょうか?
>後者の場合は処理の追加に対応しやすいです。

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