
エクセル VBA
ユーザーフォームのテキストボックスにアクティブセルを、含む4つのセルの値を、表示させるコードについて教えてください!!
今入れているコードは(UserForm2に入れてます)
Private Sub User Form_Initialize()
With Text Box1
.value = ActiveCell.Offset(,-1).Value
End With
With Text Box2
.value = ActiveCell.Value
End With
With Text Box3
.value = ActiveCell.Offset(,-7).Value
End With
With Text Box4
.value = ActiveCell.Offset(,-9).Value
End With
End Sub
さらにUserForm1にはコマンドボタン2を、クリックするとUserForm2が、表示され、表示と同時にテキストボックスに、表示されるようにしています。
コードは
Private Sub CommandButton3_Click()
UserForm2.Show
End Sub
というコードをいれてますが、うまく行きません。実行すると、オブジェクトが、必要ですとエラーが出て、UserForm2.Showの部分が黄色になります。
しかしテキストボックス3.4のコードを削除するとテキストボックス1.2にはうまく表示されます。
どこが間違っているのかお分かりの方是非教えてください!!よろしくお願います!
A 回答 (8件)
- 最新から表示
- 回答順に表示
No.8
- 回答日時:
添付した画像の(表示方法等)意味は分かりますね。
このモードで、質問者さんが「TextBox3」だと思っているオブジェクトのオブジェクト名(赤丸部分)を確認してみてください。
おそらく別の名前が付いていませんか?
異なっていれば「TextBox3」に変更すればエラーは解消されるはずです。
※適当に作成していますので添付画像のUserForm名等が異なるのは無視してください。
ついでに「TextBox4」の方も確認することをお勧めします。

