я рассмотрел этот вопрос/ответ здесь, прежде чем писать это: Declare and Initialize String Array in VBAVBA - Правильный метод инициализации массива со строкой?
Я пытаюсь понять, как правильно объявить и инициализировать массив без прибегая к типу данных VARIANT.
Это мой код, и он работает, как это:
Function MakeLegalFilename(legalname As String) As String
Dim MyArray() As Variant
Dim x As Integer
MyArray = Array("<",">","?","@","%")
For x = LBound(MyArray) To UBound(MyArray)
legalname = Replace(legalname, MyArray(x), "", 1)
Next x
MakeLegalFilename = legalname
End Function
Если я изменю «Вариант» в «String,» код не в MyArray = Array(...
с несоответствием типа ошибки во время выполнения 13.
Если я определить размер массива, чтобы соответствовать количеству символов в строке (5 общих, но массив начинается с 0):
Dim MyArray(4) As String
MyArray = Array("<",">","?","@","%")
Теперь я получаю ошибку компиляции в MyArray = Array(...
, что говорит: «Может» t назначить массив. "
Я знаю, что я мог бы объявить массив этого путь и сделать его работу (я проверил это так):
MyArray(0) = "<"
MyArray(1) = ">"
MyArray(2) = "?"
...
MyArray(4) = "%"
Но если я кодирование в целом список символов (скажем, 20), то делать это громоздко, и, кроме того, я хотел бы знать, почему другой способ не работает, поскольку он предполагает, что у меня есть фундаментальное недоразумение. В этой самой основной форме, мой вопрос на самом деле, почему это не так:
Dim MyArray(4) As String
MyArray = Array("<",">","?","@","%")
Работает?
спасибо.
отзыв http://stackoverflow.com/questions/19369132/declare-and-initialize-string-array-in-vba – Sorceri
@Sorceri Я просмотрел эту ссылку, и это ссылка, которую я поставил в верхней части моего вопроса , Я посмотрел конкретно на комментарий @ Andez в верхнем ответе, где он, кажется, указывает «Dim MyArray() как String ... MyArray = Array (...», но это все еще не работает для меня. Что мне не хватает? – wackojacko1997
Вот функция doc. To Array: http://msdn.microsoft.com/en-us/library/aa262675%28v=vs.60%29.aspx. Она возвращает вариант, содержащий массив, поэтому он будет работать только с Вариант – dee