スポンサーリンク

指定したセルを画面左上にスクロールする

パソコン難しいExcel-VBA
スポンサーリンク

画面左上は移動はscrollrowとscrollcolumnを組み合わせる

ボウリング場のリーグ戦の成績表でも使っているエクセルで、リーグ戦参加者の成績表を入力する為の専用フォームに配置した、ネームプレート(コマンドボタン)を作成しています。

スコアーを入力したい参加者のネームプレートを押すとその個人のスコアー表へ確実に移動させます。

このコマンドボタンを41個配置した【選手選択】フォームの使い方については、「ボウリング個人スコアー入力方法~LTB個人リーグ編」に記載していますので、ここでは省略します。

ボウリング個人スコアー入力方法~LTB個人リーグ編
エクセルでビジュアルベーシック(VBA)を使わずに作成していると、入力したい参加者の名前を探すためにシートを選択したりスクロールしたり、とても大変で時間ばかり無駄にかかってしまい非効率です。個人のレコードシート!ユーザーフォームを使えば、瞬間移動できるのです。

このコマンドボタンに単純にセルへ移動するVBAコードを書いてしまうと、意図しない位置に表示されてしまいます。

Private Sub CommandButton1_Click()
Range(“CB4”).Value
End Sub

まだ、真ん中ぐらいに移動してくれればいいけど、どうせなら、画面左上にきちっと移動してほしい。

更に縦(行)も移動を加えると表の真ん中ぐらいで切れたりして使い物にならない。

そこで、scrollrowとscrollcolumnを組み合わせることにより、コマンドボタンを押したら必ず画面左上にスクロールしてくれます。

※画像スペースの関係で18週目まで切り取って表示しています。

では実際には、このようなコードを書いています。
Private Sub CommandButton2_Click()
With ActiveWindow
.ScrollRow = 51
.ScrollColumn = 79
End With
Range(“CB93”).Select
End Sub
  1. 「コマンドボタン2をクリックしたら実行する」というマクロの記述を開始
  2. 画面操作を指示するWithステートメント開始
  3. 51行目にスクロール(移動)
  4. 79列目にスクロール(移動)
  5. Withステートメント終了
  6. セルCB93を選択
  7. マクロ記述終了

これはコマンドボタン2の記述なので選手番号2の神田さんです。同じように選手40までは列は同じなので、行番号とセル番地を変更するだけで使えるようになります。

ま、40回コード書くのが大変ですけど、完成すれば、個人スコアー表を探すのにワークシート上でスクロールして探すことがなくなるので、ボウリング成績表では絶対必要で時間短縮効果が高いVBAコードです。

難しくないでしょ!ここでの説明で使用した参考ページで、各ボタンの説明やマニュアルを記載しています

ボウリング個人スコアー入力方法~LTB個人リーグ編
エクセルでビジュアルベーシック(VBA)を使わずに作成していると、入力したい参加者の名前を探すためにシートを選択したりスクロールしたり、とても大変で時間ばかり無駄にかかってしまい非効率です。個人のレコードシート!ユーザーフォームを使えば、瞬間移動できるのです。

Excel-VBAもくじへ

コメント