excel - 变量不会转换为整数

标签 excel vba

目前正在搞乱excel中的宏。一个生成一个范围,用 1-9 填充 3 列单元格。
另一个绘制这些数字的方法类似于以 x、y 和 v 为值的战舰。

我已经完成了数字生成部分的工作,但我被困在了绘图位上。

目前的问题是我收到错误“13”,这意味着我的变量不匹配。
但我使用的是 CInt将变体转换为 int .
调试似乎 for 循环正在正确获取所有值,但只是没有转换。

这是我到目前为止的代码和整个过程的屏幕截图。

enter image description here

Sub random()
Dim MyRange As Range
Dim c As Integer, r As Integer
Set MyRange = Workbooks("test random gen").Sheets("Sheet1").Range("G16:I30")
For c = 1 To MyRange.Columns.Count
For r = 1 To MyRange.Rows.Count
Randomize
MyRange.Cells(r, c) = Int((9 - 1 + 1) * Rnd + 1)
Next r
Next c
End Sub

Sub Button6_Click()
Dim Board As Range
Dim Table As Range
Dim c As Integer, r As Integer
Dim Xboard As Integer, Yboard As Integer, Vboard As Integer
Dim Xboardv As Variant, Yboardv As Variant, Vboardv As Variant

Set Table = Workbooks("test random gen").Sheets("Sheet1").Range("G16:G30")
Set Board = Workbooks("test random gen").Sheets("Sheet1").Range("M16:U24")

For r = 1 To Table.Rows.Count
    Xboardv = Table.Cells.Value
    Yboardv = Table.Cells.Offset(columnOffset:=1).Value
    Vboardv = Table.Cells.Offset(columnOffset:=2).Value

    Xboard = CInt(Xboardv)
    Yboard = CInt(Yboardv)
    Vboard = CInt(Vboardv)

    Board.Cells(Xboard, Yboard).Value = (Vboard)

Next r

End Sub

最佳答案

嗯,好吧,我将回顾一下我在上面的评论中提到的内容:

"It is getting stuck on the Xboard = CInt(Xboardv) line with the error "13""



您正在使用 Xboardv = Table.Cells.Value 创建一个值数组.数组大小为 1 To 15, 1 To 1当您引用数组中的任何元素时,您需要使用这些索引号作为行和列参数。所以基本上:Xboard = CInt(Xboardv(<X>,<Y>)) .

"That did it but now it only does it for the first value of the array due to it being called out as (1,1)"



那是因为你一直在引用同一个元素。但是,您使用 r 创建了一个循环。变量已经存在。所以你可以用它来调用不同的元素:Xboard = CInt(Xboardv(r,1))
我忽略了这样一个事实,即您的结构有些奇怪,并且您正在循环中创建相同的数组。所以把它移到你的循环之外,并可能使用 For R = Lbound(Xboard) to Ubound(Xboard)而是循环。而且您可以只处理值而不必转换它们。

顺便说一句,不需要Integer变量。使用Long反而。

关于excel - 变量不会转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59971449/

相关文章:

mysql - 如何检测 datagridview 列中的相同数据?

sql-server - 在 accpac 中写入 sql 数据库

vba - 将同一 block 数据粘贴到其下方两次(或更多)

python - 用 python 填充 excel 文件搞乱了我的日期

sql - 如何在 Excel 中为多列创建关系?

html - 使用 VBA 操作 IE 以登录和预订类(class)

excel - 脚本一遍又一遍地循环 - 为什么?

vba - 引用单元格时出现错误 9

vba - EXCEL 64位命令行vba代码

excel - 从 URL HTTPS 下载 xls 文件