Tag: vba

如何获得名称的控制名称?

有一个combobox,我有一个简单的function。 如果combobox的值等于“禁用”,我将禁用文本框B.有许多combobox及其对应的文本框B,排列成行并用手指名。 如果comboboxA被命名为Product1 ,则文本框B将被命名为Product1_status 我在想像这样的东西: If value_of_a = "disable" Then Dim name_of_b as String name_of_b = Me.Combo.Name + "_status" get_object_by_name(name_of_b).Enabled = False End If 我该怎么做呢?

方法select对象'_Worksheet'失败 – 为什么?

Set mainWB = Workbooks("Copy Paste.xlsb") Set mainWS = mainWB.Sheets("Sheet1") Set testWS = mainWB.Sheets("Sheet3") mainWS.Select 我在Excel VBA的最后一行不断收到错误: “对象的方法select”_Worksheet“失败” 任何想法为什么或如何解决这个问题? 谢谢!

Excel VBA – WorkbookBeforeSave事件

我有一个应用程序对象的加载项。 该对象被声明为WithEvents。 这使我可以每次用户保存文件时将一些数据点刷新到中央数据库。 这在大多数情况下是有效的。 但是,有一个用户退出Excel应用程序,调用Save对话框。 看起来,用未保存的文件退出Excel意味着WorkbookBeforeSave事件不会触发。 为了强调一下,我已经确认,当用户点击CTRL-S或者按下保存button时,事件会被触发。 我也证实,如果我退出申请,事件不会触发。 我可以考虑一些解决方法(例如每10秒自动保存一次),但是我对此不是很生气。 任何人都可以证实这种行为和/或没有人有补救措施? Option Explicit Private WithEvents mapp As Excel.Application Private Sub mapp_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean) ' Sanity preservation device Msgbox "WorkbookBeforeSave event fired." SaveSomeData Wb End Sub

Excel – VBA:使匹配方法的限制更less(通过查找一个句子中的单词)

我正在使用我的Excel程序中的匹配function,但我有一个问题,因为它只select相同的匹配 。 例如,如果您将一个“香蕉”细胞与另一个“香蕉”细胞进行比较,就会发挥作用并返回一个正值。 但如果你把“香蕉”与一个内容是“香蕉巧克力”的单元相比,那么它就不会认识到香蕉这个词在单元格中。 就我而言,每当一个单词出现在句子中时,我想返回一个TRUE值。 这是我的代码: Worksheets("sBldgMakati").Activate For i = 2 To 605 Range("B" & i).Activate myResult = IsNumeric(Application.Match(ActiveCell.Value, elementsListRange, 0)) If myResult Then Range("K" & i).Value = Range("K" & i).Value + 10 Else Range("K" & i).Value = Range("K" & i).Value + 0 End If Next i 我必须指定在这个代码中, elementsListRange对应于一个单元格的范围,其内容只有一个单词(例如“Banana”), ActiveCell.value通常是一个较长的expression式(例如“Banana choco”)。 在此先感谢您的帮助 !

设置自动筛选多个通配符

现在我正在做编码设置数据图表的filter。 基本上,我不知道如何在这里发布数据表,所以只要input它们即可): (从左边开始是列A)名称* B设备*数量*出售*所有者 基本上我需要过滤掉2列: – 带有任何字的BDevice包含“M1454”或“M1467”或“M1879”(这意味着M1454A或M1467TR仍然适合) – 拥有PROD或RISK的所有者 这是我写的代码: Sub AutoFilter() ActiveWorkbook.ActiveSheet..Range(B:B).Select Selection.Autofilter Field:=1 Criteria1:=Array( _ "*M1454*", "*M1467*", "*M1879*"), Operator:=xlFilterValues Selection.AutoFilter Field:=4 Criteria1:="=PROD" _ , Operator:=xlOr, Criteria2:="=RISK" End Sub 当我运行代码时,机器返回错误1004,似乎是错误的部分是filter第2部分(我不确定使用的字段,所以我不能肯定地说) 编辑; Santosh:当我尝试你的代码时,机器出错9的下标超出范围。 错误来自with语句。 (因为数据表有A到AS列,所以我只是改为A:AS)

使一个VBA自定义函数什么都不返回 – 不是0,不是空白string,但没有

我有一个自定义的函数可以从电子表格的单元格中调用,在某些情况下我不想返回任何东西。 换句话说,我希望与我的函数的单元格被视为完全像一个空单元格(除非该函数返回一个值)。 我能做的最接近的是返回一个空string"" 。 不幸的是,具有零长度string的单元格不被COUNTA或COUNTBLANK视为空,并且打破math公式(例如1 + "" = #VALUE )。 我的大多数尝试返回没有返回0,但这将被用户很不同的解释。 我该怎么办? 迄今试过: Returns 0: result = null result = VbEmpty result = Range("SomeCellKnownToBeEmpty") Returns error: result = Nothing 答:我现在确信这是不可能的,最好的办法就是解决这个问题。 解决选项: 返回一个string"-blank-"并让VBAmacros用"-blank-"删除任何单元格的内容。 一个奇怪的方法,但符合我的需求。 我正在做这个作为准备我的出版工作簿的步骤之一。 返回空string,并显式获取表中的其他公式,将其视为空白。 返回并显示0:返回0并使用自定义格式来隐藏0。

Excel VBA:如何一次只取消一个自动filter范围? 代码提供

感谢您来到这个线程。 我拥有的: – 在行A:G上使用自动filter的报告 我需要的: – 如果有filter的话,那么不需要过滤特定列的实际代码。 运行下面的代码,不需要过滤A:G的整个范围。 – 在这个例子中,我只想要“F”而不过滤,如果过滤掉了任何其他的filter。 With Sheets("DATA") If .Range("F1").AutoFilter = True Then ActiveSheet.Range("$A$1:$G$59826").AutoFilter Field:=6 Else End If End With 任何和所有的想法,非常感谢! 非常感谢!

VBA Application.Quit命令不closures整个Excel应用程序

我有一个下面的代码下面的代码。 当我点击它,它只是closures当前的Excel表,但不closures整个Excel应用程序。 Application.DisplayAlerts = False ThisWorkbook.Save Application.DisplayAlerts = True Application.Quit 注意:我没有打开任何其他表单 通过上面的VBA代码closures后窗口依然出现。

多input框擅长VBA

现在我已经使用多个input框来获取用户input的string,我需要: Dim U As String Dim P As String U = Application.InputBox("Enter Username", "Username", Type:=1)) P = Application.InputBox("Enter Pwd", "pwd", Type:=1)) 等等。 有没有办法,我可以做一个input框多input或某种多重input在Excel中使用VBA?

在EXCEL vba中终止连接

我试图从我的工作簿中删除连接,但我仍然geting运行时错误5.我不知道该怎么做,因为在我的其他项目,它的工作原理。 谢谢你的build议。 来自捷克共和国的问候。 Sub refresh_all() Dim i As Integer '~~> refresh workbook query Application.DisplayAlerts = False Workbooks("UAC_report_p.xlsb").Activate '~~> wait for refresh then execute Call save_as Do Until Application.CalculationState = xlDone DoEvents Loop ActiveWorkbook.RefreshAll Workbooks("UAC_report_p.xlsb").Activate '~~>kill all connections For i = 1 To ActiveWorkbook.Connections.Count If ActiveWorkbook.Connections.Count = 0 Then Exit For ActiveWorkbook.Connections.Item(i).Delete i = i – […]