VBA Form to search for records then edit

ccd740

New Member
Joined
Feb 20, 2019
Messages
5
Hi all,

I'm no expert at VBA, so I've hit a brick wall with this. Here is my code below. The problem I have is when I try to update the fields in the userform, line 25 of buttUpdate_Click causes an "object required" error and I just can't get my head round it

Code:
Private Sub UserForm_Click()

Option Explicit
    Dim rgData As Range
    Dim rgResults As Range
    Dim ListRow As Long
    Dim SkipEvent As Boolean
    Dim shData As Worksheet


Private Sub buttSrch_Click()
    Dim shCurrent As Worksheet
    Dim shResults As Worksheet
    Dim found As Range
    Dim firstFound As String
    Dim SrchCol_1 As String
    Dim SrchCol_2 As String
    Dim SrchCol_3 As String
    Dim r As Long
    
    If tbSrch1 = "" And tbSrch2 = "" Then Exit Sub
    
    Set shData = Sheets("Data") 'ch
    Set rgData = shData.Cells.CurrentRegion
    'Set rgData = rgData.Offset(1, 0).Resize(rgData.Rows.count - 1, rgData.Columns.count)
    
    Set shCurrent = ActiveSheet
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    On Error Resume Next
    Sheets("Results").Delete
    On Error GoTo 0
    Application.DisplayAlerts = True
    Sheets.Add after:=Sheets(Sheets.count)
    ActiveSheet.Name = "Results"
    Set shResults = Sheets("Results")
    With shResults
        .Cells(1, 1) = "DataRow"
        
        .Cells(1, 2) = "Header 1" 'ch
        .Cells(1, 3) = "Header 2"
        .Cells(1, 4) = "Header 3"
        .Cells(1, 5) = "Header 4"
        .Cells(1, 6) = "Header 5"
        .Cells(1, 7) = "Header 6"
        .Cells(1, 8) = "Header 7"
        .Cells(1, 9) = "Header 8"
        .Cells(1, 10) = "Header 9"
        .Cells(1, 11) = "Header 10"
        .Cells(1, 12) = "Header 11"
        .Cells(1, 13) = "Header 12"
        .Cells(1, 14) = "Header 13"
        .Cells(1, 15) = "Header 14"
        .Cells(1, 16) = "Header 15"
        .Cells(1, 17) = "Header 16"
        .Cells(1, 18) = "Header 17"
        .Cells(1, 19) = "Header 18"
    End With
    
    'columns to search thru
    SrchCol_1 = "L"
    'SrchCol_2 = "G"
    'SrchCol_3 = "C"
    
    lbResList.ListIndex = -1
    tbResCol1 = ""
    tbResCol2 = ""
    tbResCol3 = ""
    tbResCol4 = ""
    tbResCol5 = ""
    tbResCol6 = ""
    tbResCol7 = ""
    tbResCol8 = ""
    tbResCol9 = ""
    tbResCol10 = ""
    tbResCol11 = ""
    tbResCol12 = ""
    tbResCol13 = ""
    tbResCol14 = ""
    tbResCol15 = ""
    tbResCol16 = ""
    tbResCol17 = ""
    tbResCol18 = ""
    
    r = 1
    If tbSrch1 <> "" Then
        With rgData.Columns(SrchCol_1)
            Set found = .Find(tbSrch1, rgData.Cells(rgData.Rows.count, SrchCol_1))
            If Not found Is Nothing Then
                firstFound = found.Address
                Do
                    r = r + 1
                    found.EntireRow.Copy shResults.Cells(r, 1)
                    shResults.Cells(r, 1).Insert Shift:=xlToRight
                    shResults.Cells(r, 1) = found.Row
                    Set found = .FindNext(found)
                Loop While Not found Is Nothing And found.Address <> firstFound
            End If
        End With
    End If
    'If tbSrch2 <> "" Then
        'With rgData.Columns(SrchCol_2)
            'Set found = .Find(tbSrch2, rgData.Cells(rgData.Rows.count, SrchCol_2))
            'If Not found Is Nothing Then
                'firstFound = found.Address
                'Do
                    'r = r + 1
                    'found.EntireRow.Copy shResults.Cells(r, 1)
                    'shResults.Cells(r, 1).Insert Shift:=xlToRight
                    'shResults.Cells(r, 1) = found.Row
                    'Set found = .FindNext(found)
                'Loop While Not found Is Nothing And found.Address <> firstFound
            'End If
        'End With
    'End If
    'If tbSrch3 <> "" Then
        'With rgData.Columns(SrchCol_3)
            'Set found = .Find(tbSrch3, rgData.Cells(rgData.Rows.count, SrchCol_3))
            'If Not found Is Nothing Then
                'firstFound = found.Address
                'Do
                    'r = r + 1
                    'found.EntireRow.Copy shResults.Cells(r, 1)
                    'shResults.Cells(r, 1).Insert Shift:=xlToRight
                    'shResults.Cells(r, 1) = found.Row
                    'Set found = .FindNext(found)
                'Loop While Not found Is Nothing And found.Address <> firstFound
            'End If
        'End With
    'End If
    If r = 1 Then
        lbResList.RowSource = ""
        MsgBox "No Results"
    Else
        Set rgResults = shResults.Cells.CurrentRegion
        Set rgResults = rgResults.Offset(1, 0).Resize(rgResults.Rows.count - 1, rgResults.Columns.count)
        rgResults.RemoveDuplicates Columns:=Array(1), Header:=xlNo
        Set rgResults = shResults.Cells.CurrentRegion
        Set rgResults = rgResults.Offset(1, 0).Resize(rgResults.Rows.count - 1, rgResults.Columns.count)
        ActiveWorkbook.Names.Add Name:="rgResults", RefersTo:=rgResults
        lbResList.RowSource = "rgResults"
    End If
    
    shCurrent.Activate
    Application.ScreenUpdating = True
