Forum Discussion
hrh_dash
Aug 11, 2022Iron Contributor
Error pop up: compile error sub or function not definedwhen executing macro
Pop out error: Run time error 13 Type Mismatch when executing macro. Error was displayed at this line of code below: Set successrng = Find(What:="Success", After:=ActiveCell, LookIn:=xlValues _ ...
- Aug 12, 2022
Try this:
Sub daily_installment() Dim ws As Worksheet Dim lastRow As Long Dim i As Long Dim successrange As Range For Each ws In Worksheets ws.Rows("1").EntireRow.Delete ws.Columns("A:A").TextToColumns Destination:=ws.Range("A1"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _ Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar:=";" lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row ws.Rows(lastRow).EntireRow.Delete ws.Range("H:H").EntireColumn.Insert ws.Range("H1").Value = "TOTALPAYMENTS" Set successrange = ws.Cells.Find(What:="Success", LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False) Do While Not successrange Is Nothing successrange.EntireColumn.Delete Set successrange = ws.Cells.Find(What:="Success", LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False) Loop lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).EntireRow.Row With ws.Range("H2:H" & lastRow) .Formula = "=F2*G2" .Value = .Value End With ws.Range("A1").CurrentRegion.EntireColumn.AutoFit Next ws End Sub
hrh_dash
Aug 12, 2022Iron Contributor
HansVogelaar , thanks for the advice.
I would like to use a For loop to delete the entire row if "Success" is found in each row. However, i got an error msg pop up stating "Run time error 424, Object required".
Below is the code:
Sub daily_instalment()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Dim successrng As Long
Dim cell As Range
Dim successrange As Range
For Each ws In Worksheets
ws.Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
:=";"
ws.Rows("1").EntireRow.Delete
ws.Range("A1").CurrentRegion.EntireColumn.AutoFit
lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).EntireRow.Row
ws.Rows(lastRow).EntireRow.Delete
ws.Range("H:H").EntireColumn.Insert
ws.Range("H1").Value = "TOTALPAYMENTS"
'ws.Columns("J").Delete
'ws.Columns("K").Delete
'ws.Columns("L:O").Delete
successrng = ws.Cells.Find(What:="Success", After:=ActiveCell, LookIn:=xlValues _
, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Row
For Each cell In successrange '<-- error popping out from this line
If Not cell Is Nothing Then
ws.Rows(successrng).EntireRow.Delete
End If
Next cell
For i = 2 To lastRow
Cells(i, 8).Value = Cells(i, 6).Value * Cells(i, 7).Value
Next i
Next
End Sub
HansVogelaar
Aug 12, 2022MVP
You assign a value to the variable successrng (a row number), then use the variable successrange (a Range) without having set it to anything.
In which column do you want to look for "Success"? A specific column, or all columns?