Я уже выбираю другой диапазон ячеек в течение дня и проверяю через Vlookup
, существует ли связь с учетной записью.
Если она существует, мой vlookup
говорит "true" в столбцах F и G;если это не так, мой vlookup
возвращает "ложь"
Однако возможная причина, по которой vlookup
возвращает "ложь", даже если сопоставление аккаунта связано с проблемой пробелов
ТакНиже я создал код, который проверяет, есть ли в определенных столбцах F и G inStr
со словом "False".
Если обнаружено любое слово "False", вызывается определенная подпроцедура обрезкиисключить интервалы в моем выборе.
Обнаружение строки «False» выполняется еще раз, чтобы убедиться, что «False» теперь «True» из-за устранения проблемы с интервалами.Если строка «False» все еще существует после итерации цикла, то у нас есть неправильная ассоциация учетной записи.После этого появляется окно сообщения, и код заканчивается
Пожалуйста, я хочу обрезать свой выбор только тогда, когда я обнаружу любую строку "False" в соседних столбцах F и G .... поэтому мой выбор, например,A10: E14, я хочу обнаруживать только «ложные» строки в F10: G14
Sub myCode()
Dim iRow As Range, cell As Range
Set iRow = Range("F2:G100") '<<<this should be only columns F and G with
'rows adjacent to my manual selection
For Each cell In iRow 'for each cell in F and G adjacent to my
'selection
If InStr(cell.Value, "FALSE") > 0 Then
Call Trim_Code
End If
Next cell
For Each cell In iRow
If InStr(cell.Value, "FALSE") > 0 Then
MsgBox ("Account Mis-association Found!")
End If
Next cell
End Sub
Sub Trim_Code()
Dim Rng As Range
Set Rng = Selection
For Each Cell In Rng
Cell.Value = Trim(Cell)
Next Cell
End Sub
Как мне установить в iRow только смежные строки F и G относительно моего выбора,и как мне очистить этот код, чтобы он выполнялся быстрее?
\\\
Решено с любезной помощью PeterT!
Sub Test ()
Dim thisWS As Worksheet
Set thisWS = ActiveSheet
Dim Association As Boolean
Association = True
Dim firstRow As Long
Dim lastRow As Long
firstRow = Selection.Cells.Row
lastRow = firstRow + Selection.Cells.Rows.Count - 1
Dim accountChecks As Range
With thisWS
Set accountChecks = .Range(.Cells(firstRow, 6), .Cells(lastRow, 7))
End With
Dim account As Range
For Each account In accountChecks
If account = False Then
Call Trim_Code
End If
If account = False Then
MsgBox "Account Mis-association Found in row " & account.Row & "!"
Association = False
End If
Next account
If Association = False Then
Exit Sub
End If
'proceed to do some crazy code
End Sub
Sub Trim_Code ()
Dim Rng As Range
Set Rng = Selection
For Each cell In Rng
cell.Value = Trim(cell)
Next cell
End Sub