Excelmacros:search范围(M2:M100)多less个字符之前“ – ”如果3然后运行否则如果4然后运行

VBA如何在一定范围内查看并计算第一个连字符“ – ”之前有多less个字符?如果是3,那么运行一个子程序, else if它是4,则运行另一个子程序?

我不在乎是什么文字,只是在第一个“ – ”之前有多less个字符?
范围内的两种文本的例子

 D10-AA-02A-P2 = 3 '**D10** C047-AB-V34 AD-P2 > V34-AD-C047 AB-P14 = 4 '**C047** 

您可以使用WorksheetFunction.SearchWorksheetFunction.Find

 Sub test() Dim Cl As Range For Each Cl In Sheets("PAR_import").[M3:M100] If Cl.Text Like "*-*" Then If WorksheetFunction.Search("-", Cl.Text) - 1 = 3 Then Call SubX ElseIf WorksheetFunction.Search("-", Cl.Text) - 1 = 4 Then Call SubY End If End If Next Cl End Sub 

像这样的东西将工作:

 Sub SwitchSub() Dim rng as Range, cl as Range, CharsBeforeHyphen As String Set rng = Worksheets("PAR_import").Range("M3:M100") For each cl in rng CharsBeforeHyphen = VBA.Left$(cl, Application.WorksheetFunction.Find("-", cl, 1) - 1) If VBA.Len(CharsBeforeHyphen) = 3 Then Call SubX ElseIf VBA.Len(CharsBeforeHyphen) = 4 Then Call SubY End If next cl End Sub 

如果您认为合适,您可以修改代码以传入范围参考。