под объявлением Visual Basic - PullRequest
       10

под объявлением Visual Basic

0 голосов
/ 20 февраля 2012

Я действительно новичок с , поэтому, пожалуйста, прости меня за убийство кода. Я пытаюсь написать макрос для Excel (мой первый), и я получаю «оператор недопустим вне блока типа» (указывая на первую строку). Вот мой код:

Sub MakeHTMLTable()    
   Worksheets("Sheet1").Activate
   endRow As Integer

For Count = 1 To 200
    For CountY = 1 To 200
      If (!ActiveSheet.Cells(Count, CountY).Value.IsEmpty) Then
       ActiveSheet.Cells(Count, CountY).Value = "<td>" + ActiveSheet.Cells(Count, CountY).Value + "</td>"
      End If
    Exit For
Exit For

For i = 1 To 200
    If (!ActiveSheet.Cells(i, 1).Value.IsEmpty()) Then
        ActiveSheet.Cells(i, 1).Value = "<tr>" + ActiveSheet.Cells(i, 1)
    End If
Exit For

For x = 1 To 200
    If (!ActiveSheet.Cells(x, 1).Value.IsEmpty()) Then
        endRow = x
    End If
Exit For

For countAgain = 1 To 200
    If (!ActiveSheet.Cells(x, countAgain).Value.IsEmpty()) Then
        ActiveSheet.Cells(x, countAgain).Value = ActiveSheet.Cells(x, countAgain).Value + "</tr>"
    End If
Exit For
End Sub

Я действительно не понимаю, поскольку отладчик терпит неудачу в строке сгенерированного компьютером кода, даже не делая его моим. Я пропустил окончание блока If "или For?

Я также понимаю, что, возможно, я заново изобретаю колесо. Буду признателен за любую помощь по более подходящим встроенным функциям.

1 Ответ

3 голосов
/ 20 февраля 2012

Похоже, в вашем коде немало синтаксических ошибок.

В VBA локальные переменные объявляются с ключевым словом Dim. Итак, объявление endRow должно выглядеть так:

Dim endRow As Integer
Циклы

For должны заканчиваться оператором Next. Итак, ваши For циклы должны выглядеть так:

For x = 1 To 200
    If (!ActiveSheet.Cells(x, 1).Value.IsEmpty()) Then
        endRow = x
    End If
Next

VBA использует ключевое слово Not вместо !, поэтому ваши условия должны выглядеть следующим образом:

If (Not (ActiveSheet.Cells(i, 1).Value.IsEmpty())) ...

Попробуйте удалить большую часть кода и добавить его построчно, пока все не заработает. Синтаксис VBA может быть громоздким для тех, кто к нему не привык.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...