教えてください。
VBAに関しての質問です。
全くの知識がないので教えていただきたいです。
エクセルワークシートに以下の機能を追加している状態です。
For Each ws In Worksheets
If ws.Name = "データ" Then
wsChkflg = True
End If
Next
If wsChkflg = True Then
ThisWorkbook.Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "データ"
Else
ThisWorkbook.Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "データ"
End If
Set wsNew = ThisWorkbook.Worksheets("データ")
「データ」というシートが作成、追加されるのですが、同じシート名で新規作成した時に
エラーが出てしまいます。そのエラーを出さないようにすため、ダイアログ等も出さずに既存のシートを強制的に削除する機能を追加したいのです。
VBAの知識がなくて困っています。
何か良い方法がわかる方いらっしゃいましたらお力を貸してください。
よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
なんだ、宿題を代わりにやって欲しいご相談ですか。
それならお友達に、目の前でやってもらいながら教わった方がいいですよ。あなたも何を情報提供したらいいのかも判らずに、ぐだぐだになるのも大変でしょう。>「実行時エラー 91
>オブジェクト変数またはwith ブロック変数が設定されていません。」
>となってしまいました。
回答した通りに出来ていない、間違ったことをやっている、または他の関係ない所でエラーが出ているのが原因です。回答したマクロには、そういうエラーが出る要因はありません。
そもそも、「いまはどんなマクロを動かしていて」、具体的にどこの行でエラーが出ているのですか?
それとも、何をしなさいと言われているのかも理解できていないのでしょうか。
1.ここからここまでのマクロを消す
2.消したところに回答のマクロをコピー貼り付ける
3.実行する
それから、
4.エラーが出たら「デバッグ」をクリックする
5.マクロの画面が開くので黄色くなった行を確認する
6.確認した黄色くなったマクロを含むマクロの範囲をコピーして、改めて新しいご相談として投稿してみる
その際は、この行でこういうエラーが出ています、と目に見える様子をキチンと情報提供する。
ご回答いただきありがとうございます。
宿題というわけではないのですが、おっしゃる通りですね。
ここで質問するような内容ではありませんでした。。
申し訳ありません。
質問する側としての、情報や質問事項の理解度も曖昧なまま
だったので、頂いたアドバイスを基にもう少し勉強しようと思います。
ありがとうございました。
No.2
- 回答日時:
既に指摘されているように無意味なマクロになっているので、
----------ここから
For Each ws In Worksheets
If ws.Name = "データ" Then
wsChkflg = True
End If
Next
If wsChkflg = True Then
ThisWorkbook.Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "データ"
Else
ThisWorkbook.Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "データ"
End If
----------ここまで
丸ごと消します。
代わりにその部分に、
application.displayalerts = false
on error resume next
worksheets("データ").delete
on error goto 0
application.displayalerts = true
thisworkbook.worksheets.add(after:=worksheets(worksheets.count)).name = "データ"
と書いておきます。
この回答への補足
ありがとうございます。
試してみたのですが、
「実行時エラー 91
オブジェクト変数またはwith ブロック変数が設定されていません。」
となってしまいました。
----------ここから
For Each ws In Worksheets
If ws.Name = "データ" Then
wsChkflg = True
End If
Next
If wsChkflg = True Then
ThisWorkbook.Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "データ"
Else
ThisWorkbook.Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "データ"
End If
----------ここまで
上記部分以外にも前後にマクロが入力してあるのですが、
それが影響しているのでしょうか。。
課題で出題されているので、どこまで記載してよいかわからず抜粋してしまったのが
原因でしょうか。
上手く質問内容の情報を提供できずに申し訳ありません。。
No.1
- 回答日時:
If wsChkflg = True Then
ThisWorkbook.Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "データ"
Else
ThisWorkbook.Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "データ"
End If
の部分でwsChkflgの値によらず同じ処理をしているようですが、意図は?
また
For Each ws In Worksheets
の前に
wsChkflg = False
にしてますか?
この回答への補足
本当に無知ですみません。
>If wsChkflg = True Then
>ThisWorkbook.Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "データ"
>Else
>ThisWorkbook.Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "データ"
>End If
>の部分でwsChkflgの値によらず同じ処理をしているようですが、意図は?
上記のマクロは元々今回のワークシート追加されてあった機能で、
意図がわかりませんでした。
>For Each ws In Worksheets
>の前に
>wsChkflg = False
してないです。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) シート削除のマクロで「deleteメソッドは失敗しました」となります。助けてください! Sub 不要 6 2022/09/08 16:41
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
VBAでシートコピー後、シート名が重複している時の処理
Access(アクセス)
-
エクセルのシート名変更で重複した時のvbaの処理
Visual Basic(VBA)
-
VBAで同じシート名のコピー時は処理中止したいのですが・・・
Visual Basic(VBA)
-
-
4
Excel VBA シート名変更時、重複していたら連番を付けたい
その他(Microsoft Office)
-
5
VBAでシートコピー後、シート名が重複している時の処理
Excel(エクセル)
-
6
エクセルのマクロで印刷プレビューを閉じる方法
Excel(エクセル)
-
7
VBA シート名が一致した場合の転記内容について
Visual Basic(VBA)
-
8
EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?
Excel(エクセル)
-
9
VBAで別ブックのシートを指定して削除したい。
Visual Basic(VBA)
-
10
エクセルVBA Ifでシート名が合致したら別ファイルから転記する場合のElse IfとForの書き方
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のPCだけ動作しないVBAマク...
-
Excel・Word リサーチ機能を無...
-
一つのTeratermのマクロで複数...
-
Excel マクロ VBA プロシー...
-
エクセルで特定の列が0表示の場...
-
エクセル マクロ 指定日の指定...
-
Excel VBAからAccessマクロを実...
-
メッセージボックスのOKボタ...
-
TERA TERMを隠す方法
-
エクセルに張り付けた写真のフ...
-
テニス(ダブルス)乱数表 Exc...
-
ExcelVBAでPDFを閉じるソース
-
エクセルVBAでNAVITIMEを使って...
-
エクセルのマクロをセルの値に...
-
組んだマクロをメールで送る
-
ExcelVBA 図形をクリックした...
-
ファイルが見つからない時、ス...
-
OnTimeを使ったのですが「エラ...
-
Excelマクロで印刷設定
-
ExcelのVBAを使ってタイトル行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
エクセルで特定の列が0表示の場...
-
特定のPCだけ動作しないVBAマク...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
ExcelのVBA。public変数の値が...
-
Excel VBAからAccessマクロを実...
-
EXCELのVBAでRange("A1:C4")を...
-
ExcelVBAでPDFを閉じるソース
-
エクセルに張り付けた写真のフ...
-
エクセルで別のセルにあるふり...
-
TERA TERMを隠す方法
-
2つのマクロでチェックボックス...
-
マクロ実行時、ユーザーフォー...
-
【マクロ】1つのマクロの中に...
-
ピボットテーブルでの毎回可変...
-
特定文字のある行の前に空白行...
-
エクセルのマクロについて教え...
-
wordを起動した際に特定のペー...
おすすめ情報