エクセルVBAでセルを選んでも画面は動かないようにする方法

ウィンドウ操作

スポンサーリンク


スポンサーリンク


スポンサーリンク

セルを移動するたびに画面が動かないようにしたい

ユーザーフォームを使っていて、様々なVBAコードを書いて繰り返し作業などやセルに入力するのにコマンドボタンを使いますよね。

例えば、ユーザーフォームに配置されたコマンドボタンを押すと特定のセルに移動する場合ならば、当然移動先のセルに画面も移動してくれないと困るのですが、テキストボックスに入力した文字や数字を指定したセルに転記するだけの場合は画面が移動しなくてもいい場合がありますよね。

実際、エクセルで作った住所録を使っている時に、入力フォームを使っていて入力するたびに画面があちこちに移動してしまい、そのたびに画面が一瞬だけ入力したセルに移動してから元の画面に戻るのでちらついた感じになってしまいます。

波乗りアヒル
波乗りアヒル

困ることは無いのですがなんとなく目障りで、このちらつき何とかならないかなあって思いませんか?

ScreenUpdatingでちらつき防止

やっぱりありますよね。画面更新で探せば見つかったのですね。でも画面更新って単語でヤフーやグーグルで検索するなんて思いつきませんでした。その為になかなか見つからなかったのですね。

この「ScreenUpdating」を使うと先ほどお話しした通り、住所録を入力ボタンを押して指定したセルにテキストボックスの値をセルに転記しても画面は動かないように出来ました。

そしてついでに処理速度が画面が動かない分速くなるらしいのですが、実際使っていて全く感じません。

もっと知識のある人が複雑なVBAコードを書いていたら速さの体感できるのかな?

では、実際に使っているVBAコードを書いたので参考になりますように。

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Range(“AA2”).Value = TextBox1.Value
Dim mycell As Range
Set mycell = Range(“A2:A100”).Find(What:=Range(“AA2”).Value, LookAt:=xlWhole)
If Not mycell Is Nothing Then
mycell.Select
With UserForm2
For i = 2 To 9
UserForm2.Controls(“TextBox” & i).Value = mycell.Offset(, i – 1).Value
Next i
End With
Else
MsgBox “未登録番号です。新規登録フォームへ移動します”
Unload UserForm2
UserForm1.Show
Exit Sub
End If
Application.ScreenUpdating = True
End Sub
  1. コマンドボタン(CommandButton1)を押したら
  2. 画面移動は停止
  3. 3行目~18行目は住所検索して書き換えるコードです
  4. 画面移動は再開
  5. 終了

19行目の「画面移動再開」のVBAコードは書かなくてもいいかもしれませんが、一応念の為に、停止のままでは不都合があるかもしれないので、再開コードを入れておいて元の状態に戻しているだけです。

このようなコードを書いて、エクセルで作った住所録で顧客番号で検索すると、ユーザーフォーム上に見つけた名前や住所などの個人情報が表示されて、修正したい項目を書き換えるてコマンドボタンを押すとデータが書き換えられるようになります。

その為、検索すると見つけたセルに移動して、修正するたびに画面が移動してから元の状態のシートに移動するので画面がチョコチョコ動いていましたが、ScreenUpdatingを使うことにより、画面移動が防げるようになったので、とても快適になりました。

VBAコードは使い方も簡単で短いのですが、このコードを見つけるのに検索で苦労したって感じですね

波乗りアヒル
波乗りアヒル

最後に省略した3行目から18行目で使っているVBAコードについてはこちらをご覧くださいませ

各コントロールまとめて転記シリーズ

ユーザーフォームを使うと配置したコントロール(テキストボックスやラベルなど)とセルとの間で値のやり取りが多くなります。

よく使うのでまとめてみました。

値の場所転記したい場所説明ページ
セルの値ラベル名VBAコード
セルの値テキストボックスの値VBAコード
セルの値コマンドボタンの表示名VBAコード
セルの値セルの値VBAコード
テキストボックス入力値セルの値VBAコード
波乗りアヒル
波乗りアヒル

成績表作成には知っておきたいExcel-VBAもくじ

ボウリングハンデキャップのつけ方
HDCPの種類はリーグのルールにより複雑に ボウリングの成績表(リーグ戦)で必ず必要になるのが、ハンデキャップ(HDCP)です。 ボウリングご予約の時に一番多く使われているのが、女性にだけハンデキャップをつけてあげることが多いですね。 だいだい何点ぐらいのハンデキャップが多いの?
ボウリングリーグ対戦表の数字を名前に自動変換する方法
リーグ戦の対戦表をエクセルで作る時、数字で表されている番号を名前に自動的に変換できると作業時間が短くなり効率的ですね。たった2つのエクセル関数を使うだけで、簡単にできるんです。今回の回戦数を入力するだけで一発変換完了。もちろんお客様にスケジュール対戦表として渡すことも簡単ですよ。
人数に応じてリーグ対戦表を自動選択する方法
複数の表があり、条件に合った表を選んで、さらにセルの値を選んで数字を名前に自動変換できると、とても便利なエクセルができますよね。ボウリングのリーグ対戦表も人数により表が異なるので、参加人数が決まったら、自動的に表を選んで対戦番号がこれも自動的に参加者名に変換されると便利で作業効率がアップして時間短縮になりますよ。
波乗りアヒル
波乗りアヒル

エクセルの勉強お疲れ様です。ちょっとひと休みしませんか?

タイトルとURLをコピーしました