Excel VBA質問箱 IV

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

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


31141 / 76738 ←次へ | 前へ→

【50852】Re:イベントの実行を回避したいのですが
発言  kobasan  - 07/8/18(土) 21:17 -

引用なし
パスワード
   皆さん今晩は。

仕事から帰ってみると、レスが進んでいるのですが、遅ればせながら、こんな感じでどうでしょうか。

'(1)(2)(3)のようにすれば、ClearContentsによるイベントは発生しません。

今は、On Error Resume Next は使わない方が良いので、削除しています。

Private Sub Worksheet_Change(ByVal Target As Range)

  Application.EnableEvents = False  '<==●(1)
  If Not Intersect(Target, Range("C7:C26")) Is Nothing Then
    If Target.Value = Empty Then
      Range(Target.Offset(, 1), Target.Offset(, 9)).ClearContents
      GoTo Jump_Exit '<==●(2)
    Else
      '''品名に合わせたリストを選択し表示させる
      '-----------------------
      MsgBox "名前を付け"
      '以下のコードは、上記 MsgBox "名前を付け"で代用し、検討していません。
      '従って、コメントにしています。
      '
      '----------------------
      '名前を付け
      '名前 = ActiveCell.Value
      '品目を選択した行の右隣のリストを名前付けしたものに変更
      'With Selection.Offset(0, 1).Validation
      '  .Delete
      '  .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
      '    xlBetween, Formula1:="=" & "部品_" & 名前
      '  .IgnoreBlank = True
      '  .InCellDropdown = True
      '  .IMEMode = xlIMEModeNoControl
      '  .ShowInput = True
      '  .ShowError = True
      'End With
    End If
  End If

  '※下記のコードが動いてしまっているようです。 
  '●下記のコードは止まっているはず●
  If Not Intersect(Target, Range("D7:D26")) Is Nothing Then
    MsgBox "省略"
  End If
 
  If Not Intersect(Target, Range("E7:E26")) Is Nothing Then
    MsgBox "省略"
  End If

  If Not Intersect(Target, Range("I7:I26")) Is Nothing Then
    MsgBox "省略"
  End If
  
Jump_Exit:   '<==●((3)
  Application.EnableEvents = True
End Sub


>Application.EnableEvents = False
について、正しく理解しておく必要があるように思います。

Application.EnableEvents = False

を入れれば、それ以降のイベントが発せ発生しませんが、それ以後のコードを実行しないということではありません。

Application.EnableEvents = False の意味をよく理解しておいてください。
(ヘルプを見ておくと良いでしょう)


>>又、どういう時にイベントを抑止したいのでしょう?
>>今のコードだと
>>Not Intersect(Target, Range("C7:C26")) Is Nothing =TRUE
>>の時しかイベントの抑止は効かないようになってますが。
> 当然人間がやることなので、見積の変更や失敗がありますので、内容をCLEARするときもありますが、その削除の仕方をC列を消すとその行全ての内容が消えるようにしました。
> 問題は削除されたあとに4.〜6.のイベントが働いて不要な”0”がなぜかF〜P行まで記入されてしまうことです。

上記の問題もクリアされていると思います。
試してみてください。

0 hits

【50839】イベントの実行を回避したいのですが Tsuyo 07/8/17(金) 18:12 質問
【50842】Re:イベントの実行を回避したいのですが neptune 07/8/17(金) 19:57 発言
【50843】Re:イベントの実行を回避したいのですが kobasan 07/8/18(土) 0:20 発言
【50844】Re:イベントの実行を回避したいのですが neptune 07/8/18(土) 8:28 発言
【50845】Re:イベントの実行を回避したいのですが Tsuyo 07/8/18(土) 9:07 質問
【50846】Re:イベントの実行を回避したいのですが neptune 07/8/18(土) 9:42 発言
【50847】Re:イベントの実行を回避したいのですが Tsuyo 07/8/18(土) 11:04 質問
【50851】Re:イベントの実行を回避したいのですが neptune 07/8/18(土) 21:11 発言
【50900】Re:イベントの実行を回避したいのですが [名前なし] 07/8/21(火) 22:44 質問
【50852】Re:イベントの実行を回避したいのですが kobasan 07/8/18(土) 21:17 発言
【50903】Re:イベントの実行を回避したいのですが Tsuyo 07/8/21(火) 23:19 質問
【50909】Re:イベントの実行を回避したいのですが kobasan 07/8/22(水) 6:42 発言
【50915】Re:イベントの実行を回避したいのですが Tsuyo 07/8/22(水) 9:30 お礼

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