[[20220116080652]] 『拡張InputBox又はuserform版のInputBoxのサンプル』(Inoue) >>BOT

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『拡張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


Inputboxのフォントサイズはwindows側の設定値を参照しているようです。
ということは、理屈の上ではapiを使って制御できそうですが、かなりの難易度だと思います。
諦めて、ユーザーフォームを使う方がいいです。

ユーザーフォームから値を受け取る方法はいくつか考えられますが、簡単なのは標準モジュール側でグローバル変数を使う方法だと思います。
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


サイトの「InputFrmフォームの使用例」より先は、
使用例なので入力の必要はありません。

「ユーザーフォームモジュールのコード」を貼り付けたら、

 a = InputFrm.Result("入力してください。")

のように使えばいいです。

(今日はPC環境がないので試していませんが。)
(ひまつぶし) 2022/01/16(日) 13:10


 そもそも何をやりたいのですか。
 当初の質問では InputBox のフォントサイズを変更するだったはずですが。
 貴方が提示している URL はその内容については記載されていませんよ。
 それとも InputBox の使用方法が分からないということですか。
(nm) 2022/01/16(日) 13:55

>VBA素人なので間違った解釈でしょうか ?

というより、メインのブックで試さないで 壊れても支障がないように
新しいブックで色々試せばいいと思うよ。
VBA素人を誇張するならなおさら色々自分で同じことを何度も試しまくること。
その結果、挙動を発見、自分なりに分析できるようになれば。

色々試せば、InputBox、ユーザーフォームのどちらを使えば
自分にとって便利なのか解るかと。

(今でも初級) 2022/01/16(日) 13:58


ああ、InputBoxの文字の大きさの件。

角田さんの拡張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.