映画のエンドロール観る派?観ない派?

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件)

質問の意味を理解している?



質問のコードを少し変えて見ました。
『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
    • good
    • 0
この回答へのお礼

参考になりました。ありがとうございました。

お礼日時:2002/01/29 12:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報