End Sub


Private Sub buttUpdate_Click()
    Dim DataRow As Long
    On Error Resume Next
    DataRow = lbResList.List(lbResList.ListIndex, 0)
    On Error GoTo 0
    If DataRow = 0 Then Exit Sub
    SkipEvent = True
        If tbResCol1 = "" And tbResCol2 = "" And tbResCol3 = "" And _
           tbResCol4 = "" And tbResCol5 = "" And tbResCol6 = "" And _
           tbResCol7 = "" And tbResCol8 = "" And tbResCol9 = "" Then
            If MsgBox("Delete Entire Record?", vbExclamation + vbYesNo, "Confirm") = vbNo Then
            SkipEvent = False
                Exit Sub
            Else
                shData.Rows(DataRow).EntireRow.Delete
                ListRow = lbResList.ListIndex + 1
                rgResults.Rows(ListRow).EntireRow.Delete
            End If
        Else
            If MsgBox("Do updates?", vbExclamation + vbYesNo, "Confirm") = vbNo Then
            SkipEvent = False
                Exit Sub
            Else
                With shData
                    '.Cells(DataRow, 1) = tbResCol1
                    .Cells(DataRow, 2) = tbResCol2
                    '.Cells(DataRow, 3) = tbResCol3
                    '.Cells(DataRow, 4) = tbResCol4
                    '.Cells(DataRow, 5) = tbResCol5
                    '.Cells(DataRow, 6) = tbResCol6
                    '.Cells(DataRow, 7) = tbResCol7
                    '.Cells(DataRow, 8) = tbResCol8
                    '.Cells(DataRow, 9) = tbResCol9
                    .Cells(DataRow, 10) = tbResCol10
                    '.Cells(DataRow, 11) = tbResCol11
                    .Cells(DataRow, 12) = tbResCol12
                    '.Cells(DataRow, 13) = tbResCol13
                    '.Cells(DataRow, 14) = tbResCol14
                    '.Cells(DataRow, 15) = tbResCol15
                    '.Cells(DataRow, 16) = tbResCol16
                    '.Cells(DataRow, 17) = tbResCol17
                    '.Cells(DataRow, 18) = tbResCol18
                End With
                With rgResults
                    ListRow = lbResList.ListIndex + 1
                    .Cells(ListRow, 2) = tbResCol1
                    .Cells(ListRow, 3) = tbResCol2
                    .Cells(ListRow, 4) = tbResCol3
                    .Cells(ListRow, 5) = tbResCol4
                    .Cells(ListRow, 6) = tbResCol5
                    .Cells(ListRow, 7) = tbResCol6
                    .Cells(ListRow, 8) = tbResCol7
                    .Cells(ListRow, 9) = tbResCol8
                    .Cells(ListRow, 10) = tbResCol9
                    .Cells(DataRow, 11) = tbResCol10
                    .Cells(DataRow, 12) = tbResCol11
                    .Cells(DataRow, 13) = tbResCol12
                    .Cells(DataRow, 14) = tbResCol13
                    .Cells(DataRow, 15) = tbResCol14
                    .Cells(DataRow, 16) = tbResCol15
                    .Cells(DataRow, 17) = tbResCol16
                    .Cells(DataRow, 18) = tbResCol17
                    .Cells(DataRow, 19) = tbResCol18
                End With
            End If
        End If
    SkipEvent = False
