Tag: vba

错误91:对象variables或未设置块variables

我有以下代码在Excel 2007中正常工作。 但是,它在Excel 2010上给出以下错误: 错误91:对象variables或未设置块variables。 任何想法如何解决? 我检查了其他职位没有运气。 更新:请注意,如果包含vba代码的工作簿是activeworkbook,代码工作正常。 但是我正在做的是打开另一个工作簿,然后按F3(运行此代码)。 那是当它失败的时候。 所以基本上iif工作簿与代码是积极的,它的工作原理,如果它是另一个工作簿是积极的,它会给出错误。 Sub Process_current_Sheet() Dim WS_Count As Integer Dim i As Integer Dim sheet_name As String WS_Count = ActiveWorkbook.Worksheets.Count nameofworkbook = ActiveWorkbook.Name ' Begin the loop. For i = 1 To WS_Count If InStr(ActiveWorkbook.Worksheets(i).Name, "xxx") > 0 Then sheet_name1 = activeWorkbook.Worksheets(i).Name End If Next i End […]

从string范围中select多个范围

我正在尝试同时select多个范围。 IE浏览器。 B2:C2,B12:C12,B14:C14。 更新的代码 Sub MarkForDMSLookup() Dim MarkingString As String Dim MarkingRange As String j = 0 For i = 3 To 20 'LastRow() If Cells(i, 5) = "Yes" Then j = j + 1 MarkingRange = "B" & i & ":C" & i 'MsgBox MarkingRange If j = 1 Then MarkingString = MarkingRange If […]

自动将命令button链接到单元格值

我试图做的代码由2部分组成。 我设法做的第一部分,但我很难搞清楚第二部分。 第一部分:在一个文本框中填写项目编号(例如211),然后命令button运行一个macros,并在新行中填充该编号,生成一个名为211的工作表(在工作簿中),然后添加一个新的命令button到项目编号。 所以这个想法是,在主表单上有一个包含项目编号的整个列表,每个编号旁边都有一个命令button,转到相应的工作表。 所以可以很容易地有50个项目号码,50个命令button和50个工作表。 这是代码: Dim MySheetName As String Set pasteSheet = Worksheets("Mainsheet") Dim aRange As Range Dim sValue As Variant, findMe As Range, sWhere As Range sValue = TextBox1.Value Set sWhere = Range("B4:B700") Set findMe = sWhere.Find(What:=sValue, After:=sWhere(1)) If findMe Is Nothing Then LastRow = pasteSheet.Cells(pasteSheet.Rows.Count, "B").End(xlUp).Row Worksheets("Mainsheet").Range("B" & LastRow + 1).Value = […]

Excel – VBA – 在工作表中search数组值

我有一个VBAmacros,其中的一部分循环通过定义的string数组,并在工作表的列A中find它们。 如果数组的所有string都存在于A列中,那么这样做的效果很好,但如果string不存在,则会下降。 我一直在努力做一个简单的if语句来帮助我。 如果未find数组值,请移动下一步 For iArow = 0 To UBound(MyArray) – 1 iRow = Range("A:A").Find(MyArray(iArow), LookIn:=xlValues, lookat:=xlWhole).Row Range("D" & iRow).ClearContents Range("I" & iRow).ClearContents Rows(iRow + 1).Insert Rows(iRow).Insert Next iArow 有什么build议么?

Excel VBA如何查找过滤工作表的ActiveCell计数

我有一个可过滤的联系人数据库和用户窗体。 我想要的是在用户窗体上的2个计数器。 lblSelection应该给出数据集的总量。 而lblCount应该在整个数据集内给出所选单元格的位置。 就像“你在第45集中的300” 现在,当数据库被过滤时,它应该读取例如“你在第67组中”,只使用可见单元格并计算在该范围内所选单元格的位置。 这是我迄今使用的简单代码: Public Sub CountReset() 'Display Count If ActiveSheet.FilterMode = False Then Me.lblCount = activecell.Row – 1 Me.lblSelection = activecell.Offset(-1, 0).End(xlDown).Row – 1 Else Me.lblCount = ???? Me.lblSelection = Base.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count – 1 End If End Sub 感谢您的帮助!

