No.5ベストアンサー
- 回答日時:
こんばんは。
Wendy02です。ちょっとお話に興味があって、あえて修正版を作りました。
しょせん、Undoの仕組みというのは、どこかにバッファを置いているだけだと思うのです。私は、この手のものは、時々、Undoに代わるものを作ります。前のは、手抜きでしたから、今度は、もう少し手の込んだものを作りました。
通常は、VBAプロシージャで、すべてのUndoを考えていたら、VBA側に与えられているメモリは小さいので、それを食いつぶしてしまう可能性があります。
以下は、配列変数の一こまに、どの程度の許容量があるのか知りませんが、許容量を増やすなら、以下は、Logs の型をString 型すれば広がります。しかし、Null値を入れるために、Variant 型にしてあります。
String型の場合は、その代わりに、Chr(0)を入れればよいのですが。Null値のほうが簡単なのど、それを用いました。
'---------------------------------------------------------
'Option Explicit
Private Logs(100) As Variant
Sub ReplaceInTextBoxesR()
Dim shp As Object
Dim i As Integer
Const BEF As String = "あいうえお" '検索後
Const AFT As String = "ABCDE" '置換語
Const TX As Integer = vbTextCompare '全半角区別なし
Const BIN As Integer = vbBinaryCompare '全半角区別あり
For Each shp In ActiveSheet.Shapes
If shp.Type = msoTextBox Then
Logs(i) = shp.DrawingObject.Text
shp.DrawingObject.Text = _
Replace(shp.DrawingObject.Text, BEF, AFT, , TX) '全角半角区別なし
i = i + 1
End If
Next
Logs(i) = Null
If MsgBox("これでよろしいですか?", vbQuestion + vbOKCancel) = vbCancel Then
Call UndoLogs
End If
End Sub
Private Sub UndoLogs()
'一回きり、戻せます。
Dim shp As Variant
Dim i As Integer
For Each shp In ActiveSheet.Shapes
If shp.Type = msoTextBox Then
If IsNull(Logs(i)) Or IsEmpty(Logs(0)) Then Exit For
shp.DrawingObject.Text = Logs(i)
i = i + 1
End If
Next
Erase Logs
End Sub
No.4
- 回答日時:
#1です。
>元に戻せないことを強調
マクロの場合は、
間違った置換を行った場合は戻せませんよ(※)、
という意味合いでした、誤解を招き申し訳ないです。
※トレースジャーナルを持たない限り不可逆な置換である、と考えより
【ABCD】の【BC】を【CD】に変換しようとして【AB】を置換してしまったとしても
返還後の【CDCD】に無条件で【CD】を【AB】へ戻す処理を施しても
【ABAB】にしかならない
(“共有”ブックにある履歴を読み戻すイメージじゃない限り)
No.3
- 回答日時:
こんにちは。
#1の補足の、「残念ながら、マクロは使えません。」の意味が、マクロを使っていけないなら、諦めるしかありませんね。
それと、あまり、元に戻せないことを強調しているようなので、元に戻すオプションをつけてしまいました。
Const SW As Integer = 0 '順行 /0以外は、反転
は、簡単にいうと、=1 を入れれば、元に戻ります。
'-------------------------------------
'標準モジュールが適しています。
Sub ReplaceInTextBoxes()
Dim shp As Object
Const BEF As String = "abcdefg" '検索後
Const AFT As String = "あいうえお" '置換語
Const SW As Integer = 0 '順行 /0以外は、反転
Const TX As Integer = vbTextCompare '全半角区別なし
Const BIN As Integer = vbBinaryCompare '全半角区別あり
Dim SWd As String
Dim RWd As String
If SW = 0 Then
SWd = BEF: RWd = AFT
Else
SWd = AFT: RWd = BEF
End If
For Each shp In ActiveSheet.Shapes
If shp.Type = msoTextBox Then
shp.DrawingObject.Text = _
Replace(shp.DrawingObject.Text, SWd, RWd, , , TX) '全角半角区別なし
End If
Next
End Sub
誤解を招く表現で申し訳ございませんでした。
マクロを使っていけないということはありません。
元に戻すオプションまでつけて頂きありがとうございました。
No.2
- 回答日時:
マクロで一括置換する方法です。
Alt+F11でVBAの画面を開き、左側のツリーからブック名を選択し、右クリックから「挿入」>「標準モジュール」を選択して、右の画面に以下のマクロをコピーして貼り付けてください。
Sub テキストボックス置換()
Dim BeforeStr As String
Dim AfterStr As String
Dim WS As Worksheet
Dim s As Shape
Application.ScreenUpdating = False
BeforeStr = InputBox("置換前の文字列を入力してください。")
AfterStr = InputBox("置換後の文字列を入力してください。")
For Each WS In Worksheets
WS.Activate
For Each s In WS.Shapes
If s.Name Like "Text Box*" Then
s.Select
Selection.Characters.Text = _
Replace(Selection.Characters.Text, BeforeStr, AfterStr)
End If
Next
Next
Application.ScreenUpdating = True
End Sub
その画面でF5キーを押すか、Alt+F11でExcelの画面に戻ってAlt+F8からマクロを実行してみてください。一度置換したら元には戻せないのでご注意ください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PDF PDFのテキストを追加機能 1 2022/06/18 12:45
- Word(ワード) 分かる方教えてください。 wordに図を差込して資料を作成してますが その図上の説明したい箇所に①と 3 2022/10/20 20:05
- Access(アクセス) capeofdragonと申します。 Access2016を使っております。 あるフォームがあり、テ 2 2022/09/09 13:18
- Access(アクセス) Access 複数条件検索の設定が上手く行きません 1 2022/07/22 20:37
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- Excel(エクセル) Excelで日付のグラフへの表示 2 2022/04/15 11:04
- Visual Basic(VBA) VBA 検索と入力 Excel ブック ぶぶぶ シート ししし 列V 検索対象の列です 最終行は、お 6 2023/05/17 01:40
- Visual Basic(VBA) シート間で同じ値があったらコピペ 1 2022/05/08 09:39
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- Excel(エクセル) 前の(左隣の)シートを連続参照するように、あとから変更したい 1 2023/02/22 00:51
このQ&Aを見た人はこんなQ&Aも見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
忘れられない激○○料理
これまでに食べたもののなかで、もっとも「激○○」だった料理を教えて下さい。 激辛、でも激甘でも。 激ウマ、でも激マズでも。
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
好きな和訳タイトルを教えてください
洋書・洋画の素敵な和訳タイトルをたくさん知りたいです!【例】 『Wuthering Heights』→『嵐が丘』
-
テキストボックス内の文字の一括変換
Excel(エクセル)
-
エクセルのテキストボックス内は検索できないのでしょうか?
その他(Microsoft Office)
-
Excelで、テキストボックスに書かれた文字を検索したい
Excel(エクセル)
-
-
4
エクセルでテキストボックス内の文字を検索したい
Excel(エクセル)
-
5
Excelでオートシェイプのテキストボックス内の文字列を検索するマクロ
Excel(エクセル)
-
6
Excelの吹き出し等の文字を検索する方法はありますか?
Excel(エクセル)
-
7
テキストボックスの文字列を置換するコードを教えてください
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで濁点カナの変換方法...
-
カンマ( , )をタブに置換したい。
-
エクセルの「置換」で1行の部分...
-
変更履歴オンでのワイルドカー...
-
カンマを改行に変換する方法
-
セルの文字列後ろのスペース削除
-
Excel : テキストボックス中の...
-
文字の列を揃えるには
-
秀丸で余分なスペースを削除したい
-
ワードのワイルドカードを使っ...
-
メモ帳で括弧内をまとめて消去...
-
派生語を基本英単語の横に並べたい
-
ワード (word ) 日本語の文字...
-
全角文字どうし間の半角スペー...
-
ワードに「URL」を貼り付けると...
-
Wordでこのような三角が出てく...
-
エクセルで薄く透ける文字を入...
-
wordで太字で筆字のように。
-
WORD ある縦線が消せない
-
Wordで縦書きの文章がページの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カンマを改行に変換する方法
-
カンマ( , )をタブに置換したい。
-
秀丸で余分なスペースを削除したい
-
Excelで全角ハイフンを半角ハイ...
-
文字の列を揃えるには
-
Word:差し込み印刷時に文字列...
-
エクセルの『検索と置換ボック...
-
エクセル重複削除で綺麗に削除...
-
エクセルで濁点カナの変換方法...
-
【MS Office Word 2007】文章の...
-
セルの文字列後ろのスペース削除
-
文字列に含まれているダブルク...
-
Excelで特定の文字以下を削除し...
-
CSVファイルの任意の列をダブル...
-
エクセル 置換又は関数でかっこ...
-
エクセルの「置換」で1行の部分...
-
エクセルの文字・数字の前後の...
-
word 改行マークを印刷時に表示...
-
ワードで複数の文字を一括・連...
-
1文字だけ置換したい
おすすめ情報