🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

3回答

5551閲覧

Replace処理を何回行ったのか知りたい。

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2019/09/06 04:23

Replaceで文字の置き換え処理を行いました。
B列を全て見て、
特定の文字=bufを削除するという機能を作ったのでが・・・

最後に【bufを〇個消しました。】という実行が完了したメッセージボックスを出すようにしたいです。

ただ置き換え処理(Replace)が何回行われたか・・・しらべるにはどのような式を使えば良いのでしょうか?

Cells(i, 2) = Replace(Cells(i, 2),buf,"") MsgBox bufを〇個消しました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

置換前と置換後の文字数の差を置換語句の長さで割れば、置換した数になります。

コード例

vba

1 Dim buf As String, i As Long 2 buf = "ABC" 3 i = 13 4 5 Dim strData As String, DataLen As Long 6 strData = Cells(i, 2).Value 7 DataLen = Len(strData) 8 strData = Replace(strData, buf, "") 9 Cells(i, 2).Value = strData 10 11 Dim cnt As Long 12 cnt = (DataLen - Len(strData)) \ Len(buf) 13 MsgBox buf & "を" & cnt & "個消しました。"

投稿2019/09/06 04:42

hatena19

総合スコア34073

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

split()Ubound()で求められるかな?

replaceNum = ubound(split(Cells(i, 2),buf)) replaceNum = Iif(replaceNum<0,0,replaceNum) '-1が返る場合があるので0にする。 Cells(i, 2) = Replace(Cells(i, 2),buf,"") MsgBox "bufを"&Str(replaceNum)&"個消しました。"

投稿2019/09/06 05:07

編集2019/09/06 05:14
Y.H.

総合スコア7918

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Replace()関数を使うのではなく、
ループ処理とInStr()を駆使してカウントするとか。
探す、見つかれば文字列編集してカウントアップ、の繰り返し。

投稿2019/09/06 04:31

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問