| 
    
     |  | ▼UO3 さん: >▼ume さん:
 >
 >コードアップ、ご苦労様でした。
 >今から拝見させていただきますが、アップされたコードを、そのままつなぎ合わせてみますと
 >たとえば Private Sub UserForm_initialize() の中で、いきなり ElseIf が登場しますね。
 >これは、その上に If がないのでコンパイルエラーになるはずですが?
 ElseIf ComboBox2.Text = Worksheets("Sheet1").Range("B11").Value Then '引渡の取扱説明 は消し忘れでした申し訳ありません
 
 >
 >そのほか、モジュール先頭に Option Explicit の記述(変数宣言を必須にする)をしておられませんね。
 >絶対にダメということはないのですが、変数名や定数名を間違えていても気が付きません。
 >たとえば、Private Sub CommandButton1_Click() の中に
 >If Calendar1.Visible = Falsee Then '工事開始のお知らせ
 >こんなコードがありますね。
 >
 >Falsee という定数値は定義されていません。False でしょうね。
 はい、間違っておりました
 
 >でも、変数宣言が必須になっていないのでVBAは、ここで【テンポラリーのVariant型変数】として
 >自動生成します。(してくれます)で、その値は【空白】です。ですから正しい判定ができないわけですが
 >コンパイルでひっからず、エラーの認識がなされないまま、不具合が出ても、なかなか気づきません。
 >
 >●モジュールの先頭には、必ず Option Explict を記述し、変数はすべて定義しましょう。
 > VBE画面のツール-->オプションの編集タブで編巣の宣言を強制する(R) にチェックをつけておきますと
 > モジュールを挿入したときに自動的に付加されます。
 こんな設定があったんですね、設定いたしました
 
 
 >
 >●とにかく、長いコードですから、ロジックを追いかけるのも大変ですし、不具合があった場合のデバッグも
 > 大変ですので、まずは、このコードを、そのまま、コンパクトにするところから、こちらの作業を開始します。
 >
 >●ただし、そのためにも、Private Sub UserForm_initialize() の中で、いきなり ElseIf が登場している
 > ところ等、そちらで確認の上、正しいコードがどうなっているのか、教えていただけますか?
 消し忘れでした、申し訳ありません
 
 宣言もこんな感じで大丈夫でしょうか
 Option Explicit
 Dim i As Long
 Dim TBL(1 To 4) As Control
 Dim データ範囲 As Range
 Dim shデータ As Worksheet
 Dim レコード数 As Long
 
 よろしくお願い申し上げます
 
 |  |