Tag: 变体

Excel VBA – 将范围读入Variant,同时保持与列号相同的索引

我在Excel 2013中写了一个vbamacros。我有下面的代码来读取一个variables的范围, Dim MyBuffer As Variant With MyWorkSheet MyBuffer = .Range(.Cells(1, NAME_COL), .Cells(10, AGE_COL)).Value End With 'Here NAME_COL = 5, AGE_COL = 9 现在MyBuffer是一个二维数组,索引范围从(1,1)到(10,5)。 我想知道是否有办法维护指标的第二部分相同的列号。 即从(1,5)到(10,9),这样我可以使用常量NAME_COL,AGE_COL等访问variables。 这主要是为了可读性(以便其他程序员可以很容易地看到我正在访问哪个条目)和可维护性(在表单上添加/删除/交换列的情况)。 感谢任何帮助,找出相同的。 请注意,我不考虑进一步复制到另一个具有修改索引的数组,或具有另一组Variant位置(NAME_POS,AGE_POS等)的常量。

单维变体arraysVBA

一般来说,我有一个很好的单一值的变更pipe理的macros,现在可以写一个multidimensional array,但需要能够差异而不使用error handling。 当目标只有一个单元时是否还有其他解决方法? 在下面的error handling处理这个问题,但我认为这是“马虎”。 build议赞赏一个更好的方法。 Sub Dims(target As Variant) Dim varData As Variant Dim i As Integer Dim j As Integer varData = target On Error GoTo Err For i = 1 To UBound(varData, 1) For j = 1 To UBound(varData, 2) Debug.Print i, j, varData(i, j) Next j Next i Err: If […]

如何获得_variant_t的值?

我想知道如何获得_variant_ttypes的值。 我已经知道使用GetItems()方法的值,例如: _variant_t var = pRs->Fields->GetItem(i)->GetValue(); 在Excel文件(.xls)中,我找不到整行数据的方法。

下标超出范围的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 […]

如何从VBA函数返回一个长度不等的数组

我试图在一个更大的macros中写一个函数来返回一个元素列表。 该数组是从电子表格中的单元格生成的: Function Elem_Array() As Variant Dim Elements() As Variant i = 1 Cells(i, 38).Select element1 = Cells(i, 38).Value element2 = "" Do While element2 <> element1 i = i + 1 Cells(i, 38).Select element2 = Cells(i, 38).Value ReDim Preserve Elements(1 To i) Elements(i) = element2 Loop Elements(1) = element1 Elem_Array= Elements End Function 当试图设置Elem_Array等于Elements数组时,它将结束没有Elem_Array的任何函数。 […]

我怎样才能在XLOPER和VARIANT之间?

我正在处理与COM对象通信的Excel插件(XLL)。 所以,我必须在XLOPER和VARIANT之间进行编组。 我已经得到了大部分工作,但数组绝对是一个痛苦。 我需要支持1和2D数组。 我想有人已经不得不面对这个。 有没有一些库可以简化这个? 有处理VARIANT,SAFEARRAY和XLOPER(和XLOPER12)的好工具吗?

VBA Excel For循环与变种arrays崩溃的Excel

所有的下午。 我正在使用For / Next循环和ReDim保留将数量(客户)的值添加到不确定的数组中。 我的代码如下: lRow = sht1.Cells(sht1.Rows.Count, 1).End(xlUp).Row cCount = 0 uCount = 0 var_Events = sht1.Range("A2:BC" & lRow).Value2 For i = LBound(var_Events) To UBound(var_Events) ReDim Preserve var_Customers(0 To cCount) If Not CustInArray(str(var_Events(i, 2)), var_Customers) Then var_Customers(cCount) = str(var_Events(i, 2)) cCount = cCount + 1 End If If i Mod 100 = 0 Then […]

从2D变体中将第二维写入Range,而不在VBA中循环

我有一个variablesvariables,并传递如下的范围值。 Option Base 1 Dim varEmployees As Variant varEmployees = Range("A1:B5").Value 这个2D变体现在在第一维中具有员工ID,在第二维中具有员工名称。 所以我们得到如下的东西。 varEmployees(1,1) = 1234 varEmployees(1,2) = John Doe varEmployees(2,1) = 5678 varEmployees(2,2) = Jane Smith varEmployees(3,1) = 9012 varEmployees(3,2) = Mary Major varEmployees(4,1) = 3456 varEmployees(4,2) = Judy Stiles varEmployees(5,1) = 7890 varEmployees(5,2) = Richard Miles 我想写第二维只回到一个范围,而不使用循环,但是当我使用下面的代码… Range("D1:D5") = varEmployees 我只得到第一维,如实际结果下所示,但我想要的是我的预期结果(只有第二维)。 Actual Results […]

Excel VBA范围只有可见的单元格数组

我正在尝试将所有的值从一个范围外的可见单元格中取出到一个数组中。 我的代码只是使数组携带的值,直到第一个不可见的单元格,然后停止。 Public Function ListeMaschinen() As Variant Dim Auswahl As Range With Sheets("qry_TechnischesDatenblatt") Set Auswahl = .Range(.Range("A2:B2"), .Range("A2:B2").End(xlDown)).SpecialCells(xlCellTypeVisible) End With ListeMaschinen = Auswahl End Function 如果我select范围它显示所有标记我想要得到的细胞。 Auswahl.Select 我无法弄清楚为什么,你能帮我吗? 多谢! 背风处

“Dim myarray()as String”VS“Dim myarray()as Variant”

我总是害怕在假设分配不必要的大量内存的情况下声明variables。 最近正在努力提高电子表格的性能,但我却得到了相反的印象(请参阅下面的编辑): Dim myarray() as Variant改善了性能,与Dim myarray() as String相比Dim myarray() as String 这两个声明的主要区别和后果是什么? 在这里找不到明确的指导: https : //msdn.microsoft.com/en-us/library/aa711948.aspx 编辑:受控性能testing 我运行了一个受控的性能testing(将dim myarray() as Variant版本,创build一个副本并将两个variables更改为Dim myarray() as String ) 正如你可以看到下面我错了,性能差异并不显着。 Dim myarray() as Variant VERSION Start 4:05:47 PM FXLoaded 4:05:47 PM 00:00 TDLoaded 4:06:38 PM 00:51 LisofPCTD 4:06:57 PM 00:19 YDLoaded 4:07:47 PM 00:50 LisofPCYD 4:08:14 PM 00:27 […]