EXCEL VBA优化 http://zhidao.baidu.com/question/1175885929211894219.html

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EXCEL VBA优化 http://zhidao.baidu.com/question/1175885929211894219.html相关的知识,希望对你有一定的参考价值。

原表格是K8:M28区域,我按照你给的程序,当K8:M28自动生成BOM 时,Sheet2.Range("A1")不会自动自动生成,需要我选中K8:M28区域,点VBA中运行程序,才能运行Sub ValidDataCopy(),得出结果。
我想要,当原表格K8:M28区域自动生成时,程序能自动运行Sub ValidDataCopy(),在Sheet2.Range("A1")中生成结果。
我是设置了一个控件,指定宏是ValidDataCopy(),每次K8:M28区域自动生成后,点击整理BOM控件,执行Sub ValidDataCopy()。
假如可以实现程序内部自动运行更好。

把代码放在工作表模块中,这样数据有更新变化就会自动触发代码运行。代码更改如下

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim lRow As Long, i As Long, myRng As Range
If Not Intersect(Target, Range("K8:M28")) Is Nothing Then
    lRow = Cells(Rows.Count, "M").End(xlUp).Row
    Set myRng = Range("K7:M7")
    For i = 8 To lRow
        If Cells(i, "M") <> "/" Then
            Set myRng = Union(myRng, Range("K" & i & ":" & "M" & i))
        End If
    Next i
    myRng.Copy Sheet2.Range("A1")
End If
End Sub

追问

我按照这个试了

还是在K8:M32自动生成后,需要框选一下这个区域,才能在Sheet2中生成。

 

框选之后,才能出现以下结果

追答

很抱歉,是我弄错了,代码应该放在worksheet_change里面,如图

来自:求助得到的回答
参考技术A 可以专门写一个,程序内部自动运行的。 参考技术B 原程序什么样子的 参考技术C 在控件上指定宏即可。

如下VBA代码 在EXCEL运行时非常慢,有哪位大侠能帮忙解决优化一下。

如下VBA代码 在EXCEL运行时非常慢,有哪位大侠能帮忙解决优化一下。
数据表在如下地址http://pan.baidu.com/s/1nt3eGQH

Sub 成品库存更新表编码自动填充()
Dim rs As Integer
rs = 3 '从第几行开始计算
Do Until Sheet11.Range("b" & rs) = ""
Range("m" & rs).Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-11],编码对照!C[-10]:C[-7],4,0)"
rs = rs + 1
Loop
Sheet11.Range("m3:m" & rs).Select
Selection.Copy '复制选择单元格
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub

参考技术A 就是去另外一个工作薄查询一下对应的编码写入而已,你这样写代码,整个过程不断来回操作两个工作薄,不慢才怪,
建议你用字典,一次读入整个编码对照工作表的相应列,之后,用数组存储对应的值,再写入这个工作表.
这样应该会快很多
参考技术B Range("m" & rs).Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-11],编码对照!C[-10]:C[-7],4,0)"
前面两名改为
Range("m" & rs).FormulaR1C1 = "=VLOOKUP(RC[-11],编码对照!C[-10]:C[-7],4,0)"
然为可以关闭公式自动计算。应该很快的追问

运行了一下,还是比较忙,2秒才3个单元格的进度。

本回答被提问者采纳
参考技术C Do loop 那段应该用几行搞定,先确定区域,然后区域填充。你录制宏,自己改一下。

以上是关于EXCEL VBA优化 http://zhidao.baidu.com/question/1175885929211894219.html的主要内容,如果未能解决你的问题,请参考以下文章

如下VBA代码 在EXCEL运行时非常慢,有哪位大侠能帮忙解决优化一下。

VB/VBA怎么修改 Excel 单元格的数据类型?

excel vba中将公式转为文本或数值公式

VBA - 从 Access (QueryTable) 生成 Excel 文件

excel等于某个值自动 隐藏/显示 整行 求教VBA代码

[求助] excel VBA多条件求和代码优化