Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1658 / 13646 ツリー ←次へ | 前へ→

【72745】スピンボタンの表示 ume 12/9/14(金) 14:20 質問[未読]
【72746】Re:スピンボタンの表示 UO3 12/9/14(金) 22:06 発言[未読]
【72766】Re:スピンボタンの表示 ume 12/9/18(火) 11:07 質問[未読]
【72767】Re:スピンボタンの表示 UO3 12/9/18(火) 12:24 発言[未読]
【72771】Re:スピンボタンの表示 ume 12/9/18(火) 17:47 質問[未読]
【72772】Re:スピンボタンの表示 UO3 12/9/18(火) 19:19 発言[未読]
【72768】Re:スピンボタンの表示 UO3 12/9/18(火) 13:07 発言[未読]
【72769】Re:スピンボタンの表示 UO3 12/9/18(火) 13:29 発言[未読]
【72787】Re:スピンボタンの表示 ume 12/9/19(水) 10:31 質問[未読]
【72788】Re:スピンボタンの表示 ume 12/9/19(水) 10:34 質問[未読]
【72789】Re:スピンボタンの表示 ume 12/9/19(水) 10:37 質問[未読]
【72790】Re:スピンボタンの表示 UO3 12/9/19(水) 11:36 発言[未読]
【72791】Re:スピンボタンの表示 ume 12/9/19(水) 13:39 質問[未読]
【72792】Re:スピンボタンの表示 UO3 12/9/19(水) 14:45 発言[未読]
【72795】Re:スピンボタンの表示 ume 12/9/19(水) 15:41 発言[未読]
【72793】Re:スピンボタンの表示 UO3 12/9/19(水) 15:07 発言[未読]
【72797】Re:スピンボタンの表示 ume 12/9/19(水) 16:24 お礼[未読]
【72799】Re:スピンボタンの表示 ume 12/9/19(水) 18:07 質問[未読]
【72800】Re:スピンボタンの表示 UO3 12/9/19(水) 20:44 発言[未読]
【72801】Re:スピンボタンの表示 UO3 12/9/19(水) 20:56 発言[未読]
【72810】Re:スピンボタンの表示 ume 12/9/20(木) 17:59 質問[未読]
【72815】Re:スピンボタンの表示 UO3 12/9/20(木) 21:28 発言[未読]
【72819】Re:スピンボタンの表示 ume 12/9/21(金) 13:13 お礼[未読]

【72745】スピンボタンの表示
質問  ume E-MAIL  - 12/9/14(金) 14:20 -

引用なし
パスワード
   お世話になります

二点ご質問お願いいたします
1.
Worksheets("新築工事台帳")の行データをユーザーフォーム上のスピンボタンでTextBox5に表示したいのですがうまくいきません
-1/12・・・とマイナスになってしまうのですが、わからなくなってしまいました


2.データーを表示させるための記述がわかりません
For Cnt = 1 To 2の先です・・・
 
上記、二点 分かりにくい説明と思いますがよろしくお願い申し上げます


Private Sub UserForm_initialize()
  
    ComboBox2.RowSource = "Sheet1!B1:B12"

    SpinButton1.Max = レコード数取得 + 1

    Set TBL(2) = TextBox6
    Set データ範囲 = Worksheets("新築工事台帳").Range("A1").CurrentRegion
    If データ範囲.Rows.Count = 1 Then
    Else
    データ表示 (2)
    End If
    Calendar1.Value = Date

End Sub

Public Function レコード数取得() As Integer
  レコード数取得 = Worksheets("新築工事台帳").Range("A1").CurrentRegion.Rows.Count - 1

    End Function

Public Sub データ表示(行数 As Integer)
Dim Cnt As Integer
For Cnt = 1 To 2 'ここから下がわかりません

    TBL(Cnt).Value = データ範囲.Cells(行数, Cnt).Value
    TextBox5.Value = SpinButton1.Value - 1 & "/" & レコード数取得

End Sub


Private Sub SpinButton1_Change()

    If データ範囲.Rows.Count <> 1 Then
    データ表示 (SpinButton1.Value)
    End If

End Sub

【72746】Re:スピンボタンの表示
発言  UO3  - 12/9/14(金) 22:06 -

引用なし
パスワード
   ▼ume さん

こんばんは
同じ処理(だと思われますが)の前スレでも思ったんですが

>SpinButton1.Value - 1

ここで 1 を引いている目的は何でしょうか?
SpinButton1 のValue や Min に何もセットしておられないということは
ともに初期値の 0 になっているのは認識されてるんですよね?
そうすると 1 を引けば -1 になるのは当然ですが?

>レコード数取得 = Worksheets("新築工事台帳").Range("A1").CurrentRegion.Rows.Count - 1

想像するに1行目はタイトル行なのでしょうね。
なのでデータ件数としては Rows.Count - 1 というのは理解できますが、なぜ、

>SpinButton1.Max = レコード数取得 + 1

なのでしょうか?
レコード数 + 1 までスピンボタンでのカウントアップをしたいと言うことですか?

>Set TBL(2) = TextBox6
>TBL(Cnt).Value = データ範囲.Cells(行数, Cnt).Value

TBL って何でしょうか?配列ですか?
どこで定義しておられますか?何に使うのですか?

>行データをユーザーフォーム上のスピンボタンでTextBox5に表示

具体的に、TextBoxに、どんな形で、その行の複数セルの値を表示しようとしておられるのですか?

★それと、少なくとも行番号関係の数値は Integer型ではなくLong型で規定しましょう。
 というか、整数はどんなものでもすべからくLong型規定に統一されたほうがいいと思います。
 Integer型規定をするメリットって、ほとんどありませんので。


【72766】Re:スピンボタンの表示
質問  ume E-MAIL  - 12/9/18(火) 11:07 -

引用なし
パスワード
   UO3 さん いつもありがとうございます<(_ _)>

>SpinButton1.Value - 1
ここで 1 を引いている目的は何でしょうか?
SpinButton1 のValue や Min に何もセットしておられないということは
ともに初期値の 0 になっているのは認識されてるんですよね?
そうすると 1 を引けば -1 になるのは当然ですが?

 1行目がタイトルなのでタイトル行を-1としました。
 説明不足で申し訳ございません
 0以下を回避する方法は無いものなのでしょうか


>レコード数取得 = Worksheets("新築工事台帳").Range("A1").CurrentRegion.Rows.Count - 1
想像するに1行目はタイトル行なのでしょうね。
なのでデータ件数としては Rows.Count - 1 というのは理解できますが、なぜ、
>SpinButton1.Max = レコード数取得 + 1なのでしょうか?
レコード数 + 1 までスピンボタンでのカウントアップをしたいと言うことですか?

 スピンボタンのカウントが0から始まってしまうので+1にしないとタイトル行と同じになりませんでした
 CurrentRegion.Rows.Count - 1 イコール SpinButton1.Max = レコード数取得 + 1


>Set TBL(2) = TextBox6
>TBL(Cnt).Value = データ範囲.Cells(行数, Cnt).Value
TBL って何でしょうか?配列ですか?
どこで定義しておられますか?何に使うのですか?
>行データをユーザーフォーム上のスピンボタンでTextBox5に表示
具体的に、TextBoxに、どんな形で、その行の複数セルの値を表示しようとしておられるのですか?


 Set データ範囲 = Worksheets("新築工事台帳").Range("A1").CurrentRegion
 としていまして、
 Set TBL(2) = TextBox6
 TBL(Cnt).Value = データ範囲.Cells(行数, Cnt).Value
 スピンボタンによる行とTBL(Cnt)の列をTextBox6に表示しています
 Set TBL(2) イコール Worksheets("新築工事台帳")の二列目は氏名が入っております


★それと、少なくとも行番号関係の数値は Integer型ではなくLong型で規定しましょう。
 というか、整数はどんなものでもすべからくLong型規定に統一されたほうがいいと思います。
 Integer型規定をするメリットって、ほとんどありませんので。

 Long型の方が処理がはやいんですね
 ご指摘ありがとうございます

【72767】Re:スピンボタンの表示
発言  UO3  - 12/9/18(火) 12:24 -

引用なし
パスワード
   ▼ume さん:

こんにちは

やはり、少し落ち着いて整理されたほうがよろしいかと思いますよ。

>0以下を回避する方法は無いものなのでしょうか

コードだけの対応であれば、0以下かどうかを判定して

If 0以下 Then
 その場合の編集 
Else
 通常の編集
End If

こうすればよろしいのですが?

ただ、それ以前に

・まず、ユーザーフォームが表示された時点では、どの行も選ばれていないという状態にしたいのか?
・それとも、最初は、1件目(つまり、シートの2行目)が選ばれた状態にしたいのか?

umeさんの設計次第ですけど、ここをどうするのかによって扱いはかわってきますね。

で、申し上げましたけど、初期値 min は 0 のままです。
それで、だめということじゃないんですよ。
要は、スピンボタンの値とデータが何件目かという紐つけをumeさんのコードで、
どのように定義づけられているかという「設計」次第です。

実際の行は2行目〜データ最終行ですから、シートの行とあわせるとすれば
Minが2という決め事(設定)でもよろしいですし、
いやいや、スピンボタンの値は「データの何件目かという値」とするなら
minは 1 という決め事(設定)でもよろしいでしょうし。
そうではなく、データの1件目(つまりシートの2行目)に対してはスピンボタンは 0 なんだと
そういう決め事(設定)でもよろしいんです。
それらの方針に従ったコードを書けばいいわけですから。

そのあたりの方針はいかがですか?

それと、気になっているんですが
たとえばシートの10行目までデータがあるとしましょう。1行目はタイトル行でしょうから
この場合のデータ件数は 9 ですよね。
したがって 各データは ○/9 という表示(○ は 1〜9) となりますよね?

で、SpinButton1.Max = レコード数取得 + 1
ここがなぜ + 1 なのかわからないんです。
スピンボタンは、この場合 10 までアップできるわけです。
スピンボタンの値が 10 の場合、これは【何件目】のデータを相手にするのですか?

なんとなく、やってみたら 1 多かったからとか 1 少なかったからということで
やみくもにコードに手当てを加えるのではなく、「本筋論としてこんな構えだから 1 を加える」
といったことで開発していかないと、何がなんだかわからなくなりますよ?

いずれにしても、そのあたりに対するumeさんの明確な仕様(要件)提示と、
配列 TBL の定義、あるいは、そこへの値の格納等の、関連コードをすべてアップいただかないと
なかなか、適切なアドバイスは困難ですねぇ・・・

【72768】Re:スピンボタンの表示
発言  UO3  - 12/9/18(火) 13:07 -

引用なし
パスワード
   ▼ume さん:

