Home » excel » vba – Exract a Substring from a String within a Range

vba – Exract a Substring from a String within a Range

Posted by: admin May 14, 2020 Leave a comment


I want to search a range for a string, then extract a substring from the string. The format of the string is xxx-xxx-xxx-xxx, where the x’s may be letters or numbers. I am trying to identify the substring in reference to the “-“. This code returns the “type mismatch” error on the line before End If.

For m = 7 To 16
    If InStr(EIRPBudget.Cells(m, 12), "-") Then
        FilterDescrip = EIRPBudget.Cells(m, 12)
        EIRPSummary.Range("V" & i + 5) = Split(FilterDescrip, "-")(0)
    End If

Any assistance would be appreciated.

How to&Answers:

The Type Mismatch is caused by this part: EIRPSummary.Range("V" & i = 5) which is evaluated as “VFALSE” if i isn’t 5 and “VTRUE” if it is…


I don’t think you can get away with all-VBA without a loop, since you need to be iterating individual cells in a range. However you can modify your code to only evaluate the cell value once per iteration… but I don’t think there’s going to be a huge impact over the small number of iterations you’re doing:

Dim cellValue As String
For m = 7 To 16
    cellValue = EIRPBudget.Cells(m, 12)
    If InStr(cellValue, "-") Then _
        EIRPSummary.Range("V" & i + 5) = Split(cellValue, "-")(0)

Alternatively, if you can add another column in your worksheet, =LEFT([A1],FIND("-",[A1])-1) (where [A1] is the cell with “xxx-xxx-xxx-xxx”) gives you just that: the n left-most characters up to the position of the first occurrence of “-“, excluding that character.