Arrays 错误424所需对象错误

Arrays 错误424所需对象错误,arrays,excel,vba,range,Arrays,Excel,Vba,Range,我试图将一系列单元格中的值输入到数组中 下面的代码给我一个错误424对象所需的消息。请帮忙 feedingtypes()=wbfeedingtypes.Range(“A2:A”&lrowfeedingtypes).Value我相信这就是您想要的: Dim feedingtypes() As Variant feedingtypes = wbfeedingtypes.Sheets(1).Range("A2:A" & lrowfeedingtypes) 请注意,变量名后的第二行代码中没有括

我试图将一系列单元格中的值输入到数组中

下面的代码给我一个错误424对象所需的消息。请帮忙


feedingtypes()=wbfeedingtypes.Range(“A2:A”&lrowfeedingtypes).Value

我相信这就是您想要的:

Dim feedingtypes() As Variant
feedingtypes = wbfeedingtypes.Sheets(1).Range("A2:A" & lrowfeedingtypes)
请注意,变量名后的第二行代码中没有括号。
根据您的评论,似乎只有一份工作表。因此,您也可以按编号参考图纸。我相应地更改了答案。

我相信这就是您要寻找的:

Dim feedingtypes() As Variant
feedingtypes = wbfeedingtypes.Sheets(1).Range("A2:A" & lrowfeedingtypes)
请注意,变量名后的第二行代码中没有括号。
根据您的评论,似乎只有一份工作表。因此,您也可以按编号参考图纸。我相应地更改了答案。

我已经运行并测试了以下内容

Sub RangeToArray()
  Dim i As Long
  Dim ws As Worksheet
  Dim myRange As Range, cell As Range
  Dim feedingtypes() As String

  Set ws = ThisWorkbook.Worksheets(1)
  Set myRange = ws.Range("A1:A20")
  i = 1

  For Each cell In myRange
    'Only add non blanks
    If cell.Value <> "" Then
      'Resize the array each time another cell is added
      ReDim Preserve feedingtypes(i)
      feedingtypes(i) = cell.Value
      i = i + 1
    End If
  Next cell
End Sub
子范围阵列()
我想我会坚持多久
将ws设置为工作表
Dim myRange作为范围,单元格作为范围
Dim feedingtypes()作为字符串
设置ws=This工作簿。工作表(1)
设置myRange=ws.Range(“A1:A20”)
i=1
对于myRange中的每个单元格
'仅添加非空白
如果单元格的.Value为“”,则
'每次添加其他单元格时调整数组大小
ReDim保留馈送类型(i)
馈电类型(i)=单元值
i=i+1
如果结束
下一个细胞
端接头

我已经运行并测试了以下内容

Sub RangeToArray()
  Dim i As Long
  Dim ws As Worksheet
  Dim myRange As Range, cell As Range
  Dim feedingtypes() As String

  Set ws = ThisWorkbook.Worksheets(1)
  Set myRange = ws.Range("A1:A20")
  i = 1

  For Each cell In myRange
    'Only add non blanks
    If cell.Value <> "" Then
      'Resize the array each time another cell is added
      ReDim Preserve feedingtypes(i)
      feedingtypes(i) = cell.Value
      i = i + 1
    End If
  Next cell
End Sub
子范围阵列()
我想我会坚持多久
将ws设置为工作表
Dim myRange作为范围,单元格作为范围
Dim feedingtypes()作为字符串
设置ws=This工作簿。工作表(1)
设置myRange=ws.Range(“A1:A20”)
i=1
对于myRange中的每个单元格
'仅添加非空白
如果单元格的.Value为“”,则
'每次添加其他单元格时调整数组大小
ReDim保留馈送类型(i)
馈电类型(i)=单元值
i=i+1
如果结束
下一个细胞
端接头


还没有玩过代码,只是很快就注意到了。“wbfeedingtypes”是工作簿还是工作表变量?wbfeedingtypes是工作簿。为了更新你,我在我的代码中错贴了这个,我修复了它。。。但是,该语句还有其他一些错误,因为它给了我一个不同的错误:对象不支持此属性或方法“error 438”我在excel中不经常使用数组,但我认为不能将整个范围转储到一个数组中。我会尝试一些东西并返回给您我也尝试了没有
.Value
的代码,因此它的内容是
feedingtypes()=wbfeedingtypes.Range(“A2:A”&lrowfeedingtypes)
工作簿和范围之间需要一个工作表,工作簿不包含范围。顺便说一句,如果你想回复评论中的某人,你可以使用@+他们的用户名回复他们。还没有玩过代码,只是很快就注意到了。“wbfeedingtypes”是工作簿还是工作表变量?wbfeedingtypes是工作簿。为了更新你,我在我的代码中错贴了这个,我修复了它。。。但是,该语句还有其他一些错误,因为它给了我一个不同的错误:对象不支持此属性或方法“error 438”我在excel中不经常使用数组,但我认为不能将整个范围转储到一个数组中。我会尝试一些东西并返回给您我也尝试了没有
.Value
的代码,因此它的内容是
feedingtypes()=wbfeedingtypes.Range(“A2:A”&lrowfeedingtypes)
工作簿和范围之间需要一个工作表,工作簿不包含范围。顺便说一句,如果你想回复评论中的某人,你可以使用@+他们的用户名来回复他们。谢谢,现在就用这句话。错误13:运行类型不匹配。好的,我将
Dim feedingtypes()更改为字符串
,更改为
变量
,它可以工作。如果我将维度定义为变量,但不是字符串,则此代码可以工作,但我希望将每个值的维度定义为字符串,为什么我不能这样做?如果你想使用
string
,那么你必须一个接一个地分配每个数组项,如@iShaymus提供的解决方案所示。如果要同时分配所有变量,则必须使用类型
变量
。我知道变量的性能不如字符串快。但是Excel最大的速度限制之一是从工作表中读取数据,然后(更重要的是)将数据写回工作表中(我假设稍后在代码中)。谢谢,现在有了这句话。错误13:运行类型不匹配。好的,我将
Dim feedingtypes()更改为字符串
,更改为
变量
,它可以工作。如果我将维度定义为变量,但不是字符串,则此代码可以工作,但我希望将每个值的维度定义为字符串,为什么我不能这样做?如果你想使用
string
,那么你必须一个接一个地分配每个数组项,如@iShaymus提供的解决方案所示。如果要同时分配所有变量,则必须使用类型
变量
。我知道变量的性能不如字符串快。但Excel最大的速度限制之一是从工作表中读取数据,然后(更重要的是)将数据写回工作表(我假设稍后在您的代码中)。我认为这肯定会起作用,但我真的希望使用较小的语句,因为我现在使用的代码已经非常大了。除了一行之外,这个代码的原因是它允许你控制哪些数据要从一个范围中取出,例如在我的例子中忽略空格。如果您决定忽略空格、数字等,那么这些数字可能不是您需要的,但可以节省您的时间。您也可以将其放入模块中,然后调用它<代码>调用RangeTarray(myWorksheet,myRange)如果你对速度有任何顾虑,那么你可能会想读这篇文章:作者(似乎)花费了大量时间来加速测试和完善他的代码。我认为这肯定会行得通,但我真的希望围绕一个较小的语句进行工作,因为wh的整个代码