Tag: 变体

从数组VBA获取列

我很难从数组中返回一组列。 我已经返回一个sql select语句到我的variant数组。 它有16列。 我需要抓取16列中的12列,以便从数组中的特定行返回到我的电子表格。 我正在使用此代码来获取我的行: If UBound(Filter(budget, Cells(i, 1).Value, , vbBinaryCompare)) >= 0 And Cells(i, 1).Value <> "" Then 那么我如何才能得到我需要的12个色谱柱呢? 列是数组中的最后12列,并且将始终按我需要的顺序排列。 先谢谢您的帮助!

从Excel工作表中提取数据到VBA:空Variant / Array,但UBound返回数字

我试图从Excel工作表中提取文本数据到一个数组(在这种情况下定义为一个变种)。 下面的代码不会返回所需的结果:当我尝试访问SearchItemsvariables数组中的元素时,popup一个错误,指出下标超出范围。 但是,当我运行UBound(SearchItems)系统返回LR(而不是LR-1?)的值。 在任何情况下,这是否表明数据,如果已经加载到数组? Sub Testing() Dim SearchItems As Variant Dim LR As Integer LR = Sheets("MySheet").Cells(Rows.Count, "A").End(xlUp).Row 'Get number of cells in column A SearchItems = Sheets("MySheet").Range("A1:A" & LR).Value End Sub

Excel VBA:在一行中添加一行到变体数组

我想添加一行到一个变种数组: Dim arrMod As Variant arrMod(numberOfRow) = Array(myValue1, myValue2, myvalue3) 这段代码的执行导致一个exception:错误13:types不匹配我怎样才能做到这一点,而不需要迭代每一列? 谢谢, 问候

从WorkSheet创build包含数据的公用variables

简化的Excel代码: Public MyFile As String Public varSheetA As Variant Public SelRangeA As Range Public wsCopy As Excel.Worksheet Sub SelectFile_Click() MyFile = Application.GetOpenFilename() 'Aquire filepath from user If (MyFile <> "False") Then Range("B1").Value = "File Found" End If End Sub Sub LoadFile_Click() Dim WbOne As Workbook Dim strRangeToCheck As String strRangeToCheck = "A1:T2000" Set WbOne = […]

使用WorksheetFunction.Frequency后,索引总是超出VBA范围

我试图将大量数据(多达一百万个条目)分成大约60个分档,用于一些数据分析,最终将被input到直方图中。 问题是,当我使用下面的代码: Dim myBinnedData As Variant myBinnedData = Application.WorksheetFunction.Frequency(myData,myBins) '我必须以这种方式Dim myBinnedData否则我得到一个错误,说它不能分配给一个数组 我永远不能通过使用索引访问myBinnedData。 我能够获得数据的唯一方法是通过For Each循环,但在处理每个点之前,我需要myBinnedData中的第一个和最后一个元素。 一切工作正常在For Each循环,但任何时候我尝试索引(即数据= myBinnedData(0)),我得到索引超出范围错误,无论索引号。 我使用TypeName检查了这个types,它是Variant()。 所以问题是什么是正确的方式索引由WorksheetFunction.Frequency函数创build的数组? 任何帮助,将不胜感激!

VBA UDF Variant / Integer和Variant / String Arrays仅打印输出单元格的第一个值

以下工作很好(感谢这个社区的亲切协助!) Function RangeToArrayToRange(inputRange as Range) As Variant Dim inputArray As Variant inputArray = inputRange RangeToArrayToRange = inputArray End Function 这个function将复制一个input范围到一个完美的输出。 但是,当我对inputArray执行一些操作时,数组看起来很完美,但是在Excel中,只有数组的第一个值会打印到所有单元格。 在这个例子中,我从一些inputstring中parsing出一个数字。 input范围: ABC=1X:2Y ABCD=10X:20Y ABCDE=100X:200Y 码: Function RangeToArrayToRange(inputRange As Range) As Variant Dim inputHeight As Integer inputHeight = inputRange.Count Dim inputArray As Variant inputArray = inputRange Dim strippedArray() As Variant ReDim strippedArray(1 To inputHeight) […]

如何使vba中的位置variables?

Workbooks.Open ("C:\Users\**VARIANT**\Desktop\Excel Before Code Templates (BCT)\Data_BCT.xlsx") 我想使“变体”部分变成依赖于input的variables。 我想这样做,因为它需要每个其他用户修改。

舍入变体

为什么一个数字四舍五入到一位数字仍然写入Excel的许多数字。 例如: dim myvar as variant dim mysingle as single dim myrange as range mysingle = 4567.23494376 myvar = round(mysingle,1) myrange = "A1" myrange.value = myvar 即使我写myvar已被四舍五入到单元格A1的一个数字,虽然单元格显示4567.2,单击单元格将显示整个值与公式栏中的尾数右侧的所有数字。 我应该期待这种行为?

VLookup的“types不匹配错误”

If first_unit = "N/A" Then我得到一个types不匹配的错误。 我试图根据另一个下拉菜单(B10)中的select更改下拉菜单(B26:C26)的文本。 对于下面的代码: Dim check_change As Boolean Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo 0 If check_change = False Then If Target.Address = Range("B10").Address Then Dim first_unit As Variant Dim second_unit As Variant Dim third_unit As Variant check_change = True first_unit = Application.WorksheetFunction.VLookup(Range("B10:E10"), Sheet3.Range("Jurisdictions_table"), 5, False) second_unit = Application.WorksheetFunction.VLookup(Range("B10:E10"), […]

引用Variant数组到列

我有防止更改到一个以上的单元格的代码。 然而,它将允许一次删除多个单元格。 下面是我使用的代码,它运作良好。 Dim vClear As Variant Dim vData As Variant 'This prevents more than one cell from being changed at once. 'If more than one cell is changed then validation checks will not work. If Target.Cells.Count > 1 Then vData = Target.Formula For Each vClear In vData If vClear <> "" Then 'If data […]