No.7
- 回答日時:
No2です
話は進んでいるよですが、No3さんも同じ結論に達しているようです。
一応確認しておきますが、ブレークポイントを設定して一旦作業を停止し、エラーの原因は
With Text Box3
.value = ActiveCell.Offset(,-7).Value
や
With Text Box4
.value = ActiveCell.Offset(,-9).Value
ではない
事の確認は終わっているのでしょうか?
No.6
- 回答日時:
No.5です。
>UserForm2の方を、Private Sub User Form2_Initialize()に変えてみましたが、
これ自体は意味ないですね。
>UserForm3にもPrivate Sub User Form_Initialize()を入れているんですが、それと判別できないのかと
フォームが開く際のイベントなので、2であるか3であるかは呼び出す事でそれぞれが自身であると認識はするでしょう。
経緯を見直してもユーザーフォーム2に配置されているコントロール(名・種別)による物のようにしか浮かばないのですが。。。
めぐみん_さん、本当に色々ありがとうございます!
ユーザーフォーム2のところをもう一度よーく見直してみます!もしかしてどこか入力ミスしてるかもなので、、、。
No.5
- 回答日時:
No.4です。
>UserForm1に問題があるのでしょうか?
問題はないように思います。
敢えて言うならUserForm2にある、
>しかしテキストボックス3.4のコードを削除するとテキストボックス1.2にはうまく表示されます。
テキストボックス3と4のコントロール名が違うか、似たようなコントロールのリストボックスを間違えて配置しているとかになるのかな?
でもそれだとUserForm2にコードを記載している時にわかりそうだし。
色々、考えて下さりありがとうございます!
UserForm3にもPrivate Sub User Form_Initialize()を入れているんですが、それと判別できないのかと、UserForm2の方を、Private Sub User Form2_Initialize()に変えてみましたが、今度はテキストボックス1〜4まで全て表示できなくなってしまいました、、、、。
No.4
- 回答日時:
No.3です。
検証は出来てませんが検索すると非表示列もカウントされるようですね。
なのでそれを踏まえての移動であるなら問題にはならないみたいですね。
調べていただきありがとうございます!
表示、非表示は関係ないのですね。
アクティブセルはJ列なので-9、-7が、無いということはありません。
このコードはUserForm2に入れていると最初に、述べさせていただいているのでが、このブックにはUserFormが3まで作成してあり、UserForm 1には
Private Sub CommandButton1_Click()
UserForm3.Show
End Sub
Private Sub CommandButton3_Click()
UserForm2.Show
End Sub
Private Sub CommandButton4_Click()
Unload Me
End Sub
Private Sub (CommandButton2はまだ設定してません。)
と入れてあり、Private Sub CommandButton1に関してはうまく動きます。UserForm1に問題があるのでしょうか?
No.3
- 回答日時:
>テキストボックス3.4のコードを削除するとテキストボックス1.2にはうまく表示されます。
With Text Box3
.value = ActiveCell.Offset(,-7).Value
End With
With Text Box4
.value = ActiveCell.Offset(,-9).Value
End With
Offset で-7や-9移動した値を取得出来ない列(G列より左等)のセルをアクティブにしているとか?
No.2
- 回答日時:
>オブジェクトが、必要ですとエラーが出て、UserForm2.Showの部分が黄色になります。
>しかしテキストボックス3.4のコードを削除するとテキストボックス1.2にはうまく表示されます。
ということは、
「TextBox3」または「TextBox4」の一方または両方が存在しない
ということが考えられます。
Private Sub User Form_Initialize()
の
With Text Box3
.value = ActiveCell.Offset(,-7).Value
End With
と
With Text Box4
.value = ActiveCell.Offset(,-9).Value
End With
にブレークポイントを設定して確認しないと構文上のエラーは見受けられないようです。
設定の仕方は、下記のURL等を参考にしてください。
VBA デバッグの仕方
https://www.tipsfound.com/vba/01010
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
任意で選択したセルをテキストボックスに表示
Excel(エクセル)
-
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
-
4
VBAのテキストボックスに文字列を貼り付ける方法
Access(アクセス)
-
5
入力済み、選択したセルに連動した行のデータをユーザーフォームで呼び出すには
Excel(エクセル)
-
6
VBA フォームのテキストボックスにセルの値を表示させたいが改行していたら改行もあわせて表示させたい
Excel(エクセル)
-
7
Excel VBA:フォーム←→セルのアクティブ切り替え
Excel(エクセル)
-
8
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
9
VBAでユーザーフォームにセル値を表示させるには
Visual Basic(VBA)
-
10
フォームテキストボックスの表示設定
Excel(エクセル)
-
11
テキストボックスから、複数のシートに転記する方法・・・
Visual Basic(VBA)
-
12
ExcelVBAでセルをクリックしてユーザーフォームを表示するには
Excel(エクセル)
-
13
UserForm1.Showでエラーになります。
工学
-
14
【VBA】スピンボタンでアクティブセルを移動したい
Excel(エクセル)
-
15
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
16
ユーザーフォームに別シートからデータを反映させたい。
Visual Basic(VBA)
-
17
Enterキーでマクロを起動さす。
その他(ソフトウェア)
-
18
VBAでユーザーフォームを再表示させたい。
Excel(エクセル)
-
19
エクセルVBA テキストボックスへのセットフォーカスについて
Visual Basic(VBA)
-
20
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの画像にツールチップ...
-
MFCでbitmapを背景にしてstatic...
-
VB2005 コードでのコントロー...
-
VB6でLabelの最前面にText Box...
-
テキストボックス(VBA)でEnter...
-
ADOのCursorLocationプロパティ
-
エクセル入力規制リスト行数
-
パソコンへの「Dropbox...
-
VBA シートのボタン名を変更し...
-
コントロールの存在確認
-
VBAでオプションボタンによって...
-
「Columns("A:C")」の列文字を...
-
ユーザーフォームを表示中にシ...
-
VBAがブレークモードになっ...
-
Vba テキストボックス文字を右...
-
VBA ユーザーフォームの Keypre...
-
For ~ Next文
-
worksheetFunctionクラスのVloo...
-
ExcelVBAのユーザーフォームの...
-
EXCELでactivexコントロールを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックス(VBA)でEnter...
-
Wordテキストコントロールが未...
-
ユーザーフォームに日付を表示...
-
エクセルの画像にツールチップ...
-
C# TEXTが空白であるLABELは何...
-
VBからエクセルのテキストボ...
-
DataGridViewで行の展開みたい...
-
エクセル VBA ユーザーフォーム...
-
MSFlexGrid
-
コンボボックスの高さを変更し...
-
VB.NETで縦書表示をしたいので...
-
デザインモードを解除すると消...
-
Enabled=Falseのテキストボック...
-
ADOのCursorLocationプロパティ
-
PictureBoxの背景色変更(VB.NET)
-
VB6でLabelの最前面にText Box...
-
エクセル入力規制リスト行数
-
C# アプリ終了時に設定を記憶...
-
ListViewでのリスト表示(初歩...
-
MFCでbitmapを背景にしてstatic...
おすすめ情報
ご指摘いただきました、全TextBoxの間のスペースはコピペミスです!実際にはスペースはありません!紛らわしくてすみません!!!
あ、最初のUser Formも実際にはスペースはありません!重ね重ねすみません!
個別にお返事できなかったので、補足に、入れされていただきます。
Zincerさん、デバックの方法教えていただきありがとうございます!ほんと勉強になります!
めぐみん_さん、ご回答いただきありがとうございます!もしかしてなんですが、非表示の列を、含めて-9、-7なんですが、非表示状態だと出来ないとかあるのでしょうか?
Zincerさん
検証したところ、やはりTextBox3のところでエラーが、出ました。
Zincerさん
ありがとうございます!!見てみましたら、テキストボックス3と思っていたところがテキストボックス4 でテキストボックス4と、思っていたところがテキスト5に、なっていました!!
ほんと、こんな事⁈って驚きです!全然、思ってもいなかった事なので、こちらで相談させていただいて良かったです!!
ほんとありがとうございます!!
めぐみんさんにも色々考えいただき、ほんと感謝です!!!
今回の質問で本当に色々な事が、勉強になり感謝です!!ありがとうございます!!