追加で。

・TextBox6 に 表示する具体例を アップいただけませんか?
・Set TBL(2) = TextBox6
 別のコードで TBL(cnt) とありますから、TBLはいくつかの要素の配列でしょうね?
 わからないのは、Set TBL(2) = TextBox6 と、ここでは 2 は固定。
 でも、他のコードでは TBL(cnt) と 2は固定ではない。
 じゃぁ、仮に cnt が 3 だった場合は、TBL(cnt) は、どのオブジェクトを指示しているのですか?

【72769】Re:スピンボタンの表示
発言  UO3  - 12/9/18(火) 13:29 -

引用なし
パスワード
   ▼ume さん:

とりあえず、うんと想像して。
もしかしたら選ばれた行の内容はTextBox6と、もう1つ別のテキストボックスにわけて表示したいのかもしれませんが
ここではTextBox6の中にA列とB列の値をおしこんでいます。
また、フォームが表示された時点では1件目(シートの2行目)が選ばれている状態です。

Option Explicit

Dim shデータ As Worksheet
Dim レコード数 As Long

Private Sub UserForm_initialize()
 
  ComboBox2.RowSource = "Sheet1!B1:B12"
  
  Set shデータ = Worksheets("新築工事台帳")
  レコード数 = shデータ.Range("A1").CurrentRegion.Rows.Count - 1
  If レコード数 = 0 Then
    MsgBox "データがないので実行できませんよ〜〜"
    SpinButton1.Enabled = False
    Exit Sub
  End If
  
  With SpinButton1
    .Max = レコード数
    .Min = 1
  End With

    Calendar1.Value = Date

End Sub

Private Sub SpinButton1_Change()

  データ表示 SpinButton1.Value

End Sub

Private Sub データ表示(x As Long)

  TextBox5.Value = x & "/" & レコード数
  TextBox6.Value = shデータ.Range("A" & x + 1).Value & "/" & shデータ.Range("B" & x + 1).Value

End Sub

【72771】Re:スピンボタンの表示
質問  ume  - 12/9/18(火) 17:47 -

引用なし
パスワード
   UO3 さん
ほんとに、いつもありがとうございます
感謝の気持ちでいっぱいです

もう、頭の中がぐちゃぐちゃで整理できなくなっております


実際の行は2行目〜データ最終行ですから、シートの行とあわせるとすれば
Minが2という決め事(設定)でもよろしいですし、
いやいや、スピンボタンの値は「データの何件目かという値」とするなら
minは 1 という決め事(設定)でもよろしいでしょうし。

   上記に気がついて、マイナスにはならなくなりエラーにならなくなりました


そうではなく、データの1件目(つまりシートの2行目)に対してはスピンボタンは 0 なんだと
そういう決め事(設定)でもよろしいんです。
それらの方針に従ったコードを書けばいいわけですから。
そのあたりの方針はいかがですか?

   データの1件目(つまりシートの2行目)からスタートで1にしたいですが
   シートの1行目までスピンボタンで下がってしまいます(つまり0まで下がってしまう)
   欲を言うとユーザーフォームを開いたとき最終行にスピンボタンの値が最終行だと使いやすいです


それと、気になっているんですが
たとえばシートの10行目までデータがあるとしましょう。1行目はタイトル行でしょうから
この場合のデータ件数は 9 ですよね。
したがって 各データは ○/9 という表示(○ は 1〜9) となりますよね?

    はい、まさにその通りです


・TextBox6 に 表示する具体例を アップいただけませんか?
・Set TBL(2) = TextBox6
 別のコードで TBL(cnt) とありますから、TBLはいくつかの要素の配列でしょうね?
 わからないのは、Set TBL(2) = TextBox6 と、ここでは 2 は固定。
 でも、他のコードでは TBL(cnt) と 2は固定ではない。
 じゃぁ、仮に cnt が 3 だった場合は、TBL(cnt) は、どのオブジェクトを指示しているのですか?

    Worksheets("新築工事台帳")のA列がTBL(1)でTextBox7
    Worksheets("新築工事台帳")のB列がTBL(2)でTextBox6としています 
    TBL(3)以降は予備として考えていまして、今のところ使用していません
    使うとなるとTBL(3)はWorksheets("新築工事台帳")のC列です


今、お返事できる所まで書き込みいたしました
中途半端で申し訳ございません
よろしくお願い申し上げます

【72772】Re:スピンボタンの表示
発言  UO3  - 12/9/18(火) 19:19 -

引用なし
パスワード
   ▼ume さん:

説明いただいたTextBox7も追加した形のコードは書くのはたやすいのですが
全体的に、使わなくてもいい変数やプロシジャを準備しておられるように思います。
まず、私がアップしたコードに置き換えて動かしていただけませんか?
それで、イメージ的にあっていれば、あらためてコードをアップします。
アップしたコードでは TBLとう、オブジェクトを格納する配列は使用していません。
また、データ件数は毎回取得する必要がないので最初に変数に取り込み、それを使っています。
(まぁ、ここは、たいしたことがないので毎回取得してもいいかもしれませんが)

【72787】Re:スピンボタンの表示
質問  ume  - 12/9/19(水) 10:31 -

引用なし
パスワード
   UO3 さん おはようございます

Set TBL(1) = TextBox6
Set TBL(2) = TextBox7
Set TBL(3) = TextBox8
Set TBL(4) = TextBox9
あたりが完全でないのとスピンボタンが2からスタートしてしまいます
Option Explicitを付けるとエラーになってしまいます
TextBox6は (& "/" & shデータ.Range("B" & x + 1).Value)を消そうかなと思っています^^

他の動作は完ぺきです
下記のようにしてみました(長すぎてUPできませんので3分割いたします)


Dim TBL(1 To 4) As Control
Dim shデータ As Worksheet
Dim レコード数 As Long

