
教えてください。
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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のPCだけ動作しないVBAマク...
-
Excel・Word リサーチ機能を無...
-
一つのTeratermのマクロで複数...
-
エクセルで特定の列が0表示の場...
-
エクセルに張り付けた写真のフ...
-
メッセージボックスのOKボタ...
-
ExcelのVBA。public変数の値が...
-
Excel_マクロ_現在開いているシ...
-
Excel マクロ VBA プロシー...
-
オートフィルターとExcelマクロ...
-
IF関数を使ってマクロを実行さ...
-
エクセルのマクロでワードの任...
-
ExcelVBAの繰り返し処理でwebク...
-
Excelのセル値に基づいて図形の...
-
Excel マクロでShearePoint先の...
-
TERA TERMを隠す方法
-
ExcelVBAでPDFを閉じるソース
-
特定文字のある行の前に空白行...
-
ExcelVBA 図形をクリックした...
-
ピボットテーブルでの毎回可変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで特定の列が0表示の場...
-
特定のPCだけ動作しないVBAマク...
-
Excel・Word リサーチ機能を無...
-
一つのTeratermのマクロで複数...
-
Excel_マクロ_現在開いているシ...
-
メッセージボックスのOKボタ...
-
Excel マクロ VBA プロシー...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
エクセルで別のセルにあるふり...
-
ExcelVBAでPDFを閉じるソース
-
ダブルクリックで貼り付けた画...
-
Excel マクロでShearePoint先の...
-
TERA TERMを隠す方法
-
マクロ実行時、ユーザーフォー...
-
Excelのセル値に基づいて図形の...
-
特定文字のある行の前に空白行...
-
エクセルマクロでワードの一ペ...
-
エクセルで縦に並んだデータを...
-
Excel VBAからAccessマクロを実...
おすすめ情報