Excel VBA質問箱 IV

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

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


2147 / 13645 ツリー ←次へ | 前へ→

【69676】もう一回 チェックしたいです。 LALA 11/8/19(金) 15:57 質問[未読]
【69677】Re:もう一回 チェックしたいです。 LALA 11/8/19(金) 17:28 質問[未読]
【69678】Re:もう一回 チェックしたいです。 UO3 11/8/19(金) 19:43 発言[未読]
【69681】Re:もう一回 チェックしたいです。 LALA 11/8/20(土) 10:16 お礼[未読]
【69682】Re:もう一回 チェックしたいです。 UO3 11/8/20(土) 13:32 回答[未読]

【69676】もう一回 チェックしたいです。
質問  LALA  - 11/8/19(金) 15:57 -

引用なし
パスワード
   こんにちは!
おねがいします!
足し算に行くまでに
ひっかかりました。
(ウォさん 六つに増えた!)

この選択で良くない場合は
vbNo の時は、最初からやりたいんですけど、
どうすればいいんでしょうか?

宜しくお願いします!

このプログラムのサイトの方、
使わせてもらってます!

すみません!


Private Sub CommandButton_Click()
  Dim tot As Long
  Dim IsOK As Variant
  Dim myMSG As String
  Dim myFlg As Boolean
  myFlg = False
    If CheckBox1.Value = True Then
      myMSG = myMSG & CheckBox1.Caption & vbCrLf & vbCrLf
      myFlg = True
    End If
    If CheckBox2.Value = True Then
      myMSG = myMSG & CheckBox2.Caption & vbCrLf & vbCrLf
      myFlg = True
    End If
    If CheckBox3.Value = True Then
      myMSG = myMSG & CheckBox3.Caption & vbCrLf & vbCrLf
      myFlg = True
    End If
    If CheckBox4.Value = True Then
      myMSG = myMSG & CheckBox4.Caption & vbCrLf & vbCrLf
      myFlg = True
    End If
    If CheckBox5.Value = True Then
      myMSG = myMSG & CheckBox5.Caption & vbCrLf & vbCrLf
      myFlg = True
    End If
    If CheckBox6.Value = True Then
      myMSG = myMSG & CheckBox6.Caption & vbCrLf & vbCrLf
      myFlg = True
    End If
    If myFlg = True Then
        If MsgBox(myMSG & "           にチェックが入っています" & Chr(10) & Chr(10) & _
                        "        この選択でいいですか? )", _
                vbYesNo + vbDefaultButton2 + vbQuestion, "重要") = vbYes _
        Then
        Else
        End If
    Else
      myMSG = "いずれにもチェックが入っていません"
    End If
  MsgBox myMSG
  CheckBox1.Value = False
  CheckBox2.Value = False
  CheckBox3.Value = False
  CheckBox4.Value = False
  CheckBox5.Value = False
  CheckBox6.Value = False
  'IsOK = True
  'Hide
End Sub

【69677】Re:もう一回 チェックしたいです。
質問  LALA  - 11/8/19(金) 17:28 -

引用なし
パスワード
   Unload Me
UserForm1.Show

こんな使い方してもいいんですか?

宜しくお願いします!

Private Sub CommandButton_Click()
  Dim tot As Long
  Dim IsOK As Variant
  Dim myMSG As String
  Dim myFlg As Boolean
  myFlg = False
    If CheckBox1.Value = True Then
      myMSG = myMSG & CheckBox1.Caption & vbCrLf & vbCrLf
      myFlg = True
    End If
    If CheckBox2.Value = True Then
      myMSG = myMSG & CheckBox2.Caption & vbCrLf & vbCrLf
      myFlg = True
    End If
    If CheckBox3.Value = True Then
      myMSG = myMSG & CheckBox3.Caption & vbCrLf & vbCrLf
      myFlg = True
    End If
    If CheckBox4.Value = True Then
      myMSG = myMSG & CheckBox4.Caption & vbCrLf & vbCrLf
      myFlg = True
    End If
    If CheckBox5.Value = True Then
      myMSG = myMSG & CheckBox5.Caption & vbCrLf & vbCrLf
      myFlg = True
    End If
    If CheckBox6.Value = True Then
      myMSG = myMSG & CheckBox6.Caption & vbCrLf & vbCrLf
      myFlg = True
    End If
    If myFlg = True Then
        If MsgBox(Chr(10) & Chr(10) & myMSG & " にチェックが入っています。この選択でいいですか?", _
                vbYesNo + vbDefaultButton2 + vbQuestion, "重要") = vbYes _
        Then
        Else
           Unload Me
           UserForm1.Show
        End If
    Else
      myMSG = "いずれにもチェックが入っていません"
    End If
  'CheckBox1.Value = False 
  'CheckBox2.Value = False
  'CheckBox3.Value = False
  'CheckBox4.Value = False
  'CheckBox5.Value = False
  'CheckBox6.Value = False
  'IsOK = True
  'Hide 作成中なのでまだ続きます!
