我已经使用这个网站和其他人来启动和运行这个项目,但我已经碰到了一堵砖墙。我正在做的是从特定工作簿(ImportConvert.xlsx)导入(复制)列c - h并将它们粘贴到ControlBook.xlsm的列a-f中。然后我复制第三个工作簿(Clients.xlsx)的行-c并将这些列粘贴到ControlBook.xlsm的列m -o中。两者都在同一个工作表上。我能够远离我到目前为止阅读的教程,并感谢所有人的信息。我要完成的下一件事是使用O列中的每个值搜索工作表B列中的每个值,以查看列O中的值是否包含在B列中的字符串值中。当找到匹配项时,我想要列O中的值显示在列g。
中当我执行代码时,它从头到尾处理,但不会在列g。
中显示该值以下是代码:
Sub StartProcess()
Dim wbk As Workbook
strDataFile = "C:\Documents and Settings\Administrator\Desktop\ImportConvert.xlsx"
strMasterFile = "C:\Documents and Settings\Administrator\Desktop\ControlBook.xlsm"
strClientFile = "C:\Documents and Settings\Administrator\Desktop\Clients.xlsx"
Set wbk = Workbooks.Open(strDataFile)
With wbk.Sheets("Data")
Range("c:h").Copy
End With
Set wbk = Workbooks.Open(strMasterFile)
With wbk.Sheets("Deposits")
Range("a:f").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End With
wbk.Save
wbk.Close
Set wbk = Workbooks.Open(strClientFile)
With wbk.Sheets("ActivePayee")
Range("a:c").Copy
End With
Set wbk = Workbooks.Open(strMasterFile)
With wbk.Sheets("Clients")
Range("m:o").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End With
Dim rngSub As Range
Dim rngSrch As Range
For Each rngSub In Range("o2:o1000")
For Each rngSrch In Range("b2:b1000")
If InStr(rngSrch, rngSub) > 0 Then
rngSrch.Offset(, 5) = rngSub.Value
End If
Next
Next
End Sub
这不是最优雅的解决方案,但我想帮助的人是不耐烦的,现在就想要它(不考虑建造得当)。在他平静下来并学习更优雅的方式来建立这个项目后,我会回去。我只是想给这个家伙一些东西,让他不要那么恐慌。
我在VBA曝光率很低的情况下来到这里,但我熟悉通过PhP,mySQL等进行编程。我在90年代末和21世纪初期对VBA进行了摸索,但很长一段时间没有接触过VBA。
提前感谢您提供任何帮助。
答案 0 :(得分:0)
您的所有Range(...)
引荐都可能引用错误的Sheet
。没有限定符Range
本身就是Activesheet.Range
更改
With wbk.Sheets("Data")
Range("c:h").Copy
End With
到
With wbk.Sheets("Data")
.Range("c:h").Copy
End With
同样适用于Range
和
For Each rngSub In Range(...)
到
For Each rngSub In wrk.Worksheets("YourName").Range(...)