超入門Excel関数・VBA

エクセルVBA

・基本

基本

マクロの記録

マクロの実行

記録したマクロの統合・呼び出しを行う

VBA編集画面に関して

VBA編集画面のツールバーの設定

オプション設定に関して

処理の新規作成・削除、保存と読込に関して

標準モジュールとプロシージャについて

処理のテスト方法(ステップイン)

処理のテスト方法(入力カーソルを使用する)

処理のテスト方法(再生と停止)

イミディエイトウィンドウに関して


・セル関連

セルの指定(アクティブと選択の違い)

セルの指定(範囲指定)

選択の基本2

選択範囲を追加する

セルへの値入力の基本1

セルへの値入力の基本2

移動の基本

情報を取得する

コピー、切り取り、貼り付け

挿入

選択の応用

空白セルに移動する

範囲内に空白以外のデータがあるかを調べる


・変数関連

基本 / 宣言の基本 / 宣言の基本2 / 宣言の基本3

変数型の詳細 / 変数の重要な話

計算をする


・If、Select分岐関連

If分岐 基本 / Select分岐 基本


・ループ処理関連

基本

Do Until(成り立つまでループ)

Do While(成り立つ間ループ)

Do 途中判定と応用

For 基本

変数で回数を指定する

空白や指定した列、行数までの移動


・メッセージ表示関連

メッセージを表示する

文章入力に関して


・イベント関連

基本 / ブック / シート


・ファイル、フォルダ関連

同じ箇所にフォルダを作成する


・関数関連

Fix関数


・その他

ユーザー関数 volatileの注意点

オフセットとセルの結合に関して 参照する時等

オフセットとセルの結合に関して 移動する時


・実践

アンケートシートを作成する1 / ←2

←3 / ←4

VBAユーザーフォーム

・基本

基本


埋め込み型

・フォームコントロール

ボタン

コンボボックス

リストボックス

チェックボックス

オプションボタン

スピンボタン

スクロールバー

入力フォームを作ってみる(概要説明)

入力フォームを作ってみる(氏名、管轄)

入力フォームを作ってみる(売上集計日)

入力フォームを作ってみる(商品情報)

入力フォームを作ってみる(実データの入力範囲)

入力フォームを作ってみる(登録処理の作成)

入力フォームを作ってみる(仕上げ)


表示型

・基本

基本(フォームの新規作成方法)

コントロールの位置とサイズ調整方法

複数のコントロールの位置とサイズ調整方法

コントロールのレイヤー設定

コントロールに処理構文を作成する


・コントロール

スピンボタン


・イベント

基本

AfterUpdate(入力内容の確定直後)

BeforeUpdate(入力内容の確定直前)

Change(内容変更時)

Change(Tab-Multi)

Click(マウスクリック時)

Enter(フォーカス取得時)

Exit(フォーカス移動直前時)

Initialize(フォームの起動時)

QueryClose(フォームの終了時)

その他1 / その他2


・プロパティ

基本

(オブジェクト名)(コントロールの名前)

AutoTab(選択状態の自動更新)

BackColor(背景色)

BorderColor-BorderStyle(枠線の色と表示)

Caption(表示文字列)

ControlSourse(リンクさせるセル)

ControlTipText(ポップアップの文字列)

Enabled(操作の有効無効)

EnterKeyBehavior(Enterキーの動作)

Font-Forecolor(表示文字列の色と種類)

Height-width(高さと幅のサイズ)

Left-Top(表示位置)

Locked(編集の有効無効)

MaxLength(文字数の制限数)

MultiLine(改行の有効無効)

ScrollBars(スクロールバーの表示設定)

ScrollHeight-ScrollWidth(スクロール可能な範囲)

ShowModal(ユーザーフォームの操作方法)

SpecialEffect(枠線の種類)

StartUpPosition(ユーザーフォームの表示位置設定)

TabIndex-TabStop(選択の順番と有効無効)

Tag(識別用設定値)

TakeFocusOnClick(クリック時のフォーカス取得)

TextAlign(文字列の横揃え位置)

Visible(表示、非表示)

Zoom(表示倍率)


・作成例

フォームの範囲外をスクロールバーで表示する

オプションボタンで選択されたものを見つける

選択項目によって説明文を切り替える

フォームの自動サイズ調整をする

コントロールのフォーカスを移動する

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

画面サイズに合わせてユーザーフォームの大きさを自動調整する

解説動画


ユーザーフォームのサイズが使用PCによって表示サイズが違うので
小さい方に合わせて作成した場合、表示領域の広いPCでは
フォームが小さくなって使用しにくくなることがある場合があります

そういった場合には、画面のサイズから判断して
フォームのサイズを自動的に調整してあげれば
作成者としては、一つのサイズのフォーム作成で済みますね

