ExcelのVBAで教えてください。
Private Sub Worksheet_Changeについて教えて下さい。
まず初歩的なご質問ですが、Private Sub Worksheet_Changeを1つのシートモジュールに1個以上組むことは可能なのでしょうか?
例えばネットで以下のようにsheet1に
Private Sub Worksheet_Change
Private Sub Worksheet_Change_1
_1を付けてるのを見たことがあったので試してみましたが動作しませんでした。
今回行いたいのは1つが、指定したセルが変更されると次の指定セルに移動する。
以下がマクロです。
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Select Case Target.Address(0, 0)
Case "E14"
[E15].Select
Case "E15"
[E26].Select
Case "E26"
[E22].Select
Case "E22"
[E25].Select
Case "E25"
[E29].Select
Case "E29"
[E20].Select
Case "E20"
[E21].Select
Case "E21"
[E16].Select
Case "E16"
[E17].Select
Case "E17"
[E27].Select
Case "E27"
[E23].Select
Case "E23"
[E24].Select
Case "E24"
[E28].Select
Case "E28"
[E18].Select
Case "E18"
[E19].Select
End Select
End Sub
もう一つが、あるセルに数値をいれると他のブックのシートからそのシートの指定した行のセルの
数値を読み込んできて、元のブックのシートに数値を書き込むといったもです。
以下がマクロです。
Private Sub Worksheet_Change_1(ByVal Target As Excel.Range)
Dim w As Workbook
Dim c As Range
On Error Resume Next
Set xCur = Selection
If Application.Intersect(Target, Range("F3")) Is Nothing Then Exit Sub
If Range("F3") = "" Then Exit Sub
Application.ScreenUpdating = False
'転記元のブックを開いて逆順で検索する
Set w = Workbooks.Open("V:\新3係(FIA・iPot)\(2)新4係(iPot)\ipot進捗\履歴管理\(9)KBB39360 X8 imm1.35 G1履歴、本体履歴 .xls")
Set c = w.Worksheets("対物").Range("B:B").Find(what:=Range("F3").Value, LookIn:=xlValues, lookat:=xlPart, searchdirection:=xlPrevious)
'見つけた(一番下の)セルを基準に転記する
If Not c Is Nothing Then
Range("F4").Value = c.Offset(0, 1).Value
End If
w.Close False
Application.ScreenUpdating = True
End Sub
ともに1つずつなら問題なく動作するのですが、2個のマクロを組むと片方しか動作しません。
多分ものすごく初歩的な事だとは思いますが、御指導の程宜しくお願いします。
お礼
ありがとうございます。 VBAの中で、シートを行ったり来たりするので、VBA実行状況用のシートを作っておくっていうのもありかもしれませんね。