ツール番号の置換 の続き

昨日は、加工プログラム内のツール番号を置換する関数を作成した話を紹介しました。

infoment.hatenablog.com

何パターンか試してみて、作成した関数が問題なく動作することを確認しました。

やれやれ、これで何とかなりそうだ。
「こんな感じでどうです?」
「お~!!!・・・あれ?」
「え?」

「すみません、言ってませんでした」
「何を?」
「PT1のT1は、ツール番号(T番号)じゃないんです」
「あ・・・」

これは、私もうっかりしていました。PT1は、サイズが1インチのPTネジ(ネジの規格の名前)を意味しているため、T番号とは似て非なるもの。置換の対象から外す必要があったわけです。

f:id:Infoment:20180727231938p:plain

複雑になってきたので、PTネジの存在を考慮して、置換除外の対象を整理します。

  1. T番号と思われる文字の一つ前が、Pである(PTネジなので)
  2. T番号と思われる文字の一つ後が、数字である(T1と思ったらT10だった、など)

これらをマクロに反映した結果が、こちらになります。

Function ReplaceToolNumber(expression_code As String, _
                        find_tool_number As String, _
                        replace_tool_number As String) As String

    Dim seq_origin  As Variant
        seq_origin = Split(expression_code, find_tool_number)
        
    Dim seq_replace As Variant
        ReDim seq_replace(UBound(seq_origin) * 2 + 1)
        
    Dim i As Long
        For i = 0 To UBound(seq_origin)
            seq_replace(i * 2) = seq_origin(i)
        Next
        For i = 1 To UBound(seq_replace) - 1 Step 2
            If IsNumeric(Left(seq_replace(i + 1), 1)) = True Then
                seq_replace(i) = find_tool_number
            ElseIf Right(seq_replace(i - 1), 1) = "P" Then
                seq_replace(i) = find_tool_number
            Else
                seq_replace(i) = replace_tool_number
            End If
        Next
    
        ReplaceToolNumber = Join(seq_replace, "")

End Function

f:id:Infoment:20180728063855p:plain

結果、PT1を置換対象から除外することが出来ました。これで何とかなりそうです。

「PTネジを除外できました」
「お~!!ありがとうございます・・・あ!」
「え?」

次回に続く(かもしれない)。

参考まで。