忍者ブログ

各フォームを呼び出すランチャーマクロ(ランチャー5)

2021年03月20日
ここのところユーザーフォームを使ったマクロを作ってきた。

第1弾 文頭および文末に文字を挿入するマクロ
第2弾 文頭および文末の文字を削除するマクロ
第3弾 Mid関数で文字を切り出すマクロ
第4弾 指定位置に文字を挿入するマクロ
今回は、第1弾~第4弾で作ったフォームを呼び出すフォーム作った。

ポイントは、数値の入力制限で使用した_KeyDownプロパティを使って
単一キー操作で各フォームを呼べるようにしたこと。

_KeyDownプロパティは、ユーザーフォームに対しては指定できないので、
TabIndexが1のキャンセルボタンに対して_KeyDownプロパティを設定。

起動時にアクティブになっているボタンに設定することがポイント。
ダウンロード



ちなみに、これらマクロを作ったきっかけである
1文字目の「’」のコントロールは残念ながらできなかった。。。

ユーザーフォームは、各オブジェクトを作るのがめんどくさいけど、
今回、_KeyDownプロパティで各モジュールを呼べることが分かったので
キー一覧書いたテキストボックスに_KeyDownプロパティを設定するのもありかな。
以下ソース

PR
つづきはこちら "各フォームを呼び出すランチャーマクロ(ランチャー5)"

指定位置に文字を挿入するマクロ(ランチャー4)

2021年03月20日
前回、Mid関数で文字を切り出すマクロを作った。

文字の挿入も指定位置でできた方がいいなってことで作ってみた。

今回は、新しいことは何もないので、詳細省略。

ブログに公開するタイミングでバグが見つかる。。。


ユーザーフォームで入力箇所を数値指定して、
テキストボックスに入力した文字を挿入する。

ダウンロード



以下、ソース
つづきはこちら "指定位置に文字を挿入するマクロ(ランチャー4)"

Mid関数で文字を切り出すマクロ(ランチャー3)

2021年03月20日
前回、文頭および文末の文字を削除するマクロを作った。

ユーザーフォームで削除対象の文字を確認しながら
上下ボタンで文字数を設定できるUIが便利だった。

いつもMid関数で何文字目か調べるのがめんどくさいので、
Midで抜き出すバージョンを作ってみた。

基本的な作りは前回と全く同じ。

Leftの代わりにMidでSample文字を表示する仕様に変更。
文字数を指定しないとすぐに表示できないので、
文字数のデフォルト値を10に設定した。
マクロで文字を確認してMid関数を使う方が多そう。


ダウンロード


プロパティは以下のとおり。

オブジェクト名:strMidForm(フォーム名)
Caption(表示名):MID(selection,開始文字,文字数)

オブジェクト名:stPos '開始位置
TabIndex(タブ遷移の順番):1
IMEMode(日本語入力制御):2 (fmIMEModeOff) 英語モード
TextBoxに数字のみ入力させる 【VBA在庫管理#33】 | オレグラミング (oregramming.com)

オブジェクト名:Ln '文字数
TabIndex(タブ遷移の順番):2
IMEMode(日本語入力制御):2 (fmIMEModeOff) 英語モード
Value(デフォルト値):10 

オブジェクト名:CommandButton1 ’キャンセルボタン
Accelerator(操作キー Alt + ...):C
Cancel(ESCキー紐づけ):True
TabIndex(タブ遷移の順番):4

オブジェクト名:CommandButton2 '実行ボタン
Accelerator(操作キー Alt + ...):M
TabIndex(タブ遷移の順番):3

オブジェクト名:SampleMid 'Mid後の文字サンプル表示
TabStop(タブ遷移の対象):False
TextAlign(テキスト位置):2 fmTextAlignCenter(中央揃え)

以下、ソース
つづきはこちら "Mid関数で文字を切り出すマクロ(ランチャー3)"

文頭および文末の文字を削除するマクロ(ランチャー2)

2021年03月20日
前回、文頭および文末に文字を挿入するマクロを作った。

マクロの実行はCtrl+Zで戻せないので、元に戻すためのマクロを作る。

今回もめんどくさいけど、ユーザーフォームで。

文頭と文末から削除する文字数を指定するフォームを用意。
フォームに入力可能な文字を数値に制限するため、キーコントロールを実施。
数値専用のテキストボックス|ユーザーフォーム入門 (excel-ubara.com)

