
Private Sub Form_Load()
With Form1.Text1
.Text = "2"
.Alignment = 2 'CENTER
Call subF(Form1.Text1, 5, 2)
End With
End Sub
Private Sub subF(ByRef TextBox As TextBox, ByVal lngMAX As Long, ByVal lngMIN As Long)
TextBox.MaxLength = lngMAX - lngMIN
End Sub
With~End Withの中で指定しているオブジェクト(例の場合「Form1.Text」)のそれ自身をパラメータとして渡したい場合、
どのように記述すれば良いでしょうか?
Meを指定しましたが当然エラーになります。イメージはMeに近いと思うですが。。。
どうか宜しくお願いします。
期待していない回答(1)
With Form1
.Text1.Text = "2"
.Text1.Alignment = 2 'CENTER
Call subF(.Text1, 5, 2)
End With
期待していない回答(2)
戻り値をMaxLengthの関数にすればよい。等々
With Form1.Text1
.Text = "2"
.Alignment = 2 'CENTER
.MaxLength = functionF(5, 2)
End With
期待していない回答(3)
withステートメントはそもそもプロパティーの設定に使うべきであって、
そのような使い方は間違っている。等々
No.4ベストアンサー
- 回答日時:
もしやりたいことが、コントロール名を変更したなどの際に
With XXXX
~~~~~~~
Call subF(XXXX, 5, 2)
End With
のXXXX 部分をすべて書き直す必要があるのを避けたい。
ということであれば、以下の方法が考えられます。
'テキストボックスへの参照を格納するコントロール変数
Dim tmpTextBoxAs TextBox
'参照するテキストボックスを設定する
Set tmpTextBox = Form1.Text1'コントロール名が変更になった場合、合わせて変更する
'以下すべてtmpTextBox経由でコントロールを操作する
With tmpTextBox
.Text = "2"
.Alignment = 2 'CENTER
Call subF(tmpTextBox, 5, 2)
End With
No.3
- 回答日時:
かなりアクロバティックですが
With Form1.Text1
.Text = "2"
.Alignment = 2 'CENTER
Call subF(.Parent.Controls(.Name), 5, 2)
End With
とする方法があります。意味があるかどうかかなり微妙な表記ですけど(笑)
要は「Form1("Text1")」や「Form1.Controls("Text1")」と一緒です。
※ もしText1がコントロール配列の場合は困りますが。。。
またWithブロックを入れ子にする(期待していない回答(1)の発展形)
With Form1
With .Text1
.Text = "2"
.Alignment = 2 'CENTER
End With
Call subF(.Text1, 5, 2)
End With
というのもありますが
可読性が良くないですね。
>期待していない回答(3)
悪気は無いのかもしれませんが
これはちょっと余計でしたね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) ユーザーフォームの書き出しで追加のご相談 ユーザーフォームの値をシートに書き出す際、コードが表示され 2 2022/08/05 10:58
- Visual Basic(VBA) フレーム内のオプションボタンの選択結果をセルに書き出したい。 図のような預金種目というフレームにオプ 2 2022/07/29 11:12
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) テーブルを配列に入れて、元のテーブルの行番号を取得したい 1 2022/08/16 20:15
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
エクセルVBAでmeに相当するものは?
Excel(エクセル)
-
-
4
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
5
変数名の取得
Visual Basic(VBA)
-
6
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
7
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
8
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
-
9
表にフィルターをかけ、絞ったデータ(可視化セルのみ)を一次元配列として変数に入れるという動作を書きた
Visual Basic(VBA)
-
10
Excel VBA 定義されたプロージャ名、関数名の取得
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
チェックボックスをオンにした...
-
エクセルVBAでオプションボタン...
-
間違えて配置してしまったコン...
-
全てのオブジェクトのプロパテ...
-
エクセル コントロールツール...
-
C#で自分のウインド・ハンド...
-
EXCELでactivexコントロールを...
-
Labelコントロールの(左右)余...
-
ActiveX DLL と ActiveXコント...
-
ユーザーフォームで動的(Me.Con...
-
コントロールの絶対位置を取得...
-
ControlTipTextの書式設定(Font...
-
VBA ユーザーフォームの Keypre...
-
アクセス特有の書き方?
-
chr関数の呼び出しで「プロ...
-
ExcelVBAでListViewが使用できない
-
Excelで、コンボボックスで選択...
-
Groupboxの配下のコントロール...
-
'ckbl' コントロールは作成され...
-
VB.NET 動的コントロールの存在...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル・VBA CheckBoxのオブ...
-
EXCELでactivexコントロールを...
-
エクセルVBAでオプションボタン...
-
チェックボックスをオンにした...
-
カメラスクロールするのを動画...
-
'ckbl' コントロールは作成され...
-
ExcelVBAでListViewが使用できない
-
Groupboxの配下のコントロール...
-
ユーザーフォームで動的(Me.Con...
-
VBA ユーザーフォームの Keypre...
-
vb.netで画面のコントロールId...
-
全てのオブジェクトのプロパテ...
-
間違えて配置してしまったコン...
-
chr関数の呼び出しで「プロ...
-
VBAのフォームでTextBoxがいっ...
-
OCXって何ですか?
-
アクセス特有の書き方?
-
エクセル コントロールツール...
-
コントロールを移動できない
-
Labelコントロールの(左右)余...
おすすめ情報