小编Sha*_*ado的帖子

打开第二个工作簿时阻止屏幕闪烁(相同实例)

前缀:我的代码打开一个外部工作簿,里面有一个DB,其中包含整个组织不应该看到的一些信息.我能够打开外部工作簿,并PivotTable成功检索所有数据.

问题:当我的代码运行时,屏幕闪烁约0.5秒以显示其他工作簿.

目标:在工作簿之间切换时,不要在屏幕上出现任何闪烁.

我的守则(相关部分):

Option Explicit

Public Sub GetBudgetData_fromPivotTable(Budget_ShtName As String, Budget_PvtName As String)

Dim BudgetWB                            As Workbook
Dim PvtTbl                              As PivotTable
Dim pvtFld                              As PivotField
Dim strPvtFld                           As String
Dim prjName                             As String

' ****** This is the Section I am trying to prevent from the screen to flicker ******
Application.ScreenUpdating = False
Application.DisplayAlerts = False

' read budget file parameters
Set BudgetWB = Workbooks.Open(BudgetFile_Folder & BudgetFile_wbName)

BudgetWB.Windows(1).Visible = False
OriginalWB.Activate ' <-- …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

6
推荐指数
1
解决办法
1373
查看次数

VBA将模块从一个Excel工作簿复制到另一个工作簿

我正在尝试使用VBA将模块从一个excel工作簿复制到另一个工作簿.

我的代码:

'Copy Macros

Dim comp As Object
Set comp = ThisWorkbook.VBProject.VBComponents("Module2")
Set Target = Workbooks("Food Specials Rolling Depot Memo 46 - 01.xlsm").VBProject.VBComponents.Add(1)
Run Code Online (Sandbox Code Playgroud)

出于某种原因,这会复制模块,但不会复制内部的VBA代码,为什么?

请有人告诉我我哪里出错了?

谢谢

excel vba excel-vba

5
推荐指数
3
解决办法
2万
查看次数

无法分配给数组-vba

我正在尝试实现下一个代码并得到错误-

无法分配给数组

错误在哪里?请注意,如果输入Dim arrf() As Variant而不是Dim arrf(5) As Variant输入错误,

类型不匹配

Public Function calc(ByVal value As Integer, ByVal num As Integer) As Variant()

Dim arr(5) As Variant
Dim x As Double

If value >= num Then
    x = value - Application.RoundDown(value / num, 0) * num
    arr(0) = x
    arr(1) = num - arr(0)
    arr(2) = Application.RoundUp(value / num, 0)
    arr(3) = 1
    arr(4) = Application.RoundDown(value / num, 0)
    arr(5) = 1
Else
    x = num - …
Run Code Online (Sandbox Code Playgroud)

arrays vba function

3
推荐指数
2
解决办法
2万
查看次数

Excel VBA RegEx,可从范围内的价格值中提取数字(具有逗号,$和-)

我有一个从数据库中提取的字段数据,它代表一个值范围,但它以Excel的String格式出现$86,000 - $162,000

我需要提取的最小值,并从每个单元中的最大值,所以需要提取它的数字部分,而忽视了$-,

我已经附加了我拥有的数据的图像,以及我想从中提取的值。

在此处输入图片说明

这是我使用RegEx获得的最接近的模式,但不是我要找的东西。

Pattern = (\d+)(?:\.(\d{1,2}))?

有人可以协助吗?

regex excel vba excel-vba

2
推荐指数
1
解决办法
161
查看次数

如何通过 VBA 仅循环遍历 Excel 工作表中一列中的非空单元格?

根据这个网站

我认为这应该有效:

Dim cell As Range
For Each cell In xxxSheet.Range("B:B").SpecialCells(xlCellTypeFormulas, xlNumbers)
    'Do sth.
Next
Run Code Online (Sandbox Code Playgroud)

这不起作用。有什么遗漏吗?

excel vba

1
推荐指数
1
解决办法
1万
查看次数

将复选框和事件处理程序动态添加到工作表

在我的 BI 列中的工作表中有组件名称 在列 AI 中希望有动态添加的复选框,因为 B 列中的名称列表会随着时间的推移而增加

我需要能够执行以下操作: - 处理事件 (onclick) 作为勾选/取消勾选复选框隐藏/取消隐藏另一个工作表中的行 - 在我循环浏览另一个模块中的复选框时返回每个复选框的状态(来自commandbox) 并根据状态是否执行操作 - 修改每个复选框的状态,因为我有 1 个命令框来勾选它们,还有 1 个命令框来取消勾选它们

到目前为止,我有一个工作原型,但我有两个问题:1)复选框没有链接到 A 列中的单元格,它们只是在我创建它们时定位 2)复选框不是动态的,我手动创建它们并且有为每个复选框(> 50 个复选框)编写一个事件处理程序 (onclick)

我试图创建一个代码来动态添加复选框并创建一个类模块来处理事件,但我真的被卡住了..我复制并修改了一些最初用于用户表单的代码,并设法使其在一个userform,但我宁愿将所有内容都放在工作表上,如上所述。

这是类模块代码(命名为:clsBoxEvent)

Option Explicit
Public WithEvents cBox As MSForms.CheckBox

Private Sub cBox_Click()
MsgBox cBox.Name
End Sub
Run Code Online (Sandbox Code Playgroud)

这是我作为模块编写的代码。我打算将它放在一个命令按钮的事件 (onclick) 中,我打算单击该按钮以更新复选框列表。除非这不是必需的,因为有一种方法可以在 B 列中的单元格不为空时立即创建复选框?

我感谢您的意见。

Dim chkBoxEvent As clsBoxEvent
Dim chkBox As MSForms.CheckBox
Dim chkBoxColl As Collection

Private Sub chkBox_update()
Dim i As Integer
Set chkBoxColl = New Collection

For i = 1 To …
Run Code Online (Sandbox Code Playgroud)

vba dynamic worksheet event-handling

0
推荐指数
1
解决办法
9732
查看次数

标签 统计

vba ×6

excel ×4

excel-vba ×3

arrays ×1

dynamic ×1

event-handling ×1

function ×1

regex ×1

worksheet ×1