[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『拡張InputBox又はuserform版のInputBoxのサンプル』(Inoue)
InputBOXについて、使用するフォントの種類や文字サイズを指定することは出来ないようで
以下のURLによるとUserFormで自作するようにとの事でした。
http://officetanaka.net/excel/vba/tips/tips37.htm
ただ、MsgBoxの表示については、調べたら
角田さんの拡張MsgBoxと言えるktMsgBoxAddinが有り
ktMsgBoxAddinでは、使用するフォントの種類や文字サイズを指定することが可能なようです。
InputBoxについては、拡張的な記事やアドインなどは見つかりませんでした。
やはり、自前のUserFormを作成するしか方法は有りませんか ?
userform版のInputBoxのサンプルなどを教えてもらえれば助かります。
(目が弱い私には、
InputBox内の表示が小さいのでフォントやフォントサイズだけでも指定できれば十分です。)
< 使用 Excel:Office365、使用 OS:Windows10 >
https://www.google.com/search?q=inputbox+userform+vba
(ひまつぶし) 2022/01/16(日) 09:26
ユーザーフォームから値を受け取る方法はいくつか考えられますが、簡単なのは標準モジュール側でグローバル変数を使う方法だと思います。
https://excel-ubara.com/excelvba3/EXCELFORM009.html
(DS) 2022/01/16(日) 09:44
https://hatenachips.blog.fc2.com/blog-entry-522.html
ユーザーフォームに5つのオブゼクトを配置して
それぞれの名前を指定する名前に変更することはできました。
InputFrm lblPrompt txtImput cmdOK cmdCancel
そして
「ユーザーフォームのモジュールに下記のコードをコピーして貼り付けます。」
ここは、lblPromptのプロパティにあるCaptionを手動で「入力してください。」に変更すれば
Private Sub CommandButton1_Click() Me.Label1.Caption = InputFrm.Result("入力してください。") End Sub
のコードは必要ないと思うのですが ?
それと、
CommandButton1_Click() とありますが、
コマンドボタンは、cmdOKとcmdCancelと変名済みなのでCommandButton1では整合性が取れていないと思います。
(CommandButton1の名前で呼ばれるボタンは無い )
次の以下でも
Private Sub CommandButton1_Click() Me.TextBox1.Value = InputFrm.Result("入力してください。", Me.TextBox1.Value) End Sub
テキストボックスもtxtImputに変名済みなのでTextBox1では同じく整合性が取れていないと思います。
VBA素人なので間違った解釈でしょうか ?
又、どこにどのコードをコピぺするかも私には判り難くい状態です。
(Inoue) 2022/01/16(日) 12:21
「ユーザーフォームモジュールのコード」を貼り付けたら、
a = InputFrm.Result("入力してください。")
のように使えばいいです。
(今日はPC環境がないので試していませんが。)
(ひまつぶし) 2022/01/16(日) 13:10
そもそも何をやりたいのですか。 当初の質問では InputBox のフォントサイズを変更するだったはずですが。 貴方が提示している URL はその内容については記載されていませんよ。 それとも InputBox の使用方法が分からないということですか。 (nm) 2022/01/16(日) 13:55
というより、メインのブックで試さないで 壊れても支障がないように
新しいブックで色々試せばいいと思うよ。
VBA素人を誇張するならなおさら色々自分で同じことを何度も試しまくること。
その結果、挙動を発見、自分なりに分析できるようになれば。
色々試せば、InputBox、ユーザーフォームのどちらを使えば
自分にとって便利なのか解るかと。
(今でも初級) 2022/01/16(日) 13:58
角田さんの拡張MsgBox「tMsgBoxAddin」
を使うのがいやだったら。自分でAPIなりを勉強しないといけません。
参考資料となるものは、おそらく日本語ではない。
(今でも初級) 2022/01/16(日) 14:07
ユーザーフォームで代替して、フォントサイズを大きくして使いたい、 と言うだけの事ですよね?
1.ユーザーフォームモジュールに
Private sResult As String
Private Sub UserForm_Initialize() Me.txtInput.Font.Size = 14 'フォントの大きさを任意に指定する Me.lblPrompt.Font.Size = 14 Me.Caption = "Replace" End Sub
Public Property Get Result(Prompt As String, Optional Default As String) As String Me.lblPrompt.Caption = Prompt Me.txtInput.Value = Default Me.Show vbModal Result = sResult Unload Me End Property
Private Sub cmdOK_Click() sResult = Me.txtInput.Value Me.Hide End Sub
Private Sub cmdCancel_Click() sResult = "" Me.Hide End Sub
2.標準モジュールで使うサンプルコード
Sub test() Dim Replace_moji Dim mg As String
mg = "置換する文字列をカンマ区切りで指定してください。" & Chr(13) & _ "既定値は、最初の「(」のみを削除するようにしています。" & Chr(13) & Chr(13) & _ "「(」を指定の場合、2回めの「(」は削除対象外です。"
Replace_moji = InputFrm.Result(mg, "(")
MsgBox Replace_moji End Sub
(半平太) 2022/01/16(日) 15:37
>サイトの「InputFrmフォームの使用例」より先は、
>使用例なので入力の必要はありません。
「InputFrmフォームの使用例」より先は、使用例のため記事だったのですね。
納得しました。
URL記事内のミスを発見しました。
オブゼクト名をtxtImputと変更するように書いていますが コードではMe.txtInput.Value = Defaultなので txtInputと変更(統一)しました。
オブゼクト名をtxtInputに変更して標準モジュールに下記のコードを記入、
上手くユーザーフォームにInputBox似の表示が出ました。
Option Explicit
Sub test()
Dim a As String
a = InputFrm.Result("入力してください。")
End Sub
’-----------------------------------------------------------------------
今でも初級さん、助言感謝します。
>角田さんの拡張MsgBox「tMsgBoxAddin」
>を使うのがいやだったら。
拡張MSGBox機能と思っていたのですが
角田さんのktMsgBox 関数 をよく読んでみると
InputBox機能も利用できるのですね。
浅はかな見落としで恥ずかしい
’-------------------------------------------
半平太さん、
昨日の「『削除候補を複数個指定して文字列から削除する方法』」に沿った
ユーザーフォームで代替案ありがとうございます。
目に優しい表示になるので嬉しいです。
txtInputやlblPromptのフォントサイズは
ユーザーフォームのプロパティでFONTを手動で直接操作する方法(数値を設定する)は理解していましたが
コードで変更できる事を学びました。
ありがとうございます。
(Inoue) 2022/01/16(日) 17:14
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.