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

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

詳細はこちら
VBA

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

Q&A

解決済

1回答

1609閲覧

"="記号を含む置き換えについて

lovelywolf

総合スコア8

VBA

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

0グッド

0クリップ

投稿2019/11/21 06:44

編集2019/11/21 08:50

半角イコールを含む文章の置き換えが上手くいかず悩んでいます。
(Win10, Excel2016)

下記test1のようにストレートに置き換えを書きましたが置き換えできずに終了。
("シャアアズナブル=クワトロバジーナ" が できた に換わらずそのまま。エラー表示はなし)
test2で試してみたところ、置き換えはできましたが他の英数字やカタカナが
すべて全角になってしまうため、使い物にならず。
test3のように半角イコールのみを全角に変えて置き換えとしてみましたが、
案の定置き換えできず。

ココを直せば上手くいきそう等がありましたらご教示ください。
Replaceにこだわってるワケではないので、他に方法があればヒントだけでもいただけると
ありがたいです。ただし、
・本番用は外部が作成した文章かつ数が膨大なので、初めからイコールを除外した文章にはできません。
・外部ツールなどなどはNGな会社です。
・全て全角→置き換え→すべて半角も、他の部分で半角にしてはNGな部分があるため採用できません。

よろしくお願いいたします。

Sub test1() With ActiveSheet.UsedRange .Replace "シャアアズナブル=クワトロバジーナ", "できた", xlPart End With End Sub
Sub test2() With ActiveSheet For Each rng In .UsedRange rng.Value = StrConv(rng.Value, vbWide) Next .UsedRange.Replace "シャアアズナブル=クワトロバジーナ", "できた", xlPart End With End Sub
Sub test3() With ActiveSheet For Each rng In .UsedRange rng.Value = Replace(rng.Value, "=", "=") Next .UsedRange.Replace "シャアアズナブル=クワトロバジーナ", "できた", xlPart End With End Sub

以下追記 *・。゜・。・o゜・。゜・。・o゜・。゜・。・o゜・。゜・。・o゜・。・o

本番の流れは下記1~3をループでまわし、4で一括インポートする予定です。
1.登録した全国の市区町村さんごとのURLを元に、最新の情報をWebクエリで取得。
2.必要に応じて加工(パターンに応じてFunction作成、必要な部分を抜粋したり置換えたり)。
3.一定の法則に基づいて、必要なデータを取得→作表。
4.Accessにインポート。
です。ある時期に一斉に対象の市区町村さん(500くらい)のHPをチェック、更新されていればデータを取得しなければなりません。また更新されていなければ更新されるまで随時チェックする必要があり、あまりにも業務負担が重いためマクロで処理してしまいたいと考えています。

HPの情報はいろいろなフォーマットで作成されているので、2でデータを取得しやすく加工するところを書いています。現状は1と3はほぼ完成、2の部分が道半ば、4は未着手です。

例えば、

A市
なお、○○○とは...、▲は◇から100円を引いた金額のことです。
○○○(対象は...)=▲×■ 10,000円
●●●
▲+■ 50,000円

B町
○○○は...、●●●...です。
○○○は12,000円, ●●●は60,000円です。

上記の他にもいろいろありますが、
A市の場合は不要な文章と必要そうな文章、必要なデータ部分を分けるため「○○○(対象は...)=▲×■」を「○○○」に置き換えて良いかを判定、OKなら「○○○(対象は...)=▲×■」を「○○○」に置換え。3で「○○○」や「●●●」のセルの横や下にある金額のみを○○○、●●●の金額として取得、データにしています。必要そうな文章は備考欄に記入する文章として取得します(全半角は保持したい)。全角イコールを使用する市区町村さんが多いのですが、まれに半角イコールを使う市区町村さんが。半角イコールが混じるとデータにできていないことがテストで発覚し対処方法を模索しています。
B町のパターンであれば、備考欄に載せる有無の判定とデータはSplitで分けて取得しています。
こんな感じで伝わりましたでしょうか。文章がヘタですみません。

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

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

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

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

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

m.ts10806

2019/11/21 07:04

コードだけ(できていない)提示されても要件を汲み取るのは難しいです。 どういうインプットをもとにどういうアウトプットを目指しているか、幾つかパターンを挙げてください
lovelywolf

2019/11/21 08:20 編集

載せ替えました。 すみませんでした。
m.ts10806

2019/11/21 08:16

文章の上手い下手よりこちらはあくまで質問への追記修正のコメント欄のなので原則質問本文を更新してください。 こちらはマークダウン使えませんし、デフォルト非表示なので目につきにくいです。
hatena19

2019/11/21 08:46

test1を実行してみましたが、問題なく置き換えできました。 どこに問題かあるのか具体的かつ端的に説明してください。 情報量は多いですか、大部分は不必要な情報で、肝心な情報がないです。
lovelywolf

2019/11/21 08:52

追記しました。 私のところでは、半角イコールを全角にかえたり、削除すれば置き換わるのですが...。 コードの問題ではない可能性が高いのでしょうか。
guest

回答1

0

ベストアンサー

推測ですが、全角、半角を区別せずに置き換えたいということでしょうか。
もしそうなら、

vba

1Sub test1() 2 With ActiveSheet.UsedRange 3 .Replace "シャアアズナブル=クワトロバジーナ", "できた", xlPart, MatchByte:=False 4 End With 5End Sub

とりあえず下記を参照して内容を理解してください。

Replaceメソッド(置換)|ExcelマクロVBA入門

投稿2019/11/21 08:53

hatena19

総合スコア34073

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

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

lovelywolf

2019/11/21 09:00

できました。ありがとうございました。 ご紹介いただいたHPによると、 >MatchCase 大文字と小文字を区別して検索するには、True を指定します。 とありますが、=は全角/半角ではなく、大文字/小文字ということなのでしょうか。
lovelywolf

2019/11/21 09:04

あ、すみません。 MatchByteですよね。 1バイトか2バイトの判定をFalseにしなきゃいけなかった、半角は1で全角は2だから。 ってことですよね。勘違いしてすみませんでした。 本当に助かりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問