ExcelのVBAでsheet2がなければsheet2を作成し、sheet2があればシートを作らないプログラムを作りたいのですが、初心者で全く分かりません。

Excel4,038閲覧xmlns="http://www.w3.org/2000/svg">500

ベストアンサー

0

あと・・・ > Set ws = workseets.Add() これ ↑ コードを記述している時に workseets.の w が大文字に なっていないことに注意した方が、いいかと思います。 これでは、 エラーですよね。 綴りも違っています。 Set ws = Sheets.Add と思います。 あと、ワークシートをループして名前の存在を確認し、 無かったら追加するなら こんな感じです。 Sub Test2() Dim ws As Worksheet Dim Flg As Boolean For Each ws In Worksheets    If ws.Name = "Sheet2" Then       Flg = True       Exit For    End If Next If Flg = False Then    Set ws = Sheets.Add    ws.Name = "Sheet2" End If Set ws = Nothing End Sub

ThanksImg質問者からのお礼コメント

どの回答もすごくよかったので、選ぶことができませんでした。なので、最初に返信してくださった方に決めました。

お礼日時:2015/12/30 20:05

その他の回答(3件)

0

ループ不要例です。 Dim ws As Worksheet If IsError([sheet2!a1]) Then Sheets.Add ActiveSheet.Name = "Sheet2" End If Set ws = Sheets("sheet2")

0

> If ws Is Nothing Then 変数の中だけで話が簡潔しているので ブック内の比較になって いません。 Dim ws As Worksheet Const shtName As String = "Sheet2" For Each ws In Worksheets If ws.Name = shtName Then Exit Sub Next ws Worksheets.Add.Name = shtName Worksheets(shtName).Move After:=Sheets(Worksheets.Count) > ご教授お願いします。 「ご教示」ね。

0

こんな感じでどうでしょう? Dim ws As Worksheet Dim myFlag As Integer myFlag = 0 For Each ws In Worksheets If ws.Name = "Sheet2" Then myFlag = 1 Next ws If myFlag = 0 Then Worksheets.Add ActiveSheet.Name = "Sheet2" Else MsgBox "Sheet2はあります。", vbInformation End If