- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道有很多与此主题相关的线程,例如不要使用“选择”或“激活”,或者如果需要使用它,请将其设置为 false。我每次使用“select”或“activate”时都将其设置为False,但仍然不起作用,请帮忙!!
Sub Forecast()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.DisplayStatusBar = True
'Application.StatusBar = "Please be patient..."
Dim Rating As Variant, sht As Worksheet, LastRecordRow As Long, i As Integer, LastRow As Long
Rating = InputBox("Please Provide Weather Rating (Any Number Between 1 and 4)", "Input Needed")
If Rating < 0 Or Rating > 4 Then
MsgBox "Invalid Value, Please Enter A Valid Number! (1~4)", , "Alert!!!"
Exit Sub
Else
For Each sht In ActiveWorkbook.Worksheets
If sht.Name = "Forecast" Then
sht.Range("a1") = ""
Else
LastRecordRow = sht.Range("A1").End(xlDown).Row
sht.Range("I1:O1").EntireColumn.Delete
Application.Run "ATPVBAEN.XLAM!Regress", sht.Range("$B$1", "$B" & LastRecordRow), _
sht.Range("$C$1", "$C" & LastRecordRow), False, True, , sht.Range("$I$1") _
, False, False, False, False, , False
PVTotal = Application.WorksheetFunction.Sum(Range("B2", "B" & LastRecordRow))
ImpTotal = Application.WorksheetFunction.Sum(Range("D2", "D" & LastRecordRow))
sht.Range("B" & LastRecordRow + 1) = PVTotal
sht.Range("D" & LastRecordRow + 1) = ImpTotal
sht.Cells.EntireColumn.AutoFit
sht.Range("A1").Select
End If
Next sht
Worksheets("Forecast").Activate
i = 1
ActiveSheet.Range("B" & i + 2, Range("H" & i + 2).End(xlDown)).EntireRow.Delete
Do While i <= ActiveWorkbook.Worksheets.Count
RowForSum = Worksheets(i).Range("B1").End(xlDown).Row
With ActiveSheet
.Cells(i + 2, 2).Value = Worksheets(i).Name
.Cells(i + 2, 3).Value = Worksheets(i).Range("J17")
.Cells(i + 2, 4).Value = Worksheets(i).Range("J18")
.Cells(i + 2, 5).Value = Rating
.Cells(i + 2, 6).Value = ActiveSheet.Cells(i + 2, 3).Value + ActiveSheet.Cells(i + 2, 4) * Rating
If Worksheets(i).Range("B183").Value = 0 Then
.Cells(i + 2, 7).Value = 0
Else
.Cells(i + 2, 7).Value = Worksheets(i).Range("D" & RowForSum).Value / Worksheets(i).Range("B" & RowForSum).Value
End If
.Cells(i + 2, 8).Value = ActiveSheet.Cells(i + 2, 6).Value * ActiveSheet.Cells(i + 2, 7)
End With
i = i + 1
Loop
LastRow = ActiveSheet.Range("B2").End(xlDown).Row
a = Application.WorksheetFunction.Sum(ActiveSheet.Range("F3", "F" & LastRow))
b = Application.WorksheetFunction.Sum(ActiveSheet.Range("H3", "H" & LastRow))
With ActiveSheet
.Range("F" & LastRow + 1).Value = a
.Range("F" & LastRow + 1).Offset(0, -4).Value = "Total"
.Range("H" & LastRow + 1).Value = b
.Range("A1").Select
.Cells.EntireColumn.AutoFit
End With
Dim rng2 As Range
For Each rng2 In ActiveSheet.Range("B2", Range("B2").End(xlDown))
If rng2 = "Forecast" Then
rng2.EntireRow.Delete
Else
If rng2 = "Total" Then rng2.EntireRow.Font.Bold = True
End If
Next
End If
Application.ScreenUpdating = True
'Application.StatusBar = False
Application.DisplayAlerts = True
End Sub
最佳答案
我也有类似的问题。使用过的练习册Application.ScreenUpdating = False
在 Excel 2016 中变得缓慢,并且在运行更新工作表的 VBA 时闪烁。
使用消息框和 Debug.Print
我将其跟踪到一个循环,该循环使用如下代码更新了单元格内容:
Dim rowCounter As Integer
For rowCounter = 1 To numberOfEmployees
'Do some work
If (someCondition) Then
startCell.offset(rowCounter).Value = ""
Else
startCell.offset(rowCounter).Value = "something else"
End If
Next rowCounter
如果我替换了以下行
startCell.offset(rowCounter).Value = ""
与其中之一
startCell.offset(rowCounter).Value = "anything except empty"
或
startCell.offset(rowCounter).ClearContents
然后闪烁停止,执行循环的时间从几秒缩短到远小于 1 秒。
我不知道为什么这会起作用。
因此,如果循环中的任何单元格返回空字符串,您可以尝试使用这两行之一。
关于excel - ScreenUpdating = False 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25067667/
这实际上并不是一个特定于代码的问题,而是更多地满足好奇心(并避免 future 的问题),所以我认为 SO 是一个合适的地方来问它。 我的问题的基础是:VBA 如何处理 Application.Scr
Application.ScreenUpdating = False Application.ScreenUpdating = True 我发现关于第二行的矛盾陈述。 有没有必要? 有人说 Excel
我知道有很多与此主题相关的线程,例如不要使用“选择”或“激活”,或者如果需要使用它,请将其设置为 false。我每次使用“select”或“activate”时都将其设置为False,但仍然不起作用,
我有以下简单代码来关闭一系列打开的工作簿。我刚刚切换到 Excel 2013,在这个新版本中,对于每个未隐藏的工作簿,我的屏幕在 Excel 中不断闪烁一个白色窗口。 如何才能关闭烦人的屏幕闪烁? S
我对 VBA 还很陌生,但我通过阅读这些论坛找到了解决方法。我从来没有遇到过 Application.ScreenUpdating 不起作用的问题,并且在网上研究后,我找不到问题的答案。 我在 Exc
我是初学者,仍然学习有关对MS Excel VBA宏进行编程的知识。我需要社区的帮助,以使用excel上的宏代码解决我的问题。 Sub export_data() With Applicati
我有一个奇怪的问题,即 Excel 在我的开发机器和测试机器上的行为不同。 在我的加载项中,我在几个地方为长时间运行的进程关闭了 ScreenUpdating。在我的机器上这工作正常。在测试机上,我一
我的代码需要 30 多分钟才能运行。在大多数代码运行时,我已将屏幕更新设置为 false,但我不时将其设置为 true,然后直接返回 false。 在 2003 年、2007 年和 2010 年,这允
我正在编写一个小程序,从 SAP 中提取数据并在 Excel 中进行分析。我使用 VBA 完成所有这些工作。 我正在使用一个名为的函数 Application.ScreenUpdating = Fal
我不是经验丰富的 VBA 程序员,我需要社区来查找 Excel 的问题。 我的问题是,在 Excel 中,代码在以下行之后立即停止执行:Application.ScreenUpdating = Tru
这是一个大宏的小问题,我正在阅读日志文件并通过将它们写入多个工作表来准备数据。我不想看到所有这些写作,所以我关闭了屏幕更新,但是我想看到一些进展,所以我不时切换屏幕更新我激活顶部工作表,在一些中写入一
据我所知,Application.ScreenUpdating = true 值将一直保持到设置 Application.ScreenUpdating = false 为止。但这个值的“生命周期”是多
我正在编写一个 C# VSTO Excel 插件。在我的项目中,有更新和合并大量单元格的需求。 为了减少闪烁并提高性能,我之前将 Application.ScreenUpdating 设置为 fals
我有一个 vba 代码,可以将某些单元格从另一个 Excel 工作表复制到事件的 Excel 工作表。我希望工作能够更快地完成。 那么,将 Application.ScreenUpdating 设置为
这样做的意义是什么: Application.ScreenUpdating = False Application.DisplayAlerts = False 它真的能节省那么多时间吗? 最佳答案 这
我正在寻找等效的 VBA-GAS: Application.ScreenUpdating = False 我在我的一个 Google 电子表格中运行一个很长的宏,每次至少需要 30 秒才能完成。如果宏
我正在将一个项目从 iOS7 转换到 iOS8,它使用自定义转换并且需要在它完成加载后捕获模态 afterScreenUpdates:YES 并且看到整个屏幕放大一秒钟并缩放退后,退下。我还看到这种情
我读过 .Select语句强制 Excel 在屏幕上显示这些事件中的每一个,并大大减慢宏。 我想加速一些用记录宏方法编写的旧宏,并且有很多 .Select陈述。 会Application.Screen
我几年前开发的基于 Excel 的长期运行的高端应用程序在 Excel 2007 和 2010 中运行良好,在 Excel 2013 和 2016 中看起来就像业余时间,因为 Application.
我正在向工作表中插入大量数据,但这样做时屏幕会闪烁。在 VBA 和 com 加载项中,我可以设置一个属性来延迟更新,直到它们完成。 在 excel 的 office-js 加载项中是否有与 Appli
我是一名优秀的程序员,十分优秀!