提问人:Eric Ahn 提问时间:11/9/2023 最后编辑:braXEric Ahn 更新时间:11/10/2023 访问量:52
VBA 添加 Vlookup + Vlookup w/ 活动单元格
VBA Adding Vlookup + Vlookup w/ active cell
问:
我再次来到这里,看看是否有人愿意回答我遇到的这个问题。 我提前感谢大家。
从上图来看,我们有 SHEET 1 和 SHEET 2,它们代表了 2 个不同的工作表,出于本解释的目的,我在同一张工作表中制作了这些工作表,但实际上,它将在 2 张 spearate 工作表中。
所以基本上我需要一个VBA代码,当我按下那个红色按钮时,代码从单元格C100中获取11,添加到单元格I11中(请注意,I11在不同的工作表中),然后删除单元格C11和E11中的所有内容。
由于只有一个按钮将用于几行,所以我在某处读到,您可以使用一种称为“活动单元格”的东西来避免为每行创建一个按钮。
所以这是我简单地添加这 2 个的代码,但我不知道如何将其放入 VBA 中以使用“activesheet”运行。
=IF(NOT(ISBLANK(G11)),VLOOKUP(A11,G11:I20,3,0))+ VLOOKUP(A11,A11:E20,3,0)
因此,如果按钮正常工作,结果如下:
如果有人能向我解释如何将 activesheet 与那里的 vlookup 代码合并在一起,我将不胜感激,关于我以前使用过的擦除单元格,以便我可以查找它。
再次提前致谢。
答:
2赞
FaneDuru
11/9/2023
#1
请尝试使用下一个代码。您可以从已有的按钮调用它,也可以将其复制为相应的代码:
Sub updateQuantity()
Dim rng As Range, ws2 As Worksheet, rngItem As Range
Set rng = ActiveCell
If rng.cells.count > 1 Then MsgBox "You need to select only ONE CELL...": Exit Sub
If rng.column <> 1 Then MsgBox "The active cell must be in A:A column...": Exit Sub
Set ws2 = rng.Parent.Next ' Set the second worksheet
' in this code it is the next sheet after the one keeping active cell
Set rngItem = ws2.Range("A:A").Find(What:=rng.value, LookAt:=xlWhole) 'find the Item in the second sheet
If Not rngItem Is Nothing Then 'if the item has been found:
'add the existing value in I:I (found range row) with the one from C:C column (activecell row)
ws2.cells(rngItem.Row, "I").value = ws2.cells(rngItem.Row, "I").value + rng.Offset(, 2).value
rng.Offset(, 2).Resize(, 3).ClearContents 'clear content of C:E columns of the active cell row
Else
MsgBox "No any match for item """ & rng.value & """ has been found in """ & _
ws2.name & """ sheet..."
End If
End Sub
如果您拥有的按钮是类型,请写入其事件。如果它是一个按钮,请将上面的宏同化到它上面。ActiveX
updateQuantity
Click
Form
如果有些事情不够清楚,请不要犹豫,要求澄清......
评论
0赞
Eric Ahn
11/9/2023
首先感谢您的回复!我已经调整了您的代码以适合我的真实 excel 文件(只是切换了坐标),并且在“清除内容”(ws2.cells(rngItem.Row, “I”)......) 之前的行上收到运行时错误 13,我会继续尝试调整它并尽快回复您。
0赞
FaneDuru
11/9/2023
@Eric Ahn,恐怕你“改编”的方式不是最合适的。“切换坐标”是什么意思?你在说什么坐标?您不需要更改您在问题中提到的范围吗?您是否适应使用真实的(第二张)表?除了错误号,请问它的描述是什么?Set ws2 = rng.Parent.Next
0赞
Eric Ahn
11/9/2023
抱歉,我使用的术语可能不清楚,我更改了范围和单元格编号(例如:将“I”更改为“E”)并使用“Set ws2 = Sheets(”Material_Index“)”,Material_Index是工作表的名称。
0赞
FaneDuru
11/9/2023
@Eric Ahn 那么,你是否理解正确调整它们的含义和属性?除此之外,为什么您要求特定范围,现在又想将代码用于其他用途?我无法理解这种提问方式,没有冒犯......你们安装了AnyDesk吗?如果是这样并且没有机密内容,我可以连接到您的计算机以查看您的环境中发生的情况吗?Offset
Resize
1赞
Eric Ahn
11/9/2023
你是对的,它在原始形式下工作得很好,它会帮助我适应我的餐桌,非常感谢!
评论