Private Sub ComboBox2_Change()

  If ComboBox2.Text = Worksheets("Sheet1").Range("B1").Value Then '工事開始のお知らせ
  UserForm1.CheckBox1.Value = True '大工
  UserForm1.CheckBox2.Value = True '基礎
  UserForm1.CheckBox3.Value = True '電気
  UserForm1.CheckBox4.Value = True '水道
  UserForm1.CheckBox5.Value = True '屋根
  UserForm1.CheckBox6.Value = True '板金
  UserForm1.CheckBox7.Value = True '左官
  UserForm1.CheckBox8.Value = True '石
  UserForm1.CheckBox9.Value = True 'タイル
  UserForm1.CheckBox10.Value = True 'ガラス
  UserForm1.CheckBox11.Value = True '建具
  UserForm1.CheckBox12.Value = True '内装
  UserForm1.CheckBox13.Value = True '畳
  UserForm1.CheckBox14.Value = True '塗装
  UserForm1.CheckBox15.Value = True '磨き
  UserForm1.CheckBox16.Value = True 'ガス
  UserForm1.CheckBox17.Value = True '住設
  UserForm1.CheckBox18.Value = True '仮設トイレ
  UserForm1.CheckBox19.Value = True '外構
  UserForm1.CheckBox20.Value = True 'FRP
  UserForm1.CheckBox21.Value = True 'ウレタン
  UserForm1.CheckBox22.Value = True '消毒
  UserForm1.CheckBox23.Value = True '清掃
  UserForm1.CheckBox24.Value = True '足場
  UserForm1.CheckBox25.Value = True 'コンクリート
  UserForm1.CheckBox26.Value = True '鉄骨
  UserForm1.CheckBox27.Value = True '野村商店
  UserForm1.CheckBox28.Value = True '材木1
  UserForm1.CheckBox29.Value = True '材木2
  UserForm1.CheckBox30.Value = True '材木3
  UserForm1.CheckBox31.Value = True '照明
  UserForm1.CheckBox32.Value = True '金物
  UserForm1.CheckBox33.Value = True 'レッカー
  UserForm1.CheckBox34.Value = True 'コンテナ
  UserForm1.CheckBox35.Value = True '設計


  TextBox1.Value = Worksheets("Sheet1").Range("N1").Value '備考
  TextBox4.Value = Worksheets("Sheet1").Range("I1").Value '日にち


  ElseIf ComboBox2.Text = Worksheets("Sheet1").Range("B2").Value Then '地鎮祭のお知らせ
  UserForm1.CheckBox1.Value = False '大工
  UserForm1.CheckBox2.Value = True '基礎
  UserForm1.CheckBox3.Value = False '電気
  UserForm1.CheckBox4.Value = False '水道
  UserForm1.CheckBox5.Value = False '屋根
  UserForm1.CheckBox6.Value = False '板金
  UserForm1.CheckBox7.Value = False '左官
  UserForm1.CheckBox8.Value = False '石
  UserForm1.CheckBox9.Value = False 'タイル
  UserForm1.CheckBox10.Value = False 'ガラス
  UserForm1.CheckBox11.Value = False '建具
  UserForm1.CheckBox12.Value = False '内装
  UserForm1.CheckBox13.Value = False '畳
  UserForm1.CheckBox14.Value = False '塗装
  UserForm1.CheckBox15.Value = False '磨き
  UserForm1.CheckBox16.Value = False 'ガス
  UserForm1.CheckBox17.Value = False '住設
  UserForm1.CheckBox18.Value = False '仮設トイレ
  UserForm1.CheckBox19.Value = True '外構
  UserForm1.CheckBox20.Value = False 'FRP
  UserForm1.CheckBox21.Value = False 'ウレタン
  UserForm1.CheckBox22.Value = False '消毒
  UserForm1.CheckBox23.Value = False '清掃
  UserForm1.CheckBox24.Value = False '足場
  UserForm1.CheckBox25.Value = False 'コンクリート
  UserForm1.CheckBox26.Value = False '鉄骨
  UserForm1.CheckBox27.Value = False '野村商店
  UserForm1.CheckBox28.Value = False '材木1
  UserForm1.CheckBox29.Value = False '材木2
  UserForm1.CheckBox30.Value = False '材木3
  UserForm1.CheckBox31.Value = False '照明
  UserForm1.CheckBox32.Value = False '金物
  UserForm1.CheckBox33.Value = False 'レッカー
  UserForm1.CheckBox34.Value = False 'コンテナ
  UserForm1.CheckBox35.Value = True '設計
  
  TextBox1.Value = Worksheets("Sheet1").Range("N2").Value '備考
  TextBox4.Value = Worksheets("Sheet1").Range("I2").Value '日にち
  
  ElseIf ComboBox2.Text = Worksheets("Sheet1").Range("B3").Value Then '仮設トイレ、水道、電気依頼
  UserForm1.CheckBox1.Value = False '大工
  UserForm1.CheckBox2.Value = False '基礎
  UserForm1.CheckBox3.Value = True '電気
  UserForm1.CheckBox4.Value = True '水道
  UserForm1.CheckBox5.Value = False '屋根
  UserForm1.CheckBox6.Value = False '板金
  UserForm1.CheckBox7.Value = False '左官
  UserForm1.CheckBox8.Value = False '石
  UserForm1.CheckBox9.Value = False 'タイル
  UserForm1.CheckBox10.Value = False 'ガラス
  UserForm1.CheckBox11.Value = False '建具
  UserForm1.CheckBox12.Value = False '内装
  UserForm1.CheckBox13.Value = False '畳
  UserForm1.CheckBox14.Value = False '塗装
  UserForm1.CheckBox15.Value = False '磨き
  UserForm1.CheckBox16.Value = False 'ガス
  UserForm1.CheckBox17.Value = False '住設
  UserForm1.CheckBox18.Value = True '仮設トイレ
  UserForm1.CheckBox19.Value = False '外構
  UserForm1.CheckBox20.Value = False 'FRP
  UserForm1.CheckBox21.Value = False 'ウレタン
  UserForm1.CheckBox22.Value = False '消毒
  UserForm1.CheckBox23.Value = False '清掃
  UserForm1.CheckBox24.Value = False '足場
  UserForm1.CheckBox25.Value = False 'コンクリート
  UserForm1.CheckBox26.Value = False '鉄骨
  UserForm1.CheckBox27.Value = False '野村商店
  UserForm1.CheckBox28.Value = False '材木1
  UserForm1.CheckBox29.Value = False '材木2
  UserForm1.CheckBox30.Value = False '材木3
  UserForm1.CheckBox31.Value = False '照明
  UserForm1.CheckBox32.Value = False '金物
  UserForm1.CheckBox33.Value = False 'レッカー
  UserForm1.CheckBox34.Value = False 'コンテナ
  UserForm1.CheckBox35.Value = False '設計
  
  TextBox1.Value = Worksheets("Sheet1").Range("N3").Value '備考
  TextBox4.Value = Worksheets("Sheet1").Range("I3").Value '日にち
  
  ElseIf ComboBox2.Text = Worksheets("Sheet1").Range("B4").Value Then 'コンテナ設置依頼
  UserForm1.CheckBox1.Value = True '大工
  UserForm1.CheckBox2.Value = False '基礎
  UserForm1.CheckBox3.Value = False '電気
  UserForm1.CheckBox4.Value = False '水道
  UserForm1.CheckBox5.Value = False '屋根
  UserForm1.CheckBox6.Value = False '板金
  UserForm1.CheckBox7.Value = False '左官
  UserForm1.CheckBox8.Value = False '石
  UserForm1.CheckBox9.Value = False 'タイル
  UserForm1.CheckBox10.Value = False 'ガラス
  UserForm1.CheckBox11.Value = False '建具
  UserForm1.CheckBox12.Value = False '内装
  UserForm1.CheckBox13.Value = False '畳
  UserForm1.CheckBox14.Value = False '塗装
  UserForm1.CheckBox15.Value = False '磨き
  UserForm1.CheckBox16.Value = False 'ガス
  UserForm1.CheckBox17.Value = False '住設
  UserForm1.CheckBox18.Value = False '仮設トイレ
  UserForm1.CheckBox19.Value = False '外構
  UserForm1.CheckBox20.Value = False 'FRP
  UserForm1.CheckBox21.Value = False 'ウレタン
  UserForm1.CheckBox22.Value = False '消毒
  UserForm1.CheckBox23.Value = False '清掃
  UserForm1.CheckBox24.Value = False '足場
  UserForm1.CheckBox25.Value = False 'コンクリート
  UserForm1.CheckBox26.Value = False '鉄骨
  UserForm1.CheckBox27.Value = False '野村商店
  UserForm1.CheckBox28.Value = False '材木1
  UserForm1.CheckBox29.Value = False '材木2
  UserForm1.CheckBox30.Value = False '材木3
  UserForm1.CheckBox31.Value = False '照明
  UserForm1.CheckBox32.Value = False '金物
  UserForm1.CheckBox33.Value = False 'レッカー
  UserForm1.CheckBox34.Value = True 'コンテナ
  UserForm1.CheckBox35.Value = False '設計
  
  TextBox1.Value = Worksheets("Sheet1").Range("N4").Value '備考
  TextBox4.Value = Worksheets("Sheet1").Range("I4").Value '日にち
  
  ElseIf ComboBox2.Text = Worksheets("Sheet1").Range("B5").Value Then '業者打合せ
  UserForm1.CheckBox1.Value = True '大工
  UserForm1.CheckBox2.Value = False '基礎
  UserForm1.CheckBox3.Value = True '電気
  UserForm1.CheckBox4.Value = True '水道
  UserForm1.CheckBox5.Value = False '屋根
  UserForm1.CheckBox6.Value = False '板金
  UserForm1.CheckBox7.Value = False '左官
  UserForm1.CheckBox8.Value = True '石
  UserForm1.CheckBox9.Value = True 'タイル
  UserForm1.CheckBox10.Value = True 'ガラス
  UserForm1.CheckBox11.Value = False '建具
  UserForm1.CheckBox12.Value = False '内装
  UserForm1.CheckBox13.Value = False '畳
  UserForm1.CheckBox14.Value = False '塗装
  UserForm1.CheckBox15.Value = False '磨き
  UserForm1.CheckBox16.Value = True 'ガス
  UserForm1.CheckBox17.Value = True '住設
  UserForm1.CheckBox18.Value = False '仮設トイレ
  UserForm1.CheckBox19.Value = False '外構
  UserForm1.CheckBox20.Value = False 'FRP
  UserForm1.CheckBox21.Value = False 'ウレタン
  UserForm1.CheckBox22.Value = False '消毒
  UserForm1.CheckBox23.Value = False '清掃
  UserForm1.CheckBox24.Value = False '足場
  UserForm1.CheckBox25.Value = False 'コンクリート
  UserForm1.CheckBox26.Value = False '鉄骨
  UserForm1.CheckBox27.Value = False '野村商店
  UserForm1.CheckBox28.Value = False '材木1
  UserForm1.CheckBox29.Value = False '材木2
  UserForm1.CheckBox30.Value = False '材木3
  UserForm1.CheckBox31.Value = False '照明
  UserForm1.CheckBox32.Value = False '金物
  UserForm1.CheckBox33.Value = False 'レッカー
  UserForm1.CheckBox34.Value = False 'コンテナ
  UserForm1.CheckBox35.Value = False '設計
  
  TextBox1.Value = Worksheets("Sheet1").Range("N5").Value '備考
  TextBox4.Value = Worksheets("Sheet1").Range("I5").Value '日にち
  
  

【72788】Re:スピンボタンの表示
質問  ume  - 12/9/19(水) 10:34 -

