Tag: 范围

如何从活动页面(或其他)设置范围

我很困惑VBA如何在不同情况下处理Range 我有2张“主”和“数据”。 “主”表中有button,其中包括以下代码: Worksheets("Data").Activate Worksheets("Data").Select LastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row Dim SrchRange As Range Set SrchRange = Range(Cells(1, 1), Cells(LastRow, 7)) 因为即使激活并select“数据”表,SrchRange也会参考“主”表。 对于“LastRow”,我发现这个解决方法,把它作为ActiveSheet.Cells(…但是“SrchRange”我找不到办法做到这一点,我已经试过至less: Set SrchRange = ActiveSheet.Range(Cells(1, 1), Cells(LastRow, 7)) Set SrchRange = Sheets("Data").Range(Cells(1, 1), Cells(LastRow, 7)) Set SrchRange = Range(ActiveSheet.Cells(1, 1), ActiveSheet.Cells(LastRow, 7)) 他们都会给我一个运行时错误“1004”。 我不明白如果更详细地描述范围情况如何改变。 即使使用Sheets和ActiveSheet,它是否仍然是范围? 我该如何做到这一点? 我设法通过不使用Rangevariables来绕过这个问题。 这里是使用SrchRangevariables的部分。 For Each HeaderMatch In SrchRange If […]

如何编写一个在Excel VBA中使用范围或参数列表的函数?

以SUM为例,我可以做这样的事情: =SUM(F5:F7,F6:F8,A1,E7:G7,F7,2,7) 这需要多个范围和/或单个单元格,并将其全部添加。 我的问题是如何做到这一点与VBAfunction,例如推广二元XOR: Function BXOR(A As Integer, B As Integer) As Integer BXOR = CLng(A) Xor CLng(B) End Function 当我必须=BXOR(BXOR(BXOR(w,x),y),z) Marcofunction的通用版本: Function BXOR(ParamArray vars() As Variant) As Long Dim i,j As Long BXOR = 0 For i = 0 To UBound(vars) If Not IsObject(vars(i)) Then ' Handle explicitly passed integer arguments, eg BXOR(1,[…]) BXOR […]

vba简单范围/对象错误

所以我觉得我对VBA有了一个很好的把握,但是现在这个错误真的让我感到困扰,我不知道这个问题。 这是一个令人难以置信的简短的子程序(从模块运行): Sub test() Dim lr lr = Sheets(1).Range("a1", Cells(65, 1)) MsgBox lr.Address End Sub 无论出于什么原因,这会抛出“应用程序定义的/对象定义的错误” 谁能解释一下? 编辑:这也引发了同样的错误: MsgBox Sheets(1).Range("a1", Cells(65, 1)).Address 编辑2:我要改变我的问题,因为我了解对象的事情,但我用什么来使用“查找”方法。 所以这里是代码: Set lookrange = Sheets(1).Range(Cells(2, 1), Cells(200, 1)) Set result = lookrange.Find(what:=searchTerm, lookat:=xlWhole) 在这种情况下,它告诉我lookrange是造成一个问题。

如何从多个工作表范围引用string捕获单个Excel工作表范围?

我有一个string传递给一个VBA子,它的格式是“Sheet1:Sheet5!A1:D10”,指同一工作簿(Sheet2,Sheet3和Sheet4在Sheet1和Sheet5之间)中的几个工作表的范围。 我遇到的问题是,我不能将这个引用应用到范围variables,就我所知,这是由于多个引用,我不能使用application.union,因为范围是在不同的工作表上。 如何从这个string中提取Sheet1!A1:D10,Sheet2!A1:D10等五个单独的范围?

VB.Net – Excel应用程序显示一个范围的值

我试图得到一个Excel范围,并复制到与Vb.Net对象的数组。 这不是问题。 我使用下面的代码: Dim vValues(,) As Object = ExcelApp.Range(vRange).Value 并且工作正常; 但我有以下情况: 在“C”栏中; 该值具有特定的格式并且在内部具有另一个值。 我的问题是: 有人知道如何获得用户看到的信息? 我试图获取信息,而不使用For … Each或某种types的周期。 我也试图避免使用“文本到列”function。 两者似乎都是正确的解决scheme,但会影响大量数据的性能。 仅供参考:我也可以通过ODBC连接获取信息; 但我正在使用Rangesearch解决scheme

将行范围传递给Excel用户定义函数并将其分配给数组

我在尝试着 将两个范围(多列单行)传递给Excel 2007中的用户定义函数, 然后将其分配给一个数组进行处理。 函数MAE(actualData As Range,forecastData As Range)As Double Dim data Dim forecast Dim error As Double Dim average As Double Dim i As Long data = Application.Transpose(actualData) forecast = Application.Transpose(forecastData) average = 0 error = 0 For i = 1 To UBound(data) error = data(i) – forecast(i) If error < 0 Then error […]

在Excel VBA中的Range函数中传递一个variables并对其进行循环

我有一个叫做Shipper VP的源Excel工作表。 发货人VP的单元格B4,C4,D4中有三个人的名字和列中的相应数据。 我为每个人提取数据,并为每个人创build单独的Excel选项卡,并将其重命名为各自的名称。 另外还有一堆其他的计算。 这是代码:(一切正常) Sub Test() Dim wsSource As Worksheet, ws As Worksheet Dim rg As Range, c As Range Dim n As Integer Set wsSource = Sheets("Shipper VP") Set rg = wsSource.Range("B4:D4") n = 1 For Each c In rg 'add sheet and rename Set ws = Sheets.Add ws.Name = c.Text 'other […]

如何将值设置为二维Excel范围?

我需要从特定格式的testing用例列表中构build一个Excel表格,以便将其上传到服务器。 我很高兴在文件中填充“期望”和“实际”的二维范围。 我使用相同的方法来填充标题,这是一个一维数组,和步骤(这是两个dims)。 stream程是: 打破TestCase范围(一些标题+步骤)。 让我们说:第一次迭代A1到E14。 在头文件的testCase范围内(例如:A1到C1),删除一个子(本地)范围。 在头文件的testCase范围内放弃另一个sub(local)范围(在我的例子中:D1到E14)。 用testing用例值(标题和步骤)填充两个子范围。 重复取消下一个电子表格范围(在我的情况下是A14到E28),使用相同的本地范围(步骤2-3),并填充它们,等等。 源值是一个代表testing用例步骤的字典(key = expected和value = actual)。 这是我使用的代码: public class TestCase { public Dictionary<string, string> steps; } Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application(); Workbooks workBooks = excelApp.Workbooks; Workbook workbook = workBooks.Add(XlWBATemplate.xlWBATWorksheet); Worksheet worksheet = (Worksheet)workbook.Worksheets[1]; excelApp.Visible = true; foreach (TestCase testCase in TestCaseList.Items.GetList()) { Range worksheetRange = GetRangeForTestCase(worksheet); […]

使用可变单元格引用将范围从一个表格复制到另一个表格

我试图复制一个范围通过在Excel中的VBA另一个,但它拒绝复制任何东西。 这是我的代码: Worksheets("SEARCH SHEET").Range(Cells(destination_y, 1), Cells(destination_y, 25)).Value = Worksheets("STOCK-INDIV").Range(Cells(currentItem_y, 1), Cells(currentItem_y, 25)).Value 并在代码的前一点我说: currentItem_y = ActiveCell.Row 和 destination_y = ActiveCell.Row 我知道目的地和目前的参考是正确的,通过做 Worksheets("SEARCH SHEET").Range(Cells(destination_y, 1), Cells(destination_y, 25)).Select 我知道正确的单元格被设置为复制和粘贴。

在不引用工作表的情况下引用全局命名范围

我想要将数据从工作簿x中的一组命名范围导出到工作簿y中的另一组范围。 要从中导出的范围的名称将被分配到表格“Table_Export”中。 问题是我不想在这些相应的范围所在的表格中进行分类,看到我不知道实际的表名。 但由于范围是全球性的,它应该以某种方式引用他们在vba中,而不参考各自的工作表? 相关的代码可以在if语句中两个星号中的任何一个是我想要完成的地方find。 Dim x As Workbook Dim y As Workbook Set x = ThisWorkbook Set y = Workbooks.Open(Range("Export_to").Value) Dim export_control As ListObject Set export_control = x.Sheets("Control").ListObjects("Table_Export") Dim lr As Excel.ListRow For Each lr In export_control.ListRows If lr.Range(1).Value <> 0 Then *'y.Names(lr.Range(2).Value).RefersToRange.Value = x.Names(lr.Range(1).Value).RefersToRange.Value* *'y.Range(lr(Range(2).Value).Value = x.Range(lr(Range(1).Value).Value* End If Next