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
语法可能很麻烦。