End Sub

【69678】Re:もう一回 チェックしたいです。
発言  UO3  - 11/8/19(金) 19:43 -

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

こんばんは

まず、 Private Sub CommandButton_Click()
これは Private Sub CommandButton1_Click()
にしましょうね。

えぇっと、vbNo の場合は最初からやりたいということだけど、
ユーザーフォーム上の操作と処理の流れを整理してみましょう。

・ユーザーフォームが表示されている。
・操作者が必要なチェックボックスを選ぶ。
・コマンドボタンをおす。
・メッセージをだす。

さて、そのあとですけど。

vbYesだったらどんなな処理になりますか?
vbNoだったら(いったんチェックをすべてはずすかどうかはLALAさんの要件次第だけど)
素直に End Sub でぬける。
ユーザーフォームは、まだ表示されたままだから、操作者は、あらためてチェックボックスを
選択してコマンドボタンを押す。

むしろ、ポイントはvbYesだったらどうするかということです。

もうひとつ。
ユーザーフォームが閉じられたあと、処理としてはどうするのか。

そのあたりのながれがわからないので、何と何をアドバイスしたらいいかが
わからないんです。
(心配なところはたくさんありますから、できるだけ、お手伝いしたいと思ってますが)

それと、このユーザーフォームは、どこかで Show しているはずですが
それは ユーザーフォーム.Show (またはユーザーフォーム.Show vbModal)ですか
それとも ユーザーフォーム.Show vbModeless ですか?

もし前者なら、そのShowの後にはどんな処理のコードが書かれていますか?

以上のことを教えてもらえれば、いろいろアドバイスできると思います。

【69681】Re:もう一回 チェックしたいです。
お礼  LALA  - 11/8/20(土) 10:16 -

引用なし
パスワード
   ▼UO3 さん:
こんにちは!有難う御座います!

>まず、 Private Sub CommandButton_Click()
>これは Private Sub CommandButton1_Click()
>にしましょうね。

これね、(オブジェクト名)
ここをね、なんかわからずに1とっちゃたんです。
そしたら、ボタンが起動しなくなって
だけど、このタイトルから1を取ったら動いたのでそうしました。
いけなかったかしら。
すみません。


>さて、そのあとですけど。
>
>vbYesだったらどんなな処理になりますか?

これイエスだったらウォさんのトット(tot)で足し算です。
それでもって、数字があっていれば、OKでというかたちです。
うーんと if range("a9")=tot then で行こうと思います!

>vbNoだったら(いったんチェックをすべてはずすかどうかはLALAさんの要件次第だけど)

はずします!

>素直に End Sub でぬける。
>ユーザーフォームは、まだ表示されたままだから、操作者は、あらためてチェックボックスを
>選択してコマンドボタンを押す。

なるほど、勉強になります!

>むしろ、ポイントはvbYesだったらどうするかということです。

上に書きました!

>もうひとつ。
>ユーザーフォームが閉じられたあと、処理としてはどうするのか。
>

これはなんとお答えしていいのか。
とじたら、コピーしたり、張り付けたり、
多分ですが、チェックボックスより簡単ですw

>そのあたりのながれがわからないので、何と何をアドバイスしたらいいかが
>わからないんです。
>(心配なところはたくさんありますから、できるだけ、お手伝いしたいと思ってますが)

ありがとう!いい人と出会えて良かったです!

>それと、このユーザーフォームは、どこかで Show しているはずですが
>それは ユーザーフォーム.Show (またはユーザーフォーム.Show vbModal)ですか
>それとも ユーザーフォーム.Show vbModeless ですか?

これむずかしそうですね。こんなのがあるんですね。
Private Sub チェックボックス()
  UserForm1.Show
End Sub
これだけです!

