回答編集履歴

2

.

2023/07/11 23:42

投稿

jinoji
jinoji

スコア4592

test CHANGED
@@ -1,6 +1,5 @@
1
1
  ```vba
2
2
  Option Explicit
3
-
4
3
  Function Sabun(arr1, arr2, Optional mode = 0)
5
4
  ' 二つの配列から動作モードに従って新たな配列を返す関数
6
5
  ' 0:配列1と配列2に共通
@@ -9,7 +8,6 @@
9
8
  ' 3:配列1と配列2をマージ
10
9
 
11
10
  Dim kyotu, only1, only2, merge, v
12
-
13
11
  Set kyotu = CreateObject("Scripting.Dictionary")
14
12
  Set only1 = CreateObject("Scripting.Dictionary")
15
13
  Set only2 = CreateObject("Scripting.Dictionary")
@@ -19,7 +17,6 @@
19
17
  merge(v) = v
20
18
  only1(v) = v
21
19
  Next
22
-
23
20
  For Each v In arr2
24
21
  merge(v) = v
25
22
  If only1.Exists(v) Then
@@ -29,28 +26,23 @@
29
26
  only2(v) = v
30
27
  End If
31
28
  Next
32
-
33
29
  Select Case mode
34
30
  Case 1: Sabun = only1.Keys
35
31
  Case 2: Sabun = only2.Keys
36
32
  Case 3: Sabun = merge.Keys
37
33
  Case Else: Sabun = kyotu.Keys
38
34
  End Select
35
+ End Function
36
+ ```
39
37
 
40
- End Function
38
+ ```vba
41
-
42
39
  Sub Sample()
43
- Dim array1, array2, array3
40
+ Dim array1, array2, array3, i
44
41
  array1 = Array(1, 2, 3, 4, 7)
45
42
  array2 = Array(1, 2, 3, 5, 6, 8)
46
-
47
- Dim i
48
43
  For i = 0 To 3
49
44
  array3 = Sabun(array1, array2, i)
50
45
  Debug.Print i, Join(array3, vbTab)
51
46
  Next
52
-
53
47
  End Sub
54
-
55
-
56
48
  ```

1

.

2023/07/11 23:36

投稿

jinoji
jinoji

スコア4592

test CHANGED
@@ -2,6 +2,12 @@
2
2
  Option Explicit
3
3
 
4
4
  Function Sabun(arr1, arr2, Optional mode = 0)
5
+ ' 二つの配列から動作モードに従って新たな配列を返す関数
6
+ ' 0:配列1と配列2に共通
7
+ ' 1:配列1のみに存在
8
+ ' 2:配列2のみに存在
9
+ ' 3:配列1と配列2をマージ
10
+
5
11
  Dim kyotu, only1, only2, merge, v
6
12
 
7
13
  Set kyotu = CreateObject("Scripting.Dictionary")