プロが教えるわが家の防犯対策術!

Office2003のテキストボックスのことですが、
テキストボックスが100個あります。
各テキストボックスには数式で「=ABC!A1」・「=ABC!A2」と
別のシートの値を参照しています。
別のシートを参照させたいので、
テキストボックス内のABCを一括で変換する方法はありますか?

実際は、シートABCとそれを参照しているテクストボックスのあるシートをもう1セット作りたいのです。
シートABCをコピーし、テキストボックスのあるシートをコピーしても、
テキストボックスのあるシートは元のシートABCを参照しています。
よって、一括変換ができればと思います。

宜しくお願いいたします。

A 回答 (4件)

マクロの一例です。


テキストボックスを選択してマクロを実行してください。
コード内の検索文字と置換文字は実際に合わせて書き換えてください。

Sub test1()
  Dim strf As String
  strf = Selection.Formula
  Selection.Formula = Replace(strf, "ABC", "XYZ")
End Sub
    • good
    • 0
この回答へのお礼

有難う御座います。

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

お礼日時:2009/02/21 18:09

>各テキストボックスには数式で「=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
    • good
    • 0
この回答へのお礼

まだ、上記で教えていただいたマクロは実行していませんが、

使っているテキストボックスはツールバーにあるテキストボックスです。
表示される文字列はリンクされているデータというのもわかっています。
リンク先を一括で変換したいということなのですが、
説明が下手ですいません。
テキストボックスが1~100まであります。
テキストボックス1~100には別のシートのセルが数式によってリンクされています。

例:テキストボックス1  「=ABC!A1」
  テキストボックス2  「=ABC!A2]
といった具合に100個あります。
リンク先のシート名ABCをXYZに変換をしたいと思っています。

説明が下手ですいません。

お礼日時:2009/02/22 17:57

>セルの数式は参照されるのですが、


>テキストボックス内の数式には反映されませんでした。
テキストボックス内に記述された数式(テキスト)には影響を与えません。別途「置換」作業が必要です。

参照式とテキストが両立共存しているのですか?
因みに、当方Excel2007ですが参照式をセットすればテキスト入力ができなくなります。

>ただ、テキストボックスひとつづつしか変更できないんですね。
For~Next文を勉強してください。
[XL] Visual Basic for Applications でのループ構造の使用方法
http://support.microsoft.com/kb/141762/ja
    • good
    • 0
この回答へのお礼

勉強不足ですいません。

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

「置換」も勉強します。

お礼日時:2009/02/22 12:24

>シートABCをコピーし、テキストボックスのあるシートをコピーしても、


>テキストボックスのあるシートは元のシートABCを参照しています。
2つのシートを同時にコピーすれば、コピーしたシート間で参照関係が
築かれます。

シートの移動・選択・コピー
http://excel.syuriken.jp/sheet-1-5.htm
    • good
    • 0
この回答へのお礼

有難う御座います。

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

お礼日時:2009/02/21 18:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!