Excel VBA質問箱 IV

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

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


12883 / 13644 ツリー ←次へ | 前へ→

【8082】シートのコピー後の名前 conan 03/9/29(月) 17:29 質問
【8085】Re:シートのコピー後の名前 INA 03/9/29(月) 18:16 回答
【8146】Re:シートのコピー後の名前 conan 03/10/2(木) 1:18 質問
【8148】Re:シートのコピー後の名前 INA 03/10/2(木) 8:42 回答
【8168】Re:シートのコピー後の名前 conan 03/10/2(木) 15:46 お礼

【8082】シートのコピー後の名前
質問  conan  - 03/9/29(月) 17:29 -

引用なし
パスワード
   1.シート(複写)をコピーする
2.複写されたシート名をもしオプションボタン1が真のときは”東京1”に
偽のときは”大阪1”にする
という風にうごくマクロはどのように書けばいいんでしょうか?

Sheets("複写").Select
Sheets("複写").Copy Before:=Sheets(1)
if Frm1.OptionButton1=true then
  ”複写したシート名を東京(1)とする”
Else
  ”複写したシート名を大阪(1)とする”
End if

””内のコードをどう書けばいいんでしょうか?

なお、東京(1)や大阪(1)の数字は2回目は2に変更したいんですが・・・

例えると、エクセルの”シートのコピーを作成する”を使うと1回目はSheet1(1)、2回目はSheet1(2)となるような感じにしたいのですが。

【8085】Re:シートのコピー後の名前
回答  INA  - 03/9/29(月) 18:16 -

引用なし
パスワード
   直書きなので、間違っているかもしれませんが、こんな感じで出来ると思います。

Dim a as long
dim b as long
dim i as long

for i = 1 to worksheets.count
 if Left(worksheets(i).name,2) = "東京" then  
  a = a + 1
 elseif Left(worksheets(i).name,2) = "大阪" then
  b = b + 1
 end if
next i

Sheets("複写").Copy Before:=Sheets(1)

if Frm1.OptionButton1=true then
  activesheet.name = "東京" & a+1 & ")"
Else
  activesheet.name = "大阪(" & b+1 & ")"
End if

【8146】Re:シートのコピー後の名前
質問  conan  - 03/10/2(木) 1:18 -

引用なし
パスワード
   INAさん、返事が遅れてすみません。そして返答ありがとうございます。

解答していただいたコードを試してみると、1回目はうまく行ったんですが
2回目にエラーメッセージが出ます。
1回目は、東京(1)となるんですが、2回目本来は東京(2)となって欲しいのですが。


エラーメッセージ
”シートの名前を他のシート、Visual Basicで参照されるオブジェクト
ライブラリ、またはワークシートと同じ名前に変更することはできません。”

【8148】Re:シートのコピー後の名前
回答  INA  - 03/10/2(木) 8:42 -

引用なし
パスワード
   Excel2000で確認したら問題なく動作しました。

「複写」というシートだけ用意して、実行してみて下さい。

マクロの動作は、そのブック内の「東京」「大阪」といったシート名の数を
計算して、オプションボタンに応じて、先の数に+1した値のシート名を
付けるようになっています。


誤記がありました。括弧が無かったです。
 ActiveSheet.Name = "東京" & a + 1 & ")"
             ↓           
 ActiveSheet.Name = "東京(" & a + 1 & ")"

【8168】Re:シートのコピー後の名前
お礼  conan  - 03/10/2(木) 15:46 -

引用なし
パスワード
   うまくいきました。

原因は、”東京”を自分で応用して違った言葉に代えたからのようです。
Left(worksheets(i).name,2)というコードの”2”を変えるとうまくいきました。

ありがとうございました。

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