用于将工作表与列进行比较并使用颜色显示结果的VBA代码

用于将工作表与列进行比较并使用颜色显示结果的VBA代码

本文介绍了用于将工作表与列进行比较并使用颜色显示结果的VBA代码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! 你好,我是VBA编程新手所以我希望有人可以帮助我。 上周我一直在努力做的事情就是在仓库中找到空位的概览。 我实际上确实使用条件格式化功能让它工作(几乎没有)。 但是因为它必须比较一下9000个位置它将我的64位Excel(i7带有8GB)研磨成爬行并最终崩溃。 我附上了我一直在使用的文件。 在表1中,您可以看到我们仓库管理系统的导出,其中包含所有包含材料的位置。 在表2中,您可以看到所有可能位置的概览。 我的目标是给第2张上有材料的所有位置颜色。 空位置应该保持不变。 我希望VBA可以实现这一点,并且当我使用它时它不会崩溃excel     文件链接 http://dl.dropbox.com/u/350816/empty-locations.xlsx推荐答案 您的Kardex工作表的使用范围扩展到行1048576.这使得工作簿非常大而且速度慢。The used range of your Kardex worksheet extends to row 1048576. This makes the workbook very big and slow.您可以通过清除KJ列中的公式,然后删除KI:KK列来纠正这一点。小心 - 这需要一点时间。You can correct this by clearing the formulas from column KJ, then deleting columns KI:KK. Be careful - this takes a bit of time.如果你保存工作簿,它会很多更小,响应更快。If you then save the workbook, it'll be much smaller and more responsive.这是一个用于颜色使用位置的宏。在我的电脑上它运行大约7.5秒。Here is a macro to color used locations. On my pc it runs in about 7.5 seconds.Sub ColorKardex() Dim wshV As Worksheet Dim loc As Range Dim wshK As Worksheet Dim rng As Range Dim cel As Range Dim s As String Dim fnd As Range Dim t As Single Application.ScreenUpdating = False t = Timer Set wshV = Worksheets("IMPORT BTS VOORRAADLIJST") Set loc = wshV.Range(wshV.Range("Z7"), wshV.Range("Z" & wshV.Rows.Count).End(xlUp)) Set wshK = Worksheets("KARDEX INDELING") Set rng = wshK.Range("B2:KH248").SpecialCells(xlCellTypeConstants) rng.Interior.ColorIndex = xlColorIndexNone For Each cel In rng s = cel.Value If s Like "KA*" Then Set fnd = loc.Find(What:=s, LookAt:=xlWhole) If Not fnd Is Nothing Then cel.Interior.Color = RGB(0, 255, 0) End If End If Next cel t = Timer - t Debug.Print "Macro took " & Round(t, 2) & " seconds" Application.ScreenUpdating = TrueEnd Sub 带有宏的修改后的工作簿(保存为.xlsm)可以从 http://sdrv.ms/OabNV3 这篇关于用于将工作表与列进行比较并使用颜色显示结果的VBA代码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
09-02 00:24