• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel2000 VBA シート名の変更)

Excel2000 VBA シート名の変更に関する問題

このQ&Aのポイント
  • Excel2000のVBAを使用して、UserForm1上のTextbox1とTextbox2の値を結合した文字列をアクティブなワークシートの名前に設定する方法について質問です。
  • 最初に示されたコードを実行すると、「実行時エラー’91’:オブジェクト変数またはwithブロック変数が設定されていません」というエラーが発生します。
  • ActiveWorkbook.ActiveSheet.Nameプロパティを使用する代わりに、with文を使ってActiveSheetを指定することで問題が解決する可能性があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • FEX2053
  • ベストアンサー率37% (7995/21381)
回答No.1

まずはこれ。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つで動くようになると思うんですが・・・。

sigeru3105
質問者

お礼

教えていただき、ありがとうございました。 VBAの知識がほとんど無く、ネットで検索したコードを、つなぎ合わせたり、 なんとなく書いてみたり、でたらめな点があるとおもいます。 正しい知識を、少しずつですが、勉強していきたいと思っています。 教えていただいた、変数の型を String にし、 削除:Sh.Name = namae 追加:ActiveSheet.Name = namae してみたら、思ったとおりのことが出来るようになりました。 ありがとうございました。

その他の回答 (1)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

Shにworksheetオブジェクトが設定されていないからです。 一例ですが、Sh.Name = namae文の前にSet Sh = ActiveSheetを挿入して見て下さい。

sigeru3105
質問者

お礼

mu2011さんのコードでもできました。 ありがとうございます。 Set Sh = ActiveSheet 指定してあげる必要があるのですね。 勉強になります。 mu2011さんの投稿を確認したのは、FEX2053さんにベストアンサーをつけたあとでしたので、申し訳ありませんが、お礼入力しかできませんでした。 しかしながら、ご回答いただき、本当にありがとうございました。

関連するQ&A