2013-08-30 47 views
1

我想搜索一個字符串的範圍,然後從該字符串中提取一個子串。字符串的格式是xxx-xxx-xxx-xxx,其中x可以是字母或數字。我試圖確定引用「 - 」的子字符串。此代碼在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 
Next 

任何援助將不勝感激。

+0

我已經回答*爲什麼*類型不匹配發生,但我不知道*「i = 5」應該做什麼。還是它是一個錯字? –

回答

3

Type Mismatch是由這部分引起的:EIRPSummary.Range("V" & i = 5)被評價爲 「VFALSE」 如果i不是5和 「VTRUE」 如果...

UPDATE

我不不要以爲你可以在沒有循環的情況下使用全VBA,因爲你需要迭代一個範圍內的單個單元。然而,你可以修改代碼以僅每次迭代一次評估的單元格值...但我不認爲有將是在少數迭代產生巨大的影響,你正在做的:

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) 
Next 

或者,如果您可以在工作表中添加另一列,=LEFT([A1],FIND("-",[A1])-1)(其中[A1]是帶有「xxx-xxx-xxx-xxx」的單元格)給出的只是:n最左邊的字符,直到第一次出現「 - 」,排除該字符。

+0

我覺得很蠢。你發現了一個錯字。 「=」應該是「+」,現在它工作正常。謝謝,朋友。也許有人可以解釋一個不需要循環的更有效的選擇。 – jmaz

+0

@Max我認爲我找到了一個露臉的方式..這恰好也是無代碼:) –

+0

我喜歡這兩個實現。感謝您抽出寶貴的時間。 – jmaz

相關問題