Run-time error in macro

vaibhavc

New Member
Joined
Jun 21, 2014
Messages
27
Hi,

I have entered some VBA code into my sheet ( right click & paste) for to achieve the results & it works well.

I have another macro in module it allows to insert rows & fill the formula from above row.

Whenever i run a macro I am receiving a Run-time error '13' Type mismatch in sheet code.

I don't have much knowledge of VB just searching macros what i need & trial, so please any help will be appreciated


1) Module Macro

Code:
Sub InsertRowsAndFillFormulas_caller()  '-- this macro shows on Tools, Macro..., Macros (Alt+F8) dialog
  Call InsertRowsAndFillFormulas
End Sub
 
Sub InsertRowsAndFillFormulas(Optional vRows As Long = 0)
' Documented:  http://www.mvps.org/dmcritchie/excel/insrtrow.htm
' Re: Insert Rows --   1997/09/24 Mark Hill <markhill@charm.net.nospam>
   ' row selection based on active cell -- rev. 2000-09-02 David McRitchie
   Dim x As Long
   ActiveCell.EntireRow.Select  'So you do not have to preselect entire row
   If vRows = 0 Then
    vRows = Application.InputBox(prompt:= _
      "How many rows do you want to add?", Title:="Add Rows", _
      Default:=1, Type:=1) 'Default for 1 row, type 1 is number
    If vRows = False Then Exit Sub
   End If


   'if you just want to add cells and not entire rows
   'then delete ".EntireRow" in the following line


   'rev. 2001-01-17 Gary L. Brown, programming, Grouped sheets
   Dim sht As Worksheet, shts() As String, i As Long
   ReDim shts(1 To Worksheets.Application.ActiveWorkbook. _
       Windows(1).SelectedSheets.Count)
   i = 0
   For Each sht In _
       Application.ActiveWorkbook.Windows(1).SelectedSheets
    Sheets(sht.Name).Select
    i = i + 1
    shts(i) = sht.Name


    x = Sheets(sht.Name).UsedRange.Rows.Count 'lastcell fixup


    Selection.Resize(rowsize:=2).Rows(2).EntireRow. _
     Resize(rowsize:=vRows).Insert Shift:=xlDown


    Selection.AutoFill Selection.Resize( _
     rowsize:=vRows + 1), xlFillDefault


    On Error Resume Next    'to handle no constants in range -- John McKee 2000/02/01
    ' to remove the non-formulas -- 1998/03/11 Bill Manville
    Selection.Offset(1).Resize(vRows).EntireRow. _
     SpecialCells(xlConstants).ClearContents
   Next sht
   Worksheets(shts).Select
End Sub

2) Sheet Macro

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

'for row sorting


If Target.Column = Range("AN1").Column Then
    Dim lRw As Long
    lRw = Cells(Rows.Count, "AN").End(xlUp).Row
    
    Range("A4:BZ" & lRw).Sort Key1:=Range("K4"), Order1:=xlAscending, Header:=xlNo
End If


'for capital typing


If Target.Column = 6 Then
Application.EnableEvents = False
Target.Value = UCase(Target.Value)
Application.EnableEvents = True
End If


' for cell auto lock once enter


Dim changed As Range


Set changed = Intersect(Target, Range("C4:AN551"))


If Not changed Is Nothing Then
    
    If TargetLocked <> True Then
           
       ActiveSheet.Unprotect ("123456789")
       Target.Locked = True
       ActiveSheet.Protect ("123456789"), userinterfaceonly:=True, AllowFiltering:=True
          
    Else
           
    
    End If
End If
If Intersect(Target, Range("AN4:AN551")) Is Nothing Then Exit Sub
If Target.Value <> "RC" Then
Target.Locked = True
Else
Target.Locked = False
End If


End Sub


 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  
  
  Dim Pword As String
  Dim changed As Range
    
  Set changed = Intersect(Target, Range("C4:AN551"))
  
  If Not changed Is Nothing Then
        
        If Target.Locked = True Then
        
                 UserForm1.TextBox1.Value = ""
                 UserForm1.TextBox1.SetFocus
                 UserForm1.Show
                Pword = UserForm1.TextBox1
                On Error GoTo Getout
                ActiveSheet.Unprotect Pword
                'for cell contents remains after double click
                 If Target.Column = 40 Then
                
                Target.ClearContents
                End If
                
                Target.Locked = False
    
                  ActiveSheet.Protect Pword
             
    End If
                 
  End If
    
  Exit Sub


