小编R3u*_*3uK的帖子

我可以在宏运行时显示某些内容吗?

我有一个宏需要大约五秒钟来执行,我正在使用代码,Application.ScreenUpdating = False所以看起来Word在运行时已经锁定.

我在最后使用一个消息框告诉他们它是完整的,但我想在执行过程中显示一个图像告诉用户宏正在运行(主要是因为他们不会担心,但也因为它更好看着).

可能有一种更简单的方法,但我决定创建一个图像,创建一个非常基本的用户表单,并简单地将我的图像设置为其背景.然后,一旦代码开始运行,我就会弹出该用户表单.

我遇到的问题是,除非我关闭它,否则其余代码将不会执行.它只是挂起,直到我做某事.有没有办法让我可以在不停止其余流程的情况下显示用户表单?如果没有,是否有另一种方法可以在宏运行时显示图像?

vba word-vba

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

使用VBA代码/宏更改word文档中的页脚

如何使用VBA更改word文档中的页脚信息?

加载文档时,VBA代码将从数据库中获取必要的信息,我想将该信息附加到页脚.

我从DB中获取信息,但将其附加到页脚是另一个故事.

任何简单的相关例子都值得赞赏

vba footer word-2010

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

如何在正则表达式模式中包含变量

我正在开发一个 vba 宏,它使用正则表达式来搜索另一个字符串中的字符串模式。

正则表达式模式包含一个变化的字符串(下面代码中的 APR24)。我需要知道如何在模式中包含变量。有人可以帮忙吗?

我的代码如下

Public Function Regexsrch(ByVal str2bsrchd As String, ByVal str2srch As String) As Boolean
Dim Regex As New VBScript_RegExp_55.RegExp
Dim matches, s
Regex.Pattern = "(\.|\s)APR24(,|\s|\()"
Regex.IgnoreCase = True
    If Regex.Test(str2bsrchd) Then
         Regexsrch = True
Else
        Regexsrch = False
End If
End Function
Run Code Online (Sandbox Code Playgroud)

regex vba

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

VBA检查是否已单击按钮

我认为这是一个简单的解决办法,但我已经被困在这个麻烦的地方好几个小时了.

基本上在excel工作表中我有两个按钮分配给宏:1和2.如果用户先点击1然后点击然后2,2运行一些来自1的变量.但我需要2才能独立运行如果先点击2.因此,我需要在2代码中使用某种方法来询问是否单击了1个按钮.

1和2都是公共潜艇.我认为定义中缺少一些东西,但我不确定.

简单样本:

Public Sub 1()
do this
End Sub

Public Sub 2()
If 1 clicked then
   process a
Else
   process b
End if
End Sub
Run Code Online (Sandbox Code Playgroud)

vba click button

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

使用VBA将包含Excel文件(.xlsm)的宏保存为包含非宏的文件(.xlsx)时禁止对话框

如何禁止显示"如果以此格式保存文件,将删除Visual Basic宏的对话框.您确定要使用此格式吗?" (见下图).

基本上,我正在尝试使用宏来将.xlsm文件保存为.xslx文件?我已经尝试了所有可以找到的对话框抑制代码但它无法正常工作.

这是我的代码:

Private Sub SaveWithNoMacros()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.EnableEvents = False
    ActiveWorkbook.SaveAs Filename:="Clean Workbook With No Macros.xlsx", _  
       FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    Application.EnableEvents = True
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
 End Sub
Run Code Online (Sandbox Code Playgroud)

这是对话框:

Excel对话框

正如您可能想象的那样,我需要转换很多工作簿,并且不希望手动执行此操作.

-D.

macos vba xlsx xlsm

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

将文件大小从字节转换为Kb或Mb

我有大量的行,其中包含不同的值,从1000s到1,000,000s.

这是以字节为单位的数据,我需要将其转换为Kb或Mb.

我可以将所有值除以1M并获得所有数据和Mb,但我希望将数据分为kb和Mb.

我尝试使用MOD功能,但不会这样做,因为所有数字都可以被1K和1M整除,所以我有点卡住了!

这是我得到的数据样本:

16000000
220000
2048000
2048000
230000
16000000
230000
16000000
220000
230000
Run Code Online (Sandbox Code Playgroud)

所以我需要的是,如果单元格包含6个零,则除以1M,或者如果单元格包含3个零,则除以1000.

