谢谢你的眼睛!我担心自己对VBA来说是全新的,而且我不得不承认一点点挣扎。
我正在尝试我的第一个项目,边做边学,而且我遇到了第一个障碍。没有错误,但我的VLookUp不想返回任何数据。
基本上我试图选择我的"输入"中的所有数据。选项卡,将其剪切并将其传递给我的"输出"选项卡,然后从我的"客户列表"做一个VLookUp;选项卡返回值以输出。
我的代码看起来像这样;
Option Explicit
Sub RP_Maker()
''''''variables
'Misc
Dim x As Long
'Worksheets
Dim ws_Input As Worksheet
Set ws_Input = Workbooks("RP Maker").Worksheets("Input")
Dim ws_Output As Worksheet
Set ws_Output = Workbooks("RP Maker").Worksheets("Output")
Dim ws_ClientList As Worksheet
Set ws_ClientList = Workbooks("RP Maker").Worksheets("Client List")
Dim ws_PRP As Worksheet
Set ws_PRP = Workbooks("RP Maker").Worksheets("Previous RPs")
'Last Column & Row
Dim lCol As Long
lCol = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column
Dim lRow As Long
lRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
'''''Code
'Cut Input sheet and paste to Output sheet.
ws_Input.Activate
ws_Input.Range(Cells(1, 1), Cells(lRow, lCol)).Cut ws_Output.Cells(1, 1)
ws_Output.Activate
'VLookUp
ws_ClientList.Activate
For x = 2 To lRow
On Error Resume Next
ws_Output.Cells(x, 4) = Application.WorksheetFunction.VLookup(ws_Output.Cells(x, 1), ws_ClientList.Range(Cells(1, 1), Cells(lRow, lCol)), 4, False)
On Error GoTo 0
Next x
ws_Output.Activate
End Sub
它不会引发任何错误,但我猜这是因为我使用过(可能是错误的)错误处理程序。
有相关数据需要查找,因此每次运行都不应该是错误。大约一半是空白,一半是数据。
全部谢谢!
卡勒姆
答案 0 :(得分:1)
以下是尝试使用其他工作表中的单元格(默认ActiveSheet property)构建范围。
ws_ClientList.Range(Cells(1, 1), Cells(lRow, lCol))
它应该更接近,
ws_ClientList.Range(ws_ClientList.Cells(1, 1), ws_ClientList.Cells(lRow, lCol))
有几个地方你重复这个格式错误的范围引用,但由于正确的ActiveSheet你正在逃避它。最好明确引用所有Range object和Range.Cells property Range.Parent属性。
答案 1 :(得分:1)
感谢大家的帮助。应该责备我的部分参考的细胞/范围很差。
我按照建议进行了修改,它运行得很完美,只是因为其他任何人都受到类似的痛苦,这就是我的工作代码的样子;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
/* Make it visible here. */
button.setVisibility(View.VISIBLE);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
/* Make it disappear here. */
button.setVisibility(View.GONE);
}
}, 1000);
}
}, 1000);