質問編集履歴

3

aaaaaaaaaaaaaaaa

2023/03/20 01:09

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- 【VBA】選択したセルの人が持っている、その月の情報をメッセージボックスに出力したい
1
+ aaaaaaaaaaaaaa
test CHANGED
@@ -1,70 +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

投稿

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

1

タイトルの変更

2021/07/10 06:20

投稿

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