我是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。似乎需要一些快速帮助。预先感谢!
答案 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
用法的一个很好的例子: