Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA在范围上使用权限()_Excel_Vba - Fatal编程技术网

Excel VBA在范围上使用权限()

Excel VBA在范围上使用权限(),excel,vba,Excel,Vba,我尝试将表列的最后4个字符放入数组并转储到列L。我使用数组是因为它更快: Dim arrCard() As String .Range("TableExport[CARD]").NumberFormat = "@" arrCard = Right(.Range("TableExport[CARD]").Text, 4) .Range("L2:L10000") = arrCard 然后它说 类型不匹配 这并没有意义,因为卡片列已经是文本了。这是不是意味着我不能在靶场上正确使用?但我确实看到很多示

我尝试将表列的最后4个字符放入数组并转储到列L。我使用数组是因为它更快:

Dim arrCard() As String
.Range("TableExport[CARD]").NumberFormat = "@"
arrCard = Right(.Range("TableExport[CARD]").Text, 4)
.Range("L2:L10000") = arrCard
然后它说

类型不匹配

这并没有意义,因为卡片列已经是文本了。这是不是意味着我不能在靶场上正确使用?但我确实看到很多示例使用这种方法,只是它们不适用于表列

我还尝试:

Dim arrCard() As Variant
Dim cardnum As Integer
.Range("TableExport[CARD]").NumberFormat = "@"
arrCard = Right(.Range("TableExport[CARD]").Text, 4)
.Range("L2:L10000") = arrCard

然后它在第四行抱怨类型不匹配。TBH我不明白,这似乎不是一个地狱数量的要求。

你不能在一个范围内正确使用,需要在特定的元素上使用它。 另外,因为您将数组设置为一个范围,所以它将是一个二维数组,这就是为什么ArrCardNum不起作用,您必须使用ArrCardNum,1


您不能在某个范围内正确使用,而需要在特定元素上使用它。 另外,因为您将数组设置为一个范围,所以它将是一个二维数组,这就是为什么ArrCardNum不起作用,您必须使用ArrCardNum,1


单元格值是多少?如果是单元格错误,则它不是字符串,无法转换为字符串。谢谢,转换后的单元格值为文本类型。NumberFormat=@NumberFormat不会使单元格错误转换为字符串;使用iError验证您的值。另外,.RangeTableExport[CARD]中有多少单元格?如果答案不是1,那么您使用的是数组,而不是字符串。右键需要字符串,而不是数组。单元格值是多少?如果是单元格错误,则它不是字符串,无法转换为字符串。谢谢,转换后的单元格值为文本类型。NumberFormat=@NumberFormat不会使单元格错误转换为字符串;使用iError验证您的值。另外,.RangeTableExport[CARD]中有多少单元格?如果答案不是1,那么您使用的是数组,而不是字符串。右边是字符串,不是数组。谢谢!现在它工作了,我不知道它会变成一个二维阵列。真的很有帮助!谢谢现在它工作了,我不知道它会变成一个二维阵列。真的很有帮助!
Dim arrCard As Variant
Dim cardnum As Long

With ThisWorkbook.Sheets(1)
    .Range("CARD").NumberFormat = "@"
    arrCard = .Range("CARD").Value
    For cardnum = LBound(arrCard, 1) To UBound(arrCard, 1)
        arrCard(cardnum, 1) = Right(arrCard(cardnum, 1), 4)
    Next cardnum
    .Range("L2:L10000") = arrCard
End With