Подводя итог, я пытаюсь просмотреть диапазон ячеек и найти те, которые не являются обычными обычными, незаполненными ячейками.В диапазоне может быть только 2 из этих типов клеток.Они могут отличаться по стилю или цвету фона.Я использовал «MsgBox», чтобы выделить проблему.Я сузил его до «операторов If», сравнивающих «ячейку» с «trackedCell1» или «regCell».Для справки я использовал все эти переменные, чтобы отслеживать разные вещи в файле.«regCell» - это нейтральная контрольная ячейка, которая должна иметь значение «Normal, non-fill», «trackedcell's 1 и 2» будет удерживать найденные ячейки в диапазоне, а «cell» перемещается вниз по диапазону.«NewRange» - это переменная, которую разделяет мой макрос, которая находит полный диапазон переменных используемого листа Excel.
Большинство моих попыток прокомментированы.Я попытался использовать оба «<>» для not equals и «Not Like» в условном выражении «And».В своей последней попытке я разбил одно большое «утверждение», которое рассматривало как индекс стиля, так и цвет салона, и разделил их на два «утверждения»
Dim regCell As Range
Set regCell = Application.Range("K2")
' regCell.Style = "Normal"
' regCell.Interior.ColorIndex = 0
Dim trackedCell1 As Range
Set trackedCell1 = Application.Range("K4")
' trackedCell1.Style = "Normal"
' trackedCell1.Interior.ColorIndex = 0
Dim trackedCell2 As Range
Set trackedCell2 = Application.Range("K5")
' trackedCell2.Style = "Normal"
' trackedCell2.Interior.ColorIndex = 0
For Each cell In Range(NewRange)
'If cell.Style <> "Normal" And cell.Interior.ColorIndex <> 0 Then
If cell.Style <> regCell.Style Then
'MsgBox "first runs"
If cell.Interior.ColorIndex <> regCell.Interior.ColorIndex Then
'MsgBox "Second runs"
trackedCell1.Style = cell.Style
trackedCell1.Interior.ColorIndex = cell.Interior.ColorIndex
If trackedCell1.Style <> cell.Style And trackedCell1.Interior.ColorIndex <> cell.Interior.ColorIndex Then
'MsgBox "This works"
trackedCell2.Style = cell.Style
trackedCell2.Interior.ColorIndex = cell.Interior.ColorIndex
End If
' If trackedCell1.Style Like "*Normal*" Or trackedCell1.Interior.ColorIndex Like "*0*" Then
' trackedCell1.Style = cell.Style
' trackedCell1.Interior.ColorIndex = cell.Interior.ColorIndex
' 'MsgBox "We have first if"
' ElseIf Not (trackedCell1.Style Like "*Normal*") Or Not (trackedCell1.Interior.ColorIndex Like "*0*") Then
' trackedCell2.Style = cell.Style
' trackedCell2.Interior.ColorIndex = cell.Interior.ColorIndex
' Else
' End If
End If
End If
Next cell
MsgBox trackedCell1.Style & vbCrLf & trackedCell1.Interior.ColorIndex
MsgBox trackedCell2.Style & vbCrLf & trackedCell2.Interior.ColorIndex
На данный момент цель состоит в том, чтобы получить дваразные ячейки, обозначенные другим стилем или цветом, которые должны быть назначены другой неиспользуемой ячейке, поэтому я могу легко вызвать сравнение позже в макросе.