dポイントプレゼントキャンペーン実施中!

VBAの超初心者なのですが、
品番変更に伴い複数枚のシートから成るエクセルファイルの特定の文字を置換えたいのですが・・・。
Range(Cells(1, 1), Cells(65536, 256)).Replace What:="旧品番", Replacement:="新品番"
で1枚のシートだけなら置換えできたのですが、すべてのシート(ファイル内すべて)の置換え方がわかりません。
どうしたらよいのでしょう。教えてください。

A 回答 (3件)

>In Worksheets というところが超初心者な私には


よくわからないのですが
エクセルVBAなどには、「コレクション」という考えがあります。
For Eachはコレクションの構成メンバー全部について、1つづつ
拾い上げて、WS.XXXという表現で捉えさせてくれます。
ワークシートの場合は In Worksheets
ブックの場合は In Workbooks
シェイプの場合は  In Shapes
セルの場合は In range(・・)
配列でもForEachは使えます。
ーー
Sub test01()
Dim a(3)
a(0) = 0: a(1) = 1: a(2) = 2: a(3) = 3
For Each x In a
MsgBox x
Next
End Sub
--
コレクションに増やすには  コレクション(後尾にsが付く).Add
コレクションより除くには  コレクションs(削除するメンバー).Delete
のパターンが多い。
ーーー
その他
http://arrow3.way-nifty.com/shige/2004/08/excelv …
    • good
    • 0

補足が遅くなりました。



worksheetsというのは、activeなエクセルの中にある、シートすべて(複数)です。

Dim ws As Worksheet
ここで定義しているwsのWorksheetはひとつ(単数)のシートです。

For Each ws In Worksheets

(処理)

Next

上記のように記述した場合、VBAがはシートの1枚目をwsにコピー?して、(処理)を行います、
next で、上に戻りシートの2枚目をwsにコピー?します。
これをシートがなくなるまで繰り返してくれます。

つたない説明ですが、お役にたてば幸いです。
ネットを検索していただくと、もっと親切にかいたHPがあると思うので、そちらも参照ください。
    • good
    • 0
この回答へのお礼

ありがとうございます!
使えるようになったらきっと便利だとおもうので
ちょっとがんばってみます。
またわからないことあったらお願いしま~す!!

お礼日時:2007/07/03 20:43

こんな感じでしょうか?



Sub a()


Dim ws As Worksheet

For Each ws In Worksheets

ws.Cells.Replace What:="旧品番", Replacement:="新品番"

Next


End Sub
    • good
    • 1
この回答へのお礼

早速のご回答ありがとうございました。
きちんとできました!!
この2行目の
For Each ws In Worksheets
の In Worksheets というところが超初心者な私には
よくわからないのですが、ここですべてのシートでと定義している
のでしょうか?
もし、お時間あったら内容を教えてください。

お礼日時:2007/06/30 08:44

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