問題タブ [userform]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
584 参照

excel - 1 つのラベルに 3 つの Excel 列を挿入する

3 列のデータがあります。vba を使用して userForm のラベルに情報を挿入する方法はありますか?

これが私が持っている更新されたコードです:

0 投票する
1 に答える
12257 参照

excel - ラベルにスクロールバーを追加する

userFormにラベルがあり、その中のデータはリスト形式です。データはラベルよりも長くなっています。ラベルを展開せずに、スクロールバーを追加する方法はありますか?または別のオプションはありますか?基本的に、リストがボックスより長くない限り、スクロールバーのないボックスが必要です。次に、スクロールバーがあります。

ExcelvbauserFormを使用する

0 投票する
2 に答える
2976 参照

excel - メソッドまたはデータ メンバーが見つかりません

コードを実行すると、このエラーが発生します。これは、この投稿の続きです: スクロール バーをラベルに追加する

最初に、ワークシートから情報を取得するラベルを持つ userForm を作成しました。スクロール バーを追加して、ラベルよりも長い場合にラベル内のリストを表示できるようにしました。テキストボックスを試すように言われました。私は自分のコードから次の行を取り出しました:

それをコピーして、テキスト ボックスの後に番号 1 を追加したので、テキスト ボックスのコードは次のようになります。

エラーがあるのはこの行です(投稿のタイトル)。

ここに画像の説明を入力

0 投票する
7 に答える
62244 参照

vba - Excel VBA ユーザーフォーム - 何かが変更されたときに Sub を実行する

多くのテキスト ボックスを含むユーザー フォームがあります。これらのテキスト ボックスの値が変更されるたびに、サブルーチン AutoCalc() を呼び出して、テキスト ボックスの値に基づいて最終結果の値を再計算する必要があります。

私は約25個のボックスを持っていますが、前述のサブルーチンを呼び出す各テキストボックスにChange()イベントを個別に追加したくありません。値が変更されるたびに AutoCalc() を呼び出す最も迅速で効率的な方法は何ですか?

0 投票する
4 に答える
63883 参照

excel - 通貨を表示する VBA テキスト ボックス

ユーザー入力用のテキスト ボックスが多数あるフォームがあります (これは、スプレッドシートではなくユーザー フォームにあります)。通貨に関連するいくつかのボックスがあり、ユーザーがボックスに基準を入力するときにコンマと小数点を表示する必要があります。これまでのところ、オンラインで同じ式をたくさん見つけましたが、ボックスに番号を入力すると、4.00 になり (最初に 4 をヒットした場合)、その後変更できるのは 2 番目の 0 だけです。オンライン:

また、cDblでいくつか見られます

何を試しても、最初に入力した数字以外は入力できません。私は助けが必要です。ありがとう!

0 投票する
1 に答える
19172 参照

excel - ユーザーフォームを Excel のセルに揃える

Excel のセル参照に合わせて、Excel にユーザーフォーム (UserForm1 という名前) を配置しようとしています。以下の最初のコードを使用してフォームを初期化すると、ユーザーフォームは Excel の画面の中央に正しいサイズで配置されます。

ただし、セル B3:D15 をカバーするようにユーザーフォームのサイズを変更したいと考えています。私はもう試した

しかし、リボンの上にユーザーフォームが表示されます (Excel のズームは 100% です)。

画面解像度/ズームサイズを考慮して、これを適切に行う方法はありますか?

0 投票する
2 に答える
380 参照

vba - プロパティ ウィンドウを使用してフォーム上のコントロールを識別する

フォームでコントロールを選択すると、[プロパティ] ウィンドウの最上部にコントロールの名前とタイプが表示され、その下のドロップダウン メニューにはさらにいくつかのコントロールを含むリストが表示されます。リスト項目の 1 つをクリックすると、フォーム上のそのコントロールが選択されます。

1) このドロップダウン メニューの適切な名前は?

2) ドロップダウン リストに表示されるコントロールを決定するものは何ですか?

3) 特定のコントロールをドロップダウン リストに表示するにはどうすればよいですか? つまり、非常にビジーなフォームでは、どこかに特定のコントロールがあることを知っていますが、それを見ることができません。ドロップダウンメニューで選択して、その場所がわかるようにしたいのですが、そのメニューで取得する方法がわかりません。

0 投票する
3 に答える
3297 参照

vba - フレーム エッジを超えてトラップされたコントロールを回復するにはどうすればよいですか?

