使用Vlookup()公式在Excel Vba中键入不匹配项

时间:2018-07-23 15:54:44

标签: excel vba excel-vba excel-formula vlookup

我是VBA的新手。我编写了以下宏,该宏给我一个“类型不匹配”错误(运行时错误:13)。

Private Sub CommandButton2_Click()
Set myrange = Sheet1.Range("B4081:F4094")
Sheet1.Cells(1634, 13).Formula = "=VLOOKUP(" & Sheets("Sheet1").Cells(1694, 2) & myrange & ", 2, False)"
End Sub

最终,我的意图是将下拉列表与vlookup一起使用,以便选择下拉值会更改同一行其他列中的多个关联值。这个小宏应该是大宏的一部分。以前,我使用的是这样的东西:

Sheet1.Cells(i, 3).Value = Application.VLookup(Sheet1.Cells(i, 2), myrange, 2, False)

问题是当我从下拉菜单中选择一个选项时,它没有显示相关的值。我猜想可能是我使用vlookup更改了值,这是我单击命令按钮时发生的固定的一次性事件。因此,我将其替换为公式,以为由于该公式,当我从下拉列表中选择一个条目时,值将发生变化。

我需要提交一份包含9张纸的作品,在每张纸中我都必须这样做,因此要提交VBA。似乎需要一些快速帮助。预先感谢!

1 个答案:

答案 0 :(得分:1)

#include <iostream> #include <ctime> #include <cstdlib> using namespace std; int main() { // This is the Random number Array srand (time (NULL)); const unsigned int sizeOfArray = 10; int numberArray [sizeOfArray]; for (int i = 0; i < sizeOfArray; i++) { numberArray [i] = rand() % 100; cout << numberArray [i] << endl; } // This is the code for bubble sort int myArray [] ; int swapHolder = -1; for (int index = 0; index <10; index++) { if (myArray [index] > myArray [index + 1]) { swapHolder = myArray [index + 1]; myArray [index + 1] = myArray [index]; myArray [index] = swapHolder; } } for (int index = 0; index < 10; index++) { cout << myArray [index] << ", "; } cout << endl; } 具有3个重要的参数,应将其传递。在您的情况下,您要将两个参数作为VLOOKUP()传递,这是VBA中的一个对象,并且需要该对象的Range()属性。

长话短说,将Address行更改为此:

.Formula

或者,如果您需要一些最小的示例:

Sheet1.Cells(1634, 13).Formula = "=VLOOKUP(" & Sheet1.Cells(1694, 2).Address & _
                                        "," & myRange.Address & ", 2, False)"

当公式正常运行时,这是在Excel中Sub TestMe() Dim myRange As Range Set myRange = Range("D1:E10") Cells(1, 1).Formula = "=VLOOKUP(" & Cells(2, 2).Address & "," _ & myRange.Address & ", 2, False)" End Sub 用法的一个很好的例子: