Excel VBA質問箱 IV

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

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


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

【30726】sheetの番号変更 フレッツ 05/11/4(金) 4:07 質問[未読]
【30728】Re:sheetの番号変更 だるま 05/11/4(金) 7:21 回答[未読]
【30729】Re:sheetの番号変更 ichinose 05/11/4(金) 8:05 発言[未読]
【30734】Re:sheetの番号変更 Jaka 05/11/4(金) 9:31 発言[未読]
【30739】Re:sheetの番号変更 ichinose 05/11/4(金) 10:50 発言[未読]
【30743】Re:sheetの番号変更 Jaka 05/11/4(金) 11:39 発言[未読]
【30747】Re:sheetの番号変更 ichinose 05/11/4(金) 12:20 発言[未読]
【30753】Re:sheetの番号変更 Jaka 05/11/4(金) 14:03 発言[未読]
【30762】Re:sheetの番号変更 フレッツ 05/11/4(金) 14:51 質問[未読]
【30772】Re:sheetの番号変更 Jaka 05/11/4(金) 15:37 回答[未読]
【31040】Re:sheetの番号変更 Hirok 05/11/9(水) 19:51 回答[未読]
【30789】Re:sheetの番号変更 ichinose 05/11/4(金) 18:20 発言[未読]
【31026】Re:sheetの番号変更 Jaka 05/11/9(水) 14:45 発言[未読]

【30726】sheetの番号変更
質問  フレッツ  - 05/11/4(金) 4:07 -

引用なし
パスワード
   sheetの名前の変更はわかるのですが、
sheetを作成したときに勝手に作成した順番で振付けられる番号の変更がわかりません。あれを変更するにはどうしたらいいのでしょうか?
これ→sheet1(sheet1)←これではない。
それとVBAProjectの上からSheet1,2,3みたいに変更したいのですが
VBAでsheetを作成すると途中から挿入されて小さい数から
順番にならばないです。
これをVBAで操作するにはどうしたらいいのでしょうか・

【30728】Re:sheetの番号変更
回答  だるま WEB  - 05/11/4(金) 7:21 -

引用なし
パスワード
   CodeNameはプログラムからは変更できないと思います。^d^

どうしても変更したければVBE画面で手作業で変更することになると思います。

でも、通常は変更の必要は無いと思うのですが。

【30729】Re:sheetの番号変更
発言  ichinose  - 05/11/4(金) 8:05 -

引用なし
パスワード
   ▼フレッツ さん、だるまさん、おはようございます。


>sheetの名前の変更はわかるのですが、
>sheetを作成したときに勝手に作成した順番で振付けられる番号の変更がわかりません。あれを変更するにはどうしたらいいのでしょうか?
>これ→sheet1(sheet1)←これではない。
これは、Vbprojectを操作すれば、変更することはできます。

Sub test()
  With ThisWorkbook.VBProject
    .VBComponents("sheet1").Name = "sht1"
'            ↑旧Codename   ↑新Codename
    End With
End Sub

但し、Excel2002からは、セキュリティ設定をしなければなりません。
つまり、既定の設定では、VBProjectは操作できません。

よって、VBProjectの操作するコードはというのは、限定された使用方法を
余儀なくされます。

>でも、通常は変更の必要は無いと思うのですが

私もそう思いますが、このコードネームを変更の必要性を
記述してみてはいかがでしょうか?

ひょっとしたら、他の代替方法の投稿があるかもしれませんよ!!

【30734】Re:sheetの番号変更
発言  Jaka  - 05/11/4(金) 9:31 -

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

>Sub test()
>  With ThisWorkbook.VBProject
>    .VBComponents("sheet1").Name = "sht1"
>'            ↑旧Codename   ↑新Codename
>    End With
>End Sub
ichinose さん、これはまずいですよ!
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=6605;id=excel

【30739】Re:sheetの番号変更
発言  ichinose  - 05/11/4(金) 10:50 -

引用なし
パスワード
   ▼Jaka さん:
おはようございます。

>ichinose さん こんにちは。
>
>>Sub test()
>>  With ThisWorkbook.VBProject
>>    .VBComponents("sheet1").Name = "sht1"
>>'            ↑旧Codename   ↑新Codename
>>    End With
>>End Sub
>ichinose さん、これはまずいですよ!
>http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=6605;id=excel
Excel97だと問題があると言うことですね?
なるほど・・、って、持っていないので確認はできませんが・・・。

それより、
 Set a = Worksheets(1)
 a.[_CodeName] = "hogehoge"

これ・・、隠しのプロパティですね?、新発見です。
これ使えば、セキュリティ関係ないですねえ。
メモメモ・・・。

Jaka さん、ありがとうございます。

ということでフレッツさん、これ使ってください。

【30743】Re:sheetの番号変更
発言  Jaka  - 05/11/4(金) 11:39 -

引用なし
パスワード
   ▼ichinose さん:
>Excel97だと問題があると言うことですね?
>なるほど・・、って、持っていないので確認はできませんが・・・。
えっと、97だけじゃないです。
Excel2000でもそうです。
たぶん、2002以降でもそうじゃないかと思います。

1度、コードネームを変更後、保存して開いてみてください。
壊れて開かないと思います。

【30747】Re:sheetの番号変更
発言  ichinose  - 05/11/4(金) 12:20 -

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


>>Excel97だと問題があると言うことですね?
>>なるほど・・、って、持っていないので確認はできませんが・・・。
>えっと、97だけじゃないです。
>Excel2000でもそうです。
>たぶん、2002以降でもそうじゃないかと思います。
>
>1度、コードネームを変更後、保存して開いてみてください。
>壊れて開かないと思います。

