Tag: 范围

Excel VBA使用.Cells定义.Range

我遇到了一个问题,试图select/复制我的工作表中的某些范围。 我已尽可能缩小范围。 这工作正常: dataSheet.Cells(dRow, dataSheet.Range("IO_MODULES").Column).Select 这不: dataSheet.Range(Cells(dRow, dataSheet.Range("IO_MODULES").Column), Cells(dRow, dataSheet.Range("IO_MODULES").Column)).Select 这就是我想要做的: dataSheet.Range(Cells(dRow, dataSheet.Range("IO_MODULES").Column), Cells(dRow, dataSheet.Range("MODULE_END").Column)).Copy Destination:= _ dataSheet.Range(Cells(dataSheet.Range("MODULE_1").Row + i – 1, dataSheet.Range("D_COUNT").Column + 1), Cells(dataSheet.Range("MODULE_1").Row + i – 1, dataSheet.Range("DATA_COL_END").Column)) 我似乎误解了Worksheet.Cells和Worksheet.Range之间的关系。 我需要做的是能够根据我命名的单元格的行号和列号来select一系列单元格。

EXCEL多个范围 – 每个范围需要不同的答案

我已经花了几个小时了解如何做到这一点,这就是为什么现在在这里发布它…如果你想返回一个单元格中的不同值,根据在另一个单元格input的值范围内,我已经制定了怎么做!! (请记住,这是特定于我的电子表格,并计算价格,即0.99 = 0.99英镑) 例如: 如果G2高于“0”,但低于“1”则显示“0.1” 如果G2高于“0.99”但低于“5”则显示“0.15” 如果G2高于“4.99”,但低于“15”则显示“0.2” 如果G2高于“14.99”,但低于“30”则显示“0.5” 如果G2高于“29.99”,但低于“100”则显示“1.0” 如果G2高于“99.99”则显示“1.30” 所以如果G2是“18.75英镑”,那么input这个公式的单元格会根据上面的值显示“£0.50”。 你会看到下面这个问题的答案中包含的上述公式……

VBA崩溃结束声明或重置当数组分配给范围内的子

我遇到了VBA崩溃的问题,只要在debugging时通过End Statement或Resetbutton提前结束代码。 这只发生在一个数组被分配给从子部件调用的子例程内的范围内时。 Sub TestSub() Dim array1() as variant Call GetArray(array1) End End Sub 代码将崩溃是结束语句位于Main Sub或被调用的Sub。 Private Sub GetArray(ByRef array1) array1 = Range(Cells(1, 1), Cells(2, 2)) End Sub 为什么会发生这种情况,有没有一个解决scheme没有分配数组与主要的子。

如何在不使用循环的情况下返回VBA中的一系列单元格?

比方说,我有一个像下面这样的Excel电子表格: col1 col2 ———— 狗1狗 狗2狗 狗3狗 狗4狗 猫1猫 猫2猫 猫3猫 我想基于“狗”或“猫”来返回一系列单元格(dog1,dog2,dog3,dog4)或(cat1,cat2,cat3) 我知道我可以循环检查一个接一个,但是在VBA中有没有其他的方法,所以我可以一次性“过滤”结果? 也许Range.Find(XXX)可以帮助,但我只看到一个单元格的例子不是一个单元格的范围。 请指教 问候

将Excel范围转换为ADO.NET DataSet或DataTable等

我有一个Excel电子表格,将坐在networking共享驱动器上。 它需要由我的Winforms C#3.0应用程序访问(许多用户可能正在使用该应用程序,并同时打这个电子表格)。 一张工作表上有很多数据。 这些数据被分解成我已经命名为范围的区域。 我需要能够单独访问这些范围,将每个范围作为数据集返回,然后将其绑定到网格。 我发现使用OLE的例子,并得到这些工作。 不过,我已经看到了一些有关使用这种方法的警告,另外在工作中我们已经使用Microsoft.Office.Interop.Excel作为标准。 除非必须,否则我不想离开这里。 就我所知,我们的用户将使用Office 2003。 我可以用下面的代码得到我需要的范围: MyDataRange = (Microsoft.Office.Interop.Excel.Range) MyWorkSheet.get_Range("MyExcelRange", Type.Missing); OLE的方式很好,因为它会把我的第一行,把它们变成列。 我的范围(总共12个)在大多数情况下在列数上彼此不同。 不知道这个信息是否会影响任何build议。 有什么办法可以使用Interop并将返回的范围返回到数据集?

select包含空白的列中的所有数据

我想要select一个范围,该范围需要包含未知数量的空白单元格的列(不包括标题)中的所有数据。 我试过了: Columns("E:E").Select Range(Selection, Selection.End(xlUp)).Offset(1).Select 但它似乎并没有工作。 有什么build议么?

下标超出范围的VBA变体数据

我对VBA有点新,经过一番研究,我把一些工作代码拼凑在一起(见底)。 根据这些代码和其他一些东西,我发现我创build了这个混乱: Sub TranslateNewBOM() Dim NewFootPrint As Variant Dim Translated As Variant Dim temp As String Dim n As Long Dim MaxRow As Integer Do MaxRow = n n = n + 1 Loop Until Cells(n, 3).Value = "stop" Cells(3, 8).EntireColumn.Insert NewFootPrint = Range(Cells(3, 7), Cells(MaxRow, 7)).CurrentRegion.Value Translated = Range(Cells(3, 8), Cells(MaxRow, 8)).CurrentRegion.Value For i […]

访问范围内的某些列

我想访问特定范围内的列2,然后用常数在单元格中计数。 现在我有什么是访问范围,但不是范围内的特定列,而是整个范围…因此计数太多的常量。 X = Range("MAIN_LIST").Cells.SpecialCells(xlCellTypeConstants).Count 有没有办法让我访问这个范围内的特定列? 我试图以某种方式做到这一点: X = Range("MAIN_LIST").Column(2).Cells.SpecialCells(xlCellTypeConstants).Count 但是得到一个语法错误。 任何人都知道具体的语法来做到这一点? 谢谢。

Excel VBA数组到非连续的命名范围

我试图从数组中获取数据到一个非连续的命名区域。 我不断的结束与数据的第一个单元格是所有命名的范围单元格。 我想我伤害了我的大脑。 我正在看我的代码,甚至不知道为什么我写了,所以我只是把这一部分。 我需要从A2:I2复制的数据,然后粘贴到命名范围“blah”(B2,D2,F2,B4,D4,F4,B6,D6,F6) 有人可以指出我正确的方向吗? 这实际上比这更复杂,但我似乎无法得到这部分工作。 感谢您的任何见解。

VBA定义dynamic名称范围

我正在寻找一种方法来命名/重命名一个范围的基础上,相邻单元格的值,可以改变sorting/价值的变化等通过VBA。 我试图概述如何布置网格的例子。 这是所有包含的是一个预先定义的表格。 Yes/No列包含条件。 如果值是Y那么我希望它右边的单元格包含在命名范围内。 我已经看了各种dynamic命名的范围查询,build议使用OFFSET,但是我正在努力编写代码,以便让我在任何地方。 Column1 Column2 Column3 Column4 Row1 Y/N1 Balance1 Y/N2 Balance2 Row2 Y 1.000 Y 5.000 Row3 Y 2.000 N 0.000 Row4 N 0.000 N 0.000 Row5 Y 3.000 N 0.000 Row6 Y 4.000 N 0.000