teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

aaaaaaaaaaaaaaaa

2023/03/20 01:09

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- 【VBA】選択したセルの人が持っている、その月の情報をメッセージボックスに出力したい
1
+ aaaaaaaaaaaaaa
body CHANGED
@@ -1,70 +1,1 @@
1
- ### 前提・実現したいこと
2
-
3
- 集計表(画像1枚目)の氏名の横にあるそれぞれの月のセルを選択すると、一覧表(画像2枚目)に記載されている、その月にその人が担当している月別工数、顧客企業名、案件名、開始日、終了日をメッセージボックスに出力できるようにしたいです。
4
-
5
- イメージとしては画像3枚目のような形で、複数当てはまるものがある場合、改行してその数だけ表示をさせます。
6
-
7
- はじめてVBAを触り、身近に質問できる方もおらず数日調べ続けても詰まっているのでこちらで質問させていただきます。
8
-
9
- 拙い文章、基本も怪しいコードですがよろしくお願いいたします。
10
-
11
- 【集計表】
12
-
13
-
14
- 【一覧表】
15
-
16
-
17
- 【出力のイメージ】
18
-
19
-
20
- ### 発生している問題・エラーメッセージ
21
-
22
-
23
- 一覧表(画像2枚目)の氏名、月別工数、顧客企業名、案件名、開始、終了日項目の情報を集計表(画像1枚目)の選択した月のメッセージボックスに表示させたいが、調べても実現できず詰まっております…
24
-
25
-
26
- ### 該当のソースコード
27
-
28
- ```VBA
29
- Private Sub Worksheet_SelectionChange(ByVal Target As Range)
30
-
31
-
32
- '氏名に関する変数
33
- Dim nameSearch As Range, nameFind As Range, nameNext As Range
34
-
35
- Set nameSearch = Sheets("一覧表").Range("B:B")
36
-
37
- Set nameFind = nameSearch.Find(What:=ActiveCell.Offset(0, -1), LookAt:=xlPart)
38
-
39
-
40
- Set nameNext = nameFind
41
-
42
-
43
- If Not Intersect(Target, Range("C:C")) Is Nothing Then
44
- Do While Not nameFind Is Nothing
45
- Debug.Print nameFind.Row
46
-
47
- Set nameFind = nameNext.FindNext(nameFind)
48
-
49
- If nameFind.Address = nameNext.Address Then
50
- MsgBox nameFind & " | " & Sheets("一覧表").Range("C4") & " | " & Sheets("一覧表").Range("D4") & " | " & Sheets("一覧表").Range("E4") & " | " & Sheets("一覧表").Range("F4") & " | " & Sheets("一覧表").Range("G4")
51
-
52
-
53
- 'BCセルの氏名の開始が2021/7/1以下、終了日が2021/7/1以上の顧客企業名、工数/月、案件名、開始、終了を出力する。
54
- Exit Do
55
- End If
56
-
57
- Loop
58
-
59
- End If
60
- End Sub
61
- ```
62
-
63
- ### 試したこと
64
- Findで一致した情報を探し、Whileで複数表示させることができるのではないかと考え、試験的に上記のコードを記述しています。
65
- 結果は画像3枚目のようになっています。
66
-
67
-
68
- ### 補足情報(FW/ツールのバージョンなど)
69
-
70
- 足りない情報等ご指摘いただければ追加していきます。
1
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

2

画像の編集

