Tag: vba

为什么在下面的VBA代码中使用对象types而不是用于variables声明的工作表types?

下面的代码让用户回到旧的工作表,如果一个Chart被激活,它会显示回来之前有多less数据点包含在Chart 。 我想知道为什么variablesSh在两个事件处理程序中定义为Object而不是Sheet 。 相同的variablesOldSheet 。 Dim OldSheet As Object Private Sub Workbook_SheetDeactivate(ByVal Sh As Object) Set OldSheet = Sh End Sub Private Sub Workbook_SheetActivate(ByVal Sh As Object) Dim Msg As String If TypeName(Sh) = "Chart" Then Msg = "This chart contains " Msg = Msg & ActiveChart.SeriesCollection(1).Points.Count Msg = Msg & " data points." […]

我如何通过Excel中的ActiveX控件运行Perl脚本?

我想通过点击Excel电子表格中的button来运行Perl脚本。 由于该button被分配执行一个VBmacros,macros应该有效地执行该程序。 作为我的第一个VB脚本,这是我想出了,这引发了一个恼人的Run-time error '424': Object required错误。 Sub RunPerlScript() System.Diagnostics.process.Start ("perlscript.pl") End Sub 我怎样才能让这个脚本去做我想做的事?

打开excel 2007 excel文件并保存为VBA中的97-2003格式

我有一个奇怪的情况,我有一组excel文件,所有的扩展名为.xls。,在Excel 2007中我可以打开所有这些都很好。奇怪的是,我无法在Excel 2003中打开它们,在同一台机器上,2007年没有打开文件,并将其保存为“Excel 97-2003工作簿”。 在我从Excel 2007中将该文件保存为“Excel 97-2003工作簿”之前,当我在2003年打开Excel文件时,出现文件不是以可识别格式显示的错误。 所以我的问题是:如果我已经有在2007年打开的Excel文件,我已经打开文件的文件名称存储在一个variables,编程方式我怎样才能模仿上行到“办公button”的行动右键select“另存为”,然后select“Excel 97-2003 Workbook”? 我已经尝试了下面的东西,但它根本不保存文件: ActiveWorkbook.SaveAs TempFilePath & TempFileName & ".xls", FileFormat:=56 感谢您的任何帮助或指导!

根据条件删除单元格

我在A列中列出了员工名单,并在列B中列出了他们的状态(从下拉菜单中select“活动”或“非活动”)。他们在名为“员工列表”的表中。 当员工的状态设置为“未激活”时,我想要将员工自动剪切并粘贴到另一个工作表。 另一张纸叫做“Misc” 如果在状态设置为“Inactive”时不能自动完成,那么也许我可以设置一个button来调用该工作表中的VBA命令,从列表中清除所有不活动的员工并将其移动到另一个表中。

在Excel中通过VBA进行validation在使用variables时失败

我正在尝试使用VBA为一系列单元格设置数据validation。 我得到了一个运行时错误1004(这很有帮助)用这个代码“应用程序定义或对象定义的错误”。 With rngRangeToCheck.Cells(lrownum, 1).Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:=choice .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .ShowInput = True .ShowError = True End With 在Formula1中,choice是一个传递给函数的variables,类似于代码所在的工作簿中的“= SomeNamedRange” 错误发生在代码的.Add部分。 如果我将Formula1:="=SomeNamedRange"硬编码为Formula1:="=SomeNamedRange"那么它的工作原理没有问题。我真的没有对它进行硬编码,因为我正在为“choice”做很多可能的值,我认为是不太干净的代码。 我已经烧了谷歌和大约3天不同的书,现在试图解决这个问题。 有什么build议么? 感谢您帮助新手出去。

将logging集存储为一个类的实例?

有以下情况。 我有几个表单,基本上有几个dropboxes,列表等。我用ms sql db的logging填充他们。 但是,是否有一种方法只查询数据库一次,并在应用程序的整个生命周期中将这些logging存储为一个类的实例,而不是每次用户打开表单时都要查询。 连接是这样的: Sub connection_test() Dim Cn As ADODB.Connection Dim Rs As ADODB.Recordset Dim stSQL As String stSQL = "SELECT * FROM dbo.Client" Set Cn = New ADODB.Connection With Cn .CursorLocation = adUseClient .Open CONNECTION_STRING .CommandTimeout = 0 Set Rs = .Execute(stSQL) End With Rs.Close Cn.Close Set Rs = Nothing Set Cn […]

Excel 2010 VBA创builddate

如何在Excel 2010中使用VBA获取当前工作簿文件的创builddate? 我浏览了ThisWorkBook的所有属性,我似乎没有find那里的东西。

如何在Excel中build立父子数据表?

我有这样的数据: Parent | Data ————— Root | AAA AAA | BBB AAA | CCC AAA | DDD BBB | EEE BBB | FFF CCC | GGG DDD | HHH 哪个需要转换成像时尚一样的下面。 这基本上需要最终在一个Excel电子表格。 如何将上述数据转换为以下内容: 水平 1 | 2 | 3 AAA | BBB | AAA | BBB | EEE AAA | BBB | FFF AAA | CCC […]

强制另存为,MS Excel VBA

我在MS Office产品中使用了VBA。 我一直在寻找一些代码,强制用户将“另存为”一个.xls文件作为模板使用(但它不是实际的模板文件types) 基本上,我有这样的: 用户打开.xls,将某些数据input到某个字段,然后select“文件” – >“另存为”到自己的位置 有时用户点击保存,因此覆盖了我不想发生的.xls。 我一直在寻找一些想法,但我不知道如何最好地实施它。 当用户第一次打开.xls保存到一个新的位置时,我想一个提示是最好的方法,但是,如果他们已经将文件保存到一个新的位置并决定编辑新的位置,我想他们能够'保存'在这一点上,因为现在是他们自己的文件,而不是原来的。 如果有人能指引我正确的方向或者发现我的逻辑有缺陷,我很乐意听到。 谢谢,迈克

如何用对象来引用

我如何可以参考我在里面With的对象如果我想要的对象本身,而不是它的属性/方法? With ThisWorkbook.Sheets("MySheet") Call MySub(ThisWorkbook.Sheets("MySheet")) ' works OK, but duplicated Call MySub(this) ' does not works .Range(…).Value2 = 1 … End With +这里的正确术语是什么? 我甚至不知道如何撰写一个谷歌查询,并得到一些有用的结果(因为是一个普通的词)… 更新 :澄清,我正在考虑像句柄一样with … as handle从Python语法with … as handle ,而不是关于面向对象的this关键字