VBA初心者です。
数字を検証するマクロ作成でつまづいています。
別々のシート(wsSakiとwsMoto)の、2つのセルを比べてもしあっていたら(同じなら)、そのセルに色を付けるというマクロを考えたのですが、2つのセルの値は同じにもかかわらず、はじかれてしまいます。(最後まで動くのですが、望んでいる結果が出てこず、色がつきません)
参照するセルも、セルに入っている値も、あっていることは確認しました。
とすると、私が書いたマクロがおかしいはずなのですが
どこがおかしいのかわかりません。
どなたか下記のマクロのおかしいところを指摘していただけないでしょうか?
------------------------------------------
Dim wsSaki As Worksheet
Dim wsMoto As Worksheet
Dim kyoku As Long
Dim retsu As Long
Dim gyoMoto As Long
For kyoku = 1 To 5
Set wsSaki = Worksheets(kyoku)
Set wsMoto = Worksheets("実績")
gyoMoto = 15
For retsu = 3 To 30
If wsSaki.Cells(19, retsu).Value = wsMoto.Cells(gyoMoto, retsu).Value Then
wsSaki.Cells(19, retsu).Interior.ColorIndex = 15
End If
Next
gyoMoto = gyoMoto + 1
Next
-------------------------------------------
すみません、宜しくお願いします。
No.1
- 回答日時:
for...
gyoMoto = 15 ’←こいつが原因では?
・・・
gyoMoto = gyoMoto+1
next
毎回初期化(=15)しています。
15~20の変化を与えたいのであれば
for の前に初期値を設定する必要があります。
※for next 内の Set(毎回同じ)もいただけません。
要するに
gyoMoto = 15
For kyoku = 1 To 5 ’←ここにforを持ってくる
・・・
gyoMoto = gyoMoto+1
next
にすればよいのではないですか?
あるいは
For kyoku = 0 To 4
gyoMoto = 15+kyoku
next
あとで、変更しやすい方を選んでください。
早速の助言をありがとうございます。
自分の記述の盲点がようわかりました。
少なくとも初期化を忘れていました。
i = i + 1
の記述では、常に初期化を頭に入れておくべきですね。
ありがとうございます。
取り急ぎ御礼まで。
No.2ベストアンサー
- 回答日時:
こんばんは!
やりたいコトがいまいちよく判らないのですが・・・
>gyoMoto = gyoMoto + 1
のように For~Next の中に入れているというコトは
Sheet順が増える毎に参照元の行が1行ずれる!と解釈しました。
あくまで憶測ですが、「実績」SheetはSheet見出しの6番目にあり、
Sheet見出しの一番左から5番目までのSheetを検索し、
① Sheet見出しの一番左Sheetは「実績」Sheetの15行目のC~AD列とそのSheetの19行目
② Sheet見出しの二番目Sheetは「実績」Sheetの16行目のC~AD列とそのSheetの19行目
・
・
・
と5番目のSheetまで順次比較し、同じデータであれば1~5番目Sheetの19行目セルを塗りつぶす!
というコトだとします。
他人様がお考えになったコードに手を付けるのは好きではありませんが、
極力元のコードに沿ってやってみました。
Dim wsSaki As Worksheet
Dim wsMoto As Worksheet
Dim kyoku As Long
Dim retsu As Long
Dim gyoMoto As Long
Set wsMoto = Worksheets("実績")
gyoMoto = 14
For kyoku = 1 To 5
Set wsSaki = Worksheets(kyoku)
gyoMoto = gyoMoto + 1
For retsu = 3 To 30
If wsSaki.Cells(19, retsu).Value = wsMoto.Cells(gyoMoto, retsu).Value Then
wsSaki.Cells(19, retsu).Interior.ColorIndex = 15
Else
wsSaki.Cells(19, retsu).Interior.ColorIndex = xlNone '//←追加した方が良いかも・・・★//
End If
Next retsu
Next kyoku
こんな感じをお望みなのでしょうか?m(_ _)m
早速の返信をありがとうございます。
gyoMoto = 15
を記入する位置だったのですね。
くわえてif構文の後に
「色付けをしない」と敢えて記述するという事も参考になりました。
早速試してみます。
取り急ぎ御礼まで。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) 他のシートからコピーする下記マクロで貼付け位置をWorksheets(1).Range("A3")の 8 2023/01/30 18:48
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelVBAを使って、値...
-
Excelで指定した日付から過去の...
-
特定のセルが空白だったら、そ...
-
【Excel VBA】指定行以降をクリ...
-
Excelのプルダウンで2列分の情...
-
i=cells(Rows.Count, 1)とi=cel...
-
TODAY()で設定したセルの日付...
-
【Excel】指定したセルの名前で...
-
Excel vbaで特定の文字以外が入...
-
VBAでセルをクリックする回...
-
Excel VBA、 別ブックの最終行...
-
Excel2003 複数セル1列の入力済...
-
エクセルVBAでコピーして順...
-
セル色なしの行一括削除
-
VBAマクロで結合セルを含む列に...
-
特定の文字を条件に行挿入とそ...
-
【VBA】指定したセルと同じ値で...
-
EXCELのVBA-フィルタ抽出後の...
-
EXCELで変数をペーストしたい
-
VBAを使用した時間管理
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
【Excel VBA】指定行以降をクリ...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel】指定したセルの名前で...
-
Excelで指定した日付から過去の...
-
特定の文字を条件に行挿入とそ...
-
Excel VBA、 別ブックの最終行...
-
EXCELで変数をペーストしたい
-
Excelのプルダウンで2列分の情...
-
Excel vbaで特定の文字以外が入...
-
TODAY()で設定したセルの日付...
-
screenupdatingが機能しなくて...
-
DataGridViewの各セル幅を自由...
-
Sub 要具ライフ() ActiveSheet....
-
【EXCEL VBA】Range("A:A").Fi...
-
VBAを使用した時間管理
-
VBAでセルをクリックする回...
-
セル色なしの行一括削除
-
エクセルVBAでコピーして順...
おすすめ情報