こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルマクロ・ユーザーフォームの初期設定

マクロのユーザーフォームを使って、書式を作っています。
ユーザーフォームを開くと、自動的にシリアルナンバーが出るようにしたいのですが、出てきません。
どのように訂正すれば宜しいでしょうか?
※マクロのテキストを元に、値のみ変更して入力しています。

-----Private Sub UserForm7_Initialize()-----
Dim myRow As Long '行番号の変数
Dim mySno As Integer '登録開始番号の変数
Dim myMaxNo As Integer '最大登録件数の変数

With Worksheets("規定")
'規定'シートで担当者の入力が始まる行
myRow = 4
'登録開始番号と最大登録件数をセット
mySno = 1
myMaxNo = 4

'担当者データを読み込みコンボボックスに登録
Do Until .Cells(myRow, 2).Value = ""
omboBox1.Value.AddItem .Cells(myRow, 2).Value
myRow = myRow + 1
Loop

End With

'「精算書」シートの1件目の行番号をセット
myRow = 12
'「精算書」データシートの登録No.の新規入力行を求める。
Do Until Cells(myRow, 22).Value = ""
myRow = myRow + 1
Loop
'登録No.テキストボックスに新規の番号をセット
TextBox1.Value = mySno + myRow - 12
----End Sub------

投稿日時 - 2007-07-21 14:55:49

QNo.3187091

すぐに回答ほしいです

質問者が選んだベストアンサー

#1です。

> 開かなかった為「7」を付けました。
> ※現在では問題なく開いています。

問題が無くなったのは、このプロシージャを通ってないからでは?
ブレイクポイントを置いて実行するか、若しくは、
VBE画面で UserForm7 の Form をダブルクリックして、空いている所に下記を転機して実行して見てください。

Private Sub UserForm_Initialize()
  MsgBox Me.Name
End Sub

投稿日時 - 2007-07-21 16:33:28

お礼

何度もご回答ありがとうございます。

「~initiarize()」の部分に、自分で書いた構文を消して、代わりに「MsgBox Me.Name」の部分を入れてみたら「UserForm7」と出てきました。
・・・やはりご指摘の通りプロシージャを通っていないだけのようです。

一旦、このマクロを閉じて、新しく試験的に作ってみます。
本当に助かりました。
ありがとうございました!

投稿日時 - 2007-07-21 16:57:27

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

こういう場合は Sub ~ End Sub をVBEに書いている通りに提示して下さい。(コピー&ペーストで)

 # omboBox1.Value.AddItem ~

これでエラーが出ずにUserFormが表示されるなら、このルーティンは通って無いように思います。
 → ComboBox1.AddItem ~

 # -----Private Sub UserForm7_Initialize()-----

これが本当のプロシージャ名ですか?

ExcelのUserFormはオブジェクト名に関わらず、みな「Private Sub UserForm_Initialize()」になると思いますが、、、
(最新バージョンは違うのかな?)


 # '「精算書」データシートの登録No.の新規入力行を求める。
 # Do Until Cells(myRow, 22).Value = ""

これはActiveSheetが「精算書」になっている状態で実行されないとコメントと異なる処理になります。

投稿日時 - 2007-07-21 15:28:25

補足

ご回答ありがとうございました。

上記実行してみましたが、

 # omboBox1.Value.AddItem ~
は、確かに"Combobox1"の誤りでした。

# -----Private Sub UserForm7_Initialize()-----
は、ユーザーフォームが何枚もあり、以前は「UserForm_Initialize()」にしていたのですが、開かなかった為「7」を付けました。
※現在では問題なく開いています。

最後に「ActiveSheetが「精算書」になっている」か?ということですが、確かにActiveSheetになっています・・・。

他に何か考えられることはありますか?

「こういう場合は Sub ~ End Sub をVBEに書いている通りに提示して下さい。(コピー&ペーストで)」ということですので、もう一度そのまま貼り付けさせて頂きます。

Private Sub UserForm7_Initialize()

Dim myRow As Long '行番号の変数
Dim mySno As Integer '登録開始番号の変数
Dim myMaxNo As Integer '最大登録件数の変数

With Worksheets("規定")
'規定'シートで担当者の入力が始まる行
myRow = 4
'登録開始番号と最大登録件数をセット
mySno = 1
myMaxNo = 4

'担当者データを読み込みコンボボックスに登録
Do Until .Cells(myRow, 2).Value = ""
ComboBox1.AddItem .Cells(myRow, 2).Value
myRow = myRow + 1
Loop

End With
'「精算書」シートの1件目の行番号をセット

myRow = 12
'「精算書」データシートの登録No.の新規入力行を求める。
Do Until Cells(myRow, 22).Value = ""
myRow = myRow + 1
Loop
'登録No.テキストボックスに新規の番号をセット

TextBox1.Value = mySno + myRow - 12

End Sub

投稿日時 - 2007-07-21 15:47:29

あなたにオススメの質問