エクセルマクロが重い
こんにちは。
ご教授くださいませ。
すでに先方が作っているエクセルのシートがありまして、
そのシートの表組み規則にのっとって入力するユーザーフォーム
を私のほうで作ったのですが、重いです。
selectの多用はだめ!というところまでは調べたのですが
じゃあどうしたらいいかわかりません。
■
'--------------------8時から
If OptionButton1.Value = True Then
ActiveCell.Offset(3, -1).Range("A1").Select
ActiveCell = UserForm3.TextBox1.Value
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell = UserForm3.TextBox2.Value
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell = UserForm3.TextBox3.Value
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell = UserForm3.TextBox4.Value
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell = UserForm3.TextBox5.Value
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell = UserForm3.TextBox6.Value
ActiveCell.Offset(3, 0).Range("A1").Select
ActiveCell = UserForm3.TextBox12.Value
ActiveCell.Offset(0, -1).Range("A1").Select
ActiveCell = UserForm3.TextBox11.Value
ActiveCell.Offset(0, -1).Range("A1").Select
ActiveCell = UserForm3.TextBox10.Value
ActiveCell.Offset(0, -1).Range("A1").Select
ActiveCell = UserForm3.TextBox9.Value
ActiveCell.Offset(0, -1).Range("A1").Select
ActiveCell = UserForm3.TextBox8.Value
ActiveCell.Offset(0, -1).Range("A1").Select
ActiveCell = UserForm3.TextBox7.Value
ActiveCell.Offset(3, 0).Range("A1").Select
ActiveCell = UserForm3.TextBox13.Value
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell = UserForm3.TextBox14.Value
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell = UserForm3.TextBox15.Value
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell = UserForm3.TextBox16.Value
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell = UserForm3.TextBox17.Value
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell = UserForm3.TextBox18.Value
ActiveCell.Offset(3, 0).Range("A1").Select
ActiveCell = UserForm3.TextBox24.Value
ActiveCell.Offset(0, -1).Range("A1").Select
ActiveCell = UserForm3.TextBox23.Value
ActiveCell.Offset(0, -1).Range("A1").Select
ActiveCell = UserForm3.TextBox22.Value
ActiveCell.Offset(0, -1).Range("A1").Select
ActiveCell = UserForm3.TextBox21.Value
ActiveCell.Offset(0, -1).Range("A1").Select
ActiveCell = UserForm3.TextBox20.Value
ActiveCell.Offset(0, -1).Range("A1").Select
ActiveCell = UserForm3.TextBox19.Value
ActiveCell.Offset(3, 0).Range("A1").Select
ActiveCell = UserForm3.TextBox25.Value
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell = UserForm3.TextBox26.Value
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell = UserForm3.TextBox27.Value
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell = UserForm3.TextBox28.Value
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell = UserForm3.TextBox29.Value
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell = UserForm3.TextBox30.Value
'ActiveWorkbook.Save
MsgBox "入力しました。", vbInformation, "確認"
End If
'--------------------8時から(END
■
基本の流れは...
最初にオプションボタン3つのどれか1個の
選択を求め、その条件に応じて
始基点となるセルが変わります。
で、あとは与えられた表組みを縦や横に
移動しながら、対応するテキストボックスの
値を入れる、という
我ながら頭の悪い方法で^^;
.selectではない、スマートな方法があればと思います。
ぜひお知恵を!
お礼
回答ありがとうございます。 助かりました(*^。^*) netgetとnewgetで名称が違っていたので、 newgetとしました。 'ここ以降でエラーが起きたらnetget→newgetラベルへ飛ぶ on error goto newget 'エラーが起きた時に飛んでくる場所 :netget → :newget