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

回答編集履歴

2

コード修正

2020/11/20 01:41

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -27,7 +27,7 @@
27
27
  For Each r In wksOld.UsedRange
28
28
  With wksNew.Range(r.Address)
29
29
  If StrComp(r.Text, .Text, vbTextCompare) <> 0 Then
30
- .Interior.Color = 65535 '黄色の定数
30
+ .Interior.Color = vbYellow '黄色の定数
31
31
  End If
32
32
  End With
33
33
  Next r

1

コード追記

2020/11/20 01:41

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -4,4 +4,32 @@
4
4
 
5
5
  その、If文を削除してみてください。
6
6
 
7
- `StrComp("", "xxxx", vbTextCompare)<>0` の結果はTrueです。
7
+ `StrComp("", "xxxx", vbTextCompare)<>0` の結果はTrueです。
8
+
9
+
10
+ ---
11
+ 以下、蛇足です。
12
+ 一つずつ細かく変数に代入するというのも一つのやり方だと思いますが、
13
+ やっていることはシンプルなことですので、使用する変数は最低限にしたほうがコードが読みやすいと思います。
14
+ 自分がコーディングするなら下記のような感じになります。
15
+
16
+ ```vba
17
+ Sub 変更箇所チェック()
18
+ Dim wksOld As Worksheet
19
+ Dim wksNew As Worksheet
20
+
21
+ ' 古いシートA、新しいシートBとする。
22
+ Set wksOld = Worksheets("A")
23
+ Set wksNew = Sheets("b")
24
+
25
+ ' 古いワークシートのセルを一個ずつループ
26
+ Dim r As Range
27
+ For Each r In wksOld.UsedRange
28
+ With wksNew.Range(r.Address)
29
+ If StrComp(r.Text, .Text, vbTextCompare) <> 0 Then
30
+ .Interior.Color = 65535 '黄色の定数
31
+ End If
32
+ End With
33
+ Next r
34
+ End Sub
35
+ ```