连接string连接到远程Oracle 11g

我需要从VBA连接到远程Oracle服务器。 我不想安装任何额外的驱动程序或软件连接,因为我需要将Excel分发给团队。 我尝试了几个连接string,如SQL_HANDLE_ENV failed 。 或者Oracle client and networking components not found. 或者在使用OraOLEDB.Oracle我没有findProvider。 连接string到目前为止: "Driver={Microsoft ODBC for Oracle}; CONNECTSTRING=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=hostname)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=servicename))); uid=username; pwd=Password;" "PROVIDER=MSDAORA.Oracle;DATA SOURCE=hostname;USER ID=username;PASSWORD=Password" "PROVIDER=MSDAORA;DATA SOURCE=hostname;USER ID=username;PASSWORD=Password" "Driver={Oracle in OraClient11g_home1};Dbq=servicename;Uid=username;Pwd=Password;" "Provider=OraOLEDB.Oracle;Data Source=hostname;User Id=username;Password=Password;" 有一些预先定义的驱动程序在Windows中我想。 但是,它不适用于甲骨文? 我使用Windows 8的任何帮助极大赞赏.. 我做了更多的研究,并且遇到了ODP.net。 所以我认为的结论是使用Oracle即时客户端或ODP.net。 但我不知道如果任何.NET应用程序如ODP.net将工作,没有.NET框架。 请让我知道是否有人遇到这个。

从Windows 7升级到Windows 10后出现VBScript问题

所以我有一个在VBA中与VBA一起工作的VBScript,并且每天都执行模型的自动更新(绑定到Task Scheduler)。 除了将名称中的当前date保存为excel文件外,还可以保存pdf格式的硬拷贝(也包含相关date)。 切换到Win 10后,脚本每运行一次,窗口就会popup并询问 – 您想如何打开一个文件? Adobe,记事本等pdf默认由Adobe(set)打开。 那么我怎样才能摆脱那个popup窗口? 它违背了自动化过程的整个目的,也阻止了它的正常工作,因为在popup之后,pdf不被保存。 另外,如果我通过cmd通过cscript运行脚本,它一切正常,但如果通过任务调度(也与cscript)比问题仍然存在。 任何帮助?

'For Next'循环根据名称相似的工作表执行操作

我有一组具有相似名称的工作表,并希望对所有这些工作表执行一个操作(例如表名是1C , 2C , 3C等)。 我试过下面的代码,但我得到运行时错误424 : Sub InsertURLType() Dim ws As Worksheet Dim LastCol As Integer For Each ws In Activebook.Sheets If ws.Name Like "?1" Then With ActiveSheet LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column End With LastRow = Range("A1").End(xlDown).Row Columns(LastCol).Select Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove ActiveCell.Select ActiveCell.FormulaR1C1 = "URL Type" ActiveCell.Offset(1).Select ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],URLs!C1:C2,2,FALSE)" ActiveCell.AutoFill Range(ActiveCell.Address, Cells(LastRow, ActiveCell.Column)) […]

find匹配的行excel公式或vba

我有一个两个工作表和相同的格式在每个Excel文件。 我需要在表单中垂直search,并在另一个表上find匹配的行,并返回该行的单元格的值,但只有整行匹配。 我试过找不到确切的答案。 任何帮助表示赞赏。 谢谢!

vba中closures并重新打开excel后,点击button不起作用

我是MS Excel中的VBA新手,我需要帮助。 我一直在网上search,但我还没有find任何解决我的问题。 我在我的excel中添加了一个button,并尝试点击button后popup一条消息,它完美的工作。 但是,当我closuresExcel应用程序时,单击button时警报消息不起作用。 这是我的代码。 Private Sub CommandButton1_Click() msgbox ("this is test") End Sub 我做什么?