2012-02-20 4 views
0

나는 으로 정말 새롭다. 따라서 코드를 도용 한 것을 용서해주십시오. 나는 excel (내 첫 번째)을위한 매크로를 작성하려고하는데, "첫 번째 줄을 가리키는"형식 블록 외부의 문이 유효하지 않습니다. 디버거도 광산을하지 않고 코드를 생성하는 컴퓨터의 라인에 실패로,하위 선언 visual Basic

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 블록을 종료 놓친 적이 있습니까?

을 나는 또한 아마 바퀴를 개혁하고있어 실현. 어떤 도움을 기능 내장 더 적절한 주시면 감사하겠습니다에. 당신이있어 마치

답변

3

. 코드에서 꽤 많은 구문 오류

VBA에서, 지역 변수는 Dim 키워드로 선언되어 그래서, endRow 선언은 다음과 같아야합니다.

Dim endRow As Integer 
,

For 루프는 Next 문으로 끝나야합니다. 그래서, 당신의 For 루프는 다음과 같아야합니다

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

는 대부분의 코드를 제거하고 추가하십시오 :

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

VBA이 조건문은 다음과 같이한다 ! 대신 키워드 Not을 사용하기 때문에 그것의 모두가 작동 할 때까지 그것은 라인 단위로 돌아 간다. VBA 구문은 익숙하지 않은 사용자에게는 성 가실 수 있습니다.

+0

감사합니다. 이제 작동합니다. – Riet

+1

IsEmpty가 그런 식으로 사용 된 것을 본 적이 없으며 제대로 작동하지 않습니다. 'Is Not IsEmpty (ActiveSheet.Cells (i, 1) .Value)'가되어야합니다. ' –

+0

@DickKusleika 감사합니다. 지금은 작동하고 있지만 컴파일도되지 않습니다. 그림, 잘못된 구문, 작동하지 마십시오. – Riet