引用なし
パスワード
   ElseIf ComboBox2.Text = Worksheets("Sheet1").Range("B6").Value Then 'FRP 及び 防蟻 工事依頼
  UserForm1.CheckBox1.Value = False '大工
  UserForm1.CheckBox2.Value = False '基礎
  UserForm1.CheckBox3.Value = False '電気
  UserForm1.CheckBox4.Value = False '水道
  UserForm1.CheckBox5.Value = False '屋根
  UserForm1.CheckBox6.Value = False '板金
  UserForm1.CheckBox7.Value = False '左官
  UserForm1.CheckBox8.Value = False '石
  UserForm1.CheckBox9.Value = False 'タイル
  UserForm1.CheckBox10.Value = False 'ガラス
  UserForm1.CheckBox11.Value = False '建具
  UserForm1.CheckBox12.Value = False '内装
  UserForm1.CheckBox13.Value = False '畳
  UserForm1.CheckBox14.Value = False '塗装
  UserForm1.CheckBox15.Value = False '磨き
  UserForm1.CheckBox16.Value = False 'ガス
  UserForm1.CheckBox17.Value = False '住設
  UserForm1.CheckBox18.Value = False '仮設トイレ
  UserForm1.CheckBox19.Value = False '外構
  UserForm1.CheckBox20.Value = True 'FRP
  UserForm1.CheckBox21.Value = False 'ウレタン
  UserForm1.CheckBox22.Value = True '消毒
  UserForm1.CheckBox23.Value = False '清掃
  UserForm1.CheckBox24.Value = False '足場
  UserForm1.CheckBox25.Value = False 'コンクリート
  UserForm1.CheckBox26.Value = False '鉄骨
  UserForm1.CheckBox27.Value = False '野村商店
  UserForm1.CheckBox28.Value = False '材木1
  UserForm1.CheckBox29.Value = False '材木2
  UserForm1.CheckBox30.Value = False '材木3
  UserForm1.CheckBox31.Value = False '照明
  UserForm1.CheckBox32.Value = False '金物
  UserForm1.CheckBox33.Value = False 'レッカー
  UserForm1.CheckBox34.Value = False 'コンテナ
  UserForm1.CheckBox35.Value = False '設計
  
  TextBox1.Value = Worksheets("Sheet1").Range("N6").Value '備考
  TextBox4.Value = Worksheets("Sheet1").Range("I6").Value '日にち
  
  ElseIf ComboBox2.Text = Worksheets("Sheet1").Range("B7").Value Then '木工事終了 及び コンテナ撤去依頼
  UserForm1.CheckBox1.Value = False '大工
  UserForm1.CheckBox2.Value = False '基礎
  UserForm1.CheckBox3.Value = True '電気
  UserForm1.CheckBox4.Value = True '水道
  UserForm1.CheckBox5.Value = False '屋根
  UserForm1.CheckBox6.Value = False '板金
  UserForm1.CheckBox7.Value = True '左官
  UserForm1.CheckBox8.Value = True '石
  UserForm1.CheckBox9.Value = True 'タイル
  UserForm1.CheckBox10.Value = True 'ガラス
  UserForm1.CheckBox11.Value = True '建具
  UserForm1.CheckBox12.Value = True '内装
  UserForm1.CheckBox13.Value = True '畳
  UserForm1.CheckBox14.Value = True '塗装
  UserForm1.CheckBox15.Value = True '磨き
  UserForm1.CheckBox16.Value = True 'ガス
  UserForm1.CheckBox17.Value = True '住設
  UserForm1.CheckBox18.Value = False '仮設トイレ
  UserForm1.CheckBox19.Value = False '外構
  UserForm1.CheckBox20.Value = False 'FRP
  UserForm1.CheckBox21.Value = False 'ウレタン
  UserForm1.CheckBox22.Value = False '消毒
  UserForm1.CheckBox23.Value = False '清掃
  UserForm1.CheckBox24.Value = False '足場
  UserForm1.CheckBox25.Value = False 'コンクリート
  UserForm1.CheckBox26.Value = False '鉄骨
  UserForm1.CheckBox27.Value = False '野村商店
  UserForm1.CheckBox28.Value = False '材木1
  UserForm1.CheckBox29.Value = False '材木2
  UserForm1.CheckBox30.Value = False '材木3
  UserForm1.CheckBox31.Value = False '照明
  UserForm1.CheckBox32.Value = False '金物
  UserForm1.CheckBox33.Value = False 'レッカー
  UserForm1.CheckBox34.Value = False 'コンテナ
  UserForm1.CheckBox35.Value = False '設計
  
  TextBox1.Value = Worksheets("Sheet1").Range("N7").Value '備考
  TextBox4.Value = Worksheets("Sheet1").Range("I7").Value '日にち
  
  ElseIf ComboBox2.Text = Worksheets("Sheet1").Range("B8").Value Then '足場払い日程連絡
  UserForm1.CheckBox1.Value = False '大工
  UserForm1.CheckBox2.Value = False '基礎
  UserForm1.CheckBox3.Value = True '電気
  UserForm1.CheckBox4.Value = True '水道
  UserForm1.CheckBox5.Value = True '屋根
  UserForm1.CheckBox6.Value = True '板金
  UserForm1.CheckBox7.Value = True '左官
  UserForm1.CheckBox8.Value = True '石
  UserForm1.CheckBox9.Value = True 'タイル
  UserForm1.CheckBox10.Value = True 'ガラス
  UserForm1.CheckBox11.Value = True '建具
  UserForm1.CheckBox12.Value = True '内装
  UserForm1.CheckBox13.Value = True '畳
  UserForm1.CheckBox14.Value = True '塗装
  UserForm1.CheckBox15.Value = False '磨き
  UserForm1.CheckBox16.Value = True 'ガス
  UserForm1.CheckBox17.Value = True '住設
  UserForm1.CheckBox18.Value = False '仮設トイレ
  UserForm1.CheckBox19.Value = False '外構
  UserForm1.CheckBox20.Value = False 'FRP
  UserForm1.CheckBox21.Value = False 'ウレタン
  UserForm1.CheckBox22.Value = False '消毒
  UserForm1.CheckBox23.Value = False '清掃
  UserForm1.CheckBox24.Value = True '足場
  UserForm1.CheckBox25.Value = False 'コンクリート
  UserForm1.CheckBox26.Value = False '鉄骨
  UserForm1.CheckBox27.Value = False '野村商店
  UserForm1.CheckBox28.Value = False '材木1
  UserForm1.CheckBox29.Value = False '材木2
  UserForm1.CheckBox30.Value = False '材木3
  UserForm1.CheckBox31.Value = False '照明
  UserForm1.CheckBox32.Value = False '金物
  UserForm1.CheckBox33.Value = False 'レッカー
  UserForm1.CheckBox34.Value = True 'コンテナ
  UserForm1.CheckBox35.Value = False '設計
  
  TextBox1.Value = Worksheets("Sheet1").Range("N8").Value '備考
  TextBox4.Value = Worksheets("Sheet1").Range("I8").Value '日にち
  
  ElseIf ComboBox2.Text = Worksheets("Sheet1").Range("B9").Value Then '清掃のお知らせ
  UserForm1.CheckBox1.Value = False '大工
  UserForm1.CheckBox2.Value = False '基礎
  UserForm1.CheckBox3.Value = True '電気
  UserForm1.CheckBox4.Value = True '水道
  UserForm1.CheckBox5.Value = False '屋根
  UserForm1.CheckBox6.Value = False '板金
  UserForm1.CheckBox7.Value = True '左官
  UserForm1.CheckBox8.Value = True '石
  UserForm1.CheckBox9.Value = True 'タイル
  UserForm1.CheckBox10.Value = True 'ガラス
  UserForm1.CheckBox11.Value = True '建具
  UserForm1.CheckBox12.Value = True '内装
  UserForm1.CheckBox13.Value = True '畳
  UserForm1.CheckBox14.Value = False '塗装
  UserForm1.CheckBox15.Value = False '磨き
  UserForm1.CheckBox16.Value = True 'ガス
  UserForm1.CheckBox17.Value = True '住設
  UserForm1.CheckBox18.Value = False '仮設トイレ
  UserForm1.CheckBox19.Value = False '外構
  UserForm1.CheckBox20.Value = False 'FRP
  UserForm1.CheckBox21.Value = False 'ウレタン
  UserForm1.CheckBox22.Value = False '消毒
  UserForm1.CheckBox23.Value = True '清掃
  UserForm1.CheckBox24.Value = False '足場
  UserForm1.CheckBox25.Value = False 'コンクリート
  UserForm1.CheckBox26.Value = False '鉄骨
  UserForm1.CheckBox27.Value = False '野村商店
  UserForm1.CheckBox28.Value = False '材木1
  UserForm1.CheckBox29.Value = False '材木2
  UserForm1.CheckBox30.Value = False '材木3
  UserForm1.CheckBox31.Value = False '照明
  UserForm1.CheckBox32.Value = False '金物
  UserForm1.CheckBox33.Value = False 'レッカー
  UserForm1.CheckBox34.Value = False 'コンテナ
  UserForm1.CheckBox35.Value = False '設計
  
  TextBox1.Value = Worksheets("Sheet1").Range("N9").Value '備考
  TextBox4.Value = Worksheets("Sheet1").Range("I9").Value '日にち
  
  ElseIf ComboBox2.Text = Worksheets("Sheet1").Range("B10").Value Then '社内検査日程連絡
  UserForm1.CheckBox1.Value = True '大工
  UserForm1.CheckBox2.Value = False '基礎
  UserForm1.CheckBox3.Value = True '電気
  UserForm1.CheckBox4.Value = True '水道
  UserForm1.CheckBox5.Value = False '屋根
  UserForm1.CheckBox6.Value = False '板金
  UserForm1.CheckBox7.Value = False '左官
  UserForm1.CheckBox8.Value = False '石
  UserForm1.CheckBox9.Value = False 'タイル
  UserForm1.CheckBox10.Value = False 'ガラス
  UserForm1.CheckBox11.Value = False '建具
  UserForm1.CheckBox12.Value = False '内装
  UserForm1.CheckBox13.Value = False '畳
  UserForm1.CheckBox14.Value = False '塗装
  UserForm1.CheckBox15.Value = False '磨き
  UserForm1.CheckBox16.Value = False 'ガス
  UserForm1.CheckBox17.Value = True '住設
  UserForm1.CheckBox18.Value = False '仮設トイレ
  UserForm1.CheckBox19.Value = False '外構
  UserForm1.CheckBox20.Value = False 'FRP
  UserForm1.CheckBox21.Value = False 'ウレタン
  UserForm1.CheckBox22.Value = False '消毒
  UserForm1.CheckBox23.Value = True '清掃
  UserForm1.CheckBox24.Value = False '足場
  UserForm1.CheckBox25.Value = False 'コンクリート
  UserForm1.CheckBox26.Value = False '鉄骨
  UserForm1.CheckBox27.Value = False '野村商店
  UserForm1.CheckBox28.Value = False '材木1
  UserForm1.CheckBox29.Value = False '材木2
  UserForm1.CheckBox30.Value = False '材木3
  UserForm1.CheckBox31.Value = False '照明
  UserForm1.CheckBox32.Value = False '金物
  UserForm1.CheckBox33.Value = False 'レッカー
  UserForm1.CheckBox34.Value = False 'コンテナ
  UserForm1.CheckBox35.Value = False '設計
  
  TextBox1.Value = Worksheets("Sheet1").Range("N10").Value '備考
  TextBox4.Value = Worksheets("Sheet1").Range("I10").Value '日にち

【72789】Re:スピンボタンの表示
質問  ume  - 12/9/19(水) 10:37 -

引用なし
パスワード
     ElseIf ComboBox2.Text = Worksheets("Sheet1").Range("B12").Value Then
  UserForm1.CheckBox1.Value = False '大工
  UserForm1.CheckBox2.Value = False '基礎
  UserForm1.CheckBox3.Value = False '電気
  UserForm1.CheckBox4.Value = False '水道
  UserForm1.CheckBox5.Value = False '屋根
  UserForm1.CheckBox6.Value = False '板金
  UserForm1.CheckBox7.Value = False '左官
  UserForm1.CheckBox8.Value = False '石
  UserForm1.CheckBox9.Value = False 'タイル
  UserForm1.CheckBox10.Value = False 'ガラス
  UserForm1.CheckBox11.Value = False '建具
  UserForm1.CheckBox12.Value = False '内装
  UserForm1.CheckBox13.Value = False '畳
  UserForm1.CheckBox14.Value = False '塗装
  UserForm1.CheckBox15.Value = False '磨き
  UserForm1.CheckBox16.Value = False 'ガス
  UserForm1.CheckBox17.Value = False '住設
  UserForm1.CheckBox18.Value = False '仮設トイレ
  UserForm1.CheckBox19.Value = False '外構
  UserForm1.CheckBox20.Value = False 'FRP
  UserForm1.CheckBox21.Value = False 'ウレタン
  UserForm1.CheckBox22.Value = False '消毒
  UserForm1.CheckBox23.Value = False '清掃
  UserForm1.CheckBox24.Value = False '足場
  UserForm1.CheckBox25.Value = False 'コンクリート
  UserForm1.CheckBox26.Value = False '鉄骨
  UserForm1.CheckBox27.Value = False '野村商店
  UserForm1.CheckBox28.Value = False '材木1
  UserForm1.CheckBox29.Value = False '材木2
  UserForm1.CheckBox30.Value = False '材木3
  UserForm1.CheckBox31.Value = False '照明
  UserForm1.CheckBox32.Value = False '金物
  UserForm1.CheckBox33.Value = False 'レッカー
  UserForm1.CheckBox34.Value = False 'コンテナ
  UserForm1.CheckBox35.Value = False '設計
  
  TextBox1.Value = Worksheets("Sheet1").Range("N12").Value '備考
  TextBox4.Value = Worksheets("Sheet1").Range("I12").Value '日にち
  
  ElseIf ComboBox2.Text = Worksheets("Sheet1").Range("B13").Value Then
  UserForm1.CheckBox1.Value = False '大工
  UserForm1.CheckBox2.Value = False '基礎
  UserForm1.CheckBox3.Value = False '電気
  UserForm1.CheckBox4.Value = False '水道
  UserForm1.CheckBox5.Value = False '屋根
  UserForm1.CheckBox6.Value = False '板金
  UserForm1.CheckBox7.Value = False '左官
  UserForm1.CheckBox8.Value = False '石
  UserForm1.CheckBox9.Value = False 'タイル
  UserForm1.CheckBox10.Value = False 'ガラス
  UserForm1.CheckBox11.Value = False '建具
  UserForm1.CheckBox12.Value = False '内装
  UserForm1.CheckBox13.Value = False '畳
  UserForm1.CheckBox14.Value = False '塗装
  UserForm1.CheckBox15.Value = False '磨き
  UserForm1.CheckBox16.Value = False 'ガス
  UserForm1.CheckBox17.Value = False '住設
  UserForm1.CheckBox18.Value = False '仮設トイレ
  UserForm1.CheckBox19.Value = False '外構
  UserForm1.CheckBox20.Value = False 'FRP
  UserForm1.CheckBox21.Value = False 'ウレタン
  UserForm1.CheckBox22.Value = False '消毒
  UserForm1.CheckBox23.Value = False '清掃
  UserForm1.CheckBox24.Value = False '足場
  UserForm1.CheckBox25.Value = False 'コンクリート
  UserForm1.CheckBox26.Value = False '鉄骨
  UserForm1.CheckBox27.Value = False '野村商店
  UserForm1.CheckBox28.Value = False '材木1
  UserForm1.CheckBox29.Value = False '材木2
  UserForm1.CheckBox30.Value = False '材木3
  UserForm1.CheckBox31.Value = False '照明
  UserForm1.CheckBox32.Value = False '金物
  UserForm1.CheckBox33.Value = False 'レッカー
  UserForm1.CheckBox34.Value = False 'コンテナ
  UserForm1.CheckBox35.Value = False '設計
  
  TextBox1.Value = Worksheets("Sheet1").Range("N13").Value '備考
  TextBox4.Value = Worksheets("Sheet1").Range("I13").Value '日にち
  
  End If
  

  For i = 1 To 35
      If Me.Controls("CheckBox" & i).Value = True Then 'チェック判定
        Me.Controls("CheckBox" & i).ForeColor = &HFF&
      Else
        Me.Controls("CheckBox" & i).ForeColor = &H0&
      End If
    Next i
    
    
