VBA: Else without If Error

excel, vba

Solution

On the line with the first `If`, you must go to a new line after `Then`, otherwise your `If` will be implicitely closed.

'Good (in this case)
If <condition> Then    
   DoSomething
   myRow = myRow + 1
Else
   DoSomething Different
End if


'NOT good 
If <condition> Then  DoSomething  
   'the if is now "closed" !!!
   myRow = myRow + 1
Else
   DoSomething Different
End if

Problem

I'm trying to run the following code, but I keep getting the Else without If Error in the first sub. The code is supposed to run through a column, open webpages if there is a url in the cell, then save the page info as a text file. If there is no url, then it just saves the text within that file as a text file. I can't figure out how to change the syntax to get it to work. ``` Sub LoopOverB() Dim myRow As Long myRow = 10 While Worksheets("Input_Format_A").Cells(myRow, 2).value <> "" If InStr(1, Worksheets("Input_Format_A").Cells(myRow, 2).value, "http://", vbTextCompare) Then Call url_Test(Worksheets("Input_Format_A").Cells(myRow, 2).value, "C:\mallet\test\" & Worksheets("Input_Format_A").Cells(myRow, 1).value & ".txt") myRow = myRow + 1 Else Open "C:\mallet\test\" & Worksheets("Input_Format_A").Cells(myRow, 1) & ".txt" For Append As #1 Print #1, Worksheets("Input_Format_A").Cells(myRow, 2).value Close #1 myRow = myRow + 1 End If Wend End Sub Sub url_Test(URL As String, Filename As String) Dim FSO As Object Dim ieApp As Object Dim Txt As String Dim TxtFile As Object Set FSO = CreateObject("Scripting.FileSystemObject") Set TxtFile = FSO.OpenTextFile(Filename, 2, True, -1) Set ieApp = CreateObject("InternetExplorer.Application") ieApp.Visible = True ieApp.Navigate URL While ieApp.Busy Or ieApp.ReadyState <> 4 DoEvents Wend Txt = ieApp.Document.body.innerText TxtFile.Write Txt TxtFile.Close ieApp.Quit Set ieApp = Nothing Set FSO = Nothing End Sub ```

Original source