• 締切済み

テキストボックスの文字列の変更

windows7 excel2007でマクロ作成中の超初心者です。 エクセルファイルを開くと、ユーザーフォームが表示され そこにテキストボックスとコマンドボタンがあります。 ーーーユーザーフォームーーーーー Private Sub UserForm_Initialize() With TextBox1 TextBox1.Value = Range("Z1").Value End With End Sub ーーーテキストボックスーーーーー Private Sub TextBox1_Change() Range("Z1") = TextBox1.Value End Sub ーーーコマンドボタンーーーーー Private Sub CommandButton83_Click() Range("Z1").Value = TextBox1.Value ActiveWorkbook.Save End Sub 以上のコード四苦八苦して考えました。 そして、常にZ1の文字列が、表示され その文字列を変更して コマンドボタンをクリックすると、変更された文字列が表示されます。 自分の思うとおりにできました。 しかし、あまりに稚拙なコードで、特に ActiveWorkbook.Save なんていうコード使用したくないのです。 もっと効率的なコードはどうしたらよろしいでしょうか。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

>ActiveWorkbook.Save なんていうコード使用したくないのです。 全般的にどういう目的でこの仕組みを作っているのか、書かない初心者の質問者が多い。 そのアイデアがへんちくりんだったりすることもある。たまたま初心者で知っていることを使おうとするが、外に常識的な方法(仕掛け)がある場合もある。 これなども初心者が作ったコードで、目的に照らして、常識的かどうか、もう少し広い目的が書いてないので判らない。 >CommandButton83 沢山コマンドボタンを貼り付けているのかな。消したり作ったりで83になったのかな。もしコマンドボタンを何十も作っているなら、初心者のアイデアではないかな。 自分の作ったコードの土俵で質問するのでなく、y足りたいことを文章で表現して、こういう場合は「どういう仕組みでやったら良いか」という質問をして、識者のアドバイスを受けることも必要でしょう。 -- 細かい点だが With TextBox1 TextBox1.Value = Range("Z1").Value End With なども、なぜWith End Withをここで使う必要があるのか。 Private Sub UserForm_Initialize() UserForm1.TextBox1.Value = Range("D1").Value End Sub で良いのでは。これなども何処かの本の引き写しに「拘っているのでは。

aitaine
質問者

お礼

詳しくご回答いただき感謝いたします。ありがとうございました。

関連するQ&A

専門家に質問してみよう