エクセルマクロが重い
こんにちは。
ご教授くださいませ。
すでに先方が作っているエクセルのシートがありまして、
そのシートの表組み規則にのっとって入力するユーザーフォーム
を私のほうで作ったのですが、重いです。
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ではない、スマートな方法があればと思います。
ぜひお知恵を!
お礼
ありがとうございます。 Sub Macro() Dim rng As Range Const Start As String = "A1" '←フリガナを振る漢字の一番上のセル For Each rng In Range(Range(Start), Cells(65536, Left(Start, 1)).End(xlUp)) rng.SetPhonetic rng.Phonetic.Text = Application.Phonetic(rng) Next rng End Sub 上記のように追加して実行できました。(PHONETICをキーワードにして調べました)
補足
実行してみましたが、結果は A列に漢字をセットしていますが、その同じA列に小さいカナではなく漢字の小さいルビが漢字の上部に表示されるだけですが、これは正しい実行結果でしょうか。