这个简短的问题不是一个大问题,只是一件令人讨厌的小事。
当我运行某个宏时,有时(但不是每次)在不同的excel文件中运行vlookups时,系统会提示我选择要复制的文件,如屏幕截图所示。
我还附上了宏代码的屏幕快照,如果有人可以帮助我完成宏代码,那很好,这样我就不必多次选择文件即可运行它。
我知道我没有该文件的完整路径,我试过了,但是后来它停止工作了,所以我不确定吗?
Range("A1").Select
Sheets.Add After:=ActiveSheet
Sheets("Sheet2").Select
ActiveCell.FormulaR1C1 = "=IF(LEFT(Sheet1!RC,2)=""91"",Sheet1!RC,"""")"
Range("A1").Select
Selection.AutoFill Destination:=Range("A1:A100")
Range("B1").Select
ActiveCell.FormulaR1C1 = _
"=IF(VLOOKUP(MID(RC[-1],3,6),[StockQuantity.xlsm]Sheet7!C2:C10,9,FALSE)=0,"""",CONCATENATE(""89"",RIGHT(RC[-1],8)))"
Range("B1").Select
Selection.AutoFill Destination:=Range("B1:B100")
Columns("B:B").Select
Selection.Copy
Range("C1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Columns("A:B").Select
Selection.Delete Shift:=xlToLeft
我不知道为什么有时候有时候我不必选择文件。
答案 0 :(得分:1)
首先停止选择一个单元格,然后再对它做一些事情。而不是说“抢那个单元!”然后“现在对已抓取的内容执行以下操作”,则只需说“对该单元格执行以下操作”即可。更快更好:)
看到的时候:
Sheets("Sheet2").Select
ActiveCell.FormulaR1C1 = "=IF(LEFT(Sheet1!RC,2)=""91"",Sheet1!RC,"""")"
然后通常可以删除SELECT <carriage return> ActiveCell.
部分并将其余部分缝合在一起。我希望我有道理!
有时(但并非总是)重新输入代码来请求文件。 在您的代码中,您指定了要包含在单元格公式中的文件,但未指定文件的路径,因此Excel将“希望”它已打开,如果没有,它将打开一个提示,供您/用户选择一个可以在其中找到该工作表和单元格引用的文件。
因此,要解决此问题,您需要在公式中包括正确文件的完整路径。只需先手动执行,然后将生成的公式复制到您的VBA代码即可。
答案 1 :(得分:0)
这是您的代码已清理:
Sub stuff()
Sheets.Add After:=ActiveSheet
Range("A1:A100").FormulaR1C1 = "=IF(LEFT(Sheet1!RC,2)=""91"",Sheet1!RC,"""")"
Range("B1:B100").FormulaR1C1 = "=IF(VLOOKUP(MID(RC[-1],3,6),[StockQuantity.xlsm]Sheet7!C2:C10,9,FALSE)=0,"""",CONCATENATE(""89"",RIGHT(RC[-1],8)))"
Columns("B:B").Copy
Range("B1").PasteSpecial Paste:=xlPasteValues
Columns(1).Delete Shift:=xlToLeft
End Sub
将完整路径放在StockQuantity.xlsm
之前,以停止其提示文件。