End Sub

Private Sub CommandButton1_Click()

  Worksheets("FAX送信のご案内").Range("H12").Value = ComboBox1.Value '送信者転記
  Worksheets("FAX送信のご案内").Range("C16").Value = ComboBox2.Value '用件転記
  Worksheets("FAX送信のご案内").Range("A19").Value = TextBox4.Value '日にち項目転記
  Worksheets("FAX送信のご案内").Range("C20").Value = TextBox1.Value '備考転記
  Worksheets("FAX送信のご案内").Range("C21").Value = TextBox2.Value '備考転記
  Worksheets("FAX送信のご案内").Range("C23").Value = TextBox3.Value '備考転記
  Worksheets("FAX送信のご案内").Range("C19").Value = Format(Calendar1.Value, "ggge年mm月dd日(aaa)") 'カレンダーから摘出
  Worksheets("FAX送信のご案内").Range("C17").Value = TextBox7.Value + "邸 新築工事" '工事名転記
  Worksheets("FAX送信のご案内").Range("C18").Value = TextBox8.Value '工事場所転記
  Worksheets("FAX送信のご案内").Range("H17").Value = TextBox9.Value '監督名転記
  
  If Calendar1.Visible = Falsee Then '工事開始のお知らせ
    
    Worksheets("FAX送信のご案内").Range("C19:I19").ClearContents
  Else
    Calendar1.Visible = True
  
  End If


Dim myMSG As String
  Dim myFlg As Boolean
  Dim x As Long
  Dim r As Long
  Dim c As Long
  Dim z As Long
  Dim i As Long
 
  i = SpinButton1.Value - 1
  myFlg = False
  Sheets("FAX送信のご案内").Range("B2:I10").ClearContents


  For x = 1 To 35 'チェックボックスの番号
    If Me.Controls("CheckBox" & x).Value = True Then
      myMSG = myMSG & Me.Controls("CheckBox" & x).Caption & vbCrLf
      myFlg = True
      z = z + 1
      r = ((z - 1) \ 4) + 2
      c = (((z - 1) Mod 4) + 1) * 2
      Sheets("FAX送信のご案内").Cells(r, c).Value = Sheets("新築工事台帳").Cells(i, x + 5).Value
    End If
  Next x
 
  If myFlg = True Then
    myMSG = myMSG & "宛てで宜しいですか?"
    If MsgBox(myMSG, vbInformation + vbYesNo) = vbYes Then
      Me.Hide
      ActiveWindow.ActiveSheet.PrintPreview
      Me.Show vbModeless
    End If
  Else
    myMSG = "いずれにもチェックが入っていません"
    MsgBox myMSG
  End If

End Sub

Private Sub CommandButton2_Click()

  Worksheets("FAX送信のご案内").PrintOut

End Sub


Private Sub UserForm_initialize()

With ComboBox1
    .AddItem "Aさん"
    .AddItem "Bさん"
    .AddItem "Cさん"
    .AddItem "Dさん"
    .AddItem "Eさん"
    .AddItem "Fさん"
    .AddItem "Gさん"
    .AddItem "Hさん"
    .AddItem "Iさん"
    .AddItem "Jさん"
    .AddItem "Kさん"
    .AddItem "Lさん"
  End With
  
ComboBox2.RowSource = "Sheet1!B1:B12"

Set TBL(1) = TextBox6
Set TBL(2) = TextBox7
Set TBL(3) = TextBox8
Set TBL(4) = TextBox9
ElseIf ComboBox2.Text = Worksheets("Sheet1").Range("B11").Value Then '引渡の取扱説明依頼
  UserForm1.CheckBox1.Value = False '大工
  UserForm1.CheckBox2.Value = False '基礎
  UserForm1.CheckBox3.Value = True '電気
  UserForm1.CheckBox4.Value = True '水道
  UserForm1.CheckBox5.Value = False '屋根
  UserForm1.CheckBox6.Value = False '板金
  UserForm1.CheckBox7.Value = False '左官
  UserForm1.CheckBox8.Value = False '石
  UserForm1.CheckBox9.Value = False 'タイル
  UserForm1.CheckBox10.Value = True 'ガラス
  UserForm1.CheckBox11.Value = False '建具
  UserForm1.CheckBox12.Value = False '内装
  UserForm1.CheckBox13.Value = False '畳
  UserForm1.CheckBox14.Value = False '塗装
  UserForm1.CheckBox15.Value = False '磨き
  UserForm1.CheckBox16.Value = True 'ガス
  UserForm1.CheckBox17.Value = True '住設
  UserForm1.CheckBox18.Value = False '仮設トイレ
  UserForm1.CheckBox19.Value = False '外構
  UserForm1.CheckBox20.Value = False 'FRP
  UserForm1.CheckBox21.Value = False 'ウレタン
  UserForm1.CheckBox22.Value = False '消毒
  UserForm1.CheckBox23.Value = False '清掃
  UserForm1.CheckBox24.Value = False '足場
  UserForm1.CheckBox25.Value = False 'コンクリート
  UserForm1.CheckBox26.Value = False '鉄骨
  UserForm1.CheckBox27.Value = False '野村商店
  UserForm1.CheckBox28.Value = False '材木1
  UserForm1.CheckBox29.Value = False '材木2
  UserForm1.CheckBox30.Value = False '材木3
  UserForm1.CheckBox31.Value = False '照明
  UserForm1.CheckBox32.Value = False '金物
  UserForm1.CheckBox33.Value = False 'レッカー
  UserForm1.CheckBox34.Value = False 'コンテナ
  UserForm1.CheckBox35.Value = False '設計
  
  TextBox1.Value = Worksheets("Sheet1").Range("N11").Value '備考
  TextBox4.Value = Worksheets("Sheet1").Range("I11").Value '日にち

Set shデータ = Worksheets("新築工事台帳")
  レコード数 = shデータ.Range("A1").CurrentRegion.Rows.Count - 1
  If レコード数 = 0 Then
    MsgBox "データがないので実行できませんよ〜〜"
    SpinButton1.Enabled = False
    Exit Sub
  End If
  
With SpinButton1
    .Max = レコード数
    .Min = 1
  End With

    Calendar1.Value = Date

End Sub

Public Function レコード数取得() As Long

  レコード数取得 = Worksheets("新築工事台帳").Range("A1").CurrentRegion.Rows.Count - 1

End Function

Private Sub データ表示(x As Long)
  
  TextBox5.Value = x & "/" & レコード数
  TextBox6.Value = shデータ.Range("A" & x + 1).Value
  TextBox10.Value = Worksheets("新築工事台帳").Cells(SpinButton1.Value, 41).Value
  
End Sub

Private Sub SpinButton1_Change()

  データ表示 SpinButton1.Value

End Sub


Private Sub ComboBox2_Click()
  If ComboBox2.Text = Worksheets("Sheet1").Range("B1").Value Then '工事開始のお知らせ
    Calendar1.Visible = False
    Worksheets("FAX送信のご案内").Range("C19:I19").ClearContents
  Else
    Calendar1.Visible = True
  End If

End Sub

【72790】Re:スピンボタンの表示
発言  UO3  - 12/9/19(水) 11:36 -

引用なし
パスワード
   ▼ume さん:

コードアップ、ご苦労様でした。
今から拝見させていただきますが、アップされたコードを、そのままつなぎ合わせてみますと
たとえば Private Sub UserForm_initialize() の中で、いきなり ElseIf が登場しますね。
これは、その上に If がないのでコンパイルエラーになるはずですが?

そのほか、モジュール先頭に Option Explicit の記述(変数宣言を必須にする)をしておられませんね。
絶対にダメということはないのですが、変数名や定数名を間違えていても気が付きません。
たとえば、Private Sub CommandButton1_Click() の中に
If Calendar1.Visible = Falsee Then '工事開始のお知らせ
こんなコードがありますね。

Falsee という定数値は定義されていません。False でしょうね。
でも、変数宣言が必須になっていないのでVBAは、ここで【テンポラリーのVariant型変数】として
自動生成します。(してくれます)で、その値は【空白】です。ですから正しい判定ができないわけですが
コンパイルでひっからず、エラーの認識がなされないまま、不具合が出ても、なかなか気づきません。

●モジュールの先頭には、必ず Option Explict を記述し、変数はすべて定義しましょう。
 VBE画面のツール-->オプションの編集タブで編巣の宣言を強制する(R) にチェックをつけておきますと
 モジュールを挿入したときに自動的に付加されます。

●とにかく、長いコードですから、ロジックを追いかけるのも大変ですし、不具合があった場合のデバッグも
 大変ですので、まずは、このコードを、そのまま、コンパクトにするところから、こちらの作業を開始します。

