こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

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 なんていうコード使用したくないのです。
もっと効率的なコードはどうしたらよろしいでしょうか。

投稿日時 - 2011-04-14 19:59:10

QNo.6668315

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.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
で良いのでは。これなども何処かの本の引き写しに「拘っているのでは。

投稿日時 - 2011-04-14 20:54:13

お礼

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

投稿日時 - 2011-08-05 06:56:15

あなたにオススメの質問