Sub main()
Set dic = CreateObject("scripting.dictionary")
arr = Range("A1").CurrentRegion
For i = 1 To UBound(arr)
If dic.exists(arr(i, 2)) = False Then
dic(arr(i, 2)) = arr(i, 1)
Else
If dic(arr(i, 2)) <arr(i, 1) Then
dic.Remove arr(i, 2)
dic(arr(i, 2)) = arr(i, 1)
End If
End If
Next i
[E1].Resize(dic.Count, 1) = Application.Transpose(dic.keys)
[D1].Resize(dic.Count, 1) = Application.Transpose(dic.items)
End Sub
PrivateConstDirPath$="C:\"'指向查找的路径Subaa()
DimFilename$
Dimi&
DimWbAsWorkbook,RngAsRange
Application.ScreenUpdating=False
Application.DisplayAlerts=False
OnErrorResumeNext
WithWorksheets("总表")
Fori=1To.[B65536].End(3).Row
IfLen(.Cells(i,2))0Then
Filename=DirPath&""&.Cells(i,"B")&".xls"
IfLen(Dir(Filename))0Then
SetWb=GetObject(Filename)
WithWb.Worksheets("材料")
IfErr.Number0ThenGoTol
SetRng=.[B:B].Find(what:="水泥砖")
IfNotRngIsNothingThen
Worksheets("总表").Cells(i,"C")=Rng.Offset(0,1).Value
EndIf
EndWith
l:
Wb.CloseFalse
EndIf
EndIf
Next
EndWith
Application.ScreenUpdating=True
Application.DisplayAlerts=True
EndSub
VBA开发环境分为“主窗口”、“模块代码”、“工程资源管理器”和“模块属性”这几部分。“模块代码”窗口用来输入“模块”内部的程序代码。“工程资源管理器”用来显示这个数据库中所有的“模块”。当我们用鼠标单击这个窗口内的一个“模块”选项时,就会在模块代码窗口上显示出这个模块的“VBA”程序代码。而“模块属性”窗口上就可以显示当前选定的“模块”所具有的各种属性。 所有的“VBA”程序都是写在“模块代码”窗口中的。我听说程序光写完还不行,还要“编译”什么的,这又是怎么回事呀? 小博士:任何一种高级计算机语言都不能直接被计算机看懂,它们必须通过编译器的编译才能使计算机明白这些语句所要表达的数值运算和逻辑关系。就像我们和外国人交谈一样,如果我们相互之间都不懂对方的语言,就需要一个翻译将所说的话翻译过来,这样双方才能明白对方想要表达的意思。同样编译器也起了相互沟通的中介作用。在VBA中,由于我们在编写代码的过程中会出现这里去看,很详细 http://www.hongen.com/pc/oa/ac2k/ac2k1602.htm欢迎分享,转载请注明来源:内存溢出
评论列表(0条)