Str增加额外的空间

Dim i As Integer i = Int((8 - 2 + 1) * Rnd + 2) Dim rg As String Dim con As String con = Str(i) rg = "B" & con MsgBox (rg) 

这返回“B 4”而不是“B 4任何人都知道的问题

使用Cstr(i)而不是Str(i) – Cstr不会添加空格

Str()的帮助页面

将数字转换为string时,总是为数字的符号预留前导空格。 如果数字是正数,则返回的string包含前导空格,隐含加号。

Str()留下符号的空间。

由于Excel具有隐式转换,因此可以使用rg = "B" & i并获取所需的范围

使用format()函数…

 con = format(i) rg = "B" & con MsgBox (rg) 

Excel根据int缩减string。

这是一个解释

https://stackoverflow.com/a/10004244/1504882

使用修剪function删除前导空间,如下所示:

 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim i As Integer i = Int((8 - 2 + 1) * Rnd + 2) Dim rg As String Dim con As String con = Str(i) rg = "B" & Trim(con) MsgBox (rg) End Sub