いろいろありがとうございます!
今から、色々がんばってみます。
END SUB で切り抜けてみます。
さっきなんとなく わかってきたような気がします。
また引っかかったらきます!
たぶん ウォさんのいいたことはこうだと思います。
計画をしっかりしなさい!!
ですが、未計画ですw
やってると、どんどん変化していくんです。
だから、全体図を掴んだら、またきます!
そして、お話しさせて下さい!
ありがとう!

PS:さっき気づいたんですが、
   ウォさん と 呼んでますが、これって
   ウォサンさん が 正しくて
   ずっと、呼び捨てにしてたw
   ごめんなさい!

【69682】Re:もう一回 チェックしたいです。
回答  UO3  - 11/8/20(土) 13:32 -

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

こんにちは

当分、帰ってこられないかもしれないので、このコードも目にとまらないかもしれませんが?
なんとなく想像で、イメージしていらっしゃることはこんなことなんだろうなというコード。

最初が「基本形」、2番目が「ブラッシュアップ版」

Private Sub CommandButton_Click()
  Dim tot As Long
  Dim myMSG As String
  Dim myFlg As Boolean
  
    If CheckBox1.Value = True Then
      tot = tot + Worksheets("Sheet1").Range("A1").Value
      myMSG = myMSG & CheckBox1.Caption & vbCrLf & vbCrLf
      myFlg = True
    End If
    If CheckBox2.Value = True Then
      tot = tot + Worksheets("Sheet1").Range("A2").Value
      myMSG = myMSG & CheckBox2.Caption & vbCrLf & vbCrLf
      myFlg = True
    End If
    If CheckBox3.Value = True Then
      tot = tot + Worksheets("Sheet1").Range("A3").Value
      myMSG = myMSG & CheckBox3.Caption & vbCrLf & vbCrLf
      myFlg = True
    End If
    If CheckBox4.Value = True Then
      tot = tot + Worksheets("Sheet1").Range("A4").Value
      myMSG = myMSG & CheckBox4.Caption & vbCrLf & vbCrLf
      myFlg = True
    End If
    If CheckBox5.Value = True Then
      tot = tot + Worksheets("Sheet1").Range("A5").Value
      myMSG = myMSG & CheckBox5.Caption & vbCrLf & vbCrLf
      myFlg = True
    End If
    If CheckBox6.Value = True Then
      tot = tot + Worksheets("Sheet1").Range("A6").Value
      myMSG = myMSG & CheckBox6.Caption & vbCrLf & vbCrLf
      myFlg = True
    End If
    If myFlg = True Then
        If MsgBox(Chr(10) & Chr(10) & myMSG & " にチェックが入っおり、合計は " & tot & " です。この選択でいいですか?", _
                vbYesNo + vbDefaultButton2 + vbQuestion, "重要") = vbYes Then
          Worksheets("Sheet1").Range("A9").Value = tot
          '作成中の他にやる処理をここに。
          'このあたりは、コードが多くなると見づらくなるのでサブプロシジャ化も検討してね。
          Unload Me
        Else
          CheckBox1.Value = False
          CheckBox2.Value = False
          CheckBox3.Value = False
          CheckBox4.Value = False
          CheckBox5.Value = False
          CheckBox6.Value = False
        End If
    Else
      MsgBox "いずれにもチェックが入っていません"
    End If
End Sub


Private Sub CommandButton_Click()
  Dim tot As Long
  Dim myMSG As String
  Dim myFlg As Boolean
  Dim i As Long
  
  With Worksheets("SHeet1")
  
    For i = 1 To 6 'CheckBox1〜CheckBox6
    
      If Me.Controls("CheckBox" & i).Value Then
        tot = tot + .Range("A" & i).Value
        myMSG = myMSG & Me.Controls("CheckBox" & i).Caption & vbCrLf & vbCrLf
        myFlg = True
      End If
      
    Next
    
    If myFlg = True Then
        If MsgBox(Chr(10) & Chr(10) & myMSG & " にチェックが入っおり、合計は " & tot & " です。この選択でいいですか?", _
                vbYesNo + vbDefaultButton2 + vbQuestion, "重要") = vbYes Then
          .Range("A9").Value = tot
          '作成中の他にやる処理をここに。
          'このあたりは、コードが多くなると見づらくなるのでサブプロシジャ化も検討してね。
          Unload Me
        Else
          For i = 1 To 6
          Me.Controls("CheckBox" & i).Value = False
          Next
        End If
    Else
      MsgBox "いずれにもチェックが入っていません"
    End If
    
  End With
  
End Sub

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