これはフレームのみに影響し、Excel 11 でのみ発生しましたが、明らかにバグであるため、試していない新しいバージョンで修正されている可能性があります。フレームを頻繁に使用すると、最終的に噛み付きます。

問題

フレームと、そのフレームに含まれるその他のコントロール (ラベルとしましょう) から始めます。ラベルの右端 (交差矢印) をつかみ、破線のアウトラインがフレームの外側に表示されるまで、フレームの左端を横切ってドラッグします。次に、マウスを放さずに、アウトラインが消えるまで境界に向かってドラッグし、その時点でマウスを放します。

ラベルが消えていることがわかります。見えないところに閉じ込められており、元に戻すことはできません。フレームを拡大するだけでは表示されません。これは Frame の上部境界線とまったく同じように機能し、Label の下部境界線をつかんで上下にドラッグします。

ここでは、フレームを拡大することでラベルを復元できることを除いて、フレームの下部と右側の境界線と同様に機能します。しかし、上と左の境界ではそうではありません。

欠落しているラベルはタブで移動できますが ([プロパティ] ドロップダウンに表示されます)、これでは選択されず、選択できないため削除できません。[プロパティ] ドロップダウンでラベル名をクリックしても何も起こりません。

どの Frame が Label を飲み込んでいるか (このサンプルで行っているように) がわかっている場合、およびそのFrame の下にある境界線が (このサンプルで行っているように) わかっている場合は、欠落している Label を復元する方法がありますしかし、多くの場合、そうではありません。ラベルが消えるのを実際に見ない限り、特にフレームが互いに重なっている場合は、その時点で簡単に気付かないことがあります。

(既知のフレームの既知の境界線の下から) ラベルを復元する 1 つの方法は、Stephen Bullen の VBE ツールを使用することです (この問題に関係なく、この素晴らしいアドインがインストールされていない場合は、そうする必要があります)。フレーム (何かを隠していることがわかっている) を 1 回クリックし、[編集] メニューから [すべてを選択] ( Ctrl+Aは機能しません)。次にAlt-right+を押したままにしてarrow(ここでは、欠落しているラベルが左側の境界線の下にあることがわかっているため)、ラベルがフレームの境界線の下からひそかに這い上がるのを確認します。これは、プロセスを逆にするだけで他のすべてのコントロールを元の位置に置き換えることができるため、単にすべてを選択してすべてのコントロールを右にドラッグするよりも優れています ( Alt-Left+ Arrow) 物事が再び正しく見えるまで。他のコントロールを元の位置にピクセル単位で完全に復元する必要がある場合は、右矢印のクリック数を数え、復元されたラベルを破棄し、もう一度すべてを選択して、同じ回数だけ左矢印をクリックします。

質問

1) どのフレームの下にあるかわからない場合、この方法でフレームによってキャプチャされたコントロールを見つけて回復および/または削除するにはどうすればよいですか?

0 投票する
2 に答える
2530 参照

vba - vba: ユーザーフォーム関数

ユーザーフォームのボタンからアクティブ化されるサブがあります。クリックからの基本的な手順は、

1)ユーザー入力に基づいてサブを実行します

2) 結果シートを選択

3) 結果を表示する

4) ユーザーフォームをアンロードする

ユーザー入力値に境界を設定しようとして、ユーザーが範囲外の何かを入力すると、範囲を通知するメッセージ ボックスがポップアップ表示されるため、問題が発生しました。if/then ループを使用することで、この単純なタスクを達成できました。ユーザーがメッセージボックスを終了した後、元のユーザー入力とともにユーザーフォームを表示したままにし、ユーザーが入力を変更できるようにしたいと考えています。しかし、現在、ユーザーがメッセージボックスで「OK」をクリックした後、クリックサブはその手順を続行し、ユーザーフォームをアンロードして結果ワークシートを選択します。ユーザーに値を再入力させる代わりに、ユーザーフォームを保持するために、msgbox の状態の後に置くことができる単純な 1 行のコードはありますか?

編集 - 私のコードの一般的な要点は次のとおりです。

0 投票する
1 に答える
15660 参照

excel - 外部プロシージャが無効です

ワークブック全体で使用できるパスを文字列「パス」に保存したいと思います。

次の方法で実行すると、「invalid outside procedure」というエラーが発生します。

(一般)(宣言)でパスを宣言しようとしている方法は次のとおりです。

次の場所でエラーが発生します。