●ただし、そのためにも、Private Sub UserForm_initialize() の中で、いきなり ElseIf が登場している
 ところ等、そちらで確認の上、正しいコードがどうなっているのか、教えていただけますか?

【72791】Re:スピンボタンの表示
質問  ume  - 12/9/19(水) 13:39 -

引用なし
パスワード
   ▼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

よろしくお願い申し上げます

【72792】Re:スピンボタンの表示
発言  UO3  - 12/9/19(水) 14:45 -

引用なし
パスワード
   ▼ume さん:

9割がた、現行コードのままでのスリム化が終わっています。
以下教えてください。

ComboBox2のリストとして ComboBox2.RowSource = "Sheet1!B1:B12"
つまりSheet1のB1〜B12の12個の値をセットしていますね。
で、ComboBox2のプロパティで、リスト以外の値の入力をOKにしているかどうかは
わかりませんが、もし、リストから選ぶだけということなら、その値(ComboBox2.Text)は
Sheet1 の B1〜B12 のいずれかの値と同じということになりますね。

一方、ComboBox2_Change では ComboBox2.Text と B1〜B10ないしはB12,B13の値が同じかどうかの
チェックをしておられます。
B13 との比較の意味は? B11 との比較がない意味は?

●もしかしたら、ここはコードの間違いで、B1〜B12の値との比較をすべきなのではないですか?

【72793】Re:スピンボタンの表示
発言  UO3  - 12/9/19(水) 15:07 -

引用なし
パスワード
   ▼ume さん:

とりあえずコードの不要なところ(と思われるところ)を消し、1つにできるところは1つに。
といった変更を行いました。ロジック自体はかえていません。ComboBox2に対してChange1イベントのほかに
Clickイベントがあるのはなぜかな?とも思いますが、そこも変えていません。

ユーザーフォームモジュールをすべていれかえて、ここからスタートしませんか?
これをベースにして、umeさんの意図通りになっていないところをチューニングしていきましょう。

Option Explicit

Dim shデータ As Worksheet
Dim レコード数 As Long

Private Sub UserForm_initialize()
  Dim x As Long
  
  ComboBox1.List = _
    Array("Aさん", "Bさん", "Cさん", "Dさん", "Eさん", "Fさん", "Gさん", "Hさん", "Iさん", "Jさん", "Kさん", "Lさん")
  ComboBox2.RowSource = "Sheet1!B1:B12"

  TextBox1.Value = Worksheets("Sheet1").Range("N11").Value '備考
  TextBox4.Value = Worksheets("Sheet1").Range("I11").Value '日にち

  Set shデータ = Worksheets("新築工事台帳")
  レコード数 = shデータ.Range("A1").CurrentRegion.Rows.Count - 1
  
  If レコード数 = 0 Then
    MsgBox "データがないので実行できませんよ〜〜"
    SpinButton1.Enabled = False
    Exit Sub
  End If
 
  With SpinButton1
    .Max = レコード数
    .Min = 1
  End With

  Calendar1.Value = Date

End Sub

Private Sub ComboBox2_Change()
  Dim i As Long
  Dim myArray As Variant
  Dim z As Variant
  
  With ComboBox2
    z = Application.Match(.Text, Evaluate(.RowSource), 0)
  End With
  
  If IsNumeric(z) Then
    TextBox1.Value = Worksheets("Sheet1").Range("N" & z).Value
    TextBox4.Value = Worksheets("Sheet1").Range("I" & z).Value
    
    CBSet False         'まずすべてオフ
    
    Select Case z
      Case 1
        CBSet True     '工事開始のお知らせ すべてTrue
      Case 2
        CBSet 2, 19, 35   '地鎮祭のお知らせ
      Case 3
        CBSet 3, 4, 18   '仮設トイレ、水道、電気依頼
      Case 4
        CBSet 1, 34     'コンテナ設置依頼
      Case 5
        CBSet 1, 3, 4, 8, 9, 10, 16, 17 '業者打合せ
      Case 6
        CBSet 20, 22    'FRP 及び 防蟻 工事依頼
      Case 7
        CBSet 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 '木工事終了 及び コンテナ撤去依頼
      Case 8
        CBSet 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 24, 34  '足場払い日程連絡
      Case 9
        CBSet 3, 4, 7, 8, 9, 10, 11, 12, 13, 16, 17, 23   '清掃のお知らせ
      Case 10
        CBSet 1, 3, 4, 17, 23    '社内検査日程連絡
    End Select
  End If
        
End Sub

Private Sub CommandButton1_Click()
  Dim myMSG As String
  Dim myFlg As Boolean
  Dim x As Long
  Dim r As Long
  Dim c As Long
  Dim z As Long
  Dim i As Long

  Worksheets("FAX送信のご案内").Range("H12").Value = ComboBox1.Value '送信者転記
  Worksheets("FAX送信のご案内").Range("C16").Value = ComboBox2.Value '用件転記
  Worksheets("FAX送信のご案内").Range("A19").Value = TextBox4.Value '日にち項目転記
  Worksheets("FAX送信のご案内").Range("C20").Value = TextBox1.Value '備考転記
  Worksheets("FAX送信のご案内").Range("C21").Value = TextBox2.Value '備考転記
  Worksheets("FAX送信のご案内").Range("C23").Value = TextBox3.Value '備考転記
  Worksheets("FAX送信のご案内").Range("C19").Value = Format(Calendar1.Value, "ggge年mm月dd日(aaa)") 'カレンダーから摘出
  Worksheets("FAX送信のご案内").Range("C17").Value = TextBox7.Value + "邸 新築工事" '工事名転記
  Worksheets("FAX送信のご案内").Range("C18").Value = TextBox8.Value '工事場所転記
  Worksheets("FAX送信のご案内").Range("H17").Value = TextBox9.Value '監督名転記
 
  If Calendar1.Visible = False Then '工事開始のお知らせ  '★Falsee
  
    Worksheets("FAX送信のご案内").Range("C19:I19").ClearContents
  Else
    Calendar1.Visible = True
 
  End If

  i = SpinButton1.Value - 1
  myFlg = False
  Sheets("FAX送信のご案内").Range("B2:I10").ClearContents


  For x = 1 To 35 'チェックボックスの番号
    If Me.Controls("CheckBox" & x).Value = True Then
      myMSG = myMSG & Me.Controls("CheckBox" & x).Caption & vbCrLf
      myFlg = True
      z = z + 1
      r = ((z - 1) \ 4) + 2
      c = (((z - 1) Mod 4) + 1) * 2
      Sheets("FAX送信のご案内").Cells(r, c).Value = Sheets("新築工事台帳").Cells(i, x + 5).Value
    End If
  Next x

  If myFlg = True Then
    myMSG = myMSG & "宛てで宜しいですか?"
    If MsgBox(myMSG, vbInformation + vbYesNo) = vbYes Then
      Me.Hide
      ActiveWindow.ActiveSheet.PrintPreview
      Me.Show vbModeless
    End If
  Else
    myMSG = "いずれにもチェックが入っていません"
    MsgBox myMSG
  End If

End Sub

Private Sub CommandButton2_Click()

  Worksheets("FAX送信のご案内").PrintOut

End Sub

Private Sub SpinButton1_Change()

  データ表示 SpinButton1.Value

End Sub

Private Sub ComboBox2_Click()
  If ComboBox2.Text = Worksheets("Sheet1").Range("B1").Value Then '工事開始のお知らせ
    Calendar1.Visible = False
    Worksheets("FAX送信のご案内").Range("C19:I19").ClearContents
  Else
    Calendar1.Visible = True
  End If

End Sub

Private Sub データ表示(x As Long)
 
  TextBox5.Value = x & "/" & レコード数
  TextBox6.Value = shデータ.Range("A" & x + 1).Value
  TextBox10.Value = Worksheets("新築工事台帳").Cells(SpinButton1.Value, 41).Value
 
End Sub

Private Sub CBSet(ParamArray idx())
  ' : True すべて True
  ' : Fasle すべて False
  ' : n,n,n Trueにする番号
  
  Dim x As Variant
  Dim fg As Boolean
  Dim ck As Long
  Dim myColor As Long
  
  myColor = &H0&
  ck = CLng(idx(0))
  
  If ck = -1 Then
    fg = True 'True
    myColor = &HFF&
  End If
  
  For x = 1 To 35 'CheckBox1〜CheckBox35
    Me.Controls("CheckBox" & x).Value = fg
    Me.Controls("CheckBox" & x).ForeColor = myColor
  Next
  
  If ck < 1 Then Exit Sub 'すべてTrueまたはFalse
  
  For Each x In idx
    Me.Controls("CheckBox" & x).Value = True
    Me.Controls("CheckBox" & x).ForeColor = &HFF&
  Next

End Sub

【72795】Re:スピンボタンの表示
発言  ume  - 12/9/19(水) 15:41 -

引用なし
パスワード
   ▼UO3 さん:
>▼ume さん:
>
>9割がた、現行コードのままでのスリム化が終わっています。
>以下教えてください。
>
>ComboBox2のリストとして ComboBox2.RowSource = "Sheet1!B1:B12"
>つまりSheet1のB1〜B12の12個の値をセットしていますね。
>で、ComboBox2のプロパティで、リスト以外の値の入力をOKにしているかどうかは
>わかりませんが、もし、リストから選ぶだけということなら、その値(ComboBox2.Text)は
>Sheet1 の B1〜B12 のいずれかの値と同じということになりますね。
>
>一方、ComboBox2_Change では ComboBox2.Text と B1〜B10ないしはB12,B13の値が同じかどうかの
>チェックをしておられます。
>B13 との比較の意味は? B11 との比較がない意味は?
>
>●もしかしたら、ここはコードの間違いで、B1〜B12の値との比較をすべきなのではないですか?
申し訳ありません、添付するときに落としてしまいました
実際にはB11もございます
コンボボックス2の内容が '工事開始のお知らせ  だったらチェックボックスの1から35までの操作をしております

【72797】Re:スピンボタンの表示
お礼  ume  - 12/9/19(水) 16:24 -

引用なし
パスワード
   UO3さん お世話になります

下記のようにして、動作完ぺきです
おかしなところも、スマートになると気がつきます^^

知識がないので、少しずつ積み上げ式で作ると間違いも増える事がよくわかりました。
U03さんに感謝です
この先FAX送信のご案内シートシートを同シートC17のテキストで別保存するコマンドを作っていきたいと思っています
がんばりますので、またご教授よろしくお願いいたします


Option Explicit

Dim shデータ As Worksheet
Dim レコード数 As Long