Getout: MsgBox "Wrong Password", vbCritical, "Sorry :)"
' for cell protected error stop
Cancel = True
   
End Sub


</markhill@charm.net.nospam>
 

Excel Facts

What is the last column in Excel?
Excel columns run from A to Z, AA to AZ, AAA to XFD. The last column is XFD.
sorry i forgot to mention where was the error, on below line i am getting error -
If Target.Value <> "RC" Then in Sheet Macro

2 Sheet Macro

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

'for row sorting


If Target.Column = Range("AN1").Column Then
    Dim lRw As Long
    lRw = Cells(Rows.Count, "AN").End(xlUp).Row
    
    Range("A4:BZ" & lRw).Sort Key1:=Range("K4"), Order1:=xlAscending, Header:=xlNo
End If


'for capital type
If Target.Column = WorksheetFunction.Match("CUSTOMER NAME", Sheets("source").Rows(2), 0) Then
'If Target.Column = 6 Then
Application.EnableEvents = False
Target.Value = UCase(Target.Value)
Application.EnableEvents = True
End If


' for cell auto lock once enter


Dim changed As Range


Set changed = Intersect(Target, Range("C4:AN551"))


If Not changed Is Nothing Then
    
    If TargetLocked <> True Then
           
       ActiveSheet.Unprotect ("123456789")
       Target.Locked = True
       ActiveSheet.Protect ("123456789"), userinterfaceonly:=True, AllowFiltering:=True
          
    Else
           
    
    End If
End If
If Intersect(Target, Range("AN4:AN551")) Is Nothing Then Exit Sub
[COLOR=#ff0000]If Target.Value <> "RC" Then[/COLOR]
Target.Locked = True
Else
Target.Locked = False
End If


End Sub


 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  
  
  Dim Pword As String
  Dim changed As Range
  Dim co1 As Integer
    
  Set changed = Intersect(Target, Range("C4:AN551"))
 


  If Not changed Is Nothing Then
        
        If Target.Locked = True Then
        
                 UserForm1.TextBox1.Value = ""
                 UserForm1.TextBox1.SetFocus
                 UserForm1.Show
                 Pword = UserForm1.TextBox1
                On Error GoTo Getout
                ActiveSheet.Unprotect Pword
                'for cell contents remains after double click
                 If Target.Column = WorksheetFunction.Match("CHECKED", Sheets("source").Rows(2), 0) Then
                 'If Target.Column = 40 Then
                
                Target.ClearContents
                End If
                
                Target.Locked = False
    
                  ActiveSheet.Protect Pword
               
        
             
    End If
                 
  End If
    
  Exit Sub


Getout: MsgBox "Wrong Password", vbCritical, "Sorry :)"
' for cell protected error stop
Cancel = True
   
End Sub
 
Upvote 0
This line doesn't allow for the possibility of Target containing more than one cell:

Code:
If Target.Value <> "RC" Then

You could replace this:

Code:
If Intersect(Target, Range("AN4:AN551")) Is Nothing Then Exit Sub
If Target.Value <> "RC" Then
    Target.Locked = True
Else
    Target.Locked = False
End If

with:

Code:
For Each r In Intersect(Target, Range("AN4:AN551"))
    r.Locked = r.Value <> "RC"
Next r

The string comparison is case sensitive, by the way.

If you don't want other VBA to trigger the Worksheet_Change event, you can use:

Code:
Application.EnableEvents = False

'Make changes to the sheet here

Application.EnableEvents = True
 
Upvote 0
Thanks for reply !

I have replaced the below code but this time error is "Run-time error 424 Object required"

Code:
[FONT=Verdana]For Each r In Intersect(Target, Range("AN4:AN551"))[/FONT]    
 r.Locked = r.Value <> "RC" 
[FONT=Verdana]Next r[/FONT][COLOR=#333333]
[/COLOR]
 
Last edited:
Upvote 0
My mistake, sorry!

Please change to:

Code:
Set changed = Intersect(Target, Range("AN4:AN551"))
If Not changed Is Nothing Then
    For Each r In changed
        r.Locked = r.Value <> "RC"
    Next r
End If
 
Upvote 0

Forum statistics

Threads
1,224,547
Messages
6,179,436
Members
452,915
Latest member
hannnahheileen

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