• 締切済み

テキストボックス内の文字の一括変換

Office2003のテキストボックスのことですが、 テキストボックスが100個あります。 各テキストボックスには数式で「=ABC!A1」・「=ABC!A2」と 別のシートの値を参照しています。 別のシートを参照させたいので、 テキストボックス内のABCを一括で変換する方法はありますか? 実際は、シートABCとそれを参照しているテクストボックスのあるシートをもう1セット作りたいのです。 シートABCをコピーし、テキストボックスのあるシートをコピーしても、 テキストボックスのあるシートは元のシートABCを参照しています。 よって、一括変換ができればと思います。 宜しくお願いいたします。

みんなの回答

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.4

>各テキストボックスには数式で「=ABC!A1」・「=ABC!A2」と >別のシートの値を参照しています。 >別のシートを参照させたいので、 >テキストボックス内のABCを一括で変換する方法はありますか? 話が逆戻りしますが、テキストボックスの種類を確認したいと思います。 Excelには、3種類のテキストボックスがあります。 私が対象にしているのは、ツールバーにある横・縦書きテキストボックスです。 それ以外に、フォームとコントロールツールボックスにも其々テキストボックスがあります。 当方のExcel2007では、フォームのテキストボックスが使えなくなっているようです。 k-kikuchiさんの質問されているテキストボックスはどのテキストボックスでしょうか? ツールバーにある横・縦書きテキストボックスなら ”テキストボックス内のABCを一括で変換する方法はありますか?” ↑この意味が分かりません。 テキストボックスに表示される文字列は、リンクセルのデータですから リンクセル側で置換しなければなりません。 ループするマクロの一例です。 Sub test2()   Dim txb As TextBox   Dim txf As String   For Each txb In ActiveSheet.TextBoxes     txf = txb.Formula     If Split(txf, "!")(0) = "ABC" Then       txb.Formula = "=" & Trim(Replace(txf, "ABC", "XYZ"))     End If   Next End Sub

k-kikuchi
質問者

お礼

まだ、上記で教えていただいたマクロは実行していませんが、 使っているテキストボックスはツールバーにあるテキストボックスです。 表示される文字列はリンクされているデータというのもわかっています。 リンク先を一括で変換したいということなのですが、 説明が下手ですいません。 テキストボックスが1~100まであります。 テキストボックス1~100には別のシートのセルが数式によってリンクされています。 例:テキストボックス1  「=ABC!A1」   テキストボックス2  「=ABC!A2] といった具合に100個あります。 リンク先のシート名ABCをXYZに変換をしたいと思っています。 説明が下手ですいません。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.3

>セルの数式は参照されるのですが、 >テキストボックス内の数式には反映されませんでした。 テキストボックス内に記述された数式(テキスト)には影響を与えません。別途「置換」作業が必要です。 参照式とテキストが両立共存しているのですか? 因みに、当方Excel2007ですが参照式をセットすればテキスト入力ができなくなります。 >ただ、テキストボックスひとつづつしか変更できないんですね。 For~Next文を勉強してください。 [XL] Visual Basic for Applications でのループ構造の使用方法 http://support.microsoft.com/kb/141762/ja

k-kikuchi
質問者

お礼

勉強不足ですいません。 For~Nextのイメージはわかっているのですが、 For i=1 to 100 で1から100までのループになるのはわかります。 前回教えていただいたマクロにiを利用して繰り返すということ何でしょうね。 勉強します。 「置換」も勉強します。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

>シートABCをコピーし、テキストボックスのあるシートをコピーしても、 >テキストボックスのあるシートは元のシートABCを参照しています。 2つのシートを同時にコピーすれば、コピーしたシート間で参照関係が 築かれます。 シートの移動・選択・コピー http://excel.syuriken.jp/sheet-1-5.htm

k-kikuchi
質問者

お礼

有難う御座います。 この方法は試してみました。 セルの数式は参照されるのですが、 テキストボックス内の数式には反映されませんでした。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

