🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

3回答

802閲覧

VBAのプログラミングについて

teturousan

総合スコア4

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/01/26 01:52

Sheet1のA1に入力した内容がSheet2のA1~A100の内容と重複していないかを確認し、重複していた場合は、色を付けるというVBAを作成しているのですが、うまく動作いたしません。なぜでしょうか?


Sub Test1()

Dim i As Long

For i = 1 To 100

If WorksheetFunction.CountIf(Sheets("Sheet2").Range("A1:A100"), Sheets("Sheet1").Cells(i, 1)) > 1 Then

Sheets("Sheet1").Cells(i, 1).Interior.ColorIndex = 6

End If
Next i
End Sub


気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2021/01/26 01:57

うまく動作しないとはどういうふうになるんでしょうか
m.ts10806

2021/01/26 02:02

プログラムは書いたとおりにしか動かないので「なぜならないか」には「そう動くように書かれてないから」と答えることになります。
teturousan

2021/01/26 20:34

重複したセルに色が全く塗られません。
guest

回答3

0

コード ``Sub Test1() '=COUNTIF(範囲, 検索条件) Dim i As Long For i = 1 To 100 If WorksheetFunction.CountIf(Sheets("Sheet2").Range("A1:A100"), _ Sheets("Sheet1").Cells(i, 1)) Then Sheets("Sheet1").Cells(i, 1).Interior.ColorIndex = 6 End If Next i End Sub ![イメージ説明](a9b54c6471225117d704ccf867e57761.png)` こんな感じになりました

投稿2021/02/21 07:59

syousuke.33

総合スコア312

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

どのようにうまくいかないのか不明ですが、(radames1000さんの回答の指摘がうまくいかない原因でしょう。)
とりあえず、最初に背景色を初期化しておいた方がいいのでは。

vba

1Sub Test1() 2 3 Dim i As Long 4 5 Sheets("Sheet1").Range("A1:A100").Interior.ColorIndex = 0 ` 6 7 For i = 1 To 100 8 9 If WorksheetFunction.CountIf(Sheets("Sheet2").Range("A1:A100"), Sheets("Sheet1").Cells(i, 1)) > 0 Then 10 11 Sheets("Sheet1").Cells(i, 1).Interior.ColorIndex = 6 12 13 End If 14 Next i 15End Sub

投稿2021/01/26 02:21

編集2021/01/26 02:42
hatena19

総合スコア34073

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

radames1000

2021/01/26 02:38

背景色の初期化はSheet1です。
hatena19

2021/01/26 02:41

そうでした。ご指摘ありがとうございます。 コード修正しておきます。
guest

0

下記「> 1」が「> 0」の誤りです。

vba

1If WorksheetFunction.CountIf(Sheets("Sheet2").Range("A1:A100"), Sheets("Sheet1").Cells(i, 1)) > 1 Then

投稿2021/01/26 02:06

radames1000

総合スコア1925

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hatena19

2021/01/26 02:15

> 0 にしたらすべてのセルの背景色が変更されてしまいませんか。
radames1000

2021/01/26 02:18

Sheet2の値と重複しないものは変更されないので大丈夫だと思います。
hatena19

2021/01/26 02:23

Sheet2 と Sheet1 があるのを見落としてました。無意味なコメントすみませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問