システムwiki

検証の.inputmessageは文字列として宣言されていますが、表示されるメッセージは250文字に制限されています

JeHaVe 解決済 最終更新日:2020-08-20 14:46

私の検証ケースでは、25個の数字のリストを使用しており、そこから選択を行う必要があります..Inputmessageを使用して、各アイテムの関連情報を含む25個の数字のリストを表示します.このリストには約が含まれています.
500文字ですが、.ShoWinputボックスには、このtableの最初の数行の約250文字しか表示されませんが、このボックスではスクロールできません..Inputmessageと.ShoWinput-boxの容量を増やすことはできますか?

検証マクロのコード:

サブグループ()

'

'グループマクロ

'

範囲( "F6:F35").選択

Selection.Validationを使用

.削除

.Add Type:= xlValidateList、AlertStyle:= xlValidAlertStop、Operator:= _

xlBetween、Formula1:= "= $ M $ 6:$ M $ 30"

.IgnoreBlank=True

.InCellDropdown=True

.InputTitle="グループ番号"

.ErrorTitle=""

.InputMessage=_

「1Wages Management」&Chr(10)&「2Wagesスタッフ」&Chr(10)&「3Wages Employees」&「4Inventory」&Chr(10)&「5Machinery」&Chr(10) &「6ビル」&Chr(10)&「7エネルギー」&Chr(10)&「8トランスポート」&
Chr(10)& "9Taxes"&Chr(10)& "10Advertisement"&Chr(10)& "11Representation"&Chr(10)& "12Catering"&Chr(10)& "13Security service"&Chr (10)& "14Product Albert"&Chr(10)& "15Product Benjamin"&Chr(10)& "16Product Cornel"

.ErrorMessage=""

.ShowInput=True

.ShowError=True

次で終わる

End Sub

範囲F6:F35は、1~25の値のグループ番号を入力する必要があるセルです.

範囲$ M6:$ M30には25のグループ番号が含まれており、25行のtableに番号と各グループ番号の説明を.Inputmessage-boxにコピーしました.コピー後、tableのこれらの25行はすべてその中に存在します
マクロの記録がまだ閉じられていない限り、カーソルで上下に移動することですべてを確認できるので、メッセージボックスを入力します.

記録されたマクロでは、.Inputmessageにはこれらの25行のうち16行しか含まれていません.「16 Product Cornelis」と読む必要があるため、最後の行は完全ではありません.上記のマクロコードを参照してください.

.Showoutputメッセージは13行しか表示されないボックスであるため、「13 Security service」は表示される最後の行であり、そのボックス内のテキストをスクロールすることはできません.

さらに、.Showoutputのボックスは、クリックする検証対象のセルのすぐ近くにポップアップ表示されるため、そのセルのオプションをクリックした後にポップアップ表示される検証値のリストは、.Showoutputwindows と重なります.
その結果、各グループの番号を読み取ることができません.その.Showoutputボックスをより適切な位置にドラッグすることは可能ですが、検証する次のセルごとに、近くに再びポップアップして問題が繰り返されます.

ついに、Sting変数InfoGrpNmbrsを使用して、グループの説明を含む完全なtableの25行を読み取ろうとしました.

この声明の全文は次のとおりです.

'

Dim InfoGrpNmbrs As String

'

InfoGrpNmbrs="1Wages Management"&Chr(10)& "2Wages Staff"&Chr(10)

InfoGrpNmbrs=InfoGrpNmbrs& "3Wages Employees"&Chr(10)& "4Inventory"&Chr(10)

InfoGrpNmbrs=InfoGrpNmbrs& "5Machinery"&Chr(10)& "6Buildings"&Chr(10)

InfoGrpNmbrs=InfoGrpNmbrs& "7Eneregy"&Chr(10)& "8Transport"&Chr(10)

InfoGrpNmbrs=InfoGrpNmbrs& "9Taxes"&Chr(10)& "10Advertisement"&Chr(10)

InfoGrpNmbrs=InfoGrpNmbrs& "11Representation"&Chr(10)& "12Catering"&Chr(10)

InfoGrpNmbrs=InfoGrpNmbrs& "13Security service"&Chr(10)& "14Product Albert"&Chr(10)

InfoGrpNmbrs=InfoGrpNmbrs& "15Product Benjamin"&Chr(10)& "16Product Cornelis"&Chr(10)

InfoGrpNmbrs=InfoGrpNmbrs& "17Product Diderik"&Chr(10)& "18Product Edward"&Chr(10)

InfoGrpNmbrs=InfoGrpNmbrs& "19Product Ferdinand"&Chr(10)& "20Product Goerge"&Chr(10)

InfoGrpNmbrs=InfoGrpNmbrs& "21Product Henry"&Chr(10)& "22Product Isodore"&Chr(10)

InfoGrpNmbrs=InfoGrpNmbrs& "23Product Jamy"&Chr(10)& "24Product Karel"&Chr(10)

InfoGrpNmbrs=InfoGrpNmbrs& "25Product Leonard"

MsgBox InfoGrpNmbrs

'

tableが正しいかどうかを確認するために、table全体を表示するMsgboxステートメントを使用しました.

マクロ内の.Inputmessageステートメントは.InputMessage=InfoGrpNmbrsに置き換えられ、マクロを実行すると、.Inputmessageステートメントの処理中にVBAのランタイムエラー1004が発生しました.このためのヘルプ情報
エラーを解釈するのはかなり難しいです.

その後、マクロをもう一度実行しましたが、InfoGrpNmbrsの割り当てステートメントの最後の6行がコメントアウトされたため、テキストはgroupnumber 14の後に終了しました.マクロは以前と同じように再度動作しました
String InfoGrpNmbrの使用を紹介する前は、このアクションでは問題を解決できませんでした.

私の質問は次のとおりです.

・入力メッセージは文字列変数として定義されているため、約500文字のtableを使用する場合は、その長さで十分です.

・出力メッセージの入力ボックスが16行のみに制限されているのはなぜですか、たとえば約300文字です

・.Showoutputボックスが13行のみ、つまり約250文字に制限されているのはなぜですか.

・.Showoutput-boxの位置を、検証対象のからのオフセットが少し多い位置に制御することは可能ですか?
クリックされたセル.

jhv42

返信リスト(回答:2)

1 #
HansVMV

入力メッセージの最大サイズは255文字です.これはハードリミットです.

Textboにデータ検証メッセージを表示するをご覧ください. xの代替案.

応答1# ->にスキップ
2 #
JeHaVe 1

ハンス、ありがとう

入力メッセージのサイズに関するハード制限は知らなかった.

私はあなたの提案とそこに含まれる情報を研究し始めます.

質問が解決するようです.