Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 7 Professional : Excel 2010)
シート削除
投稿日時: 17/09/29 11:47:04
投稿者: こまじろう

 
シートを削除したいです
教えてください
ワークシート a のA列にシート一覧表を作りまして
B列に 何らかの文字がある場合
同行のA列タイトルのシートを削除したいです
先ずA列入力あるシート名削除を下記の様に作ってみましたが
NEXTに対する FORがありませんと言う
警告が出てしまいました
大変お手数を掛けしますが
ご教授頂けないでしょうか
 
Sub シート()
    Dim i As Long
     
    For i = 1 To Sheets.Count
    If Worksheets(i).Name = Worksheets("a").Range("A" & i) Then
    Application.DisplayAlerts = False
    Worksheets(i).Delete
    Application.DisplayAlerts = True
     
    Next i
End Sub

回答
投稿日時: 17/09/29 12:48:34
投稿者: lucid

If Worksheets(i).Name = Worksheets("a").Range("A" & i) Then
に対する
End If
が無いようです。

回答
投稿日時: 17/09/29 14:18:58
投稿者: WinArrow
投稿者のウェブサイトに移動

>NEXTに対する FORがありませんと言う
は、lucid さんのレスの通りです。
 
 
> For i = 1 To Sheets.Count
この命令は、左端のしーとから処理されます。
シートを削除する場合は、右端から検索します。
 
 For i = Sheets.Count To 1 Step -1
 
それから、シート名が書かれているシートも削除対象からハスして方が無難です。
 
For i = Sheets.Count To 1 Step -1
    If SHeets(i).Name <> "a" Then
        If 対象 Then
           '削除
        End If
    End If
Next

投稿日時: 17/09/29 14:58:21
投稿者: こまじろう

 lucid 様
有難う御座いました
WinArrow 様
 
有難う御座いました
アドバイス有難う御座います
 
 
 

回答
投稿日時: 17/09/29 14:59:04
投稿者: WinArrow
投稿者のウェブサイトに移動

参考
 
シートを削除する場合
(1)の方法:Indexで検索する
 この場合は、シートの右(後ろ)から検索します。
 
(2)オブジェクトで検索する
  For Each sht In Sheets
       If Sht.Name <> "削除しない対象") Then
       End If
    Next

回答
投稿日時: 17/09/30 08:41:51
投稿者: ピンク

>ワークシート a のA列にシート一覧表を作りまして
>B列に 何らかの文字がある場合
>同行のA列タイトルのシートを削除したいです
   A   B
1 シート名 備考
2  a
3  b   **** ←シートbを削除
4  c
5  d   **** ←シートdを削除
6  e
このようなレイアウトを想定しました。
Sub Test()
    Dim c As Range
    With Worksheets("a")
        For Each c In .Range("A2", .Cells(Rows.Count, "A").End(xlUp))
            If c.Value <> .Name And c.Offset(, 1).Value <> "" Then
                Application.DisplayAlerts = False
                Worksheets(c.Value).Delete
                Application.DisplayAlerts = True
            End If
        Next
    End With
 End Sub

回答
投稿日時: 17/10/01 13:09:17
投稿者: mattuwan44

>NEXTに対する FORがありませんと言う
>警告が出てしまいました
>大変お手数を掛けしますが
>ご教授頂けないでしょうか

↑エラーメッセージは、ずばりのメッセージがでないこともあります。
 
こういう場合は、
Nextのほか、
End If
Loop
End With
などそれっぽいどれかが抜けていると考えて、
コードを読み直してみてください。
 
また、
1)For 〜 と書いたら先にNextを書いておく
2)他の回答のサンプルのようにインデントをきちっと整理する
このようにして、忘れないようにしたり、忘れていてもわかるようにすると、
よいと思います。

トピックに返信