Excel VBA質問箱 IV

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

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


8213 / 76736 ←次へ | 前へ→

【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プロパティを調べてみてください

0 hits

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

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