2016-08-02 2 views
1

Я знаю, что это совершенно неправильно, но на данный момент я действительно не знаю, как это сделать.VBA (Microsoft Excel) заменить Array на String

В Microsoft Excel я хочу заменить все значения в строке «OldValues» фиксированной строкой «NewValue». Как это возможно?

LBound и Ubound неправильно использовать, не так ли?

Sub Replace() 
Dim sht As Worksheet 
Dim OldValues As Variant 
Dim NewValue As String 
Dim x As Long 

OldValue = Array("old1","old2","old3") 
NewValue = "allnew!" 

    For x = LBound(OldValue) To UBound(NewValue) 

     For Each sht In ActiveWorkbook.Worksheets 
     sht.Cells.Replace What:=OldValue(x), Replacement:=NewValue(x), _ 
      LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _ 
      SearchFormat:=False, ReplaceFormat:=False 
     Next sht 

    Next x 

End Sub 

ответ

4

Ваш код должен работать с небольшими изменениями: NewValue не является массивом, поэтому UBound(NewValue) получите вам ошибку. Вы должны перейти в UBound(OldValues) вместо этого в свою петлю и удалить (x) после NewValue в Replace.

Sub Replace() 
Dim sht As Worksheet 
Dim OldValues As Variant 
Dim NewValue As String 
Dim x As Long 

OldValues = Array("old1","old2","old3") 
NewValue = "allnew!" 

    For x = LBound(OldValues) To UBound(OldValues) 

     For Each sht In ActiveWorkbook.Worksheets 
     sht.Cells.Replace What:=OldValues(x), Replacement:=NewValue, _ 
      LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _ 
      SearchFormat:=False, ReplaceFormat:=False 
     Next sht 

    Next x 

End Sub 
+0

Ницца. Не знаю, правильно ли функция LBound & Ubound (как я понял, они существуют для создания цикла поиска по массиву?), Поэтому я не знал, как заставить его работать. –

+1

При использовании с массивом они ссылаются на верхнюю и нижнюю границы индекса, поэтому с массивом «Array» («old1», «old2», «old3») '-' LBound' будет 0, а 'UBound' будет 2 – Jordan

+0

@MiguelRasquinho. Альтернативно вы можете выполнять итерацию по массиву с использованием переменной типа варианта и для каждой петли. 'Dim x как вариант: для каждого x в OldValues' –