End Sub


Private Sub lbResList_Click()
    If SkipEvent Then Exit Sub
    With lbResList
        ListRow = .ListIndex
        tbResCol1 = .List(ListRow, 1)
        tbResCol2 = .List(ListRow, 2)
        tbResCol3 = .List(ListRow, 3)
        tbResCol4 = .List(ListRow, 4)
        tbResCol5 = .List(ListRow, 5)
        tbResCol6 = .List(ListRow, 6)
        tbResCol7 = .List(ListRow, 7)
        tbResCol8 = .List(ListRow, 8)
        tbResCol9 = .List(ListRow, 9)
        tbResCol10 = .List(ListRow, 10)
        tbResCol11 = .List(ListRow, 11)
        tbResCol12 = .List(ListRow, 12)
        tbResCol13 = .List(ListRow, 13)
        tbResCol14 = .List(ListRow, 14)
        tbResCol15 = .List(ListRow, 15)
        tbResCol16 = .List(ListRow, 16)
        tbResCol17 = .List(ListRow, 17)
        tbResCol18 = .List(ListRow, 18)
    End With
End Sub
 

Excel Facts

Lock one reference in a formula
Need 1 part of a formula to always point to the same range? use $ signs: $V$2:$Z$99 will always point to V2:Z99, even after copying
from a quick glance of your code

try deleting this line:

Code:
Private Sub UserForm_Click()


and add this code

Code:
Private Sub UserForm_Initialize()
    Set shData = ThisWorkbook.Worksheets("Data")
End Sub

and see if this helps

Dave
 
Upvote 0
Hi Dave,

Thanks for your reply. It came up with a compile error so I typed it as shown below - am I getting it wrong? The same error appears unless I've got the wrong end of the stick

Code:
Private Sub UserForm_Initialize()    Set shData = ThisWorkbook.Worksheets("Data")
End Sub


Private Sub UserForm_Click()




Option Explicit
    Dim rgData As Range
    Dim rgResults As Range
    Dim ListRow As Long
    Dim SkipEvent As Boolean
    Dim shData As Worksheet
 
