Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Professional : Excel 2010)
ダブルクリックで任意のセルを参照したい
投稿日時: 18/07/09 14:32:31
投稿者: hispie

初心者です。
 
メンバーさんの試験内容の採点表を作成しようと思っています。
ダブルクリックで配点が表示されるようにしたいです。
 
第一段階では、ダブルクリックで″1″が入力され、別のセルで計算し、合計に参照しました。
これを一度で行いたいのですが、
(ダブルクリックで上記の配点が表示される)
 
  A   B   C   D   E   合計
1 配点  2   3   1   4    10
2 鈴木 
3 小原
4 田中
5 上野
 
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 
Dim a
Dim b
For a = 2 To 4
For b = 2 To 5
 
With Target
 
If .Value = "" Then
.Value = Cells(b, a).Value
Else
.Value = ""
End If
End With
Cancel = True
 
Next
Next
End Sub
 
ダブルクリックしても何も表示されません。
あちこちのセルをブレークポイントで確認してもCells(2, 2).Value 以外表示されません。
Cells(b, a).Value
の表記がまちがっているのだと思うのですが。
 
それともBeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)を選択したのが間違いでしょうか?
 
初心者にて申し訳ありませんがご教示ください。
また、説明不足の場合、ご指摘ください。
よろしくお願いします。

回答
投稿日時: 18/07/09 15:59:13
投稿者: George

引用:
第一段階では、ダブルクリックで″1″が入力され、別のセルで計算し、合計に参照しました。

これは、どの部分を言っていますでしょうか?
 
あなたは仕様を把握していると思いますが、回答者はあなたのPCの状態は見えません。
 
示された表に対して
・何を行いたいのか
と言うことだと思います。
 
あとはどんなトリガーで実装だと思いますが如何でしょうか?
 
>あちこちのセルをブレークポイントで確認してもCells(2, 2).Value 以外表示されません。
Cells(2, 2).Value はどのように表示されますか?
私の環境ではどこをダブルクリックしても何も表示されませんし、
1行目の値が入っているところをダブルクリックすると値が消えます。

投稿日時: 18/07/09 16:12:17
投稿者: hispie

説明不足で申し訳ありません。
 
>

George さんの引用:
引用:
第一段階では、ダブルクリックで″1″が入力され、別のセルで計算し、合計に参照しました。

これは、どの部分を言っていますでしょうか?
 
B2やC3などの空白セルをダブルクリックして”1”を立てることはできました
その際は
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 
With Target
If .Value = "" Then
.Value = "1"
Else
.Value = ""
End If
End With
Cancel = True
 
End Sub
と記入しました
 
>あなたは仕様を把握していると思いますが、回答者はあなたのPCの状態は見えません。
すみません、質問入力時で反映されていると思っていました。
Win7 office2010 です
 
>示された表に対して
・何を行いたいのか
と言うことだと思います。
 
はい
B2やC3などの空白セルをダブルクリックした際にダブルクリックしたセルの上部にある配点列の数字を表記したいのです。
 
>あとはどんなトリガーで実装だと思いますが如何でしょうか?
 
>>あちこちのセルをブレークポイントで確認してもCells(2, 2).Value 以外表示されません。
Cells(2, 2).Value はどのように表示されますか?
ブレークポイントで確認すると、Cells(b, a).Value のb=2,a=2 と表示され、
セル上では何も表示されません。
 
>私の環境ではどこをダブルクリックしても何も表示されませんし、
1行目の値が入っているところをダブルクリックすると値が消えます。

回答
投稿日時: 18/07/09 16:26:29
投稿者: Suzu

引用:
B2やC3などの空白セルをダブルクリックした際にダブルクリックしたセルの上部にある配点列の数字を表記したいのです。

 
この部分の説明が欲しかったですね。
 
このプロシージャの場合の 「Target」はダブルクリックをしたセルを表します。
 
 
セルの上部(1行目)の値を参照するには、
Cells(1, Target.Column).Value
で良いでしょう。

回答
投稿日時: 18/07/09 16:29:15
投稿者: WinArrow
投稿者のウェブサイトに移動

引用:
B2やC3などの空白セルをダブルクリックした際にダブルクリックしたセルの上部にある配点列の数字を表記したいのです。

 
まず、Target(ダブルクリックしたセル)が、
1行目でないこと、AND 1列目でないことをチェックが必要です。
 
