[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『テキストボックスに入力された数式を一括削除』(mnt)
参照を貼り付けたテキストボックスが複数あります。
今現在、数式バークリックしdeleteで一つ一つ消しているのですが、簡単に削除する方法はありますでしょうか。
テキストボックスは残し、参照してある数式だけを削除したいです。
ご教示のほどよろしくお願いいたします。
< 使用 Excel:Excel2013、使用 OS:Windows10 >
どこにありますか?
>数式バークリックしdeleteで一つ一つ消している
それは消したままで良いものですか?
(火災報知器) 2023/08/03(木) 16:41:23
Dim shp As Shape
For Each shp In Worksheets(シート名orインデックス).Shapes If shp.Type = 17 Then _ shp.TextFrame.Characters.Text = Empty Next shp
End Sub
でどうですか?
( 'ふ') 2023/08/03(木) 16:45:18
例)
Sub Test()
ThisWorkbook.Worksheets("Sheet1").TextBoxes(1).Text = "" ThisWorkbook.Worksheets("Sheet1").TextBoxes("テキスト ボックス 2").Text = ""
End Sub
テキストボックスは上記のように番号または名前で指定できます。
消したいテキストボックスの番号または名前を調べて、上記のように空白を代入しましょう。
このSubをVBAエディタから実行するか、ボタンなどに貼り付けて利用しましょう(ここまでの説明は必要か?)
(ゆたか) 2023/08/03(木) 16:50:37
インデックスが有効範囲にありません、と表示されてしまいます・・・。
(mnt) 2023/08/03(木) 16:53:13
>参照を貼り付けたテキストボックスが複数あります。
どこにありますか?
⇒シート内に複数のテキストボックスがあり、それぞれに別のシートのセルを参照しています。
テキストボックスは残して参照している数式だけを削除したいのですが量があるので簡単に削除できないかな、と思い質問しました。
>数式バークリックしdeleteで一つ一つ消している
それは消したままで良いものですか?
⇒参照している数式は削除したままで構いませんがテキストボックスは残したいです。
(mnt) 2023/08/03(木) 16:57:17
インデックスが有効範囲にありません、と表示されてしまいます・・・。
(mnt) 2023/08/03(木) 16:58:07
Selectしてからだと消せますけど、何故かわかりません。 詳しい方の解説待ちです。
Sub Sample2() Dim shp As Shape For Each shp In ActiveSheet.Shapes If shp.Type = msoTextBox Then shp.Select Selection.Formula = Empty shp.TextFrame.Characters.Text = Empty End If Next End Sub
(ベクトル) 2023/08/03(木) 17:09:49
よく見ておらずコピペして実行していました。
シート名を入れたら実行できたのですが、数式は削除されませんでした。
(mnt) 2023/08/03(木) 17:18:14
実行したらテキストボックスは残り数式は消えました!
ありがとうございます!
Selectの意味がすみません…分からないのですが違う方法か何かですか?
(mnt) 2023/08/03(木) 17:21:14
ありがとうございました。
(mnt) 2023/08/03(木) 17:25:22
>Selectの意味 文字通り「選択」です。
For Each shp In ActiveSheet.Shapes のループの中で、 shp.Formula = Empty としても 実行時エラー 438 になってしまうのですが、 shp.Select Selection.Formula = Empty とすることで、目的は果たせます。
やっていることは同じに思うのですが、 エラーが発生するのも事実なので、私の知識では分からない、という事です。 (ベクトル) 2023/08/03(木) 17:40:08
多分こういう解釈なんじゃないかと予想...
Sub Sample2() Dim shp As Shape, t As TextBox For Each shp In ActiveSheet.Shapes If shp.Type = msoTextBox Then Set t = shp.OLEFormat.Object t.Formula = Empty t.Text = Empty End If Next End Sub
(白茶) 2023/08/03(木) 18:04:25
白茶さん、コメントありがとうございます。 いつも回答を参考にさせていただいてます。
私の勉強不足が露呈してお恥ずかしいところですが、こういうことでしょうか。 ShpをSelectしたことによって、いきなりFormulaプロパティを指定しても、 今選択しているShapeオブジェクトはOLEFormat.Objectじゃん、 よし!Formulaプロパティ書き換えてやんよ 的なことをExcel側でしてくれた、ということでしょうか。
コードはこういう感じで良かったということですね。 Dim shp As Shape For Each shp In ActiveSheet.Shapes If shp.Type = msoTextBox Then With shp.OLEFormat.Object .Formula = Empty .Text = Empty End With End If Next
大変勉強になりました。ありがとうございました。 mntさんにも知識向上のきっかけを与えていただいたこと、お礼申し上げます。 ※誤記訂正しました (ベクトル) 2023/08/03(木) 18:55:14
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.