Excel VBA質問箱 IV

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

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


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

【27267】シートの削除 yasu 05/8/3(水) 22:09 質問[未読]
【27270】Re:シートの削除 ichinose 05/8/4(木) 0:02 発言[未読]
【27272】Re:シートの削除 yasu 05/8/4(木) 6:46 お礼[未読]

【27267】シートの削除
質問  yasu  - 05/8/3(水) 22:09 -

引用なし
パスワード
   A1〜AxまでA列にシート名があります。下記のコードを利用して
例えばA1に「シート1」・・・A5には「シート5」のシート名がある状態で、
マクロを実行するとシート作成が出来ますが・・・
シート2が不要になった時、
A1にシート1、A2にシート3、A3にシート4、A5にシート4のシート名が書かれ
ます。(つまりシート2の名前がが消された状態です)
しかし、下のコードではシート上には、「シート2」は残ったままになりますが、このシート2をデリートさせる方法はないでしょうか?

Sub メインABCからサブ作成()

  Dim i As Integer
  Dim ST_Name As String
 
  For i = Sheets("ABC").Cells(65536, 1).End(xlUp).Row To 1 Step -1
  ST_Name = Cells(i, 1).Value  '
 
  del_sheet ST_Name
 
  Sheets("ABC").Activate
  Sheets.Add after:=Sheets(Sheets.Count)

  Sheets(Sheets.Count).Name = ST_Name
   
  Range("A1") = ST_Name

  '=====作業=====
  
  Sheets("ABC").Activate
  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
End Sub

【27270】Re:シートの削除
発言  ichinose  - 05/8/4(木) 0:02 -

引用なし
パスワード
   ▼yasu さん:
こんばんは。

>A1〜AxまでA列にシート名があります。下記のコードを利用して
>例えばA1に「シート1」・・・A5には「シート5」のシート名がある状態で、
>マクロを実行するとシート作成が出来ますが・・・
>シート2が不要になった時、
>A1にシート1、A2にシート3、A3にシート4、A5にシート4のシート名が書かれ
>ます。(つまりシート2の名前がが消された状態です)
>しかし、下のコードではシート上には、「シート2」は残ったままになりますが、このシート2をデリートさせる方法はないでしょうか?

"ABC"というシート以外のシートを一度削除する処理を入れたらいかがですか?
>
>Sub メインABCからサブ作成()
>
>  Dim i As Integer
>  Dim ST_Name As String
> 
   Dim sht As Object
   For Each sht In Sheets
    If sht.Name <> "ABC" Then Call del_sheet(sht.Name)
    Next
>  For i = Sheets("ABC").Cells(65536, 1).End(xlUp).Row To 1 Step -1
>  ST_Name = Cells(i, 1).Value  '
> 
'   del_sheet ST_Name
   '↑既に削除されているので要らない 
>  Sheets("ABC").Activate
>  Sheets.Add after:=Sheets(Sheets.Count)
>
>  Sheets(Sheets.Count).Name = ST_Name
>   
>  Range("A1") = ST_Name
>
>  '=====作業=====
>  
>  Sheets("ABC").Activate
>  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
>End Sub

【27272】Re:シートの削除
お礼  yasu  - 05/8/4(木) 6:46 -

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

早速ご解答ありがとうございます。
なるほど っと頷いています。

シートの名前(文字)とA列のシート作成用の文字との比較参照させ
シートABC以外のはみ出たシート名を削除する方法ばかり頭にありました。

全く発想が出てきませんでした。

現実には、シートが100以上あるものですから、操作する人が、どんどん
シートが消えていく事に不安が伴わないか?っという気持ちが残りますが
流石素晴らしいですね。

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

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