arrays - 将选定的单元格分配给变量
问题描述
我有一个 vba 分配,我想将单元格值分配给一个变量。我曾经selection.SpecialCells
找到选择相关的单元格。因此,我选择了一列包含 11 个单元格,但中间有空格。如何将其分配给变量?
Worksheets("Sheet1").Range(Cells(4, 3), Cells(1000, 3)).Select
Selection.SpecialCells(xlCellTypeConstants, 2).Select
Set IsinArray = Selection
解决方案
(1)去掉Set
- 它只用于分配对象,而不是值。
(2)阅读(并理解)如何避免在 Excel VBA 中使用 Select。
(3)限定Cells
- 您需要告诉 VBA 您需要哪个工作表中的单元格。
(4) SpecialCells中的第二个参数指定你要读取什么样的数据。2
( xlTextValues
) 只表示字符串,因此数字会被过滤掉。如果要读取所有非空单元格,只需省略此参数即可。
(5)如果您的 Range 包含多个单元格,则这些值将存储在二维数组中。如果您的 Range 仅包含一个值,则结果是单个值,而不是数组。如果SpecialCells
没有找到任何东西(例如,所有单元格都是空的),它会抛出一个运行时错误。
(6)使用Option Explicit
和声明所有变量。由于SpecialCells
可以是不同的类型,请使用Variant
.
(7)拆分复杂语句有助于发现错误。
Dim r as Range
With Worksheets("Sheet1")
Set r = .Range(.Cells(4, 3), .Cells(1000, 3))
' (Synonym to Set r = .Range("C4:C1000")
End With
Dim myVals
On Error Resume Next ' Handle the possible error that no value was found
myVals = r.SpecialCells(xlCellTypeConstants)
On Error GoTo 0
If IsEmpty(myVals) Then
Debug.Print "No values found."
ElseIf Not IsArray(myVals) Then
Debug.Print "Only one value found."
Else
Debug.Print UBound(myVals, 1) & " values found."
End If
推荐阅读
- javascript - 将调整大小的照片上传到 S3 存储桶
- c# - WPF + mahApps 插件 - 找不到资源错误
- javascript - 如何使用javascript将特定数组获取到对象中
- jsf - Omnifaces TagAttribute Id 不能用作 id
- node.js - JEST Mongoose POST 测试失败 - toBeCalledWith()
- java - 如何修复 Android 应用的应用购买问题?
- django - 优化 Django API 查询以减少数据库命中
- ruby-on-rails - rails 模型范围没有选择好的查询
- python - 麦克风之间的 Python 语音识别变化
- wordpress - 如何为我的 WooCommerce 网站上的每个产品添加追加销售?