Private Sub UserForm_Initialize()


'画面の自動サイズ調整処理

'1-画面のサイズの基本とするためにExcelを最大化する
Application.WindowState = xlMaximized

'2-最大化したExcelの高さを元にフォームの大きさを計算する
UserForm1.Height = Application.Height - 20 '20の数値は使用環境に合わせて微調整する
'3-フォームの高さを元に横幅の計算をする
UserForm1.Width = UserForm1.Height * 1.2 'おおよそ、標準なら1.2/ワイドなら1.5ぐらいかな

'4-フォームの表示位置の調整(StartUpPositionを手動で有効)
UserForm1.Top = 0 '上端に合わせる
UserForm1.Left = (Application.Width - UserForm1.Width) / 2 '画面の真ん中に合わせる

'5-元のフォームの横幅の数値を元に表示倍率を計算する
UserForm1.Zoom = Round(UserForm1.Width / 310, 2) * 100 '310は作成時の横幅数値


End Sub

順番に構文の解説をします


'1-画面のサイズの基本とするためにExcelを最大化する
Application.WindowState = xlMaximized


基本的に、PC画面のサイズを直接は取得しません
それにはAPIというものを使用する必要があるからです
これには知識が必要なので、あまりAPIは触らない方が良いようです

表示領域のサイズ取得は、Excelを最大化し
そのウィンドウサイズを取得する
ことから行います
なので、まずはExcelを最大化します


'2-最大化したExcelの高さを元にフォームの大きさを計算する
UserForm1.Height = Application.Height - 20 '20の数値は使用環境に合わせて微調整する


まずは、フォームの高さを取得します
Excelのウィンドウサイズから20pt引いた数値を取得します
この20という数値に意味はありません
同じサイズだと微妙に画面からはみ出てしまう事があるので
それの回避のためのサイズ調整です
使用PCで微調整をしてあげればいいです


'3-フォームの高さを元に横幅の計算をする
UserForm1.Width = UserForm1.Height * 1.2 'おおよそ、標準なら1.2/ワイドなら1.5ぐらいかな


高さが確定したら、その数値から横幅も計算します
これは、高さとの割合で計算します

標準のブラウザなら1.2ぐらいで、ワイド画面なら1.5ぐらいが丁度いいと思います

つまり、ここで重要な事は初期サイズがこの数値と同じ割合で作成する必要がある
ということです
たとえば、正方形のフォームであれば、倍率を入れる必要はありません(1.0になる)
高さが300、横幅が390のフォームを作成したなら1.3になる
という感じになりますね

この割合を考慮せずに作成すると当然、表示が乱れます


'4-フォームの表示位置の調整(StartUpPositionを手動で有効)
UserForm1.Top = 0 '上端に合わせる
UserForm1.Left = (Application.Width - UserForm1.Width) / 2 '画面の真ん中に合わせる


ここは表示位置の調整です
画面の中央でいいなら、この構文は必要ありません
この構文は「上詰め・左右中央揃え」の位置にするようになっています

また、ユーザーフォームのプロパティの「StartUpPosition」の設定も手動にしておかないと反映されません
設定方法はこちら


'5-元のフォームの横幅の数値を元に表示倍率を計算する
UserForm1.Zoom = Round(UserForm1.Width / 310, 2) * 100 '310は作成時の横幅数値


表示倍率を変更する

フォームのサイズが変更されても、中に設置しているコントロールは変化はありません
ここで表示倍率の変更を行い、中のコントロールも見た目上サイズを変更します

450という数値は、作成時のフォームのサイズ数値です
ようは、作成時の数値との割合を計算してるだけですね
なので、ここは変更が必要になりますよ

注意点としては、Zoomプロパティの設定可能領域が10~400となっていますので
元のサイズと画面サイズの違いが大きすぎるとエラーになってしまいます


ただ、そんな状況はそうそうないと思うのでエラー時の処理は作成していません
そもそも4倍以上の大きさになるフォームは小さすぎるし
10分の1にしないといけないフォームもデカすぎるしw


これで、表示サイズが自動調整されます
ただ、この方法はあくまでも自動調整になるので
微妙に表示が差が生じることがあります

こればっかりは、作成しながら微調整を行うしかありません
あまりひどい場合はこの処理は使用できないかもしれません~


最後に実際の差の画像です
フォームの自動サイズ調整1
通常時

フォームの自動サイズ調整2
構文使用時

スポンサーサイト


 | トップに戻る |  前の記事へ


トップに戻る

Powered by FC2ブログ

FC2Ad

Copyright © 田中大五郎のExcelVBAばなし All Rights Reserved.

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。