Excel VBA質問箱 IV

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

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


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

【31094】シート名の重複 もだ 05/11/11(金) 15:58 質問[未読]
【31096】Re:シート名の重複 Jaka 05/11/11(金) 16:14 回答[未読]
【31099】Re:シート名の重複 Kein 05/11/11(金) 16:27 回答[未読]
【31104】Re:シート名の重複 もだ 05/11/11(金) 16:38 お礼[未読]
【31106】Re:シート名の重複 Jaka 05/11/11(金) 16:50 発言[未読]

【31094】シート名の重複
質問  もだ  - 05/11/11(金) 15:58 -

引用なし
パスワード
   テンプレートのSheet(1)に作成したものを
別の特定のブックに、次々に"BN"という変数の
名前を付けて保存していきたいと思っています。

"BN"の取得は作成中のSheet(1)内の特定のセルから取得します。

その名前が重複する場合、同じシート名では保存ができません。

同じシート名だと、保存できませんよ。というメッセージが出たら
"BN"その1
"BN"その2
"BN"その3

・・・のように、対応を変えていく方法はありますでしょうか?
エラーハンドリング?ってそれでしょうか?


For L = Start_cell To end_cell Step 1
counter = counter + 1

  Windows(register).Activate
  Sheets(sheet_thismonth).Select
  Range("C" & L).Select
  BN = ActiveCell.Value
  Windows(template).Activate
  Worksheets(sheet_payment_temp).Range("B11").Value = BN

'シートに名前を付ける

  Windows("テンプレート.xls").Activate
  Sheets(sheet_1).Select
  Sheets(sheet_1).Copy Before:=Workbooks(save_name).Sheets(1)
  Sheets(sheet_1).Select
  Sheets(sheet_1).Name = BN ※ここで、同じ値が入るとエラーがでます。
  BN = 0
  
Next L


すみません、わかりにくい説明かもしれません。
情報がたりなければ、言ってください。

よろしくお願いします。

【31096】Re:シート名の重複
回答  Jaka  - 05/11/11(金) 16:14 -

引用なし
パスワード
   こんにちは。
>  Sheets(sheet_1).Copy Before:=Workbooks(save_name).Sheets(1)
>  Sheets(sheet_1).Select
>  Sheets(sheet_1).Name = BN ※ここで、同じ値が入るとエラーがでます。
シートやブックは、新規作成や複製すると必ずアクティブになります。
だから、ActiveSheet.name = BN で良いんです。
また、Workbooks(save_name).Sheets(1)の前に複製しているのだから、
Workbooks(save_name).Sheets(1).name でも良いと思います。
(名前変更前にDoeventsかました方がいいかも...。私なら複製直後に入れておきます。)

【31099】Re:シート名の重複
回答  Kein  - 05/11/11(金) 16:27 -

引用なし
パスワード
   >"BN"の取得は作成中のSheet(1)内の特定のセルから取得します。
ならばフィルターをかけるなりして、重複を取り除いてからシート名にする、という
のが普通のやり方だと思いますが・・。
もしそれが出来ないような特殊な事情があるなら、エラートラップをかける↓

  On Error Resume Next
  Sheets(sheet_1).Name = BN 
  If Err.Number <> 0 Then
   Sheets(sheet_1).Name = BN & "その" & counter
   Err.Clear
  End If
  On Error GoTo 0: BN = 0
Next L

ようにしても良いでしょう。

【31104】Re:シート名の重複
お礼  もだ  - 05/11/11(金) 16:38 -

引用なし
パスワード
   ▼jaka さん:
▼Kein さん:

ご返信、ありがとうございました。
色々なやりかたがあるのですね。

勉強になりました!!!

ファイルの内容上、事前にフィルタリングで
重複を取り除く事ができないので

>  On Error Resume Next

を使用させていただきたいと思います。

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

【31106】Re:シート名の重複
発言  Jaka  - 05/11/11(金) 16:50 -

引用なし
パスワード
   >同じシート名だと、保存できません
すみません。
全く見ていませんでした。
私のは無視してください。

参考?にはなると思います。
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=31036;id=excel

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