KeyCode = 0とすると、キー入力を無視する。
Acceleratorで指定した文字やESCキーのキャンセルも
KeyCode = 0の条件に入っている場合は操作が効かないので注意。
数値入力めんどくさいから上下操作もできる面白いな。
キーコントロールのソースを見たら簡単そうだったので実装。
(Case vbKeyUp、Case vbKeyDownで指定するだけ)

上下操作で数値を増減させるけど、キー入力に備えてデフォルトはブランクに。
数値型だとブランクの場合に計算エラーが出るので
バリアント型で変数を受けて、数値型の変数を別途定義して計算。


何文字削除したらどうなるか事前に知りたいよな。
サンプル表示用のラベルを用意し、selection(1)で削除対象の文字を表示。

キーコントロールの最後に表示制御を入れていたら、
直接数値入力時に更新されないバグが発生。
「_change」で別途指定が必要だったので修正。



ダウンロード


デフォルトから変更したプロパティは以下の通り。

オブジェクト名:strTrimForm(フォーム名)
Caption(表示名):セルの両端の文字列を削除

オブジェクト名:stLen '文頭から削除する文字数
TabIndex(タブ遷移の順番):1
IMEMode(日本語入力制御):2 (fmIMEModeOff) 英語モード
TextBoxに数字のみ入力させる 【VBA在庫管理#33】 | オレグラミング (oregramming.com)

オブジェクト名:edLen '文末文字
TabIndex(タブ遷移の順番):2
IMEMode(日本語入力制御):2 (fmIMEModeOff) 英語モード

オブジェクト名:CommandButton1 ’キャンセルボタン
Accelerator(操作キー Alt + ...):C
Cancel(ESCキー紐づけ):True
TabIndex(タブ遷移の順番):4

オブジェクト名:CommandButton2 '実行ボタン
Accelerator(操作キー Alt + ...):T
TabIndex(タブ遷移の順番):3

オブジェクト名:SampleLeft '文頭の削除対象文字サンプル表示
TabStop(タブ遷移の対象):False

オブジェクト名:SampleRight '文末の削除対象文字サンプル表示
TabStop(タブ遷移の対象):False

以下、ソース
つづきはこちら "文頭および文末の文字を削除するマクロ(ランチャー2)"

文頭および文末に文字を挿入するマクロ(ランチャー1)

2021年03月20日

エクセルで文字列として入力する場合、「’」を1文字目に入力する。

まとめて文字列にしたり戻したり出来たら便利だなってことで
文頭に文字を追加したり、1文字目を消したりするマクロを作ろうか。

文頭と文末どっちも操作できるといいかもってことで
ユーザフォームを使って作ってみた。

通番も一緒にできたら面白いので、
入力フォームに「¥n」を入力したら通番を振る仕様に。


ユーザーフォームは使い勝手はいいかもしれないけど、
いかんせん作るのがめんどくさい。

オートシェイプでお絵描きをして、
描いた絵の全部品の設定を調整しないといけない。

文頭と文末に挿入する文字の入力用にそれぞれ入力フォームを用意。
キャンセルボタンと実行ボタンを作り、ショートカットキーを設定。
キャンセルボタンにESCキーを紐づけ。
タブ遷移順序を調整して、文頭、文末、実行ボタンの順にEnter遷移可能にした。

ダウンロード




今回デフォルトから変更したプロパティは以下の通り。

オブジェクト名:strAddForm(フォーム名)
Caption(表示名):セル内容の両端に文字列を追加

オブジェクト名:stText '文頭文字
MultiLine(改行可否):True
TabIndex(タブ遷移の順番):1

オブジェクト名:edText '文末文字
MultiLine(改行可否):True
TabIndex(タブ遷移の順番):2


オブジェクト名:CommandButton1 ’キャンセルボタン
Accelerator(操作キー Alt + ...):C
Cancel(ESCキー紐づけ):True
TabIndex(タブ遷移の順番):5

オブジェクト名:CommandButton2 '実行ボタン
Accelerator(操作キー Alt + ...):A
TabIndex(タブ遷移の順番):4


以下ソース
つづきはこちら "文頭および文末に文字を挿入するマクロ(ランチャー1)"