
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を探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーフォームに入力したデ...
-
特定の文字を含むシートだけマ...
-
ExcelのVBAのマクロで他のシー...
-
Excel VBA リンク先をシート...
-
Excelマクロのエラーを解決した...
-
ブック名、シート名を他のモジ...
-
EXCELVBAを使ってシートを一定...
-
VBA ユーザーフォーム上のチェ...
-
【Excel VBA】Worksheets().Act...
-
SheetsクラスのSelectメソッド...
-
vba 環境依存文字がListViewボ...
-
EXCEL VBAで複数シートから該当...
-
エクセルで通し番号を入れてチ...
-
Access エクセルシート名変更
-
ExcelのVBAを使い、複数シート...
-
excelのマクロで該当処理できな...
-
VBAで指定シート以外の選択
-
【Excel VBA】全シートのデータ...
-
マクロを使って、シート印刷完...
-
実行時エラー'1004': WorkSheet...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
実行時エラー1004「Select メソ...
-
特定の文字を含むシートだけマ...
-
XL:BeforeDoubleClickが動かない
-
【ExcelVBA】全シートのセルの...
-
実行時エラー'1004': WorkSheet...
-
ユーザーフォームに入力したデ...
-
【Excel VBA】Worksheets().Act...
-
エクセルVBA Ifでシート名が合...
-
Excel チェックボックスにチェ...
-
シートが保護されている状態で...
-
Excel VBA リンク先をシート...
-
ブック名、シート名を他のモジ...
-
ExcelのVBAのマクロで他のシー...
-
同じ作業を複数のシートに実行...
-
エクセルのシート名変更で重複...
-
VBA 検索して一致したセル...
-
【VBA】色のついたシート名を取得
-
VBAで指定シート以外の選択
おすすめ情報