Excel VBA質問箱 IV

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

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


31091 / 76738 ←次へ | 前へ→

【50903】Re:イベントの実行を回避したいのですが
質問  Tsuyo  - 07/8/21(火) 23:19 -

引用なし
パスワード
   ▼kobasan さん:
お世話になります。私用と検証で時間が返事が遅れ申し訳ありませんでした。
Application.EnableEventsの位置を変え、Goto文を入れてみたのですが、
「今度は型が一致しません」というエラーが出ます。
出る位置はどういう法則か分かりませんが1.、2.の2か所です。
Goto文でJump_Exit:まで移動しているはずなのですが・・・

Private Sub Worksheet_Change(ByVal Target As Range)

'[[ 部品内訳入力画面 Macro ]]

''すべての行の見積単価を検索

'''品名に合わせたリストを選択し表示させる
  Application.EnableEvents = False
  If Not Intersect(Target, Range("C7:C26")) Is Nothing Then
   'On Error Resume Next 'エラーを無視する
   'イベントプロシージャーの実行を回避する
  
   If Target.Value = Enpty Then ←1.デバックで黄色表示
    Range(Target.Offset(, 1), Target.Offset(, 9)).ClearContents
    GoTo Jump_Exit
   Else
  
   '名前を付け
   名前 = 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
   Application.EnableEvents = True
  End If

'''品名が変更されたら見積金額を変更
  If Not Intersect(Target, Range("D7:D26")) Is Nothing Then
   MsgBox Target.Address
   'On Error Resume Next 'エラーを無視する
   ''支給品かどうかの判定
   If Target.Offset(, -2).Value <> True Then  ←2.デバック
    '仕入単価を検索
    Set 範囲 = Worksheets("部品T").Range("C5:H99")
    列番号 = 4
    検索値 = ActiveCell.Value
    仕入 = Application.WorksheetFunction. _
    VLookup(検索値, 範囲, 列番号, False)
    ActiveCell.Offset(, 2).Value = 仕入
    数量 = ActiveCell.Offset(, 1)
    仕入金額 = 仕入 * 数量
    ActiveCell.Offset(, 3).Value = 仕入金額
    '見積原価を検索
    Set 範囲 = Worksheets("部品T").Range("C5:H99")
    列番号 = 5
    検索値 = ActiveCell.Value
    見積原価 = Application.WorksheetFunction. _
    VLookup(検索値, 範囲, 列番号, False)
    ActiveCell.Offset(, 4).Value = 見積原価
    原価金額 = 見積原価 * 数量
    ActiveCell.Offset(, 5).Value = 原価金額
    '見積金額を定価とし検索
    Set 範囲 = Worksheets("部品T").Range("C5:H99")
    列番号 = 3
    検索値 = ActiveCell.Value
    定価 = Application.WorksheetFunction. _
    VLookup(検索値, 範囲, 列番号, False)
    見積金額 = 定価 * 数量
    ActiveCell.Offset(, 6).Value = 見積金額
   End If
  End If
 
'''数量が変更されたら各合計金額を変更
  If Not Intersect(Target, Range("E7:E26")) Is Nothing Then
   '入力後にセルを移動しない()
   Application.MoveAfterReturn = False
   'On Error Resume Next 'エラーを無視する
   '支給品かどうかの判断
   If Target.Offset(, -3).Value <> True Then
    数量 = Target.Offset(, 0).Value
    仕入単価 = Target.Offset(, 1).Value
    Target.Offset(, 2).Value = 仕入単価 * 数量
    原価単価 = Target.Offset(, 3).Value
    原価金額 = 原価単価 * 数量
    Target.Offset(, 4).Value = 原価金額
    '見積金額を定価とし検索
    Set 範囲 = Worksheets("部品T").Range("C5:H99")
    列番号 = 3
    検索値 = Target.Offset(, -1).Value
    定価 = Application.WorksheetFunction. _
    VLookup(検索値, 範囲, 列番号, False)
    Target.Offset(, 5).Value = 定価 * 数量
   End If
  End If

'''仕入金額が変更されたら仕入合計を変更
  If Not Intersect(Target, Range("I7:I26")) Is Nothing Then
   Sheets("メイン").Range("J13").Value = Range("G27").Value
   Sheets("メイン").Range("Q13").Value = Range("I27").Value
   Sheets("メイン").Range("X13").Value = Range("J27").Value
  End If
 
Jump_Exit:
  Application.MoveAfterReturn = True
End Sub

>を入れれば、それ以降のイベントが発せ発生しませんが、それ以後のコードを実行しないということではありません。
>
>Application.EnableEvents = False の意味をよく理解しておいてください。
>(ヘルプを見ておくと良いでしょう)

次の使用例は、BeforeSave イベントが発生しないように、ファイルを保存する前にイベントを無効にします。

Visual Basic for Applications
Application.EnableEvents = False
ActiveWorkbook.Save
Application.EnableEvents = True

ヘルプを見たのですが上記のようにしか書かれていませんでした。
発生しないのと、実行しないとではどう違うのでしょうか?
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 お礼

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