Tag: vba

在Excel用户窗体上将点击VBA函数分配给一个dynamic创build的button

我使用以下代码在Excel用户窗体上dynamic创buildbutton: With Me.CurrentFrame.Controls.Add("Forms.CommandButton.1") .Caption = "XYZ" .name = "AButton" .Font.Bold = True .ForeColor = &HFF& … blah blah blah End With 我想分配一个函数来运行时点击这些button,但我找不到一个简单的方法来做到这一点,因为没有属性作为button本身的一部分。 有没有办法使用上述成语做到这一点? 我应该以不同的方式来处理这件事吗?

Python干净的方式来包装单个语句在一个try块除外

我目前正在使用com做一些Python自动化的Excel。 它function齐全,做我想做的,但我发现了一些令人惊讶的事情。 有时,我使用的一些Excel命令将会失败,并且没有明显的原因。 其他时候,他们会工作。 在我正在做的VB的等价代码中,这个问题显然被认为是正常的,并用一个On Error Resume Next语句贴满。 当然,Python没有这样的说法。 try except循环try except ,我不能在整个集合中包装整个集合,因为它可能在一半以内“失败”,并且不能正确完成。 那么,将几个独立的语句封装到除了block之外的尝试中是怎样的一种pythonic方法呢? 具体来说,比以下更清洁: try: statement except: pass try: statement except: pass 相关的代码是excel.Selection.Borders位。 def addGridlines(self, infile, outfile): """convert csv to excel, and add gridlines""" # set constants for excel xlDiagonalDown = 5 xlDiagonalUp = 6 xlNone = -4142 xlContinuous = 1 xlThin = 2 […]

如何在列中查找文本并将行号保存到Excel VBA中

我有以下列(列A)命名项目(行列只是显示行号): rows project 1 14 2 15 3 16 4 17 5 18 6 19 7 ProjTemp 8 ProjTemp 9 ProjTemp 我有一个input消息框,用户在那里写入新的项目名称,我想要插入最后一个。 例如:项目20将在项目19之后和第一个“ProjTemp”之前插入。 我的理论是find第一个“ProjTemp”的行号,然后插入一个新的行,其中的项目是20。 我试图使用查找function,但我得到一个溢出错误(我敢肯定,我得到它,因为它find3“ProjTemp”string,并试图将其设置为一个参数): Dim FindRow as Range with WB.Sheets("ECM Overview") Set FindRow = .Range("A:A").Find(What:="ProjTemp", _ After:=.Cells(.Cells.Count), _ LookIn:=xlValues, _ LookAt:=xlWhole, _ SearchOrder:=xlByRows, _ MatchCase:=False) end with 我如何编码,所以我只find拳头“ProjTemp”的行号? 有没有更好的方法来做到这一点,也许是一个循环? 谢谢,任何帮助将不胜感激!

使用VBA将文本添加到Excel中的单元格

我一直在使用SQL和Excelmacros,但我不知道如何将文本添加到单元格。 我希望将文本"01/01/13 00:00"到单元格A1 。 我不能把它写在单元格中,因为macros先清除表单的内容,然后添加信息。 我如何在VBA中做到这一点?

VBA Excel获取文件path(以文件夹结尾)

从以前的问题,我知道如何去让用户点击一个“浏览器”button,并导航到他们可能要打开的特定文件。 码: Private Sub CommandButton2_Click() Dim vaFiles As Variant vaFiles = Application.GetOpenFilename() ActiveSheet.Range("B9") = vaFiles End Sub 我想创build第二个浏览器button,让用户导航到一个文件夹。 这个文件夹将会保存我的程序创build的.pdf文件。 这是问题: GetOpenFilename需要用户点击一个文件。 如果文件夹中没有文件,那么用户不能做任何事情。 我希望这是清楚的… 谢谢

获取数组的长度?

我试图得到一个数组的长度,但我不断收到错误“对象请求”。 难道我做错了什么? Dim columns As Variant columns = Array( _ "A", "ID", _ "D", "Name") Debug.Print columns.Length ' Error: Object required

在Excel 2007 VBA中如何“ReDim保留”二维数组,以便我可以添加行而不是列到数组?

我正在使用Excel VBA中的dynamic数组。 列数(m)是固定的,但是,我不知道需要多less行(n)。 帮助文件指出,ReDim保留myArray(n,m)允许我做大,但不是n。 但是,我需要增加行数(n),同时保留我的数据,而不是列(m)! 例如,我可能有一个(5,20)数组,我想扩展到(10,20),同时保留我的数据。 看来,如果有一些方法来转置我的数组,做一个ReDim保留来扩大“列”的数量,然后重新转置我的数组,我可以完成我想要的。 这是正确的方法来做到这一点? 如果是这样,我该怎么做? 有没有更好的方法来实现我想要的?

如何从VBA函数中触发一个错误

我需要从VBA函数中触发(返回)一个错误事件,然后这个函数的调用函数可以触发On Error Go来调用。 例如 function Test() On Error Go to myError: TestErr() Exit Function myerror: Test = "Error Triggered" End Function Function TestErr() ?? 'How to Trigger error here End Function 谢谢

如何在Excel(VBA)中应用高级筛选器后获取可见行的范围

以下是使用Sheet2上的值范围(标准范围)将高级筛选器应用于Sheet1工作表(列表范围)上的列A的代码 Range("A1:A100").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ Sheets("Sheet2").Range("A1:A10"), Unique:=False 运行这段代码后,我需要对屏幕上当前可见的行进行操作。 目前我使用这样的代码 For i = 1 to maxRow If Not ActiveSheet.Row(i).Hidden then …do something that I need to do with that rows EndIf Next 是否有任何简单的属性,可以给我一个范围的行后,应用先进的filter可见?

<>是什么意思?

我曾经在SQL和VB中看过这个,现在我正在逆向工程一个Excel的电子表格,并且遇到了下面的公式: = IF(D23 <> 0, “Insufficent”,0) 我将其转换为ActionScript: var result:String = [condition] ? 0 : "Insufficient"; 但是我不确定D23 <> 0是什么意思,是不是简单的“不相等”?