Tag: listobject

VBA – 循环遍历一系列工作表中的所有ListObjects

我有一个表格条件格式macros(感谢Jeeped),我想扩展到遍历一系列工作表中的所有表。 我怀疑这不是最有效的方法,但它是最好的,我可以拼凑在一起,即使这样做是行不通的。 到目前为止,我被困在两点以下。 任何援助非常感谢! 1)设置ws等于多个工作表代号(例如Set ws = Worksheets(5,6,7) ) 2)设置运行时错误的范围Set myRange = ws.ListObjects.DataBodyRange产生“运行时错误'438':对象不支持此属性或方法” 目前的代码是: Sub ConditionalFormatting() Dim ws As Excel.Worksheet Dim lo As Excel.ListObject Dim myRange As Range Set ws = Worksheet(5) 'Would like to expand to include multiple worksheets! Set myRange = ws.ListObjects.DataBodyRange For Each lo In ws.ListObjects With lo.FormatConditions .FormatConditions.Delete Call FormatRange(myRange, 10, […]

在ListObjectresize后closures冻结

我有一个从外部获取数据并将其写入ListObject的Excel文件。 由于通过ListRows.Add逐行添加行非常缓慢,我将正确数量的空行添加到表单并调整ListObject的大小。 这在Excel 2010中运行得非常好。 使用Excel 2007时,它可以工作,但是当用户closures工作簿或Excel时,它会冻结,Windows将显示其崩溃窗口(询问您是否要closures,重新启动或debugging应用程序)。 这真的很烦人,看起来不太好:)。 任何想法,我可以做什么来防止呢? 也许你有一个更好的主意,快速成千上万的ListObject行? 此外随机(我重新打开文件没有改变,并执行macros),resize失败,错误信息和Excel崩溃,如果我停止执行。 这里是添加空行的function,如果我一步步跟着它,所有的范围是正确的,它做我所需要的。 我敢肯定,这是这个函数导致的问题,因为它消失时,我评论该函数的调用。 Sub AddRowsToListObject(sheetName As String, myTable As ListObject, addRows As Long) Dim i As Long If addRows > 0 Then Sheets(sheetName).Activate 'Add empty rows at the end i = myTable.DataBodyRange.row + myTable.ListRows.Count Sheets(sheetName).Range(Cells(i, 1), Cells(i + addRows – 2, 1)).EntireRow.Insert shift:=xlDown 'Offset -1 as […]

Range.Areas返回错误的行数

我有一个VBA应用程序,可以从网站下载所有的HTML表格,并将它们parsing到工作表中。 然后,我写了代码,它将在A列的每个表的标题中find一个string,激活该单元格,标识当前区域的范围,并将listobject名称添加到工作表名称pipe理器。 我遇到的问题是在代码行260,其中消息框显示表中的行数。 即使表格的行数不同,编号也是一样的。 我相信问题是在代码行210到250.我search了所有的networking,包括堆栈溢出,找不到解决scheme。 任何人都可以看到为什么消息框中显示的数字不反映表中的行数? '————————————————————————————— ' Method : test_currentregion_IncludeHeaders ' Author : Richard ' Date : 10/4/2016 ' Purpose: Find cell with value and turn into named table with headers '————————————————————————————— Sub test_currentregion_IncludeHeaders() 10 On Error GoTo test_currentregion_IncludeHeaders_Error 'convert all tables (listobjects) to ranges Dim WS As Worksheet, LO As ListObject 20 For […]

在excel中的括号之后修改文本

我想修剪在单元格中的括号后面的文本值 我正在使用的当前公式一直给我错误,无法提取目标string。 =LEFT([@[Name ]],FIND("(",[@[Name ]])) 我想去购物(今天) 目标:是要删除 (今天) 预期结果: 我想去购物

通过Linq访问Excel表(ListObject)

