Tag: excel vba

如何在Excel VBA中引用表?

在Excel VBA中可以引用一个指定的表吗? 假设这可能是… Sheets("Sheet1").Table("A_Table").Select 我已经看到一些表是列表对象,但我不知道这是否是同一件事… 任何人都可以帮助我?

Excel VBA编译抛出一个“用户定义的types没有定义”的错误,但不会触犯代码行

症状 编译Excel VBA项目时,这是一个特别的症状。 发生以下错误: User-defined type not defined 但是,产生这个错误的代码没有被编译器突出显示,所以我不能确定这个问题。 我已经知道,并已经尝试 这是一个“用户定义的types没有定义”的错误,我曾经看到过,有些简单的问题,例如命名As Strig而不是As String 。 然而,这个特定的错误只是在Debug > Compile VBAProject菜单选项popup,当错误消息框popup时,它不会突出显示错误发生的代码行。 经过大量的研究,我发现这个bug可能与缺less的引用有关,我已经排除了所有需要的引用和工具箱对象。 为了确保我没有丢失任何明显缺less的Dim语句,我添加了Option Explicit到所有的代码页(包括表单),以确保没有丢失任何东西。 运行编译时仍然显示错误。 还有这个已知的错误 ,说明这个问题已经发生,因为VB6项目使用二进制兼容性: closures二进制兼容性并编译该项目。 Visual Basic将突出显示包含未定义的用户定义types的代码行。 解决问题后,二进制兼容性可以重新打开。 我发现这篇文章通过这个问题和答案 ,但是,我不能在标准的Excel VBA编辑器中find此选项。 帮助拯救我和他人的理智! 我从Google的search和其他问题知道,我不是唯一一个有这个问题的人。 我已经尝试过通过代码手动,但有太多的线路,可行的做到这一点。 有没有办法在Excel VBA项目中closures二进制兼容性? 如果人们无法debugging他们需要改变的东西,人们会如何发现这个有害的代码行? 任何帮助将是可爱的! 先谢谢你。 编辑: 我find了违规的代码行,所以我的问题得到解决 在删除特定行后,问题仍然存在 – 它是代码中引用的表单上的一个mispelt控件名称。 这仍然不能解决你将如何去发现这个问题的问题的特定问题。 当这个错误发生时,我们是否能够find一个很好的方式来find有问题的代码,以便其他人在将来可以避免这种痛苦?

我怎样才能在一个Excel表格命名的范围内运行SQL语句?

我所要做的就是在Excel工作表(即一个命名的范围,甚至A1:F100)上取一个标准范围,然后在其上运行一些sql查询,并返回一个logging集,我可以在VBA代码中步入,甚至只需粘贴到同一工作簿中的其他工作表即可。 使用ADODB是一个想法,但我怎么能设置连接string指向当前工作簿中的一些范围? 我知道之前,我已经使用了微软查询向导,这是不理想的,但将工作。 我似乎无法得到这个引用表单内的范围,只有其他的Excel文件。 这是我留下的function。 当我运行它几次我的Excel崩溃与通常的资源错误信息。 我已经从电子表格中删除了这个函数,并且所有东西都可以无缝地运行多次,所以这里肯定是由代码造成的。 我清理了所有的对象(正确?)。 有没有人有任何想法可能会出错? 连接string中是否有可以调整的东西,或者是否可以与从GetRows方法返回的变体有关? 我正在使用MS ADO 2.8,也尝试2.5具有相同的行为。 Function getTimeBuckets() As Collection Dim strFile As String Dim strCon As String Dim strSQL As String Dim dateRows As Variant Dim i As Integer Dim today As Date Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = CreateObject("ADODB.Connection") Set rs […]

如何获取在Excel工作表中调用VBA函数的单元格的地址

有没有一个函数来获取调用VBA函数的单元格的地址? 我用“Application.ActiveCell.Address”,但发现这个方法不是获取调用单元地址的正确方法。 例如:如果我们有保存VBA函数的excel表格,一旦你重新打开表格,上面的方法将不起作用。 请帮忙 尼莫

推荐使用VBA的IDE

