У меня есть код, который работает, но не полностью. Этот код принимает значения, которые вводятся в форму. Отсюда он проверяет, найдены ли эти значения в столбцах B и D. Если они оба присутствуют, то ко всей строке применяется перечеркивание.
Моя проблема в том, что как только он найдет совпадение, он не сможет найти другое совпадение, если пользователь снова запустит форму. Он считает, что переменная FoundCell, которая у меня есть, не сбрасывается, она сохраняет диапазон от первого запуска.
Из двух искомых значений значения в столбце B могут повторяться, но значение в столбце D будет уникальным. Поэтому я думаю, что как только он обнаружит, что первый пример B & D присутствует, а затем выполняет перечеркивание, он не сможет найти другой B & D, потому что функция поиска уже нашла A.1. в столбце Б.
Dim A1 As Integer
Dim sec1 As String
'''A.1.
If sec1x = True Then '''This is a checkbox on the form
sec1 = "A.1." ''' this is the value in column B
A1 = A1x.Text ''' this is the value that is searched for in Column D
Dim lrow As Long
Dim rng As Range
lrow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "B").End(xlUp).Row
Dim findWS As Worksheet
Dim findRng As Range
Dim findStr As String
Dim foundCell As Range
Dim rowrng
Set findWS = ActiveSheet
Set findRng = findWS.Range("B3:B" & lrow)
findStr = sec1
Set foundCell = findRng.Find(what:=findStr, LookIn:=xlFormulas, MatchCase:=False, lookat:=xlWhole)
Set rowrng = foundCell
If foundCell.Offset(0, 2).Value = A1 Then
rowrng.EntireRow.Font.Strikethrough = True
End If
MsgBox foundCell.Row '''This was a test, that once its done the foundcell row doesnt change
End If
Не помогло, должен уточнить. Значения в столбце D не являются полностью уникальными. Например, в столбце B указано несколько значений A.1. Значения в столбце D являются числовыми. Итак, в столбце B ищется значение A.1. а затем в столбце D ищется значение 3. Находит оба значения, зачеркиванием. Следующий поиск может искать A.2. в столбце B, затем найдите значение 3 в столбце D. Я пытаюсь зачеркнуть уникальную комбинацию значений в столбце B и D. Но, похоже, это не удается при любом повторении любого отдельного значения, в отличие от их уникальной комбинации. оба.


Что-то вроде этого должно сделать это:
Dim A1 As Long, sec1 As String
Dim lrow As Long, rng As Range, ws As Worksheet, arr
Dim findRng As Range, r As Long
If sec1x = True Then 'This is a checkbox on the form
sec1 = "A.1." ' this is the value in column B
A1 = CLng(A1x.TEXT) ' this is the value that is searched for in Column D
Set ws = ActiveSheet
Set findRng = ws.Range("B3:D" & ws.Cells(ws.Rows.Count, "B").End(xlUp).Row)
arr = findRng.Value 'read range data to array
For r = 1 To UBound(arr, 1) 'loop over array rows
If arr(r, 1) = sec1 Then 'check colB value
If arr(r, 3) = A1 Then 'check colD value
With findRng.Rows(r).EntireRow
.Font.Strikethrough = True
.Columns("N").Value = "N/A"
End With
End If
End If
Next r
End If
Большое спасибо! В дополнение к этому, как мне сделать так, чтобы в дополнение к зачеркиванию код также добавлял значение «Н/Д» в столбец N? Я пытался добавить функцию смещения в findRng, но это добавляло значение к нескольким столбцам и ко всему столбцу, а не только к ячейке в той же строке, что и найденные значения A.1.
См. редактирование для добавления «Н/Д».
Если значение столбца D уникально, сначала найдите его, а затем проверьте столбец B.