我正在處理一段代碼以從其標記名中提取管道的標稱大小。例如:L-P-50-00XX-0000-000。 。50將是它的標稱尺寸(2" ),我想提取我知道我能做到這一點是這樣的:EXCEL VBA如何使用函數和分割從字符串中提取整數
TagnameArray() = Split("L-P-50-00XX-0000-000", "-")
DNSize = TagnameArray(2)
但我想這是一個功能,因爲它是一小部分我整個宏觀,我並不需要它爲所有我的工作只是這一個植物我當前的代碼是:
Sub WBDA_XXX()
Dim a As Range, b As Range
Dim TagnameArray() As String
Dim DNMaat As String
Dim DN As String
Set a = Selection
For Each b In a.Rows
IntRow = b.Row
TagnameArray() = Split(Cells(IntRow, 2).Value, "-")
DN = DNMaat(IntRow, TagnameArray())
Cells(IntRow, 3).Value = DN
Next b
End Sub
Function DNMaat(IntRow As Integer, TagnameArray() As String) As Integer
For i = LBound(TagnameArray()) To UBound(TagnameArray())
If IsNumeric(TagnameArray(i)) = True Then
DNMaat = TagnameArray(i)
Exit For
End If
Next i
End Function
但是這個代碼給了我一個矩陣預期的錯誤,我不知道如何我還想在進一步的計算中使用名義大小,所以在從標記名中提取它之後,必須將它轉換爲整數。有沒有人看到我在代碼中犯了錯誤?
所以'DNMaat'應該原封不動地返回第一個數字標籤?該函數主要是有缺陷的,因爲'ExceptionArray'沒有在任何地方定義。你應該真的使用'Option Explicit'來防止這樣的基本錯誤。 –
我很抱歉錯過了。我在原始代碼中使用了ExceptionArray(),因爲我回收它形成了我的宏的另一部分,它處理法律分類規則的異常。由於可能的困惑,只是將stackArray上的ExceptionArray更改爲TagnameArray。但是對於DNMaat(DNSize),它應該返回第一個數字標籤。 – vanBeijnhem