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

質問編集履歴

2

コードの修正

2020/06/16 01:58

投稿

kano_036
kano_036

スコア1

title CHANGED
File without changes
body CHANGED
@@ -9,7 +9,7 @@
9
9
  ソースコードはネットのサンプルを少し治したものになります
10
10
 
11
11
  ### 該当のソースコード!
12
-
12
+ ```ここに言語を入力
13
13
  Option Explicit
14
14
  '連絡ツールのリストボックス
15
15
  Private Sub UserForm_Initialize()
@@ -133,5 +133,5 @@
133
133
  ThisWorkbook.Save
134
134
  Workbooks("営業用メモV3.xlsm").Close
135
135
  End Sub
136
-
136
+ ```
137
137
  ![イメージ説明](bf4abc7958a45598669cd6569dfbd794.png)

1

ソースコードの修正と説明の補足

2020/06/16 01:58

投稿

kano_036
kano_036

スコア1

title CHANGED
File without changes
body CHANGED
@@ -3,39 +3,135 @@
3
3
  エクセル/VBAでユーザーホームを使った検索機能をつくり
4
4
  検索した結果をリストボックスに表示して選択すると詳細が出る
5
5
  というものを作成したのですが文字数が多いものは枠から
6
- はみ出る形で見栄えが悪いので表示できる文字数を制限したいのですが
6
+ はみ出る形で見栄えが悪いので表示ときのみ文字数を制限したいのでしょうか?
7
- いい方法はありますでしょうか?
8
- 文字数がはみ出るのはソースコードUserForm1.TextBox1.Valueなります。
7
+ るのであれば下記画像ようしてみたいと思ってます。
8
+
9
9
  ソースコードはネットのサンプルを少し治したものになります
10
10
 
11
- ### 該当のソースコード
11
+ ### 該当のソースコード!
12
12
 
13
+ Option Explicit
14
+ '連絡ツールのリストボックス
15
+ Private Sub UserForm_Initialize()
16
+ With ContactTool
17
+ .AddItem "電話"
18
+ .AddItem "Cメール"
19
+ .AddItem "社内メール"
20
+ .AddItem "Line"
21
+ .AddItem "Slack"
22
+ .AddItem "その他"
23
+ End With
24
+
25
+ End Sub
26
+
27
+ '登録確認
28
+ Private Sub Registration_Click()
29
+
30
+ If UserForm1.NameBox.Value = "" Or UserForm1.TextBox1.Value = "" Then
31
+ MsgBox "未入力があります"
32
+ Else
33
+ Call UserForm1.Registration_Click2
34
+
35
+ End If
36
+
37
+ End Sub
38
+ 'エクセルに登録
13
39
  Sub Registration_Click2()
14
- Dim Name As Long
40
+ Dim Name As Long
15
- Dim rc As VbMsgBoxResult
41
+ Dim rc As VbMsgBoxResult
16
-
17
- Name = 1
18
-
19
- Do Until Cells(Name, 1) = ""
20
- Name = Name + 1
21
- Loop
22
-
23
- rc = MsgBox("登録しますか?", vbYesNo + vbQuestion)
24
-
25
-
26
- If rc = vbYes Then
27
- MsgBox "登録しました", vbInformation
28
- Worksheets("sheet1").Cells(Name, 1).Value = Format(Now, "mm月dd日 hh時")
29
- Worksheets("sheet1").Cells(Name, 2).Value = UserForm1.Affiliation.Value
30
- Worksheets("sheet1").Cells(Name, 3).Value = UserForm1.NameBox.Value
31
- Worksheets("sheet1").Cells(Name, 4).Value = UserForm1.ContactTool.Value
32
- Worksheets("sheet1").Cells(Name, 5).Value = UserForm1.TextBox1.Value
33
- Affiliation.Value = ""
34
- NameBox.Value = ""
35
- ContactTool.Value = ""
36
- TextBox1.Value = ""
37
- Else
38
- MsgBox "処理を中止します", vbCritical
39
- End If
40
42
 