我需要在Excel中创build一个表格(编程),然后访问该表格基于Linq的ListObject 。 必须尽快完成。 我挖掘了大量的例子,我找不到满足我的解决scheme。 对Excel数据的大部分Linq查询都需要openXML并访问整个文件。 我需要在具有访问特定工作表的应用程序级插件中执行此操作。 我也想到绑定ListObject到数据表,然后使用Linq。 但是我不能将DataTable绑定到存在alredy的ListObject (数据表将删除ListObject的数据) 有没有人试过这个?

excel 2010 – listobject表和工作表范围返回不同的值 – 错误?

我有一个表(listobjecttypes的表)。 我对它进行了整理,过滤并查看了工作表。 一切都很好。 现在我试图列举… 哪里 oWs_ma是包含表的工作表 oLO_maTable是该工作表上的表 ORG是范围对象 所有的变数都是string 在下面的循环中,临时范围对象返回正确的行号。 该行号是工作表显示的编号。 例如,表格中的第一个数据行位于表格第5行。除了一行外,所有工作表和表格对象都返回相同的值。 在他们没有的单个实例中,工作表是正确的。 30或40行只有一个错误。 这不是一个终点错误。 它发生在桌子中间。 在错误之前似乎没有任何独特之处。 事实上,由oRg_tmp.row报告的行值会改变并指向正确的行! 这个构造是否正确? 还有一些额外的代码用于testing目的,只是为了表明我所得到的确是“正确的” For Each oRg_tmp In oLO_maTable.DataBodyRange.Rows.SpecialCells(xlCellTypeVisible).Rows Set oRg_maOwer = oLO_maTable.Range.Cells(oRg_tmp.row, colndx_ma_it_owner) Set oRg_maGLDept = oLO_maTable.Range.Cells(oRg_tmp.row, colndx_ma_gl_dept) ma_owner = oRg_maOwer.Value2 ma_gl_dept = oRg_maGLDept.Value2 ma_owner_ws = oWs_ma.Cells(oRg_tmp.row, colndx_ma_it_owner).Value2 ma_gl_dept_ws = oWs_ma.Cells(oRg_tmp.row, colndx_ma_gl_dept).Value2 … Next 如果构造是正确的,就解决了。 我将使用工作表。 谢谢。

VSTO Excel Interop ListObject.AddEx(2010+)到ListObject.Add(2003)转换