Upvote 0
Code:
Private Sub UserForm_Click()   [COLOR=#ff0000][B] '<-- This starts a macro but there is no "End Sub" and no code within the macro.[/B][/COLOR]
[COLOR=#ff0000][B]                                'I believe that line should simply be deleted.[/B][/COLOR]




''Option Explicit               [COLOR=#ff0000][B]'<-- this statement always goes at very top of module.[/B][/COLOR]


    Dim rgData As Range        [COLOR=#ff0000][B] '<-- The next five lines are Dim statements but they are not inside a macro.[/B][/COLOR]
    Dim rgResults As Range     [B][COLOR=#ff0000] '<-- Your Dim statements should always be inside a macro, usually at the very top unless[/COLOR][/B]
    Dim ListRow As Long         '[B][COLOR=#ff0000]<-- they are GLOBAL, which go at the very top just below the Option Explicit statement.[/COLOR][/B]
    Dim SkipEvent As Boolean
    Dim shData As Worksheet


[B][COLOR=#ff0000]'###  The remainder of the code cannot be accurately checked without having a copy of your workbook to review here.[/COLOR][/B]




Private Sub buttSrch_Click()
    Dim shCurrent As Worksheet
    Dim shResults As Worksheet
    Dim found As Range
    Dim firstFound As String
    Dim SrchCol_1 As String
    Dim SrchCol_2 As String
    Dim SrchCol_3 As String
    Dim r As Long
    
    If tbSrch1 = "" And tbSrch2 = "" Then Exit Sub
    
    Set shData = Sheets("Data") 'ch
    Set rgData = shData.Cells.CurrentRegion
    'Set rgData = rgData.Offset(1, 0).Resize(rgData.Rows.count - 1, rgData.Columns.count)
    
    Set shCurrent = ActiveSheet
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    On Error Resume Next
    Sheets("Results").Delete
    On Error GoTo 0
    Application.DisplayAlerts = True
    Sheets.Add after:=Sheets(Sheets.Count)
    ActiveSheet.Name = "Results"
    Set shResults = Sheets("Results")
    With shResults
        .Cells(1, 1) = "DataRow"
        
        .Cells(1, 2) = "Header 1" 'ch
        .Cells(1, 3) = "Header 2"
        .Cells(1, 4) = "Header 3"
        .Cells(1, 5) = "Header 4"
        .Cells(1, 6) = "Header 5"
        .Cells(1, 7) = "Header 6"
        .Cells(1, 8) = "Header 7"
        .Cells(1, 9) = "Header 8"
        .Cells(1, 10) = "Header 9"
        .Cells(1, 11) = "Header 10"
        .Cells(1, 12) = "Header 11"
        .Cells(1, 13) = "Header 12"
        .Cells(1, 14) = "Header 13"
        .Cells(1, 15) = "Header 14"
        .Cells(1, 16) = "Header 15"
        .Cells(1, 17) = "Header 16"
        .Cells(1, 18) = "Header 17"
        .Cells(1, 19) = "Header 18"
    End With
    
    'columns to search thru
    SrchCol_1 = "L"
    'SrchCol_2 = "G"
    'SrchCol_3 = "C"
    
    lbResList.ListIndex = -1
    tbResCol1 = ""
    tbResCol2 = ""
    tbResCol3 = ""
    tbResCol4 = ""
    tbResCol5 = ""
    tbResCol6 = ""
    tbResCol7 = ""
    tbResCol8 = ""
    tbResCol9 = ""
    tbResCol10 = ""
    tbResCol11 = ""
    tbResCol12 = ""
    tbResCol13 = ""
    tbResCol14 = ""
    tbResCol15 = ""
    tbResCol16 = ""
    tbResCol17 = ""
    tbResCol18 = ""
    
    r = 1
    If tbSrch1 <> "" Then
        With rgData.Columns(SrchCol_1)
            Set found = .Find(tbSrch1, rgData.Cells(rgData.Rows.Count, SrchCol_1))
            If Not found Is Nothing Then
                firstFound = found.Address
                Do
                    r = r + 1
                    found.EntireRow.Copy shResults.Cells(r, 1)
                    shResults.Cells(r, 1).Insert Shift:=xlToRight
                    shResults.Cells(r, 1) = found.Row
                    Set found = .FindNext(found)
                Loop While Not found Is Nothing And found.Address <> firstFound
            End If
        End With
    End If
    'If tbSrch2 <> "" Then
        'With rgData.Columns(SrchCol_2)
            'Set found = .Find(tbSrch2, rgData.Cells(rgData.Rows.count, SrchCol_2))
            'If Not found Is Nothing Then
                'firstFound = found.Address
                'Do
                    'r = r + 1
                    'found.EntireRow.Copy shResults.Cells(r, 1)
                    'shResults.Cells(r, 1).Insert Shift:=xlToRight
                    'shResults.Cells(r, 1) = found.Row
                    'Set found = .FindNext(found)
                'Loop While Not found Is Nothing And found.Address <> firstFound
            'End If
        'End With
    'End If
    'If tbSrch3 <> "" Then
        'With rgData.Columns(SrchCol_3)
            'Set found = .Find(tbSrch3, rgData.Cells(rgData.Rows.count, SrchCol_3))
            'If Not found Is Nothing Then
                'firstFound = found.Address
                'Do
                    'r = r + 1
                    'found.EntireRow.Copy shResults.Cells(r, 1)
                    'shResults.Cells(r, 1).Insert Shift:=xlToRight
                    'shResults.Cells(r, 1) = found.Row
                    'Set found = .FindNext(found)
                'Loop While Not found Is Nothing And found.Address <> firstFound
            'End If
        'End With
    'End If
    If r = 1 Then
        lbResList.RowSource = ""
        MsgBox "No Results"
    Else
        Set rgResults = shResults.Cells.CurrentRegion
        Set rgResults = rgResults.Offset(1, 0).Resize(rgResults.Rows.Count - 1, rgResults.Columns.Count)
        rgResults.RemoveDuplicates Columns:=Array(1), Header:=xlNo
        Set rgResults = shResults.Cells.CurrentRegion
        Set rgResults = rgResults.Offset(1, 0).Resize(rgResults.Rows.Count - 1, rgResults.Columns.Count)
        ActiveWorkbook.Names.Add Name:="rgResults", RefersTo:=rgResults
        lbResList.RowSource = "rgResults"
    End If
    
    shCurrent.Activate
    Application.ScreenUpdating = True
End Sub




Private Sub buttUpdate_Click()
    Dim DataRow As Long
    On Error Resume Next
    DataRow = lbResList.List(lbResList.ListIndex, 0)
    On Error GoTo 0
    If DataRow = 0 Then Exit Sub
    SkipEvent = True
        If tbResCol1 = "" And tbResCol2 = "" And tbResCol3 = "" And _
           tbResCol4 = "" And tbResCol5 = "" And tbResCol6 = "" And _
           tbResCol7 = "" And tbResCol8 = "" And tbResCol9 = "" Then
            If MsgBox("Delete Entire Record?", vbExclamation + vbYesNo, "Confirm") = vbNo Then
            SkipEvent = False
                Exit Sub
            Else
                shData.Rows(DataRow).EntireRow.Delete
                ListRow = lbResList.ListIndex + 1
                rgResults.Rows(ListRow).EntireRow.Delete
            End If
        Else
            If MsgBox("Do updates?", vbExclamation + vbYesNo, "Confirm") = vbNo Then
            SkipEvent = False
                Exit Sub
            Else
                With shData
                    '.Cells(DataRow, 1) = tbResCol1
                    .Cells(DataRow, 2) = tbResCol2
                    '.Cells(DataRow, 3) = tbResCol3
                    '.Cells(DataRow, 4) = tbResCol4
                    '.Cells(DataRow, 5) = tbResCol5
                    '.Cells(DataRow, 6) = tbResCol6
                    '.Cells(DataRow, 7) = tbResCol7
                    '.Cells(DataRow, 8) = tbResCol8
                    '.Cells(DataRow, 9) = tbResCol9
                    .Cells(DataRow, 10) = tbResCol10
                    '.Cells(DataRow, 11) = tbResCol11
                    .Cells(DataRow, 12) = tbResCol12
                    '.Cells(DataRow, 13) = tbResCol13
                    '.Cells(DataRow, 14) = tbResCol14
                    '.Cells(DataRow, 15) = tbResCol15
                    '.Cells(DataRow, 16) = tbResCol16
                    '.Cells(DataRow, 17) = tbResCol17
                    '.Cells(DataRow, 18) = tbResCol18
                End With
                With rgResults
                    ListRow = lbResList.ListIndex + 1
                    .Cells(ListRow, 2) = tbResCol1
                    .Cells(ListRow, 3) = tbResCol2
                    .Cells(ListRow, 4) = tbResCol3
                    .Cells(ListRow, 5) = tbResCol4
                    .Cells(ListRow, 6) = tbResCol5
                    .Cells(ListRow, 7) = tbResCol6
                    .Cells(ListRow, 8) = tbResCol7
                    .Cells(ListRow, 9) = tbResCol8
                    .Cells(ListRow, 10) = tbResCol9
                    .Cells(DataRow, 11) = tbResCol10
                    .Cells(DataRow, 12) = tbResCol11
                    .Cells(DataRow, 13) = tbResCol12
                    .Cells(DataRow, 14) = tbResCol13
                    .Cells(DataRow, 15) = tbResCol14
                    .Cells(DataRow, 16) = tbResCol15
                    .Cells(DataRow, 17) = tbResCol16
                    .Cells(DataRow, 18) = tbResCol17
                    .Cells(DataRow, 19) = tbResCol18
                End With
            End If
        End If
    SkipEvent = False
End Sub




Private Sub lbResList_Click()
    If SkipEvent Then Exit Sub
    With lbResList
        ListRow = .ListIndex
        tbResCol1 = .List(ListRow, 1)
        tbResCol2 = .List(ListRow, 2)
        tbResCol3 = .List(ListRow, 3)
        tbResCol4 = .List(ListRow, 4)
        tbResCol5 = .List(ListRow, 5)
        tbResCol6 = .List(ListRow, 6)
        tbResCol7 = .List(ListRow, 7)
        tbResCol8 = .List(ListRow, 8)
        tbResCol9 = .List(ListRow, 9)
        tbResCol10 = .List(ListRow, 10)
        tbResCol11 = .List(ListRow, 11)
        tbResCol12 = .List(ListRow, 12)
        tbResCol13 = .List(ListRow, 13)
        tbResCol14 = .List(ListRow, 14)
        tbResCol15 = .List(ListRow, 15)
        tbResCol16 = .List(ListRow, 16)
        tbResCol17 = .List(ListRow, 17)
        tbResCol18 = .List(ListRow, 18)
    End With
End Sub
 
Upvote 0
Some tips:

You can leave your sheet results permanent, leave the titles in row 1 and clean the sheet from row 2 down.


Change this:
Code:
    On Error Resume Next
    Sheets("Results").Delete
    On Error GoTo 0
    Application.DisplayAlerts = True
    Sheets.Add after:=Sheets(Sheets.Count)
    ActiveSheet.Name = "Results"
    Set shResults = Sheets("Results")
    With shResults
        .Cells(1, 1) = "DataRow"
        
        .Cells(1, 2) = "Header 1" 'ch
        .Cells(1, 3) = "Header 2"
        .Cells(1, 4) = "Header 3"
        .Cells(1, 5) = "Header 4"
        .Cells(1, 6) = "Header 5"
        .Cells(1, 7) = "Header 6"
        .Cells(1, 8) = "Header 7"
        .Cells(1, 9) = "Header 8"
        .Cells(1, 10) = "Header 9"
        .Cells(1, 11) = "Header 10"
        .Cells(1, 12) = "Header 11"
        .Cells(1, 13) = "Header 12"
        .Cells(1, 14) = "Header 13"
        .Cells(1, 15) = "Header 14"
        .Cells(1, 16) = "Header 15"
        .Cells(1, 17) = "Header 16"
        .Cells(1, 18) = "Header 17"
        .Cells(1, 19) = "Header 18"
    End With



By:
Code:
Set shResults = Sheets("Results")
shResults.Rows("2:" & Rows.Count).Clear

---
To clean several controls with the same prefix in the name
Change this:


tbResCol1 = ""
tbResCol2 = ""
tbResCol3 = ""
tbResCol4 = ""
tbResCol5 = ""
tbResCol6 = ""
tbResCol7 = ""
tbResCol8 = ""
tbResCol9 = ""
tbResCol10 = ""
tbResCol11 = ""
tbResCol12 = ""
tbResCol13 = ""
tbResCol14 = ""
tbResCol15 = ""
tbResCol16 = ""
tbResCol17 = ""
tbResCol18 = ""

By:

Code:
    For i = 1 To 18
        Me.Controls("tbResCol" & i).Value = ""
    Next
 
Upvote 0
Thanks for all your help all,

The problem still stands though even with all of these solutions. Unfortunately I can't upload the workbook due to data protection as it's an absence tracking system so has a lot of personal details on it. The userform works fine, and can search and display results, but it's when you go to update it I get the "Object required" error in relation to the first "tbResCol*" that's there
 
Upvote 0
.
It will take a little extra effort but if you cleanse the workbook of private data - replacing it with "fill in" pseudo data, we can go from there.

This forum doesn't provide a means to post a workbook with your reply. You will need to post the sample workbook to a cloud site like
DropBox.com, Google cloud, Amazon cloud, etc.
 
Upvote 0
The problem is that your initial code is incomplete, or bad structured.
From your code, delete this line:

Code:
Private Sub UserForm_Click()

You added the code indicated by @dmt32


and add this code
Code:
Private Sub UserForm_Initialize()
    Set shData = ThisWorkbook.Worksheets("Data")
End Sub

 
Upvote 0

Forum statistics

Threads
1,223,904
Messages
6,175,295
Members
452,631
Latest member
a_potato

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top