- ベストアンサー
エクセルマクロが重い
- エクセルのマクロを使用してシートにデータを入力する際に、処理が重い問題が発生しています。選択肢の多用やセルへの順番に基づく移動などが原因と考えられます。効率的な方法を知りたいです。
- エクセルマクロを使用してデータ入力を行う際に処理が重くなります。セルへの移動やテキストボックスの値の入力に問題があります。スマートな方法を教えてください。
- エクセルのマクロを使用してデータ入力を行う際に処理が重くなっています。ユーザーフォームで入力されたテキストボックスの値をセルに入れる処理が重要なポイントです。効率的な方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
■簡単な方法 '--------------------8時から If OptionButton1.Value = True Then activecell.offset(3, -1) = userform3.textbox1 activecell.offset(3, 0) = userform3.textbox2 activecell.offset(3, 1) = userform3.textbox3 activecell.offset(3, 2) = userform3.textbox4 activecell.offset(3, 3) = userform3.textbox5 activecell.offset(3, 4) = userform3.textbox6 activecell.offset(6, -1) = userform3.textbox7 activecell.offset(6, 0) = userform3.textbox8 activecell.offset(6, 1) = userform3.textbox9 activecell.offset(6, 2) = userform3.textbox10 activecell.offset(6, 3) = userform3.textbox11 activecell.offset(6, 4) = userform3.textbox12 : 以下同文 : 'ActiveWorkbook.Save MsgBox "入力しました。", vbInformation, "確認" End If ★もうちょっと違う方法 dim i,j '--------------------8時から If OptionButton1.Value = True Then for i = 0 to 4 for j = 1 to 6 activecell.offset( i * 3 + 3, j - 2) = me.controls("TextBox" & (i * 6 + j)) next j next i 'ActiveWorkbook.Save MsgBox "入力しました。", vbInformation, "確認" End If #補足 そもそも「セレクトしないマクロ」を書くというのは,「マクロで変数を使う事を覚える」のとほとんど同義です。 ユーザーフォームまで手を出す段階に来たなら,変数を使いこなすスキルは「絶対に必要な要件」です。マクロの参考書とか使い,ガンバってもう一歩先を勉強して下さい。 >その条件に応じて始基点となるセルが変わります。 前述までの回答は,「始基点のセルをセレクトする」ところは今のプログラムのまま使用する前提で書いてあります(どんな具合にセレクトしてるのかご相談に掲示されていませんのでね)。 でも, 変更前に例えば: worksheets("シート名").cells(行番号, 列番号).select のようにしてActivecellにしている部分を set 始点セル = worksheets("シート名").cells(行番号, 列番号) に改め, 始点セル.offset(3, -1) = userform3.textbox1 などのような書きぶりにしていきます。 そうやって「始点セル」を「アナタのプログラムで自力で取得する」ことを覚えれば,更に実際には今みたいに「なぜか中途半端な場所にActivecellがあって,わざわざ最初からそこから3下がって1つ左から開始」みたいなちゅうぶらりんなことを止めて,さっさと「最初のTextBox1が入るセル」を基点セルとして計算し利用するといった,もっと明確にすっきりしたプログラムに直す事もできるようになります。
お礼
神現る(笑 大変!参考になりました。 これは... >for i = 0 to 4 for j = 1 to 6 activecell.offset( i * 3 + 3, j - 2) = me.controls("TextBox" & (i * 6 + j)) next j next i 美しい。。。(笑 なかなか私の場合、知識を詰め込むことは しても、それを咀嚼し応用していく、 センスがないというか、ないんですよ... 私の物事全般ですが...ハイ^^; 本当にありがとうございました! 今後ともよろしくお願いいたします。