作为我正在开发的Excel帮助程序实用程序的一部分,我正在将大型常用Excel电子表格移至MS SQL,以进一步确保性能以及通过SSIS包的数据validation。 作为这个的一部分,我写了一个基本的数据库连接类,模仿数据 – >从其他来源 – >从SQL Serverbutton。 我在家中使用Office 2013的副本在家里工作,我预料到一些转换问题,主要是在Excel Interop API发生变化,升级到Office 2010或更高版本的情况下不可选。 我的主要问题似乎是转换新的命令AddEx: MyListObjects.AddEx(ExcelAPI.XlListObjectSourceType.xlSrcQuery, MyConnection, Type.Missing, ExcelAPI.XlYesNoGuess.xlYes,StartRange); 到2003/2007年版本添加按照MSDN( https://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.listobjects.add ( v=office.11 ) .aspx ) // 2007年命令 ExcelAPI.ListObject CurrentTable = MyListObjects.Add(ExcelAPI.XlListObjectSourceType.xlSrcExternal, MyConnection,Type.Missing,ExcelAPI.XlYesNoGuess.xlYes,StartRange); 我得到的例外是: An exception of type 'System.ArgumentException' occurred in mscorlib.dll but was not handled in user code Additional information: The parameter is incorrect. (Exception […]

用datatable绑定listobject的最好方法是什么?

提前,我很抱歉我的英语。 我的问题是关于ListObject和DataTable与C#的Excel。 过去我曾经使用Excel VBA工作过很多,我理解ListObject的概念。 我曾经使用C#特别是在ASP.NET上下文中,我可以很容易地找出一个DataTable对象的实用程序。 就像我想的那样, DataTable和Listobject可以通过做什么来一起工作: ListObject将被用作显示信息的一种方式(但也有一些function允许对数据进行一些奇特的操作)。 DataTable是一个数据容器,提供完整的操作,其操作主要像观察者(如DataGridView )可以观察更新其数据的对象。 有了这些线: fooListObject.AutoSetDataBoundColumnHeaders = true; fooListObject.SetDataBinding(fooDataTable); 可以通过添加行,更新单元格等来处理带有DataTable头部名称的ListObject ,并利用DataTable的事件callback(对更改执行SQL),但是反过来也是可能的。 在我的应用程序中,我有一个DataTable链接到.dbml(LINQ to SQL)对象。 我还为该DataTable注册了一个DataRowChangeEventArgs事件。 我想知道最好的方法调用ListObject或DataTable来更新模型与最新的SQL数据。 我也想知道每一个应该做什么。 现在,如果我删除数据库中的行,我不应该在我的Excel视图中看到,反正我看到它。 你能告诉我更多关于ListObject和DataTable之间的交互吗? 一些有用的方法?

ListRows.Count返回不一致的结果

我的两个Excel表格驻留在我的项目中的两个不同的工作表上,有一个奇怪的问题。 我正在使用VSTO,但是VBA显示了相同的结果:在另一种情况下,一个空表的行数在一个情况下有1行,我有1行(我假设插入行)。 安装程序 两个工作表:Sheet1,Sheet2 两个对应的命名Excel表:Sheet1Table,Sheet2Table 两个表都是空的,即它们有一个空行,这是插入行,不能被删除。 我运行以下代码来确定数据行的数量(即不包括标题行): Microsoft.Office.Tools.Excel.ListObject sheet1Table = Globals.Sheet1.Sheet1Table; int numberOfListRows1 = sheet1Table.ListRows.Count; 和 Microsoft.Office.Tools.Excel.ListObject sheet2Table = Globals.Sheet2.Sheet2Table; int numberOfListRows2 = sheet2Table.ListRows.Count; 结果是numberOfListRows1是1, numberOfListRows2是0,尽pipe结果(无论哪个是正确的)应该是相同的。 我比较了表格和工作表属性,以及Visual Studio中的源文件,并且我不能发现任何差异。 任何想法我应该寻找(哪个结果是正确的)?

从ListObject表的特定列中selectSpecialCells(xlCellTypeVisible)

我正在试图获取一个ListObject表的某些列的可见单元格到一个范围对象。 这似乎并不奏效。 dim rng as range with activesheet.listobjects("Tab_data").databodyrange set rng=.specialcells(xlcelltypevisible) end with 但是这个工程,当我select整个范围,然后抵消第一列,以select其他2所需的列! dim rng as range with activesheet.usedrange Set rng = .Offset(1, 1).Resize(.Rows.Count-1, .Columns.Count-1).SpecialCells(xlCellTypeVisible) end with 但我不能在公式中使用上面的公式,因为我的公式只涉及下面显示的listobject中的2列: 工作表上的UDF公式: =TagCloud(RngWrdLst as Range) 我正在使用它: =TagCloud(tab_data[[Brands]:[Index]]) 从图像中可以看到,我只想要“Brands”和“Index”列中的可见单元格范围,而不是“COLUMN”列中的单元格。 所以我想要的可见范围是: "$B$2:$C$3,$B$45:$C$45,$B$75:$C$78" 编辑@Jeeped: 如果我有一个从工作表单元格调用的UDF函数,并传递列B&C(只有这些列,而不是整个数据)的ListObject范围,那么我将如何findRngWrdLst可见范围? 例如 从工作表中调用: =TagCloud(tab_data[[Brands]:[Index]]) function定义: Function TagCloud(RngWrdLst As Range) Dim VisibleRng As Range With RngWrdLst Set VisibleRng […]