Excel VBA質問箱 IV

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

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


28763 / 76732 ←次へ | 前へ→

【53261】Re:ファイル表示の方法
発言  かみちゃん  - 07/12/24(月) 11:48 -

引用なし
パスワード
   こんにちは。かみちゃん です。

横から失礼します。

>「セルに、表品番号を入力すると、同じ番号のファイルが開く」という設定で、
>下記のようにVBAを作成しましたが、今のままだと、違う列のセルに文字を入力し、「ENTER」を押す度に、ファイルが何度も画面に現れてきてしまいます。
>これを、一度きりしか表示されないようにするには、どうしたらよいのでしょうか?

まず、
>Private Sub Worksheet_Change(ByVal C As Range)
このコードは、シートモジュールに記述していますか?

標準のものは、
Private Sub Worksheet_Change(ByVal Target As Range)

End Sub
となっていると思いますので、わざわざ変数名を変えている意図がわかりません。
ただ、わかりにくいだけというなら、別ですが・・・

それで、
Private Sub Worksheet_Change(ByVal Target As Range)
 MsgBox Target.Address & "-->" & Target.Value
End Sub
とすれば、変更されたセルの番号と、セルの値が表示されます。

strPartsNumber = Worksheets("DATA").Range("C65536").End(xlUp).Offset(0, 4)
の部分は、何をしているのか、今ひとつわからないのですが、本当に
> セルに、表品番号を入力すると、同じ番号のファイルが開く
としたいならば、
strfileName = "Y:\検査\詳細" & "\" & Target.Value & ".pdf"
でいいと思います。

LRfileName = "Y:\検査\詳細" & "\" & LR & ".pdf"
の部分は、よくわかりませんので、ご自身で考えてください。

なお、このままですと、
Private Sub Worksheet_Change(ByVal Target As Range)

End Sub
を記述したシートのどのセルに入力しても、同様の動きをしますので、
 If Not Intersect(Target, Range("A1:A2")) Is Nothing Then
  MsgBox Target.Address & "-->" & Target.Value
 End If
とすると、A1:A2セルに入力したときだけ動作します。

他にも、セルの値を消去したらどうするとか、複数のセルが同時に変更されたら
どうするとかの対策も必要かと思います。

詳しくは、過去ログ等で「Worksheet_Change」を検索してみてください。

3 hits

【53138】ファイル表示の方法 KAO 07/12/17(月) 9:21 質問
【53140】Re:ファイル表示の方法 Jaka 07/12/17(月) 10:12 発言
【53260】Re:ファイル表示の方法 KAO 07/12/24(月) 10:07 質問
【53261】Re:ファイル表示の方法 かみちゃん 07/12/24(月) 11:48 発言
【53266】Re:ファイル表示の方法 KAO 07/12/24(月) 16:53 お礼

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