43
+ Name = 1
44
+
45
+ Do Until Cells(Name, 1) = ""
46
+ Name = Name + 1
47
+ Loop
48
+
49
+ rc = MsgBox("登録しますか?", vbYesNo + vbQuestion)
50
+
51
+
52
+ If rc = vbYes Then
53
+ MsgBox "登録しました", vbInformation
54
+ Worksheets("sheet1").Cells(Name, 1).Value = Format(Now, "mm月dd日 hh時")
55
+ Worksheets("sheet1").Cells(Name, 2).Value = UserForm1.Affiliation.Value
56
+ Worksheets("sheet1").Cells(Name, 3).Value = UserForm1.NameBox.Value
57
+ Worksheets("sheet1").Cells(Name, 4).Value = UserForm1.ContactTool.Value
58
+ Worksheets("sheet1").Cells(Name, 5).Value = UserForm1.TextBox1.Value
59
+ Affiliation.Value = ""
60
+ NameBox.Value = ""
61
+ ContactTool.Value = ""
62
+ TextBox1.Value = ""
63
+ Else
64
+ MsgBox "処理を中止します", vbCritical
65
+ End If
66
+
41
- End Sub
67
+ End Sub
68
+
69
+ '検索を実行します。部分一致検索を行っています。
70
+ 'Private Sub Search_Click()
71
+
72
+ 'If SearchBox.Value = "" Then
73
+ 'MsgBox "データがありません"
74
+ 'Else
75
+ 'Call UserForm1.Search_Click2
76
+ 'End If
77
+ 'End Sub
78
+
79
+ Sub Search_Click()
80
+
81
+ Dim lastRow As Long
82
+ Dim myData, myData2(), myno
83
+ Dim i As Long, j As Long, cn As Long
84
+
85
+ Workbooks("営業用メモV3.xlsm").Activate
86
+
87
+ '検索するデータを配列 myData に格納しています。
88
+ With Worksheets("Sheet1")
89
+ lastRow = .Cells(Rows.Count, 1).End(xlUp).Row
90
+ myData = .Range(.Cells(1, 1), .Cells(lastRow, 5)).Value
91
+ End With
92
+
93
+ '配列 myData の中で検索で一致したデータを配列 myData2 に格納しています。
94
+ ReDim myData2(1 To lastRow, 1 To 5)
95
+ For i = LBound(myData) To UBound(myData)
96
+ If myData(i, 2) Like "*" & SearchBox.Value & "*" And myData(i, 3) Like "*" & SearchBox2.Value & "*" Then
97
+ cn = cn + 1
98
+ myData2(cn, 1) = myData(i, 1)
99
+ myData2(cn, 2) = myData(i, 2)
100
+ myData2(cn, 3) = myData(i, 3)
101
+ myData2(cn, 4) = myData(i, 4)
102
+ myData2(cn, 5) = myData(i, 5)
103
+ End If
104
+ Next i
105
+
106
+ '検索で一致したデータをリストボックスに表示
107
+ With ListBox1
108
+ .ColumnCount = 5
109
+ .ColumnWidths = "88;40;55;60;50"
110
+ .List = myData2
111
+ End With
112
+
113
+ End Sub
114
+ 'リストボックスの詳細を表示
115
+ Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
116
+ With ListBox1
117
+ If .ListIndex = -1 Then
118
+ MsgBox "未選択です。"
119
+ Else
120
+ MsgBox .List(.ListIndex, 4), Title:="メモ詳細"
121
+ End If
122
+ End With
123
+ End Sub
124
+
125
+ Private Sub end_Button_Click()
126
+ Unload UserForm1
127
+ If (Workbooks.Count = 1) Then
128
+ ' 開いているブックが自身のみの場合はExcelを終了させる
129
+ ThisWorkbook.Save
130
+ Application.Quit
131
+ End If
132
+
133
+ ThisWorkbook.Save
134
+ Workbooks("営業用メモV3.xlsm").Close
135
+ End Sub
136
+
137
+ ![イメージ説明](bf4abc7958a45598669cd6569dfbd794.png)