Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1937 / 13645 ツリー ←次へ | 前へ→

【70935】比較し、一致したものをグレーアウト 初心者1 12/1/19(木) 2:35 質問[未読]
【70936】Re:比較し、一致したものをグレーアウト kanabun 12/1/19(木) 8:48 発言[未読]
【70958】Re:比較し、一致したものをグレーアウト 初心者1 12/1/21(土) 0:19 お礼[未読]

【70935】比較し、一致したものをグレーアウト
質問  初心者1  - 12/1/19(木) 2:35 -

引用なし
パスワード
   A1〜A10 に○か×が入っています。
A21〜A30 に○か×が入っています。

A1はA21と、A2はA22と、A3はA23と・・・と比較して
どちらも○が入力されていた場合に、
その行を灰色に塗りつぶしたいのですが、マクロが組めずに困っています。

ループさせて比較していくのだとは思うのですが・・・

また、今回は簡単な例にして質問していますが
A1〜A100など範囲が多い場合は、配列に格納してから比較したほうが
処理は早いのでしょうか。

わかる方、教えてください。

【70936】Re:比較し、一致したものをグレーアウト
発言  kanabun  - 12/1/19(木) 8:48 -

引用なし
パスワード
   ▼初心者1 さん:

>ループさせて比較していくのだとは思うのですが・・・

Sub try1()
 Dim i As Long
 Dim a1 As Range, a2 As Range
 
 Set a1 = Range("A1").Resize(10)
 Set a2 = Range("A21").Resize(10)
 a1.Interior.ColorIndex = xlNone
 a2.Interior.ColorIndex = xlNone
 For i = 1 To a1.Count
   If a1.Item(i).Value = "○" Then
     If a2.Item(i).Value = "○" Then
       a1.Item(i).Interior.ColorIndex = 16
       a2.Item(i).Interior.ColorIndex = 16
     End If
   End If
 Next
          
End Sub
>A1〜A100など範囲が多い場合は、配列に格納してから比較したほうが
>処理は早いのでしょうか。
処理経過が分かるほど遅いなら、
Application.ScreenUpdating = False / True
の制御を入れてください。
それでも遅いときは、配列方式に切り替えるわけですが、今回のような
セルを塗りつぶす処理は配列化できないので、効果はさほど期待できな
いかも。

【70958】Re:比較し、一致したものをグレーアウト
お礼  初心者1  - 12/1/21(土) 0:19 -

引用なし
パスワード
   ありがとうございます。

例で出したものは実際の処理よりとても完結に書いてしまったのですが
実際はもっと複雑で量も多かったので
配列で処理をすることにしました。

ありがとうございした。
とても助かりました。

1937 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free