- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel2000 VBA シート名の変更)
Excel2000 VBA シート名の変更に関する問題
このQ&Aのポイント
- Excel2000のVBAを使用して、UserForm1上のTextbox1とTextbox2の値を結合した文字列をアクティブなワークシートの名前に設定する方法について質問です。
- 最初に示されたコードを実行すると、「実行時エラー’91’:オブジェクト変数またはwithブロック変数が設定されていません」というエラーが発生します。
- ActiveWorkbook.ActiveSheet.Nameプロパティを使用する代わりに、with文を使ってActiveSheetを指定することで問題が解決する可能性があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
まずはこれ。Shって、ちゃんとシートのオブジェクトになってます? Sh.Name = namae プロさんの組むプログラムだとそうなってると思いますけど、通常は例えば Sheets("Sheet1").Name = namae ActiveSheet.Name = namae とかにすると思いますよ。 あとこれ。 Dim snday As Variant 'Textbox1に入力 なんでわざわざVariant型にするのかな。TextBoxから受けてシート名にするなら、ちゃんとString型で受けておかないと、数値と認識して変数nameが数値になっちゃうことがありますよ。ですので Dim snday As String 'Textbox1に入力 以下、Variantになってる部分をちゃんとStringなりDoubleなり、使う変数の内容をしっかり表現しておいた方がいいです。多分その2つで動くようになると思うんですが・・・。
その他の回答 (1)
- mu2011
- ベストアンサー率38% (1910/4994)
回答No.2
Shにworksheetオブジェクトが設定されていないからです。 一例ですが、Sh.Name = namae文の前にSet Sh = ActiveSheetを挿入して見て下さい。
質問者
お礼
mu2011さんのコードでもできました。 ありがとうございます。 Set Sh = ActiveSheet 指定してあげる必要があるのですね。 勉強になります。 mu2011さんの投稿を確認したのは、FEX2053さんにベストアンサーをつけたあとでしたので、申し訳ありませんが、お礼入力しかできませんでした。 しかしながら、ご回答いただき、本当にありがとうございました。
お礼
教えていただき、ありがとうございました。 VBAの知識がほとんど無く、ネットで検索したコードを、つなぎ合わせたり、 なんとなく書いてみたり、でたらめな点があるとおもいます。 正しい知識を、少しずつですが、勉強していきたいと思っています。 教えていただいた、変数の型を String にし、 削除:Sh.Name = namae 追加:ActiveSheet.Name = namae してみたら、思ったとおりのことが出来るようになりました。 ありがとうございました。