excel VBA高手请进,关于让表格自动刷新的问题~

下面的代码,每次要双击单元格才会刷新结果,我需要任何一个单元格改变、复制黏贴 都刷新一下结果

Sub SortArray(arr As Variant)
Dim i As Long, j As Long
Dim temp As Variant
Dim hasExchanged As Boolean

For i = LBound(arr) To UBound(arr) - 1
hasExchanged = False
For j = i + 1 To UBound(arr)
If Len(arr(i, kLastCol)) < Len(arr(j, kLastCol)) Then
' 交换变量名对应的数值
temp = arr(i, 1)
arr(i, 1) = arr(j, 1)
arr(j, 1) = temp

' 交换变量名
temp = arr(i, kLastCol)
arr(i, kLastCol) = arr(j, kLastCol)
arr(j, kLastCol) = temp

hasExchanged = True
End If
Next j
If Not hasExchanged Then Exit For
Next i
End Sub

可以用worksheet_change事件,把代码复制到你要操作的sheet,不是放在单独模块里面
重点是要注意先屏蔽worksheet_change对宏内事件的相应
你试试看,可以追问
Private Sub Worksheet_Change()
Application.EnableEvents = False '屏蔽事件响应
'此处加入你的代码
Application.EnableEvents = True '恢复事件响应

End Sub追问

你是回答我的问题吗?

追答

你的代码没法自动运行啊,要用private sub和worksheet_change

把你上面的代码,除了头尾,复制到此处加入你的代码这行

但宏不是像sub一样放在模块里,要放到sheet1类似的工作表

追问

我只截取了最下面的一段~  我主要是下面的这段功能,不能自动更新,要双击单元格

追答

改了?不是你描述的自动更新?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-07-10
我来说两句吧,首先的思路就是将不可能属于公式计算的字符替换为空字符,剩下的部分作为公式计算结果。如何去判断是不是公式计算的字符呢?可以比较其ASC码的范围。这里对计算式的文本就有一定的要求了,比如不能出现“3楼的面积是长31米*宽10米”这样的,因为3楼的3字将难以被判断不是公式的一部分。另外一定要用变量的话,变量名称尽可能为单字母,便于判断其属性下面以H6的值“高度2*长度3”的结果填入I6为例,代码如下: Sub aa()Dim str As Stringstr = [H6]For i = Len(str) To 1 Step -1 If Asc(Mid(str, i, 1)) > 100 Or Asc(Mid(str, i, 1)) < 0 Then str = Application.WorksheetFunction.Replace(str, i, 1, "") End If Next Range("I6").Formula = "=" & strEnd Sub追问

我重新整理了一下

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网