回答編集履歴

1

追記

2018/07/22 01:55

投稿

hatena19
hatena19

スコア33782

test CHANGED
@@ -21,3 +21,61 @@
21
21
 
22
22
 
23
23
  [オートフィルターモード(AutoFilterMode プロパティ) - Excel VBA](https://www.239-programing.com/excel-vba/basic/basic078.html)
24
+
25
+
26
+
27
+ 追記
28
+
29
+ ---
30
+
31
+ > この機能を実行するために、以下の構文がどのように
32
+
33
+ > 働いているのかを理解したいと考え、ご質問させて頂きました。
34
+
35
+ >
36
+
37
+ > If ws.AutoFilterMode = True Then
38
+
39
+ > ws.AutoFilterMode = False
40
+
41
+
42
+
43
+ なるほど、そこが分からなかったのですね。
44
+
45
+ ` = `が2つありますが、それぞれ意味が違います。
46
+
47
+ まず、`If ws.AutoFilterMode = True Then`の方の` = `は比較演算子で、
48
+
49
+ 左辺と右辺が等しいかどうか判定します。このように、If Then の中とか条件式を記述する場所に記入すると比較演算子になります。
50
+
51
+ `ws.AutoFilterMode = False`の` = `は代入演算子で、左辺の変数やプロパティに右辺の値を代入します。
52
+
53
+ AutoFilterModeプロパティにFalseを代入する、つまり、AutoFilterModeを解除するという意味になります。
54
+
55
+
56
+
57
+ 他言語では、比較演算子と代入演算子は別の場合が多いてすが、VBAは同じ` = `を使っているので、紛らわしいですね。
58
+
59
+
60
+
61
+ 例えば、下記のコード
62
+
63
+ ```
64
+
65
+ Dim A As Integer, B As Integer, C As Boolean
66
+
67
+ A = 1
68
+
69
+ B = 2
70
+
71
+ C = A = B
72
+
73
+ ```
74
+
75
+ 2行目、3行目の` = `は代入演算子ということは分かりますよね。
76
+
77
+ 4行目は左の` = `は代入演算子、右の` = `は比較演算子になります。
78
+
79
+ AとBは等しくないので、Cには False が代入されます。
80
+
81
+ (このような書き方はあまり使わない方がいいですが説明のために紹介しました。)