win98 & Excel2000 SP-3
Win2000 & Excel2002 SP3

の両方で試しました。

'====================================================
Sub test()
  With Workbooks.Add
   .Worksheets(1).Range("a1:j10").Value = "aaa" 'とりあえず、何か入力して・・
   With .VBProject
     .VBComponents(2).Name = "sht1"
     End With
   .SaveAs ThisWorkbook.Path & "\renmtest1.xls"
   .Close False
   MsgBox "ok"
   
   End With
  DoEvents
  Workbooks.Open ThisWorkbook.Path & "\renmtest1.xls"
End Sub

Excel2002では、セキュリティは解除して確認しました。

コードで言うrenmtest1.xlsは、正常に開けましたよ!!
保存や再オープンの箇所をコードではなく、手動操作で行っても
結果は同じでした。
ご覧のような簡単なコードでしか確認はしていませんけどね!!

【30753】Re:sheetの番号変更
発言  Jaka  - 05/11/4(金) 14:03 -

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

>win98 & Excel2000 SP-3
これで、大丈夫だったんですか。家のはSP-1なんだけど確か壊れたような...。
良く思い出せないので、もしかしたらこれはやってないかも....。

>Win2000 & Excel2002 SP3
>の両方で試しました。
SP3とか細かいバァージョンは、確認とらなかったけど、
WinXP & EXCL2002 で、試してもらいました。
平気でした。

くそ〜、またしても、EXCEL97だけ壊れるのかぁ!。
97だと「ok」を押した後、
「エラーが発生しました。エクセルを終了します。もう1度・・・・」ってなっちゃいました。
renmtest1.xlsを開くと同じエラーで終わっちゃいます。(T_T)
はぁ〜。

【30762】Re:sheetの番号変更
質問  フレッツ  - 05/11/4(金) 14:51 -

引用なし
パスワード
   Jakaさん、ichinoseさん
貴重ば情報ありがとうございます♪
正直に申しますと、
あるシート名を変更しました。
この場合は、sheet1,sheet2を残してシート名を他の名にしました100シート以上くらいです。
それで作ったシートをすべて削除したくなったので。
forステートメント でインデックスを一個づつ
削除しようとおもったのですが、sheet1,sheet2
だけを残す方法もわからず、for each だと全部消してしまい
四苦八苦しているところでした。
インデックスを並べたい理由は順番どおり並べていた方が
コードの実行が確実になるのではと思ったのと、
見た目が悪いなと思ったからです。
この場合どうしたいいんですかね?sheet1,sheet2
だけ残すには?

【30772】Re:sheetの番号変更
回答  Jaka  - 05/11/4(金) 15:37 -

引用なし
パスワード
   これに条件式を加えて、分岐すれば良いんじゃないですか。

For Each ws In Worksheets
  MsgBox ws.CodeName
Next

【30789】Re:sheetの番号変更
発言  ichinose  - 05/11/4(金) 18:20 -

引用なし
パスワード
   ▼Jaka さん:
こんばんは。もう帰っちゃった?
>
>>win98 & Excel2000 SP-3
>これで、大丈夫だったんですか。家のはSP-1なんだけど確か壊れたような...。
>良く思い出せないので、もしかしたらこれはやってないかも....。
win98 & Excel2000 SR-1
でも試しましたが、大丈夫でしたよ!!

>くそ〜、またしても、EXCEL97だけ壊れるのかぁ!。
まだ、Excel2000パッチなしバージョンはわかりませんよ!!


>97だと「ok」を押した後、
>「エラーが発生しました。エクセルを終了します。もう1度・・・・」ってなっちゃいました。
>renmtest1.xlsを開くと同じエラーで終わっちゃいます。(T_T)
>はぁ〜。

いずれにせよ [_Codename]は、収穫でした。

またよろしくお願いします。

【31026】Re:sheetの番号変更
発言  Jaka  - 05/11/9(水) 14:45 -

引用なし
パスワード
   win98se & Excel2000 SP-1
大丈夫でした。

【31040】Re:sheetの番号変更
回答  Hirok  - 05/11/9(水) 19:51 -

引用なし
パスワード
   ▼フレッツ さん:
今晩は・・・
>この場合は、sheet1,sheet2を残してシート名を他の名にしました100シート以上くらいです。
>それで作ったシートをすべて削除したくなったので。
>forステートメント でインデックスを一個づつ
>削除しようとおもったのですが、sheet1,sheet2
>だけを残す方法もわからず、for each だと全部消してしまい
>四苦八苦しているところでした。

sheet1とsheet2を残すには・・・
私はこんな風にしています・・・間違っていたら⇒ゴミ箱へ

Sub シートABCとBCD() '残すシートを例えば「ABCとBCD」とします。

  Dim ST_Name As String
  Dim sht As Object
  
  For Each sht In Sheets
    If sht.Name <> "ABC" And sht.Name <> "BCD" Then Call del_sheet(sht.Name)
   Next
  End Sub

Sub del_sheet(ST_Name As String)
  On Error Resume Next
  Application.DisplayAlerts = False
  Sheets(ST_Name).Delete
  On Error GoTo 0
  Application.DisplayAlerts = True

>インデックスを並べたい理由は順番どおり並べていた方が
>コードの実行が確実になるのではと思ったのと、
>見た目が悪いなと思ったからです。

消したシートを復活させると連番に並びますよ。
消したり復活(新しいシートを増やす)を繰り返す
という、繰り返して操作をすると
例えば21から31のシートが
次は32からシートが40・・・と並びどんどん数字が
大きく累積されて行きます。

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