教えてください。
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も見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
VBAでシートコピー後、シート名が重複している時の処理
Access(アクセス)
-
VBAで同じシート名のコピー時は処理中止したいのですが・・・
Visual Basic(VBA)
-
エクセルのシート名変更で重複した時のvbaの処理
Visual Basic(VBA)
-
-
4
VBAでシートコピー後、シート名が重複している時の処理
Excel(エクセル)
-
5
Excel VBA シート名変更時、重複していたら連番を付けたい
その他(Microsoft Office)
-
6
エクセルのマクロで印刷プレビューを閉じる方法
Excel(エクセル)
-
7
エクセルでエラーが出て困っています。
Excel(エクセル)
-
8
EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?
Excel(エクセル)
-
9
同じ作業を複数のシートに実行させるにはどうしたらいいのでしょうか
Visual Basic(VBA)
-
10
VBAで別ブックのシートを指定して削除したい。
Visual Basic(VBA)
-
11
マクロを複数シートに実行するには?
Excel(エクセル)
-
12
VBAで指定シート以外の選択
Visual Basic(VBA)
-
13
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
-
14
VBA シート名が一致した場合の転記内容について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
EXCELのVBAでRange("A1:C4")を...
-
一つのTeratermのマクロで複数...
-
Excel VBAからAccessマクロを実...
-
メッセージボックスのOKボタ...
-
非表示の列をすべて削除するマクロ
-
エクセルに張り付けた写真のフ...
-
エクセルで別のセルにあるふり...
-
ExcelのVBA。public変数の値が...
-
ExcelVBAでPDFを閉じるソース
-
VBA アドインについて お詳しい...
-
TERA TERMを隠す方法
-
マクロで空白セルを詰めて別シ...
-
EXCELマクロでのThisisWor...
-
サクラエディタ・マクロ → VSCo...
-
エクセルマクロ自動更新
-
[初心者です]VBAで指定列か...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
エクセルで別のセルにあるふり...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
ExcelVBAでPDFを閉じるソース
-
EXCELのVBAでRange("A1:C4")を...
-
Excel VBAからAccessマクロを実...
-
TERA TERMを隠す方法
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
マクロ実行時、ユーザーフォー...
-
Excelのマクロについて教えてく...
-
ソース内の行末に\\
おすすめ情報