マクロの一例です。 テキストボックスを選択してマクロを実行してください。 コード内の検索文字と置換文字は実際に合わせて書き換えてください。 Sub test1()   Dim strf As String   strf = Selection.Formula   Selection.Formula = Replace(strf, "ABC", "XYZ") End Sub

k-kikuchi
質問者

お礼

有難う御座います。 使わせて頂いています。 ただ、テキストボックスひとつづつしか変更できないんですね。 でも、今までよりは確実に効率は上がりました。

関連するQ&A

  • テキストボックスにセルの値を参照した後・・・

    お世話になります。 表題の件ですが、テキストボックスに「=A1」というような式を入れ、値をリンクさせた後の処理について質問です。 たとえば、 A1に1000と入力し、この値をテキストボックス内にリンクさせたとします。 ここまではいいのですが、その後このテキストボックスをクリックすると数式バーには参照先が表示されます(テキストボックス内は参照先の値が表示されています)。 この状態から、値だけを残し、どこを参照しているかという情報を消してしまうにはどうすればよいでしょうか? テキストボックスをクリックし、数式バーに表示されている参照先を消してしまえば、値を残したまま参照先を消すことはできました。 しかし、一度に複数のテキストボックスを扱うので、ひとつひとつ、クリック→参照先を消去、という作業を繰り返していては時間がいくらあっても足りません。一度に処理してしまう方法はないものでしょうか・・・? よい対処法をお教えください。よろしくお願いします。

  • ExcelVBAでテキストボックスの数式バーに文字を入力したい

    ExcelVBAに関する質問です。 シート上にある表とグラフがあり、グラフ上にテキストボックスで表の合計値を表示させています。 その方法は以下の通りです。 1.表の[合計値]を求めるセルを作る。 2.シート上の見えない部分(例.グラフの裏側など)で、合計値に単位を付加する。 (例.セルC15に[=C10&"kwh"]と入力) 3.テキストボックスの数式バーに上で単位を付加したセルを入力する。 (例.数式バーに[=C15]と入力) 表とグラフを含めて75行で1日分となるので、毎日75行分をコピー&ペーストして当日分の入力欄を作成しているのですが、表内の合計欄などはコピーすると参照セルがコピー先のセル番地に反映されるのですが、テキストボックス内のセル番地は反映されません。 これを一つ一つ直すのは大変なので、マクロなどを使ってボタン一つで直す(またはそのようなテキストボックスを作成できる)様にしたいのですが、VBAでテキストボックス内の数式バーをコントロールすることは可能なのでしょうか? また同様にグラフのデータ範囲もコピー先に自動的に反映されないので、これもコントロールできる方法があれば教えて頂きたいと思います。 拙い知識で考えられる方法としては、 1.グラフ裏の見えないセルに、テキストボックスの参照先となるセル番地を記入(=[前日の参照番地]+75) 2.1日分のデータ範囲をコピーすると自動的に参照先のセル番地もコピー先に反映される 3.マクロを起動するとテキストボックスの数式バーに【"="&[当日の参照先セル]】と入力される (または上記の様に入力されたテキストボックスを作成する) グラフの方の対処方法は思いつきません。 ただグラフについてはボタン押しでグラフを作成する様にすればいいと思うのですが、シート上の体裁が崩れてしまうのでやりたくないのが実情です… 識者の方、よろしくお願い致します。

  • テキストボックスって関数?

    エクセルです。 シートにテキストボックスを置くと、数式バーに a=EMBED("Forms.TextBox.1","") が表示されるのですが、テキストボックスって関数なのでしょうか? 「EMBED」について http://office.microsoft.com/ja-jp/word-help/HP005186147.aspx を読んだのですが、良くわかりませんでした。 「ほかのアプリケーションで作成されたオブジェクトを挿入します。」 と書かれてますが、 テキストボックスは「ほかのアプリケーション」ではないですよね。 それともテキストボックスはアクティブエックスコントロールだから ほかのアプリケーションになるのでしょうか?

  • テキストボックスが消えない

    エクセル2002を使っています。 テキストボックスが消えない現象に陥っています。 テキストボックスの枠線をクリックしてDELETEキーを押せば消えるはずなんですけど、消えません。 更に、別の場所にドラッグして移動すると、テキストボックスは消えずにコピーになってしまいます。 コピーされたテキストボックスは削除できるのですが、元のテキストボックスは、消えません。 どうしたらいいでしょうか?

  • テキストボックス内の文字のみ変換

    Word2003を使用していますが、取説内の全テキストボックス内の文字だけを選択して、半角、全角に変換することは出来ないでしょうか? [Ctrl] [A]で全体を選択してもテキストボックスは選択出来ないからです。 何かいい方法はないでしょうか?

  • テキストボックスのセル参照について

    Excel2003上のグラフエリアの中のテキストボックスに、 セルの値を表示させています。 テキストボックスは複数あって、A4セルにmyCellという名前をつけ、 どのテキストボックスの数式バーに対しても 【=myCell】のように名前で同じセルを指定しています。 その時は問題なく表示されますし、セルの値を更新すればそれも即時動的に反映されるのですが、 いったんファイルを上書き保存して閉じてしまうと、 次に開いた時にはその値は保持されているものの、 数式が消えてしまっていて、A4を更新してもテキストボックスが 変化しなくてなってしまい、困っています。 これはExcelの仕様と諦めるしかないのでしょうか?

  • セル中の一括変換について

    現在、IF関数を使用しています。 Aというシートに、「=全店【売上データ】!A$10」と設定しています。 1シートに1000セル程度あり、「A$10」がセルにより異なります。 このAというシートをコピーしてBというシートを作成したいのですが、 コピーした場合、各シートのセルには「=全店【売上データ】!A$10」と 入ってしまい、Aのシートと同じ値が入ってしまいます。 そこで、全店の字の部分をBシートは一括して全てのセルを”X店”に 変換したいのですが、地道に1セルずつ字を変える方法しかないですか? その他、X店以外に20店程度あり、シートもそれだけ作成しなければ いけません。 ちなみに、飛んでくる元データのあるシートと飛ばしたい先のシートの 項目の並び順がバラバラなため、一つ作成して他のセルへ式をコピー するという方法は出来ません。 何かよい方法をご存知の方は教えて下さい。

  • フォルダ内ブックの数式を全て値に変換するマクロ?

    「フォーマット」というフォルダの中に、 001.xlsx~200.xlsxまで連番のエクセルファイルが入っています。 各ブックの中には「確認用」という統一した名称のシートが1枚だけ入っており、 全て書式は一緒です。 それぞれ別のブックを参照する数式が入っているのですが、 ファイル単体で各所にメールで送るため、数式を全て値に変換したいのです。 「確認用」シートを全選択(ctrl+Aと同じ意味)コピーして値で貼りつけて保存して閉じるという動作を フォルダ内の全ファイルに対して一括で行うために効率良い方法はありますでしょうか?

  • 【Excel VBA】Sheet1上のテキストボックスの値をクリアしたい

    Office2003を使用しています。 Excelで、 Sheet1に作成したテキストボックス『BOX_A』 Sheet1に作成したコマンドボタン『PUSH_A』があります。 PUSH_Aを押下時、BOX_Aの値をクリア(消去)したいのですが、うまく行きません。 (BOX_Aに連結しているセルをクリアしても、テキストボックスには数字が残ります) どのようにコーディングしたらよろしいでしょうか?

  • オートシェイプの形状の一括変換について

    オフィス2000のパワーポイントについてですが、 オートシェイプでテキストの書かれた”楕円”を複数描いていて、それらを”テキストボックス”もしくは”四角形”に一括変換する方法をご存知であれば教えてください。 よろしくお願いします。

専門家に質問してみよう