Home » excel » excel vba – Compile error End with without with

excel vba – Compile error End with without with

Posted by: admin April 23, 2020 Leave a comment

Questions:

i keep getting a compile message ‘end with without with’

im new to this and i cant see a problem i have a ‘With’ followed by and ‘End with’. if i remove the end with i get a if with out end if.

    Private Sub Submitnewcustomer_Click()
Dim RowCount As Long
Dim ctl As Control

If Me.companynameinput.Value = "" Then
    MsgBox "Please enter a Company Name.", vbExclamation, "Britannia Monitoring Systems"
    Me.companynameinput.SetFocus
    Exit Sub
End If
If Me.contactnameinput.Value = "" Then
    MsgBox "Please enter a Contact Name.", vbExclamation, "Britannia Monitoring Systems"
    Me.companynameinput.SetFocus
    Exit Sub
End If
If Me.addressinput.Value = "" Then
    MsgBox "Please enter an Address.", vbExclamation, "Britannia Monitoring Systems"
    Me.companynameinput.SetFocus
    Exit Sub
End If
If Me.Telphone1input.Value = "" Then
    MsgBox "Please enter at least 1 phone Number.", vbExclamation, "Britannia Monitoring Systems"
    Me.Telphone1input.SetFocus
    Exit Sub
End If
If Me.email1input.Value = "" Then
    MsgBox "Please enter at least 1 Email Address.", vbExclamation, "Britannia Monitoring Systems"
    Me.email1input.SetFocus
End If

RowCount = Worksheets("Database").Range("A1").CurrentRegion.Rows.Count

    With Worksheets("Database").Range("A1")
    .Offset(RowCount, 0).Value = Me.companynameinput.Value
    .Offset(RowCount, 1).Value = Me.contactnameinput.Value
    .Offset(RowCount, 2).Value = Me.Telphone1input.Value
    .Offset(RowCount, 3).Value = Me.telephone2input.Value
    .Offset(RowCount, 4).Value = Me.email1input.Value
    .Offset(RowCount, 5).Value = Me.email2input.Value
    .Offset(RowCount, 6).Value = Me.email3input.Value
    .Offset(RowCount, 7).Value = Me.email4input.Value
    .Offset(RowCount, 8).Value = Me.addressinput.Value
    .Offset(RowCount, 15).Value = Format(Now, "dd/mm/yyyy hh:nn:ss")
    If Me.CheckBox1.Value = True Then
        .Offset(RowCount, 12).Value = "Yes"
    Else
        .Offset(RowCount, 12).Value = "No"
    If Me.CheckBox2.Value = True Then
        .Offset(RowCount, 13).Value = "Yes"
    Else
        .Offset(RowCount, 13).Value = "No"
    If Me.CheckBox3.Value = True Then
        .Offset(RowCount, 14).Value = "Yes"
    Else
        .Offset(RowCount, 14).Value = "No"
    End If
End With

    For Each ctl In Me.Controls
If TypeName(ctl) = "TextBox" Or TypeName(ctl) = "ComboBox" Then
    ctl.Value = ""
ElseIf TypeName(ctl) = "CheckBox" Then
    ctl.Value = False
End If
     Next ctl
    End Sub

I have just struggled for 30 minutes just to post this on here

any help would be great thanks

How to&Answers:

You are missing a couple of End Ifs in this section. You’ll need to sort that out before your code will compile correctly.

If Me.CheckBox1.Value = True Then
    .Offset(RowCount, 12).Value = "Yes"
Else
    .Offset(RowCount, 12).Value = "No"
If Me.CheckBox2.Value = True Then
    .Offset(RowCount, 13).Value = "Yes"
Else
    .Offset(RowCount, 13).Value = "No"
If Me.CheckBox3.Value = True Then
    .Offset(RowCount, 14).Value = "Yes"
Else
    .Offset(RowCount, 14).Value = "No"
End If