sub声明visual Basic

我真的很新vba ,所以请原谅我的屠杀的代码。 我试图写一个macros的Excel(我的第一个),并得到“语句无效的types块”(指着第一行)。 这是我的代码:

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 

我真的不明白,因为debugging程序在计算机生成的代码上失败,甚至没有发现。 我错过了结束If “或For块?

我也意识到我可能在重新发明轮子。 任何更合适的内置函数的帮助将不胜感激。

看起来你的代码中有很多的语法错误。

VBA ,局部variables是用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语法可能很麻烦。