vba - 如何使用 VBA 在其他列长度范围内的列中查找?
问题描述
我想在列中查找值,但只能在其他列长度的范围内。(通过其他列长度,我的意思是它有多少个带有值的单元格)。A 列有 ID,F 列有产品代码。在 I 列中,我想写下每个产品代码名称。(我正在从另一张产品表中进行我的 vlookup)。如果 vlookup 失败,则在特定行中写入 ERROR 而不是 #N/AI。可能会发生用户在 A 列中输入 ID,但忘记输入产品代码,所以我想查找 F 列直到 A 列中的行数(输入的 ID)(这样用户可以看到由于现有 ID 没有产品代码而出错)我应该如何覆盖下面的代码?我知道我应该以某种方式覆盖这一行: For Each Acell In Sheet1.range(ToLookup, range(columnName & Rows.Count).End(xlUp))
Sub Validation()
Dim inputTemplate As Worksheet
Set inputTemplate = Worksheets("Input template")
Dim accounts As Worksheet
Set accounts = Worksheets("Accounts")
Dim products As Worksheet
Set products = Worksheets("Products")
Call Clear(inputTemplate)
Call aValidation(inputTemplate, accounts, inputTemplate.range("F2"), accounts.range("A1:B45"), "F", 4, -5)
Call aValidation(inputTemplate, products, inputTemplate.range("E2"), products.range("A1:C33"), "E", 4, -4)
End Sub
Sub aValidation(Sheet1 As Worksheet, Sheet2 As Worksheet, ToLookup As range, LookupTable As range, columnName As String, LookupPos As Integer, CIDPos As Integer)
Dim Acell As range
For Each Acell In Sheet1.range(ToLookup, range(columnName & Rows.Count).End(xlUp))
Acell.Offset(0, LookupPos).HorizontalAlignment = xlLeft
Acell.Offset(0, LookupPos).Formula = Application.VLookup(Acell, LookupTable, 2, False)
Debug.Print (Acell.Offset(0, -4).Value)
If Application.WorksheetFunction.IsNA(Acell.Offset(0, LookupPos).Value) And IsEmpty(Acell.Offset(0, CIDPos)) = False Then
Acell.Offset(0, LookupPos).Interior.Color = RGB(255, 0, 0)
Acell.Offset(0, LookupPos).Value = "ERROR"
Acell.Offset(0, LookupPos).HorizontalAlignment = xlVAlignCenter
End If
Next Acell
End Sub
Sub Clear(Sheet1 As Worksheet)
Sheet1.Columns("H:J").Rows("2:" & Rows.Count).ClearContents
Sheet1.Columns("H:J").Rows("2:" & Rows.Count).ClearFormats
End Sub
解决方案
与此同时,我得到了答案:
For Each Acell In Sheet1.range(ToLookup, range(columnName & Sheet1.Columns("A").Cells.SpecialCells(xlCellTypeConstants).Count))
推荐阅读
- android - 从应用商店安装安卓应用后无法获取推荐码
- angular - 如何使用验证器初始化表单组但最初没有错误
- javascript - 嵌套开口括号的意外缩进
- c# - 使用 Windows.Input 的参考在 VM 中使用 ICommand
- katalon-studio - 是否可以使用 CMD + CLICK 元素 A + CLICK 元素 B
- excel - 将多张工作表导出为 PDF 并获得运行时错误 VBA
- html - 如何设置放入蓝色顶栏的搜索容器的背景颜色?
- java - 如何正确清理错误初始化的对象?
- javascript - 用两个值计算价格
- jquery - jQuery 函数在 Ajax 代码之前未触发