excel VBA 2つのプロシージャを1つに
いつもお世話になっております。
初心者ですが、苦しみながらもexcelでデータベースを作成しております。
さて Worksheet_Change のイベントが2つあり、これを一つにまとめようとしているのですが、がんばっているんですが、自分ではどうしてもうまくいかない為、投稿させていただきました。
コードは下記2つです。
また、どういったものを作ろうとしているのか説明不足でご指摘を頂戴することもありますので、試作段階のファイルですが、アップローダーにあげさせていただきました。確認頂ければ幸いです。
■アプロダ 投稿No 4514
http://www.kent-web.com/pubc/book/test/uploader/uploader.cgi
■作ろうとしているデータベースの概要
inputシート・・・データを直接入力して、また、データや写真を閲覧をするシート
dataシート・・・データを格納するシート、オートフィルタを使って、曖昧検索フィルタもここでかけたりします。
どうか良いお知恵を拝借させていただきたくよろしくお願いします。
'一つ目のプロシージャ(Noセルに数字が入ると、そのNoのデータを自動的にdataシートまで読みにいって表示させます)
Private Sub WorkSheet_Change(ByVal Target As Range)
'No入力してデータ反映
Dim fRange As Range
Dim fRow As Long
If Target.row <> 4 Then Exit Sub
If Target.Column <> 3 Then Exit Sub
Set fRange = Sheets("data").Columns(1).Find(What:=Range("C4").Value, _
LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows)
If (fRange Is Nothing) Then '見つからなかった?
MsgBox "入力された顧客コードが存在しません。", vbExclamation
Exit Sub
End If
fRow = fRange.row '検索された顧客DCの行位置を求める
Range("F4").Value = Sheets("data").Cells(fRow, 2).Value
Range("C5").Value = Sheets("data").Cells(fRow, 3).Value
Range("C6").Value = Sheets("data").Cells(fRow, 4).Value
Range("C7").Value = Sheets("data").Cells(fRow, 5).Value
Range("F5").Value = Sheets("data").Cells(fRow, 6).Value
End Sub
'二つ目のプロシージャ(写真を表示させるためのコードです)
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address
Case "$k$4"
myLoadPicture "board_Image", Target.Text, Range("I5")
Case "$K$17"
myLoadPicture "map_Image", Target.Text, Range("I18")
Case Else
Exit Sub
End Select
End Sub
お礼
その後いろいろやってみて解決しました。 要はWorksheet_Changeを一枚のシートに二つ入れようとしたのが間違いで、一つの Private Sub Worksheet_Change End Sub の間にやりたい事を別々に二つ記述すれば良かったんですね。 参考になりました。 回答ありがとうございました。