2016-10-18 2 views
1

У меня этот макрос используется для инвертирования порядка выбранной строки. Этого макроса бежать гладко на моем английском ПК с Excel 2007, но не работают на моем компьютере с французским первенствуют 2016. Когда я запустить его в французском ПК, эта линия For j = 1 To UBound(Arr, 2)/2 получает мне Сообща ошибкуVBA excel Английский 2007 причина ошибка msg на excel 2016 французский

«» Компиляция ошибка: Синтаксическая ошибка ''

Sub FlipRows() 
'Updateby20131126 
Dim Rng As Range 
Dim WorkRng As Range 
Dim Arr As Variant 
Dim i As Integer, j As Integer, k As Integer 
On Error Resume Next 
xTitleId = "KutoolsforExcel" 
Set WorkRng = Application.Selection 
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8) 
Arr = WorkRng.Formula 
For i = 1 To UBound(Arr, 1) 
    k = UBound(Arr, 2) 
    For j = 1 To UBound(Arr, 2)/2 
     xTemp = Arr(i, j) 
     Arr(i, j) = Arr(i, k) 
     Arr(i, k) = xTemp 
     k = k - 1 
    Next 
Next 
WorkRng.Formula = Arr 
End Sub 
+0

Это кажется совершенно правильный синтаксис команды. Если вы прокомментируете его (и соответствующий Next), тогда компиляция кода? –

+0

он компилируется на английском версии 2007 года, но не на версии excel french 2016 – Anarchy98

+0

Я не думаю, что вы отвечаете на вопрос, который я задал? –

ответ

0

Вам необходимо будет изменить;

Это региональный параметр, вызывающий проблему, причина точки с запятой заключается в том, чтобы отличать от разделителя десятичных чисел, что во многих странах запятая вместо точки.

Другой вариант заключается в изменении сепараторов в версии Excel (и;.)