是否有推荐的IDE用于开发提供合理的错误报告和代码完成的Excel VBAmacros? 目前,我正在使用Excel 2007附带的“Microsoft Visual Basic For Application”IDE,但到目前为止,这并不理想。 即使是Vim或Emacs的插件也会很棒。

ReDim保留了什么?

我在看别人的VBA的Excel代码。 他们在两个循环中执行ReDim Preserve dataMatrix(7, i) 。 这是做什么的? 另外,好像第二个循环刚刚覆盖第一个循环中的数据,这是正确的吗? Dim dataMatrix() As String Worksheets.Item("ETS").Select Do While Trim(Cells(r, 1)) <> "" Debug.Print "The line: ", Trim(Cells(r, 1)), r r = r + 1 dataMatrix(1, i) = Trim(Cells(r, 1)) ''file name dataMatrix(2, i) = Trim(Cells(r, 2)) ''sample type dataMatrix(3, i) = Trim(Cells(r, 3)) ''sample name dataMatrix(4, i) = […]

VBA方法'对象范围'_Worksheet在运行代码时突然出现失败?

此代码用于运行良好,然后突然开始失败的对象“_Worksheet失败”的“方法”范围? “我不是VBA方面的专家,但是我可以自己解决这个问题。 有什么我失踪? Public Sub Run_Count_Click() '// Set Ranges Dim Cr_1, CR1_range, _ Cr_2, CR2_range, _ Cr_3, CR3_range, _ Cr_4, CR4_range, _ Cr_5, CR5_range _ As Range '// Set Integers Dim CR1, V1, CR1_Result, _ CR2, V2, CR2_Result, _ CR3, V3, CR3_Result, _ CR4, V4, CR4_Result, _ CR5, V5, CR5_Result, _ total_result, _ total_result2, _ […]

在Excel中将工作簿添加到工作簿的末尾(常规方法不起作用?)

这是VBA代码即时通讯使用尝试添加到工作簿中的最后一个位置的新工作表 mainWB.Sheets.Add(After:=Sheets(Sheets.Count)).Name = new_sheet_name 我在这个网站上看到类似的问题。 它不工作。 我在一个循环中执行此操作,并将每个工作表添加到工作表中的第二个位置。 有2张是永久存在的(信息和摘要),然后在前面添加5个更多的称为“testing”1到5.我总是以这样的顺序结束: Info, sheet5, sheet4, sheet3, sheet2, sheet1, Summary 但是我想要的/期望的是: Info, Summary, sheet1, sheet2, sheet3, sheet4, sheet5 (循环确实以预期的顺序生成它们,所以问题不在那里) 如果我在开始之前交换总结和信息表,那么当我完成时,他们会在相反的地方。 我究竟做错了什么?

popupExcel状态栏?

我正在开发一个需要很长时间才能运行的excel应用程序,所以最好有一个进度条popup来,并给出一些进度指示。 我正在看Excel中的Statusbar属性,它似乎涵盖了我所需要的,除了它不是很明显,即它是在左下angular的一个小小的通知,如果我没有想到我不会注意到我觉得很不满意。 有没有办法让状态栏popup一个新的MsgBox样式窗口类似于您可能期望在Windows上的文件传输? 实际显示在Excel表格中的进度条types对象并不理想,我正在寻找更好的解决scheme。 我在Windows上使用Office 2010。

vba:将文本文件导入到Excel工作表中

我正在写一个vba代码,它应该删除选定的excel工作表上的数据,打开一个文本文件select对话框,然后将该文本文件中的数据导入到我从中删除数据的同一张表。 到目前为止,我只能打开文本文件到一个新的工作簿,但不能打开它到我已经删除数据从同一张表。 这是我到目前为止,将感谢您的帮助: Dim Filt As String Dim FilterIndex As Integer Dim Title As String Dim FileName As Variant Filt = "Cst Files (*.prn),*.prn" Title = "Select a cst File to Import" FileName = Application.GetOpenFilename(FileFilter:=Filt, Title:=Title) If FileName = False Then MsgBox "No File Was Selected" Exit Sub End If With Application.ActiveSheet Cells.Select Selection.QueryTable.Delete Selection.ClearContents […]