我将为每个单独的结果添加串联,以便区分数据.

excel vba excel-vba

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

Excel图表VBA循环数据标签

我有很多张纸,每张纸上都有一个图表,我想循环遍历每个图表中的每个数据标签,删除任何等于 0 的数据标签,但似乎无法提取数据标签值。

With ActiveChart
    For k = 1 To .SeriesCollection.Count
        For j = 1 To .SeriesCollection(k).Points.Count
            For l = 1 To .SeriesCollection(k).Points(j).DataLabels.Count
               If .SeriesCollection.Points(j).DataLabels(l) = 0 Then
                   .SeriesCollection.Points(j).DataLabel(l).Delete
                End If
            Next l
        Next j
    Next k
End With
Run Code Online (Sandbox Code Playgroud)

(忽略激活每个图表的每个工作表的循环,该位有效,因此保持代码示例最少)

任何人都可以建议如何循环数据标签、检查值并在适当的地方删除?

excel vba excel-2010 excel-charts

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

表格第二列上的 Excel VBA VLookup

只是想看看是否可以在表的第二列上使用 VLookup?我无休止地搜索并找不到答案,但我觉得这应该是可能的。

我要补充一点,VBA 不是我的强项。我来自 PHP/MySQL 背景,但在我的工作中没有使用任何一种的奢侈,所以我求助于学习 VBA。

到目前为止我的代码(简化):

Dim userEnviron As String
Dim rowId As Integer

rowId = 0
userEnviron = Environ("Username")

Dim tbladmin As ListObject
Set tbladmin = Sheets("Office Details").ListObjects("officeAdmin")

On Error Resume Next
rowId = Application.VLookup(userEnviron , Range(tbladmin), 4, False)
Run Code Online (Sandbox Code Playgroud)

此代码正在查找用户环境变量并在 tbldadmin 表中查找匹配项。该表的构造与标题类似:

Name UserID Email RowID Tom Smith Tom the@the.com 2

我试图查找用户 ID 并返回名称,但是目前我已将代码设置为查找名称并返回 RowID(我添加了第二段代码来获取 RowID 并返回名称)

我可以看到很多完成此操作的非 VBA 示例,但是似乎没有一个使用表格。

可以按照描述使用 VLookup 来搜索第二列中的匹配项并从第一列返回一个值吗?如果我能搜索第二列,我会从最后一列返回。

excel vba vlookup

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

在宏运行结束时打开NUMLOCK

代码的作用:我有一个代码可以在屏幕上移动鼠标,获取打印屏幕并将其粘贴到excel上.

问题:出于某种原因,我的代码总是(完全没有例外)在每次运行后关闭NUMLOCK键.

到目前为止我尝试了什么:我四处搜索并找到了SendKeys(NUMLOCK),它在理论上有效(尽管对用户来说似乎很有问题).

我想做什么:我想在每次宏运行后打开NUMLOCK,

Obs1:我不知道是什么原因导致宏将其关闭.修复造成这种情况的任何事情都是理想的,但由于我不知道问题是什么,我首先要让我的代码功能正常.一旦找到打开NUMLOCK键的方法,我将继续努力.

问题:我可以使用SendKeys执行此操作吗?我使用得当吗?有没有更好的办法?

Obs2:由于它是一个更大的代码,一旦解决了这个问题,我将发布整个代码的另一个问题,并继续讨论造成问题的原因.

代码我试图起诉转向numlock:

Application.Sendkeys (NUMLOCK)
Run Code Online (Sandbox Code Playgroud)

还尝试过:

Application.Sendkeys ("NUMLOCK")
Run Code Online (Sandbox Code Playgroud)

Application.Sendkeys {NUMLOCK}
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

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

Vba:显示带点而不是逗号的小数

我希望宏中的所有数字都用点显示,而不是逗号

例如,这显示“0,03”,但我想要“0.03”:

Dim MyNumber As Single
MyNumber = 0.03
MsgBox (MyNumber)
Run Code Online (Sandbox Code Playgroud)

我尝试了一组不起作用的代码

谢谢你!

excel vba

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

标签 统计

vba ×10

excel ×5

excel-vba ×2

button ×1

click ×1

excel-2010 ×1

excel-charts ×1

footer ×1

macos ×1

regex ×1

vlookup ×1

word-2010 ×1

word-vba ×1

xlsm ×1

xlsx ×1