Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6087 / 13646 ツリー ←次へ | 前へ→

【47300】シート名の置換 もとやしげお 07/3/7(水) 16:50 質問[未読]
【47301】Re:シート名の置換 ぱっせんじゃー 07/3/7(水) 17:00 発言[未読]
【47303】Re:シート名の置換 もとやしげお 07/3/7(水) 17:14 お礼[未読]
【47302】Re:シート名の置換 Kein 07/3/7(水) 17:03 回答[未読]
【47304】Re:シート名の置換 もとやしげお 07/3/7(水) 17:36 お礼[未読]

【47300】シート名の置換
質問  もとやしげお  - 07/3/7(水) 16:50 -

引用なし
パスワード
   お世話になります。

【シート名の置換について】

たとえば、
A列にシート名の一覧があります。
B列に変更したいシート名の一覧があります。
これを一括で変更できないものでしょうか?

A列    B列
シートA @シートA
シートB ×シートA
シートC △シートB
シートD ◎シートA
シートE △シートH

どなたか教えてください。
よろしくお願いいたします。

【47301】Re:シート名の置換
発言  ぱっせんじゃー  - 07/3/7(水) 17:00 -

引用なし
パスワード
   一括で、はないと思います。
ループなら可能です。


↓は単独のシートの名前を変えるコード
です。

Sheets("SheetA").Name = "SheetB"

これをセル範囲分だけループします。

【47302】Re:シート名の置換
回答  Kein  - 07/3/7(水) 17:03 -

引用なし
パスワード
   >一括で
というところを意識しているのでしょうが、Worksheetオブジェクトの
コレクションである Worksheets には、Nameプロパティがありません。
従ってたとえば、配列で一気に変更するようなことは出来ないのです。
やるとすると一つずつのシートを、ループして処理していくしかありません。

Dim C As Range
Dim Nm1 As String, Nm2 As String

On Error Resume Next
For Each C In Range("A1", Range("A65536").End(xlUp))
  Nm1 = C.Text: Nm2 = C.Offset(, 1).Text
  Worksheets(Nm1).Name = Nm2
  If Err.Number <> 0 Then Err.Clear
Next
On Error GoTo 0

などとすれば良いでしょう。

【47303】Re:シート名の置換
お礼  もとやしげお  - 07/3/7(水) 17:14 -

引用なし
パスワード
   ぱっせんじゃー様
早速の返答ありがとうございました。

すいません。小生は全くの素人です。

1行毎に変えるとなると、
それはそれで同じような労力が必要な気がします。

>Sheets("SheetA").Name = "SheetB"

A行とB行を選択して置換する方法は無いものなのでしょうか。

お手数おかけしますが、
よろしくお願いいたします。


▼ぱっせんじゃー さん:
>一括で、はないと思います。
>ループなら可能です。
>
>
>↓は単独のシートの名前を変えるコード
>です。
>
>Sheets("SheetA").Name = "SheetB"
>
>これをセル範囲分だけループします。

【47304】Re:シート名の置換
お礼  もとやしげお  - 07/3/7(水) 17:36 -

引用なし
パスワード
   Kein様

ありがとうございます。

シートが100以上有り、どうしようかと思っていました。

お忙しい中、ありがとうございました。

6087 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free