忍者ブログ

文頭および文末に文字を挿入するマクロ(ランチャー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


以下ソース

Sub Show_strAddForm() ’フォーム呼び出しモジュール
strAddForm.Show vbModal '・・・ モーダル表示 シート操作不可
'strAddForm.Show vbModeless '・・・ モードレス表示 シート操作可能
End Sub
Private Sub CommandButton1_Click() 'キャンセルボタン
'https://excel-ubara.com/excelvba3/EXCELFORM003.html
Unload Me 'ユーザーフォームを閉じる
End Sub
Private Sub CommandButton2_Click()  '実行ボタン
Call strAddMain(stText, edText)
Unload Me
End Sub

Sub strAddMain(stText As String, edText As String)
Dim r As Range, cnt As Long
For Each r In Selection
    cnt = cnt + 1
    If Left(r.Formula, 1) <> "=" Then
        r.Value = Replace(stText, "\n", cnt) & r.Value & Replace(edText, "\n", cnt)
    End If
Next r
End Sub

stText 、edText は、それぞれ文頭、文末に挿入する文字列で、
入力フォームの値。

PR
Comment
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字