y = x
преобразует строку фиксированной длины в обычную строку, например, x = 10
преобразует это число в строку.Протестируйте его с помощью y = x & "123456789012345"
, и вы увидите, что он больше не имеет фиксированной длины.
Sub Test()
Dim y As Variant
Dim x As String * 10
y = x
MsgBox y
'but this works too
y = x & "123456789012345"
MsgBox y
End Sub
Это означает, что x
- это строка фиксированной длины, но y
больше не является фиксированной по длине.Если вы явно не конвертируете один тип в другой, VBA неявно преобразует их в другой тип, если это возможно (если нет, вы получаете несоответствие типов).
Это означает, например, что вы можете вставить число в строку безявно преобразовав это:
Dim str As String
str = 12345
приведёт число 12345
в строку типа str = CStr(12345)
.
Подобное происходит, когда вы вставляете строку фиксированной длины в вариант.Он неявно преобразуется в строку не фиксированной длины.