Excel VBA質問箱 IV

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

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


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

【6605】追加したシートのオブジェクト名について はるか 03/7/14(月) 16:49 質問
【6609】Re:追加したシートのオブジェクト名について bykin 03/7/14(月) 21:52 回答
【6651】Re:追加したシートのオブジェクト名について はるか 03/7/17(木) 12:38 お礼
【6743】Re:追加したシートのオブジェクト名について ばば 03/7/30(水) 16:14 質問
【6790】Re:追加したシートのオブジェクト名について Jaka 03/8/4(月) 9:59 発言
【6791】Re:追加したシートのオブジェクト名について ばば 03/8/4(月) 10:51 お礼

【6605】追加したシートのオブジェクト名について
質問  はるか  - 03/7/14(月) 16:49 -

引用なし
パスワード
   ただ今、マクロでシートの追加をしていまして、

ActiveSheet.Copy before:=ActiveSheet

で実際にシートを追加しているのですが、元のActiveSheetの
オブジェクト名を「Sheet1」とすると、追加されたシートの
オブジェクト名がSheet11、次に実行するとSheet111と
オブジェクトが増えていきます。Sheet1111111111位までは
増えていくことを確認しています。

Sheet1の次のシートのオブジェクト名はSheet2、次はSheet3と
したいのですが、どのようにすれば良いのでしょうか。

御存知の方、教えてください。

【6609】Re:追加したシートのオブジェクト名につい...
回答  bykin  - 03/7/14(月) 21:52 -

引用なし
パスワード
   こんばんわ。

バージョンが書いてないけど、Excel97なんかな?
↓これやと思うねんけど・・・
http://support.microsoft.com/default.aspx?scid=kb;ja;236299
2000以降やったら問題ないと思います。

97が手元にないから確認できへんけど、シートコピーした後で直接オブジェクト名を
変更するんやったら、こんな感じかな?

Sub test()
  Dim i As Integer
  For i = 2 To 4
    ActiveSheet.Copy before:=ActiveSheet
    With Application.VBE.ActiveVBProject
      .VBComponents(.VBComponents.Count).Name = "Sheet" & i
    End With
  Next
End Sub

実際には同じ名前が既に存在しないかとかのエラーチェックが必要になります。
応用してみてな。
ほな。

【6651】Re:追加したシートのオブジェクト名につい...
お礼  はるか  - 03/7/17(木) 12:38 -

引用なし
パスワード
   返信が遅くなり申し訳ございません。
割り込みの仕事が入っていたものでして。

97の問題だったわけですね。XPにバージョンアップさせて
回避することにしました。ありがとうございました。

【6743】Re:追加したシートのオブジェクト名につい...
質問  ばば  - 03/7/30(水) 16:14 -

引用なし
パスワード
   ▼bykin さん:
すでに解決済みの質問になってますが、便乗で追加質問させてください。

シートのコピーをたくさんするため、シートのオブジェクト名が長くなりすぎてコピーができなくなるのを回避するために、シートのオブジェクト名を変更しようと思い、下のコードを参考にさせていただきました。

下のコードを実行すると、プロジェクトエクスプローラでは【Sheet○】というように変更されますが、
プロパティウィンドウで確認すると、オブジェクト名は変更されていません。

オブジェクト名を変更するにはどうすればいいでしょうか?

>97が手元にないから確認できへんけど、シートコピーした後で直接オブジェクト名を
>変更するんやったら、こんな感じかな?
>
>Sub test()
>  Dim i As Integer
>  For i = 2 To 4
>    ActiveSheet.Copy before:=ActiveSheet
>    With Application.VBE.ActiveVBProject
>      .VBComponents(.VBComponents.Count).Name = "Sheet" & i
>    End With
>  Next
>End Sub
>
>実際には同じ名前が既に存在しないかとかのエラーチェックが必要になります。
>応用してみてな。
>ほな。

【6790】Re:追加したシートのオブジェクト名につい...
発言  Jaka  - 03/8/4(月) 9:59 -

引用なし
パスワード
   こんにちは。

こんな感じに変更すると97だと、どうしてもブックがぶっ壊れてしまうので私には思いつきませんでした。
Workbooks(ActiveWorkbook.Name).VBProject.VBComponents(ActiveSheet.CodeName).Name = "Sheet10"

ここで、ブックがぶっ壊れない方法が紹介されています。
同じ人かな?

http://www2.moug.net/app/bbs/message.php?cat=exvba&id=20030730-000013

【6791】Re:追加したシートのオブジェクト名につい...
お礼  ばば  - 03/8/4(月) 10:51 -

引用なし
パスワード
   Jakaさん ありがとうございます。

>Workbooks(ActiveWorkbook.Name).VBProject.VBComponents(ActiveSheet.CodeName).Name = "Sheet10"

この方法だと、オブジェクト名が変更されませんでした。
プロジェクトエクスプローラで見ると、変更されているように見えますが、プロパティウィンドウで確認すると、オブジェクト名は変更されていませんでした。

>http://www2.moug.net/app/bbs/message.php?cat=exvba&id=20030730-000013
こちらで紹介されている方法でオブジェクト名の変更ができました。
Sub test()
 Dim a As Worksheet
 Set a = Worksheets(1)
 a.[_CodeName] = "hogehoge"
End Sub

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

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