2022/06/30 08:50

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,70 +1,70 @@
1
- ### 前提・実現したいこと
2
-
3
- 集計表(画像1枚目)の氏名の横にあるそれぞれの月のセルを選択すると、一覧表(画像2枚目)に記載されている、その月にその人が担当している月別工数、顧客企業名、案件名、開始日、終了日をメッセージボックスに出力できるようにしたいです。
4
-
5
- イメージとしては画像3枚目のような形で、複数当てはまるものがある場合、改行してその数だけ表示をさせます。
6
-
7
- はじめてVBAを触り、身近に質問できる方もおらず数日調べ続けても詰まっているのでこちらで質問させていただきます。
8
-
9
- 拙い文章、基本も怪しいコードですがよろしくお願いいたします。
10
-
11
- 【集計表】
12
- ![イメージ説明](2f04ab43c385fb3433cb59f30ccf1f80.png)
13
-
14
- 【一覧表】
15
- ![イメージ説明](69f4acefbe788c8b33d523051371c649.png)
16
-
17
- 【出力のイメージ】
18
- ![イメージ説明](cf6e7e6cef0679e8bd4315a3434061ef.png)
19
-
20
- ### 発生している問題・エラーメッセージ
21
-
22
-
23
- 一覧表(画像2枚目)の氏名、月別工数、顧客企業名、案件名、開始、終了日項目の情報を集計表(画像1枚目)の選択した月のメッセージボックスに表示させたいが、調べても実現できず詰まっております…
24
-
25
-
26
- ### 該当のソースコード
27
-
28
- ```VBA
29
- Private Sub Worksheet_SelectionChange(ByVal Target As Range)
30
-
31
-
32
- '氏名に関する変数
33
- Dim nameSearch As Range, nameFind As Range, nameNext As Range
34
-
35
- Set nameSearch = Sheets("一覧表").Range("B:B")
36
-
37
- Set nameFind = nameSearch.Find(What:=ActiveCell.Offset(0, -1), LookAt:=xlPart)
38
-
39
-
40
- Set nameNext = nameFind
41
-
42
-
43
- If Not Intersect(Target, Range("C:C")) Is Nothing Then
44
- Do While Not nameFind Is Nothing
45
- Debug.Print nameFind.Row
46
-
47
- Set nameFind = nameNext.FindNext(nameFind)
48
-
49
- If nameFind.Address = nameNext.Address Then
50
- MsgBox nameFind & " | " & Sheets("一覧表").Range("C4") & " | " & Sheets("一覧表").Range("D4") & " | " & Sheets("一覧表").Range("E4") & " | " & Sheets("一覧表").Range("F4") & " | " & Sheets("一覧表").Range("G4")
51
-
52
-
53
- 'BCセルの氏名の開始が2021/7/1以下、終了日が2021/7/1以上の顧客企業名、工数/月、案件名、開始、終了を出力する。
54
- Exit Do
55
- End If
56
-
57
- Loop
58
-
59
- End If
60
- End Sub
61
- ```
62
-
63
- ### 試したこと
64
- Findで一致した情報を探し、Whileで複数表示させることができるのではないかと考え、試験的に上記のコードを記述しています。
65
- 結果は画像3枚目のようになっています。
66
-
67
-
68
- ### 補足情報(FW/ツールのバージョンなど)
69
-
1
+ ### 前提・実現したいこと
2
+
3
+ 集計表(画像1枚目)の氏名の横にあるそれぞれの月のセルを選択すると、一覧表(画像2枚目)に記載されている、その月にその人が担当している月別工数、顧客企業名、案件名、開始日、終了日をメッセージボックスに出力できるようにしたいです。
4
+
5
+ イメージとしては画像3枚目のような形で、複数当てはまるものがある場合、改行してその数だけ表示をさせます。
6
+
7
+ はじめてVBAを触り、身近に質問できる方もおらず数日調べ続けても詰まっているのでこちらで質問させていただきます。
8
+
9
+ 拙い文章、基本も怪しいコードですがよろしくお願いいたします。
10
+
11
+ 【集計表】
12
+
13
+
14
+ 【一覧表】
15
+
16
+
17
+ 【出力のイメージ】
18
+
19
+
20
+ ### 発生している問題・エラーメッセージ
21
+
22
+
23
+ 一覧表(画像2枚目)の氏名、月別工数、顧客企業名、案件名、開始、終了日項目の情報を集計表(画像1枚目)の選択した月のメッセージボックスに表示させたいが、調べても実現できず詰まっております…
24
+
25
+
26
+ ### 該当のソースコード
27
+
28
+ ```VBA
29
+ Private Sub Worksheet_SelectionChange(ByVal Target As Range)
30
+
31
+
32
+ '氏名に関する変数
33
+ Dim nameSearch As Range, nameFind As Range, nameNext As Range
34
+
35
+ Set nameSearch = Sheets("一覧表").Range("B:B")
36
+
37
+ Set nameFind = nameSearch.Find(What:=ActiveCell.Offset(0, -1), LookAt:=xlPart)
38
+
39
+
40
+ Set nameNext = nameFind
41
+
42
+
43
+ If Not Intersect(Target, Range("C:C")) Is Nothing Then
44
+ Do While Not nameFind Is Nothing
45
+ Debug.Print nameFind.Row
46
+
47
+ Set nameFind = nameNext.FindNext(nameFind)
48
+
49
+ If nameFind.Address = nameNext.Address Then
50
+ MsgBox nameFind & " | " & Sheets("一覧表").Range("C4") & " | " & Sheets("一覧表").Range("D4") & " | " & Sheets("一覧表").Range("E4") & " | " & Sheets("一覧表").Range("F4") & " | " & Sheets("一覧表").Range("G4")
51
+
52
+
53
+ 'BCセルの氏名の開始が2021/7/1以下、終了日が2021/7/1以上の顧客企業名、工数/月、案件名、開始、終了を出力する。
54
+ Exit Do
55
+ End If
56
+
57
+ Loop
58
+
59
+ End If
60
+ End Sub
61
+ ```
62
+
63
+ ### 試したこと
64
+ Findで一致した情報を探し、Whileで複数表示させることができるのではないかと考え、試験的に上記のコードを記述しています。
65
+ 結果は画像3枚目のようになっています。
66
+
67
+
68
+ ### 補足情報(FW/ツールのバージョンなど)
69
+
70
70
  足りない情報等ご指摘いただければ追加していきます。

1

タイトルの変更

2021/07/10 06:20

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- 選択したセルの人が持っている、その月の情報をメッセージボックスに出力したい
1
+ 【VBA】選択したセルの人が持っている、その月の情報をメッセージボックスに出力したい
body CHANGED
File without changes