以前、Sheet2!D列をダブルクリックすると、Sheet1から抽出した数値をSheet2!C列に表示するようにしていたのですが、ダブルクリックするセルを変更したらわけがわからなくなってしまいました。
以下はそのときのソースです。
どのようにしたら正常に動作しますか?
Sheet1のB列には番号、D列以降に日付が入っています。
Sheet2のC列にはSheet1!B列と同じ番号が順不同で入っています。
やりたいことは、Sheet2!I列(空白セルならどこでも良いが便宜上I列としたいです)をダブルクリックしたら、Sheet1の今日の日付の同じ番号の数量をSheet2!H列に表示したいです。
例えば今日が7/1として、Sheet2!I12をクリックしたら320がSheet2!H12に表示されるようにしたいです。
おねがいします。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim c As Range, r As Range
If Intersect(Target, Range("D:D")) Is Nothing Then Exit Sub
If Target.Row > 2 Then
Cancel = True
With Worksheets("Sheet1")
Set c = .Rows(151).Find(what:=DateValue(Date), LookIn:=xlFormulas, lookat:=xlWhole)
If Not c Is Nothing Then '//←念のため//
Set r = .Range("B:B").Find(what:=Target.Offset(, -2), LookIn:=xlValues, lookat:=xlWhole)
Target.Offset(, -1) = .Cells(r.Row + 4, c.Column)
End If
End With
End If
End Sub
No.1ベストアンサー
- 回答日時:
こんばんは!
お示しの画像通りの配置だとします。
Sheet2のシートモジュールです。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim c As Range, r As Range
Dim wS As Worksheet
Set wS = Worksheets("Sheet1")
If Intersect(Target, Range("I:I")) Is Nothing Then Exit Sub
With Target
If .Row > 2 Then
Cancel = True
Set c = wS.Rows(151).Find(what:=DateValue(Date), LookIn:=xlFormulas, lookat:=xlWhole)
If Not c Is Nothing Then
Set r = wS.Range("B:B").Find(what:=Cells(.Row, "C"), LookIn:=xlValues, lookat:=xlWhole)
If Not r Is Nothing Then
.Offset(, -1) = wS.Cells(r.Row + 4, c.Column)
Else
MsgBox "該当番号なし"
End If
Else
MsgBox "該当日付なし"
End If
End If
End With
End Sub
こんな感じで大丈夫だと思います。m(_ _)m
No.2
- 回答日時:
私の方では、画像をみても要領が、今ひとつわからないのですが、
>Sheet2!I12をクリックしたら320がSheet2!H12に表示されるようにしたいです。
>Sheet2!I列(空白セルならどこでも良いが便宜上I列としたいです)
I12とかは任意の行だけでなく、列も任意の場所ということではないでしょうか。
だから、D列、E列にもクリックすることはありうることではないかと思いました。
No.1さんのほうから、コードは既に出ていますので、こちらからあえて、今の時点では、コードをアップの必要はないかと思います。読み違いしているのなら、スルーしてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) Excelにて、シート1の行を削除するとシート2のシート1と同じ番号の行も削除したい 3 2022/05/08 04:24
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) EXCEL マクロで行を挿入して貼り付けようとするとエラーになる。 2 2022/05/24 09:43
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Excel(エクセル) マクロで列を加えたら上手くいかなくなりました。 2 2022/05/23 17:59
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
2つのエクセルのデータを同じよ...
-
エクセルで文字が混じった数字...
-
基準となる列を参照して、別の...
-
エクセルで最初のスペースまで...
-
「B列が日曜の場合」C列に/...
-
Excelの行、列の左方向シフト、...
-
Excelで半角の文字を含むセルを...
-
エクセルの表から正の数、負の...
-
エクセル 文字数 多い順 並...
-
エクセルで、列の空欄に隣の列...
-
エクセル 同じ値を探して隣の...
-
EXCELで 一桁の数値を二桁に
-
いまさらですけど流列とは・・
-
A列がない・・・A列が非表示に...
-
VBAで文字列を数値に変換したい
-
エクセル(勝手に太字になる)
-
お店に入るために行列に並んで...
-
複素数を描けるソフトについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
2つのエクセルのデータを同じよ...
-
エクセルで最初のスペースまで...
-
エクセルVBA、別ブックへ転記す...
-
エクセル 文字数 多い順 並...
-
エクセル(勝手に太字になる)
-
VBAで文字列を数値に変換したい
-
エクセルで文字が混じった数字...
-
エクセルの表から正の数、負の...
-
「B列が日曜の場合」C列に/...
-
Excelで半角の文字を含むセルを...
-
エクセルの並び変えで、空白セ...
-
Excel、市から登録している住所...
-
エクセル 同じ値を探して隣の...
-
EXCELで 一桁の数値を二桁に
-
エクセル初心者です 関数の入れ...
-
A列がない・・・A列が非表示に...
-
オートフィルターをかけ、#N/A...
-
エクセルで、列の空欄に隣の列...
おすすめ情報