dポイントプレゼントキャンペーン実施中!

エクセル 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にはうまく表示されます。
どこが間違っているのかお分かりの方是非教えてください!!よろしくお願います!

質問者からの補足コメント

  • ご指摘いただきました、全TextBoxの間のスペースはコピペミスです!実際にはスペースはありません!紛らわしくてすみません!!!

      補足日時:2019/07/25 15:14
  • あ、最初のUser Formも実際にはスペースはありません!重ね重ねすみません!

      補足日時:2019/07/25 15:16
  • 個別にお返事できなかったので、補足に、入れされていただきます。
    Zincerさん、デバックの方法教えていただきありがとうございます!ほんと勉強になります!
    めぐみん_さん、ご回答いただきありがとうございます!もしかしてなんですが、非表示の列を、含めて-9、-7なんですが、非表示状態だと出来ないとかあるのでしょうか?

      補足日時:2019/07/25 23:03
  • Zincerさん
    検証したところ、やはりTextBox3のところでエラーが、出ました。

      補足日時:2019/07/29 08:43
  • Zincerさん
    ありがとうございます!!見てみましたら、テキストボックス3と思っていたところがテキストボックス4 でテキストボックス4と、思っていたところがテキスト5に、なっていました!!
    ほんと、こんな事⁈って驚きです!全然、思ってもいなかった事なので、こちらで相談させていただいて良かったです!!
    ほんとありがとうございます!!

    めぐみんさんにも色々考えいただき、ほんと感謝です!!!
    今回の質問で本当に色々な事が、勉強になり感謝です!!ありがとうございます!!

      補足日時:2019/07/29 17:07

A 回答 (8件)

添付した画像の(表示方法等)意味は分かりますね。


このモードで、質問者さんが「TextBox3」だと思っているオブジェクトのオブジェクト名(赤丸部分)を確認してみてください。
おそらく別の名前が付いていませんか?
異なっていれば「TextBox3」に変更すればエラーは解消されるはずです。
※適当に作成していますので添付画像のUserForm名等が異なるのは無視してください。
ついでに「TextBox4」の方も確認することをお勧めします。
「エクセル VBA ユーザーフォームのテキ」の回答画像8
    • good
    • 1

No2です


話は進んでいるよですが、No3さんも同じ結論に達しているようです。
一応確認しておきますが、ブレークポイントを設定して一旦作業を停止し、エラーの原因は
With Text Box3
.value = ActiveCell.Offset(,-7).Value

With Text Box4
.value = ActiveCell.Offset(,-9).Value
ではない
事の確認は終わっているのでしょうか?
    • good
    • 1

No.5です。



>UserForm2の方を、Private Sub User Form2_Initialize()に変えてみましたが、

これ自体は意味ないですね。

>UserForm3にもPrivate Sub User Form_Initialize()を入れているんですが、それと判別できないのかと

フォームが開く際のイベントなので、2であるか3であるかは呼び出す事でそれぞれが自身であると認識はするでしょう。

経緯を見直してもユーザーフォーム2に配置されているコントロール(名・種別)による物のようにしか浮かばないのですが。。。
    • good
    • 1
この回答へのお礼

めぐみん_さん、本当に色々ありがとうございます!
ユーザーフォーム2のところをもう一度よーく見直してみます!もしかしてどこか入力ミスしてるかもなので、、、。

お礼日時:2019/07/26 16:23

No.4です。



>UserForm1に問題があるのでしょうか?

問題はないように思います。
敢えて言うならUserForm2にある、

>しかしテキストボックス3.4のコードを削除するとテキストボックス1.2にはうまく表示されます。

テキストボックス3と4のコントロール名が違うか、似たようなコントロールのリストボックスを間違えて配置しているとかになるのかな?
でもそれだとUserForm2にコードを記載している時にわかりそうだし。
    • good
    • 1
この回答へのお礼

色々、考えて下さりありがとうございます!
UserForm3にもPrivate Sub User Form_Initialize()を入れているんですが、それと判別できないのかと、UserForm2の方を、Private Sub User Form2_Initialize()に変えてみましたが、今度はテキストボックス1〜4まで全て表示できなくなってしまいました、、、、。

お礼日時:2019/07/26 13:59

No.3です。



検証は出来てませんが検索すると非表示列もカウントされるようですね。
なのでそれを踏まえての移動であるなら問題にはならないみたいですね。
    • good
    • 1
この回答へのお礼

調べていただきありがとうございます!
表示、非表示は関係ないのですね。
アクティブセルは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に問題があるのでしょうか?

お礼日時:2019/07/26 09:14

>テキストボックス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列より左等)のセルをアクティブにしているとか?
    • good
    • 1

>オブジェクトが、必要ですとエラーが出て、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
    • good
    • 1

検証してませんが。



テキストボックス名 Text Box1 の真ん中に半角スペースらしきものが皆あるのはコピペミス?
    • good
    • 0
この回答へのお礼

早速ありがとうございます!TextBoxの間のスペースはコピペミスです!すみません!!!補足に入れておきます!

お礼日時:2019/07/25 15:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています