EXEL(VBA)で例えば、A列のデータが入っている行までの中で数値(x)が
x<2 ならばセルに色をぬる。そして空白セルと x>2ならば色をぬらない。
という条件式は、どうしたらいいのですか?
Sub InteriorColor()
For j= 5 to 21
worksheets(j).activate
For i = 1 to 40 '30から40行ぐらい
While cells(6+i,6)<>""
If(cells(6+i,6).value<2) Then ’6列7行目から
with selection.interior
.Colorindex=45
.patern=xlsorid
End with
Wend
End if
Next i
Next j
End sub
ということを連続していない列(5列ぐらい)に対してします。
同じ命令文になる部分もあるので簡潔にしたいという希望もあります。
上部の命令では無限ループの可能性があり実行が止まりません。
どのように記述したらいいのですか?
また、同じブックのシート25枚のうち5枚目から21枚目に対して処理します。
5から21までのシートの間で関係ないシートが7枚目と10枚目と15枚目にあります。それを省いての処理もあれば教えてください。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
質問の意味を理解している?
質問のコードを少し変えて見ました。
『30から40くらい、連続していない列(5列くらい)』の捉え方が問題ですが、そこにデータが入っていると解釈して書いています。6列目より右、7行目より下を対象にしています。
ご参考に。
Sub InteriorColor2()
Dim ws As Worksheet 'ワークシート
Dim wsIdx As Integer 'ワークシートのインデックス
Dim rw As Long '行カウンタ
Dim col As Integer '列カウンタ
Dim rwLast As Long '使っている最後の行
Dim colLast As Integer '使っている最後の列
Dim actvSheet As Integer '最初のシート
actvSheet = ActiveSheet.Index 'マクロを起動したシート
Application.ScreenUpdating = False '画面更新を止める
For wsIdx = 5 To 21
'必要なシートだったら色を塗る処理を行う
If Not (wsIdx = 7 Or wsIdx = 10 Or wsIdx = 15) Then
Set ws = Worksheets(wsIdx) 'ワークシートを定義
'色を塗るシートをアクティブにする
ws.Activate
'使っている最後の行
rwLast = ws.Cells.SpecialCells(xlCellTypeLastCell).Row
'使っている最後の列
colLast = ws.Cells.SpecialCells(xlCellTypeLastCell).Column
For rw = 7 To rwLast '7行目から使っている最後の行まで
For col = 6 To colLast '6列目から使っている最後の列まで
'セルの内容が数字だったら
If IsNumeric(Cells(rw, col)) = True Then
'入力があって2未満だったら
If Cells(rw, col) <> "" And Cells(rw, col) < 2 Then
Cells(rw, col).Interior.ColorIndex = 45
Cells(rw, col).Interior.Pattern = xlSolid
End If
End If
Next
Next
End If
Next
Worksheets(actvSheet).Select 'マクロを起動したシートに戻す
Application.ScreenUpdating = True '画面更新を戻す
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelのマクロで該当処理できな...
-
ユーザーフォームに入力したデ...
-
同じ作業を複数のシートに実行...
-
【Excel VBA】Worksheets().Act...
-
XL:BeforeDoubleClickが動かない
-
特定の文字を含むシートだけマ...
-
Worksheet_Changeの内容を標準...
-
実行時エラー'1004': WorkSheet...
-
【ExcelVBA】全シートのセルの...
-
IFステートの中にWithステート...
-
エクセルで通し番号を入れてチ...
-
ブック名、シート名を他のモジ...
-
別のシートから値を取得するとき
-
エクセルの特定のシートのみを...
-
Excelマクロのエラーを解決した...
-
エクセル・マクロ シートの非...
-
エクセルVBA Ifでシート名が合...
-
ExcelVBA:複数の特定のグラフ...
-
【VBAで、On Error が効かない】
-
セルの値によって、シート見出...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定の文字を含むシートだけマ...
-
excelのマクロで該当処理できな...
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
別のシートから値を取得するとき
-
ブック名、シート名を他のモジ...
-
実行時エラー'1004': WorkSheet...
-
Excelマクロのエラーを解決した...
-
XL:BeforeDoubleClickが動かない
-
シートが保護されている状態で...
-
エクセルのシート名変更で重複...
-
実行時エラー1004「Select メソ...
-
VBAで同じシート名のコピー時は...
-
エクセルで通し番号を入れてチ...
-
同じ作業を複数のシートに実行...
-
Excel VBA リンク先をシート...
-
ExcelのVBAのマクロで他のシー...
-
Vba UserformからExcelシートの...
-
【Excel VBA】Worksheets().Act...
-
VBA 存在しないシートを選...
おすすめ情報