Private Sub UserForm_initialize()
  Dim x As Long
 
  ComboBox1.List = _
    Array("Aさん", "Bさん", "Cさん", "Dさん", "Eさん", "Fさん", "Gさん", "Hさん", "Iさん", "Jさん", "Kさん", "Lさん")
  ComboBox2.RowSource = "Sheet1!B1:B12"

  TextBox1.Value = Worksheets("Sheet1").Range("N11").Value '備考
  TextBox4.Value = Worksheets("Sheet1").Range("I11").Value '日にち

  Set shデータ = Worksheets("新築工事台帳")
  レコード数 = shデータ.Range("A1").CurrentRegion.Rows.Count - 1
 
  If レコード数 = 0 Then
    MsgBox "データがないので実行できませんよ〜〜"
    SpinButton1.Enabled = False
    Exit Sub
  End If

  With SpinButton1
    .Max = レコード数
    .Min = 1
  End With

  Calendar1.Value = Date

End Sub

Private Sub ComboBox2_Change()
  Dim i As Long
  Dim myArray As Variant
  Dim z As Variant
 
  With ComboBox2
    z = Application.Match(.Text, Evaluate(.RowSource), 0)
  End With
 
  If IsNumeric(z) Then
    TextBox1.Value = Worksheets("Sheet1").Range("N" & z).Value
    TextBox4.Value = Worksheets("Sheet1").Range("I" & z).Value
  
    CBSet False         'まずすべてオフ
  
    Select Case z
      Case 1
        CBSet True     '工事開始のお知らせ すべてTrue
      Case 2
        CBSet 2, 19, 35   '地鎮祭のお知らせ
      Case 3
        CBSet 3, 4, 18   '仮設トイレ、水道、電気依頼
      Case 4
        CBSet 1, 34     'コンテナ設置依頼
      Case 5
        CBSet 1, 3, 4, 8, 9, 10, 16, 17 '業者打合せ
      Case 6
        CBSet 20, 22    'FRP 及び 防蟻 工事依頼
      Case 7
        CBSet 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 '木工事終了 及び コンテナ撤去依頼
      Case 8
        CBSet 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 24, 34  '足場払い日程連絡
      Case 9
        CBSet 3, 4, 7, 8, 9, 10, 11, 12, 13, 16, 17, 23   '清掃のお知らせ
      Case 10
        CBSet 1, 3, 4, 17, 23    '社内検査日程連絡
    End Select
  End If
  If ComboBox2.Text = Worksheets("Sheet1").Range("B1").Value Then '工事開始のお知らせ
    Calendar1.Visible = False
    
  Else
    Calendar1.Visible = True
  End If
    
End Sub

Private Sub CommandButton1_Click()
  Dim myMSG As String
  Dim myFlg As Boolean
  Dim x As Long
  Dim r As Long
  Dim c As Long
  Dim z As Long
  Dim i As Long

  Worksheets("FAX送信のご案内").Range("H12").Value = ComboBox1.Value '送信者転記
  Worksheets("FAX送信のご案内").Range("C16").Value = ComboBox2.Value '用件転記
  Worksheets("FAX送信のご案内").Range("A19").Value = TextBox4.Value '日にち項目転記
  Worksheets("FAX送信のご案内").Range("C20").Value = TextBox1.Value '備考転記
  Worksheets("FAX送信のご案内").Range("C21").Value = TextBox2.Value '備考転記
  Worksheets("FAX送信のご案内").Range("C23").Value = TextBox3.Value '備考転記
  Worksheets("FAX送信のご案内").Range("C19").Value = Format(Calendar1.Value, "ggge年mm月dd日(aaa)") 'カレンダーから摘出
  Worksheets("FAX送信のご案内").Range("C17").Value = TextBox7.Value + "邸 新築工事" '工事名転記
  Worksheets("FAX送信のご案内").Range("C18").Value = TextBox8.Value '工事場所転記
  Worksheets("FAX送信のご案内").Range("H17").Value = TextBox9.Value '監督名転記

  If Calendar1.Visible = False Then '工事開始のお知らせ  '★Falsee
 
    Worksheets("FAX送信のご案内").Range("C19:I19").ClearContents
    Worksheets("FAX送信のご案内").Range("C19:I19") = TextBox10.Value
  Else
    Calendar1.Visible = True

  End If

  i = SpinButton1.Value - 1
  myFlg = False
  Sheets("FAX送信のご案内").Range("B2:I10").ClearContents


  For x = 1 To 35 'チェックボックスの番号
    If Me.Controls("CheckBox" & x).Value = True Then
      myMSG = myMSG & Me.Controls("CheckBox" & x).Caption & vbCrLf
      myFlg = True
      z = z + 1
      r = ((z - 1) \ 4) + 2
      c = (((z - 1) Mod 4) + 1) * 2
      Sheets("FAX送信のご案内").Cells(r, c).Value = Sheets("新築工事台帳").Cells(i, x + 5).Value
    End If
  Next x

  If myFlg = True Then
    myMSG = myMSG & "宛てで宜しいですか?"
    If MsgBox(myMSG, vbInformation + vbYesNo) = vbYes Then
      Me.Hide
      ActiveWindow.ActiveSheet.PrintPreview
      Me.Show vbModeless
    End If
  Else
    myMSG = "いずれにもチェックが入っていません"
    MsgBox myMSG
  End If

End Sub

Private Sub CommandButton2_Click()

  Worksheets("FAX送信のご案内").PrintOut

End Sub

Private Sub SpinButton1_Change()

  データ表示 SpinButton1.Value

End Sub


Private Sub データ表示(x As Long)

  TextBox5.Value = x & "/" & レコード数
  TextBox6.Value = shデータ.Range("A" & x + 1).Value
  TextBox7.Value = Worksheets("新築工事台帳").Cells(SpinButton1.Value, 2).Value
  TextBox8.Value = Worksheets("新築工事台帳").Cells(SpinButton1.Value, 3).Value
  TextBox9.Value = Worksheets("新築工事台帳").Cells(SpinButton1.Value, 4).Value
  TextBox10.Value = Worksheets("新築工事台帳").Cells(SpinButton1.Value, 41).Value

End Sub

Private Sub CBSet(ParamArray idx())
  ' : True すべて True
  ' : Fasle すべて False
  ' : n,n,n Trueにする番号
 
  Dim x As Variant
  Dim fg As Boolean
  Dim ck As Long
  Dim myColor As Long
 
  myColor = &H0&
  ck = CLng(idx(0))
 
  If ck = -1 Then
    fg = True 'True
    myColor = &HFF&
  End If
 
  For x = 1 To 35 'CheckBox1〜CheckBox35
    Me.Controls("CheckBox" & x).Value = fg
    Me.Controls("CheckBox" & x).ForeColor = myColor
  Next
 
  If ck < 1 Then Exit Sub 'すべてTrueまたはFalse
 
  For Each x In idx
    Me.Controls("CheckBox" & x).Value = True
    Me.Controls("CheckBox" & x).ForeColor = &HFF&
  Next

End Sub

【72799】Re:スピンボタンの表示
質問  ume  - 12/9/19(水) 18:07 -

引用なし
パスワード
   UO3 さん何度もすみません

不具合が一つ・・・・

ユーザーフォームを開いたとき テキストボックス5がブランクです
スピンボタンを一回押すと2/新築工事台帳のリスト数(行)
と表示されますが、新築工事台帳のリスト数が1行しかない場合スピンボタンが動かず、テキストボックス5,6,7,8,9が表示されません

1/新築工事台帳のリスト数(行)と表示するにはどうしたらいいでしょうか?


よろしくお願い申し上げます

【72800】Re:スピンボタンの表示
発言  UO3  - 12/9/19(水) 20:44 -

引用なし
パスワード
   ▼ume さん:

>ユーザーフォームを開いたとき テキストボックス5がブランクです

スピンボタンのValueやMinプロパティで 1 にしなかったですか?
元々は、初期値の 0 だったと思うのですが。
初期値 0 のままであれば、ユーザーフォームが表示された時点でTextBox5に表示されるはず。

ところで、そちらで追加した

TextBox10.Value = Worksheets("新築工事台帳").Cells(SpinButton1.Value, 41).Value

これは

TextBox10.Value = shデータ.Cells(x, 41).Value

でいいですし、そうしてもらうほうがいいですね。

【72801】Re:スピンボタンの表示
発言  UO3  - 12/9/19(水) 20:56 -

引用なし
パスワード
   ▼ume さん:

>新築工事台帳のリスト数が1行しかない場合スピンボタンが動かず、テキストボックス5,6,7,8,9が表示されません

データがないというメッセージが表示されましたよね。
シートの1行目はタイトル行ではなかったのですか?
(何度か、こちらから質問したと思いますが)
で、シートに1行しかない場合は、データがないと見なしています。

そうではなく、1行目からデータなのであれば、アップしたコードでは具合が悪くなりますよ。

あぁ、それで気がつきました。↑でコメントした件ですが、そちらで追加した

TextBox10.Value = Worksheets("新築工事台帳").Cells(SpinButton1.Value, 41).Value

こちらの理解では

TextBox10.Value = Worksheets("新築工事台帳").Cells(SpinButton1.Value+1, 41).Value

です。
ですから連絡した

TextBox10.Value = shデータ.Cells(x, 41).Value

ではなく

TextBox10.Value = shデータ.Cells(x + 1, 41).Value

でした。

でも、1行目からデータであれば、逆に、他のコードを直さなければいけません。
本当はどちらですか?


>
>1/新築工事台帳のリスト数(行)と表示するにはどうしたらいいでしょうか?
>
>
>よろしくお願い申し上げます

【72810】Re:スピンボタンの表示
質問  ume  - 12/9/20(木) 17:59 -

引用なし
パスワード
   UO3 さんへ
下記のようにしました
UO3 のご指示でうまく動いております


Option Explicit

Dim shデータ As Worksheet
Dim レコード数 As Long
Dim 行 As Long

Private Sub UserForm_initialize()
  Dim x As Long
 
  ComboBox1.List = _
    Array("省略")
  ComboBox2.RowSource = "Sheet1!B1:B12"

  TextBox1.Value = Worksheets("Sheet1").Range("N11").Value '備考
  TextBox4.Value = Worksheets("Sheet1").Range("I11").Value '日にち

  Set shデータ = Worksheets("新築工事台帳")
  レコード数 = shデータ.Range("A1").CurrentRegion.Rows.Count - 1
 
  If レコード数 = 0 Then
    MsgBox "データがないので実行できませんよ〜〜"
    SpinButton1.Enabled = False
    Exit Sub
  End If

  With SpinButton1
    .Max = レコード数
    .Min = 1
  End With
  
  TextBox5.Value = x & "/" & レコード数
  
  
  Calendar1.Value = Date

End Sub

