これを試してみてください。私はあなたのチェッカーの大部分をパラメータ付きの別のサブに入れました。最初のサブは、あなたが選んだ名前のものです。他は、確認したいセルを参照するさまざまな方法の例です。それに続いて、セルをループしてチェックを行いますが、ネストされたfor-nextループはありません。最後のサブは会話の拡張であり、すべてのExcelインデックスカラーの表を含む参照ワークシートを作成します。
3つのパラメータは、1)チェックするセルの範囲、2)チェックのしきい値、3)セルを変更する色です。
パラメータを持つサブにブレークアウトする理由は、このワークシートをWorksheet_ChangeイベントとWorkbook_SheetChangeイベントから作成しようとしていたためです。これは、ExcelのUIでの通常の条件付き書式設定を素晴らしい拡張にすることができますが、その厄介なコントロールの制約はありません。特定のセルまたはセル範囲で特定の値を入力すると、Excelがその能力の範囲内で何かを実行できるようにすることができます。
しかし、これらのイベントをこのように実装する私の方法では、Intersect()関数を使用する必要があります。私は以前には思い出せない奇妙なエラーが発生しています。私はそれらを作業し、完成したコードで報告します。
Sub moreThan10Percent()
checkValues Range(Cells(2, 6), Cells(1937, 6)), 0.1, 3
End Sub
Sub moreWays1()
checkValues Range("F2:F1937"), 0.1, 6
End Sub
Sub moreWays2()
checkValues Intersect(Range("F:F"), Range("2:1937")), 0.1, 6
End Sub
Sub moreWays3()
checkValues Intersect(Columns(6).EntireColumn, Range(Rows(2).EntireRow, Rows(1937).EntireRow)), 0.1, 6
End Sub
Sub moreWays4()
checkValues Intersect(Columns(6).EntireColumn, Range(Rows(2), Rows(1937).EntireRow)), 0.1, 6
End Sub
Sub checkValues(targetRange As Range, targetThreshold As Single, targetColor As Long)
Dim targetCell As Range
For Each targetCell In targetRange
With targetCell
If .value >= targetThreshold Then
.Interior.ColorIndex = targetColor
Else
.Interior.ColorIndex = xlColorIndexNone
End If
End With
Next
End Sub
Sub generateTableOfExcelColorIndexes()
Dim cell As Range
Dim i As Integer
Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = "COLORS"
i = 0
For Each cell In Range("A1:H7")
i = i + 1
With cell
.HorizontalAlignment = xlCenter
.value = i
With cell.Interior
.Pattern = xlSolid
.ColorIndex = i
End With
End With
Next
End Sub
は、あなたの場合、単に `の場合に変更
細胞(nRow、nColumn)> = 0.1次に、細胞(nRow、nColumnは).Interior.ColorIndex = 6'また、あなたは簡単に条件付きの整形でこれを行うことができます。それはあなたの場合の選択肢ではありませんか? –
あなたはそれを* '白くしなさい' *にしたくありません。塗りつぶしの色をすべて削除します。 'Cell(nRow、nColumn).Interior.Color = 1'の代わりに' Cells(nRow、nColumn).Interior.PATTERN = xlNone'を使います。 – Jeeped
フェルナンド - 私はその選択肢を持っていますが、私は頻繁に複数のExcelシートを再ダウンロードする必要があります。だから私はそれをスピードアップするためにVBAを使うことを望んでいました。 – Elise