1行目の配点を参照したいのでしたら、ループする必要はありません。
 
Target.Value = Cells(1, Target.Column).value
 
で転記出来ます。
 
変数:a,bも必要なし。

回答
投稿日時: 18/07/09 16:37:53
投稿者: George

引用:
引用:
第一段階では、ダブルクリックで″1″が入力され、別のセルで計算し、合計に参照しました。

>これは、どの部分を言っていますでしょうか?
B2やC3などの空白セルをダブルクリックして”1”を立てることはできました
その際は
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 
With Target
If .Value = "" Then
.Value = "1"
Else
.Value = ""
End If
End With
Cancel = True
 
End Sub
と記入しました

これが仰っている第1段階ということなのでしょうか?
 
引用:

>示された表に対して
・何を行いたいのか
と言うことだと思います。
 
はい
B2やC3などの空白セルをダブルクリックした際にダブルクリックしたセルの上部にある配点列の数字を表記したいのです。

上部とはどこのことを指して言っていますか?
 
単純にやりたいことは、
ダブルクリックしたセルの列、1行目の値をダブルクリックしたセルに転記したい
ということではないのでしょうか?
もし違ったらすみません。再度やりたいことを整理して説明してください。
 
示されたコードだと繰り返しをしていますが、何のために繰り返すのでしょうか?

投稿日時: 18/07/09 18:27:46
投稿者: hispie

度々、説明不足ですみません。
 

George さんの引用:
引用:
引用:
第一段階では、ダブルクリックで″1″が入力され、別のセルで計算し、合計に参照しました。

>これは、どの部分を言っていますでしょうか?
B2やC3などの空白セルをダブルクリックして”1”を立てることはできました
その際は
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 
With Target
If .Value = "" Then
.Value = "1"
Else
.Value = ""
End If
End With
Cancel = True
 
End Sub
と記入しました

これが仰っている第1段階ということなのでしょうか?
 
 
はいそうです。
 
引用:

>示された表に対して
・何を行いたいのか
と言うことだと思います。
 
はい
B2やC3などの空白セルをダブルクリックした際にダブルクリックしたセルの上部にある配点列の数字を表記したいのです。

上部とはどこのことを指して言っていますか?
 
配点が入力されているセルのことです。
 
単純にやりたいことは、
ダブルクリックしたセルの列、1行目の値をダブルクリックしたセルに転記したい
ということではないのでしょうか?
もし違ったらすみません。再度やりたいことを整理して説明してください。
 
はい、そのとおりです。
 
示されたコードだと繰り返しをしていますが、何のために繰り返すのでしょうか?

 
引用したい列のセルの数字を引っ張ってきたかったので、ループが必要なのでは?と思いました。
 
今後はもっときちんと伝わるよう努めます。
ありがとうございます。

投稿日時: 18/07/09 18:28:26
投稿者: hispie

Suzu さんの引用:
引用:
B2やC3などの空白セルをダブルクリックした際にダブルクリックしたセルの上部にある配点列の数字を表記したいのです。

 
この部分の説明が欲しかったですね。
 
このプロシージャの場合の 「Target」はダブルクリックをしたセルを表します。
 
 
セルの上部(1行目)の値を参照するには、
Cells(1, Target.Column).Value
で良いでしょう。

 
できました。つたない説明でご迷惑をおかけしました。
ありがとうございます。

投稿日時: 18/07/09 18:29:31
投稿者: hispie

WinArrow さんの引用:
引用:
B2やC3などの空白セルをダブルクリックした際にダブルクリックしたセルの上部にある配点列の数字を表記したいのです。

 
まず、Target(ダブルクリックしたセル)が、
1行目でないこと、AND 1列目でないことをチェックが必要です。
 
1行目の配点を参照したいのでしたら、ループする必要はありません。
 
Target.Value = Cells(1, Target.Column).value
 
で転記出来ます。
 
変数:a,bも必要なし。

 
ループ不要なんですね、1列目を見るということですね。
できました。
ありがとうございます。

投稿日時: 18/07/09 18:30:26
投稿者: hispie

皆さん、説明不足でご迷惑をおかけしました。
 
親切にご教示いただきありがとうございました。