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

回答編集履歴

1

追記

2022/04/15 08:38

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -31,13 +31,39 @@
31
31
  > Dim cd_arr_1() As Variant
32
32
  > cd_arr_1() = mk_cd_arr_1()←型が一致しません。
33
33
 
34
- 変数型と、関数の値の型を合わせしょう
34
+ 上記の関数ならそコードでエラーになりません
35
+ 提示の関数は戻り値がバリアント型の配列になってますので、受ける変数もバリアント型の配列でOKです。
35
36
 
36
- 提示の関数は戻り値がバリアント型の配列になってますので、
37
+ ---
37
38
 
39
+ `&`で結合するなら文字列になるので、String型の配列を戻り値にした方がいいかもしれません。
40
+ その場合は、下記のようになります。
41
+ 結果を代入する変数もString型の配列にします。
42
+
38
43
  ```vba
39
- Dim cd_arr_1() As Variant
44
+ Function mk_cd_arr_1() As String()
40
- cd_arr_1 = mk_cd_arr_1
41
- ```
42
45
 
46
+ '行数を定義
47
+ Dim cd_amnt As Long
48
+ cd_amnt = 10
43
49
 
50
+ '列1と列2を結合したものを配列に格納
51
+ Dim cd_arr() As String
52
+ ReDim cd_arr(cd_amnt)
53
+
54
+ Dim i As Integer
55
+ For i = 1 To cd_amnt
56
+ cd_arr(i - 1) = Worksheets(1).Cells(i + 1, 1) & Worksheets(1).Cells(i + 1, 2)
57
+ Next i
58
+
59
+ mk_cd_arr_1 = cd_arr
60
+
61
+ End Function
62
+
63
+ Public Sub test()
64
+ Dim cd_arr_1() As String
65
+ cd_arr_1 = mk_cd_arr_1()
66
+
67
+ Debug.Print cd_arr_1(1)
68
+ End Sub
69
+ ```