Excel VBA質問箱 IV

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

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


1490 / 13646 ツリー ←次へ | 前へ→

【74099】イベントの呼び出し hand 13/4/18(木) 3:53 質問[未読]
【74100】Re:イベントの呼び出し ichinose 13/4/18(木) 6:18 発言[未読]

【74099】イベントの呼び出し
質問  hand  - 13/4/18(木) 3:53 -

引用なし
パスワード
   毎々お世話になっております。

現在参考書を読んでマクロに取り組んでいる初心者です。

名簿を作成しており、それをわかりやすいようフォームを作成しました。

以下のコードで1行目の番号をダブルクリックするとフォームを呼び出すよう参考書を見て組みました。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 If Target.Column = 1 Then
   Worksheets("Sheet2").Activate
   Worksheets("Sheet2").Range("B2").Value = Target.Row - 3
   Cancel = True
 End If
End Sub

そこで質問なのですが、現在のコードでは1行目のみに対応しております。
1行目も3行目もダブルクリックした際に表示させるにはどのように組めば良いでしょうか??

また、行で表示させるのではなく、文字(例:【佐藤太郎】、【鈴木次郎】)をクリックした際に各々のフォームを呼び出す方法はあるのでしょうか??

教えてください。

よろしくお願い致します。

【74100】Re:イベントの呼び出し
発言  ichinose  - 13/4/18(木) 6:18 -

引用なし
パスワード
   おはようございます。


>名簿を作成しており、それをわかりやすいようフォームを作成しました。
>
>以下のコードで1行目の番号をダブルクリックするとフォームを呼び出すよう参考書を見て組みました。
このフォームとは 何のことですか?データ? ということですか?

それとシートに名簿を作成してあるなら、そのレイアウトを
きちんと記述しててください。
これがプログラムの入力データになるのですから、
詳細に記述する必要があります。この入力データを見て、
プロフラムを作るのですから、入力データの詳細も記述しなければ
閲覧者は、プログラムの内容が把握できませんよね!!

それと必要なのは、出力先のレイアウトもです。
Sheet2が出力先なら、ここの詳細な情報も必要です。
そうは、思いませんか?


入力データ記述例

     A   B   C   D  ・・・・
 1
 2
 3  番号  項目1  氏名 ・・・・・・・・
 4   1   xx   あああああ
 5   2   xx   いいいいいい
 6   3   xx   うううううう
 7   4   xx   ええええええ
 ・
 ・

>1行目も3行目もダブルクリックした際に表示させる
これは、1列目も3列目も・・・ という意味ですか?

だとしたら、

>Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  If Target.Column = 1 Or Target.Column = 3 Then


このように Or演算子(OrとAndは、よく使われるので調べてみてください)
を使うとよさそうですが・・・・。
これ実は、1列目をダブルクリックした時でも
1行目や2行目(私の表例では、データがない行)をダブルクリックした時でも
プログラムは作動してしまいます。
プログラムは データがある行ダブルクリックした時に作動させたいのですよね?
実際には、もうちょっと適切な方法があると思いますが、
とりあえず、

  If Target.Column = 1 Or Target.Column = 3 Then

ダブルクリックされたセルが 1列目または、3列目 且つ 4行以上

このIf文にTarget.Rowを使って上記のようにもう一つ条件を追加してみてください

 If Target.Column = 1 Or Target.Column = 3 Then  'ここに条件を追加
   Set Target = Cells(Target.Row, 1) 'クリックされたセルの1列目のセル
   Worksheets("Sheet2").Activate
   Worksheets("Sheet2").Range("B2").Value = Target.Value
   Cancel = True
 End If

後は、このようにしておけばよさそうですが、検討してみてください

>文字(例:【佐藤太郎】、【鈴木次郎】)をクリックした際に
クリックされたA列(1列)のセルがわかりますから、
Target.Offset(0,2).Value

で3列目のセルの値が取り出せます


Offsetプロパティを調べてみてください

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