Private Sub ComboBox2_Change()
  Dim i As Long
  Dim myArray As Variant
  Dim z As Variant
 
  With ComboBox2
    z = Application.Match(.Text, Evaluate(.RowSource), 0)
  End With
 
  If IsNumeric(z) Then
    TextBox1.Value = Worksheets("Sheet1").Range("N" & z).Value
    TextBox4.Value = Worksheets("Sheet1").Range("I" & z).Value
  
    CBSet False         'まずすべてオフ
  
    Select Case z
      Case 1
        CBSet True     '工事開始のお知らせ すべてTrue
      Case 2
        CBSet 2, 19, 35   '地鎮祭のお知らせ
      Case 3
        CBSet 3, 4, 18   '仮設トイレ、水道、電気依頼
      Case 4
        CBSet 1, 34     'コンテナ設置依頼
      Case 5
        CBSet 1, 3, 4, 8, 9, 10, 16, 17 '業者打合せ
      Case 6
        CBSet 20, 22    'FRP 及び 防蟻 工事依頼
      Case 7
        CBSet 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 '木工事終了 及び コンテナ撤去依頼
      Case 8
        CBSet 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 24, 34  '足場払い日程連絡
      Case 9
        CBSet 3, 4, 7, 8, 9, 10, 11, 12, 13, 16, 17, 23   '清掃のお知らせ
      Case 10
        CBSet 1, 3, 4, 17, 23    '社内検査日程連絡
    End Select
  End If
  If ComboBox2.Text = Worksheets("Sheet1").Range("B1").Value Then '工事開始のお知らせ
    Calendar1.Visible = False
    
  Else
    Calendar1.Visible = True
  End If
    
End Sub

Private Sub CommandButton1_Click()
  Dim myMSG As String
  Dim myFlg As Boolean
  Dim x As Long
  Dim r As Long
  Dim c As Long
  Dim z As Long
  Dim i As Long

  Worksheets("FAX送信のご案内").Range("H12").Value = ComboBox1.Value '送信者転記
  Worksheets("FAX送信のご案内").Range("C16").Value = ComboBox2.Value '用件転記
  Worksheets("FAX送信のご案内").Range("A19").Value = TextBox4.Value '日にち項目転記
  Worksheets("FAX送信のご案内").Range("C20").Value = TextBox1.Value '備考転記
  Worksheets("FAX送信のご案内").Range("C21").Value = TextBox2.Value '備考転記
  Worksheets("FAX送信のご案内").Range("C23").Value = TextBox3.Value '備考転記
  Worksheets("FAX送信のご案内").Range("C19").Value = Format(Calendar1.Value, "ggge年mm月dd日(aaa)") 'カレンダーから摘出
  Worksheets("FAX送信のご案内").Range("C17").Value = TextBox7.Value + "邸 新築工事" '工事名転記
  Worksheets("FAX送信のご案内").Range("C18").Value = TextBox8.Value '工事場所転記
  Worksheets("FAX送信のご案内").Range("H17").Value = TextBox9.Value '監督名転記

  If Calendar1.Visible = False Then '工事開始のお知らせ
 
    Worksheets("FAX送信のご案内").Range("C19:I19").ClearContents
    Worksheets("FAX送信のご案内").Range("C19:I19") = TextBox10.Value
  Else
    Calendar1.Visible = True

  End If

  i = SpinButton1.Value + 1
  myFlg = False
  Sheets("FAX送信のご案内").Range("B2:I10").ClearContents


  For x = 1 To 35 'チェックボックスの番号
    If Me.Controls("CheckBox" & x).Value = True Then
      myMSG = myMSG & Me.Controls("CheckBox" & x).Caption & vbCrLf
      myFlg = True
      z = z + 1
      r = ((z - 1) \ 4) + 2
      c = (((z - 1) Mod 4) + 1) * 2
      Sheets("FAX送信のご案内").Cells(r, c).Value = Sheets("新築工事台帳").Cells(i, x + 5).Value
    End If
  Next x

  If myFlg = True Then
    myMSG = myMSG & "宛てで宜しいですか?"
    If MsgBox(myMSG, vbInformation + vbYesNo) = vbYes Then
      Me.Hide
      ActiveWindow.ActiveSheet.PrintPreview
      Me.Show vbModeless
    End If
  Else
    myMSG = "いずれにもチェックが入っていません"
    MsgBox myMSG
  End If

End Sub

Private Sub CommandButton2_Click()

  Worksheets("FAX送信のご案内").PrintOut

End Sub

Private Sub SpinButton1_Change()

  データ表示 SpinButton1.Value

End Sub


Private Sub データ表示(x As Long)

  TextBox5.Value = x & "/" & レコード数
  TextBox6.Value = shデータ.Range("A" & x + 1).Value
  TextBox7.Value = shデータ.Cells(x + 1, 2).Value
  TextBox8.Value = shデータ.Cells(x + 1, 3).Value
  TextBox9.Value = shデータ.Cells(x + 1, 4).Value
  TextBox10.Value = shデータ.Cells(x + 1, 41).Value

End Sub

Private Sub CBSet(ParamArray idx())
  ' : True すべて True
  ' : Fasle すべて False
  ' : n,n,n Trueにする番号
 
  Dim x As Variant
  Dim fg As Boolean
  Dim ck As Long
  Dim myColor As Long
 
  myColor = &H0&
  ck = CLng(idx(0))
 
  If ck = -1 Then
    fg = True 'True
    myColor = &HFF&
  End If
 
  For x = 1 To 35 'CheckBox1〜CheckBox35
    Me.Controls("CheckBox" & x).Value = fg
    Me.Controls("CheckBox" & x).ForeColor = myColor
  Next
 
  If ck < 1 Then Exit Sub 'すべてTrueまたはFalse
 
  For Each x In idx
    Me.Controls("CheckBox" & x).Value = True
    Me.Controls("CheckBox" & x).ForeColor = &HFF&
  Next

End Sub


現在、新築工事台帳には2行目と3行目にデーターが入っています
1行目はタイトル行です
ユーザーフォームを開いたとき0/2になってしまいます
出来たらですが2/2(最終行)にすることはできますでしょうか

よろしくお願い申し上げます

【72815】Re:スピンボタンの表示
発言  UO3  - 12/9/20(木) 21:28 -

引用なし
パスワード
   ▼ume さん:

こんばんは

最初に最終行を表示するというのは、横に置いて。

まず、現在のコードは表示したとき、データは1件目(つまりシートの2行目)ということですね。
ですから、シートに、たとえばタイトル行も含めて、1行あれば、データは2行目から11行目までの10件。
ユーザーフォームが表示されたときの状態は、TextBox1 が 1/10 。そのほかのテキストボックスには1件目
つまりシートの2行目の値が表示されている。これはいいですね?

でも、今回アップされたコードでは、TextBox5 は 0/10 になっているはずです。

仕掛けを説明しておきますと、Initializeルーティンで SpinButton1 のMin に 1 をいれていますね。
元々の値(初期値)は 0 ですから、ここでSupinButton1 「Changeイベント」が発生します。
で、その値(1)をもって、データ表示が実行されます。
で、その最初の、TextBox5.Value = x & "/" & レコード数 で TextBox5 は 1/10 になります。

なのに、その後、Initializeルーティンに戻るわけですが、そこで またもや
TextBox5.Value = x & "/" & レコード数 がありますねぇ??
Initializeルーティンでは Dim x As Long と宣言していますが、このプロシジャ内では値をセット
していませんので、 x は 初期値 0 のままです。

結果的に、せっかく 1/10 とセットしたのに、そのあと、 0/10 に強制的に置き換えられています。
なぜ、こうされたのですか?
Initializeルーティンの TextBox5.Value = x & "/" & レコード数 は削除してください。

で、表示したときに、最終行のデータを表示させるということなら

  With SpinButton1
    .Max = レコード数
    .Min = 1
  End With

これを

  With SpinButton1
    .Max = レコード数
    .Value = .Max
    .Min = 1
  End With

こうしてください。

繰り返しますが、Initializeルーティンの TextBox5.Value = x & "/" & レコード数 は削除してくださいね。

【72819】Re:スピンボタンの表示
お礼  ume  - 12/9/21(金) 13:13 -

引用なし
パスワード
   ▼UO3 さん:
>▼ume さん:
>
>こんばんは
>
>最初に最終行を表示するというのは、横に置いて。
>
>まず、現在のコードは表示したとき、データは1件目(つまりシートの2行目)ということですね。
>ですから、シートに、たとえばタイトル行も含めて、1行あれば、データは2行目から11行目までの10件。
>ユーザーフォームが表示されたときの状態は、TextBox1 が 1/10 。そのほかのテキストボックスには1件目
>つまりシートの2行目の値が表示されている。これはいいですね?


はい、いいです


>
>でも、今回アップされたコードでは、TextBox5 は 0/10 になっているはずです。
>
>仕掛けを説明しておきますと、Initializeルーティンで SpinButton1 のMin に 1 をいれていますね。
>元々の値(初期値)は 0 ですから、ここでSupinButton1 「Changeイベント」が発生します。
>で、その値(1)をもって、データ表示が実行されます。
>で、その最初の、TextBox5.Value = x & "/" & レコード数 で TextBox5 は 1/10 になります。
>
>なのに、その後、Initializeルーティンに戻るわけですが、そこで またもや
>TextBox5.Value = x & "/" & レコード数 がありますねぇ??
>Initializeルーティンでは Dim x As Long と宣言していますが、このプロシジャ内では値をセット
>していませんので、 x は 初期値 0 のままです。
>
>結果的に、せっかく 1/10 とセットしたのに、そのあと、 0/10 に強制的に置き換えられています。
>なぜ、こうされたのですか?


ユーザーフォームを開いたときにTextBox5.Value = x & "/" & レコード数を入れないと、テキスト5は空白になってしまうので、わざわざ入れたのですがそこで初期値を0に戻してしまっているのですね・・・気がつきませんでした


>Initializeルーティンの TextBox5.Value = x & "/" & レコード数 は削除してください。
>
>で、表示したときに、最終行のデータを表示させるということなら
>
>  With SpinButton1
>    .Max = レコード数
>    .Min = 1
>  End With
>
>これを
>
>  With SpinButton1
>    .Max = レコード数
>    .Value = .Max
>    .Min = 1
>  End With
>
>こうしてください。
>
>繰り返しますが、Initializeルーティンの TextBox5.Value = x & "/" & レコード数 は削除してくださいね。


はい、上記の記述で完ぺきに動作しております
いつもいつも、教えていただきほんとに感謝です
まだまだ、機能を付けていきますが
また つまずいた時にはご教授よろしくお願いいたします。

1658 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free