Step13:Replaceの後Instrで削除できたかどうか確認する作成する|Excelソフト

Replaceで文字列を削除する時に、改行も同時に削除しているので念のためInstrを使い、間違いなくできているか確認することにします。

前回削除のプロシージャをSubからFunctionに変更しました。 今回は戻したい値が2個になるので、1個しか戻せないFunctionは使用はやめました。値を複数戻すには参照渡しの引数を使うことにします。

プロシージャ間で引数を使いデータをやり取りするには、参照渡し(ByRef)と値渡し(ByVal)があります。Excel VBAのデフォルトは参照渡し(ByRef)なので、何もしなくてもやり取りできます。

AMP変換ソフト作成 メニューへ

スポンサーリンク





VBAでInstrを使用しReplace結果の確認をする

削除のVBAを下記に変更しました。
VBAでInstrを使用しReplace結果の確認をする

・プロシージャをFunctionからSubに変更しました。
・見つかればカウントする変数の「nf」と、見つからなければカウントする変数の「nd」を参照渡しで引数にしています。
・Replace後Instrで検索し、見つからなければ削除できているのでカウントします。

Private Sub MyDelHtml(nf As Long, nd As Long)
    Dim lc As Long
    
    nf = 0
    nd = 0
    lc = 5
    Do
        If Cells(lc, 2) <> "" Then
            If InStr(1, sUtfBuf, Cells(lc, 2), vbTextCompare) > 0 Then
                nf = nf + 1
                sUtfBuf = Replace(sUtfBuf, Cells(lc, 2) & vbCr, "", , , vbTextCompare)
                If InStr(1, sUtfBuf, Cells(lc, 2), vbTextCompare) = 0 Then
                    nd = nd + 1
                End If
            End If
            lc = lc + 1
        Else
            Exit Do
        End If
    Loop
End Sub

削除プロシージャの呼び出し側です。
見つかった数を変換ファイル名の隣のセルに、削除できた数をその隣のセルに表示します。
削除プロシージャの呼び出し側

    Range("変換ファイル名").Offset(0, 1).Clear
    Range("変換ファイル名").Offset(0, 2).Clear
    MyDelHtml n1, n2
    Range("変換ファイル名").Offset(0, 1) = n1
    Range("変換ファイル名").Offset(0, 2) = n2

見つかった数の項目名を「有無」に、削除した数の項目名を「削除」にしました。
有無が削除するHTMLの数と同じで、削除した数も同じなら正常に実行できたことになります。
項目名を「有無」と「削除」に設定

スポンサーリンク






AMP変換ソフト作成 メニューへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved