我正在处理一段代码以从其标记名中提取管道的标称大小。例如: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