過去ログ

                                Page     130
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼コマンドボタンを押すときに  ぱとれす 02/9/25(水) 15:35
   ┗Re:コマンドボタンを押すときに  つん 02/9/25(水) 16:03
      ┗違った・・・  つん 02/9/25(水) 16:09
         ┣Re:違った・・・  ぱとれす 02/9/25(水) 16:47
         ┗ちょっと応用を・・・  ぱとれす 02/9/25(水) 17:45
            ┗Re:ちょっと応用を・・・  つん 02/9/25(水) 17:57
               ┗Re:ちょっと応用を・・・  ぱとれす 02/9/25(水) 18:50

 ───────────────────────────────────────
 ■題名 : コマンドボタンを押すときに
 ■名前 : ぱとれす
 ■日付 : 02/9/25(水) 15:35
 -------------------------------------------------------------------------
   こんにちわ。
久しぶりにきました。質問箱4になってたんですね・・・知りませんでした^-^;

それはいいとして、下記について教えてください。
Sheetが4つあるBookで、ユーザーフォームのCommandbutton1をクリックするとき、
Sheet1〜4のB4セルのどれか一つでも空欄ではなかった場合に、
CommandButtonが効かないようにして、「Buttonは使えません」というメッセージを
返したいのですが、どのようにすればよいのでしょうか?
(全シートのB4が空欄のセルならば何もせずにButtonの処理が実行される)
ご教授宜しくお願いします。
 ───────────────────────────────────────  ■題名 : Re:コマンドボタンを押すときに  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/9/25(水) 16:03  -------------------------------------------------------------------------
   ぱとれす さん、こんにちは〜

こんな感じでどうですか?
シートが4枚しかないというのを前提で・・・
フォーム表示時に、全シートのB4をチェックして、
空欄以外のセルがあったら、EnabledをFalseにします。

Private Sub UserForm_Initialize()

  Dim i As Long
  Dim ws As Worksheet
  
  For Each ws In Worksheets
    If ws.Range("b4").Value <> "" Then
      CommandButton1.Enabled = False
    End If
  Next ws

End Sub
 ───────────────────────────────────────  ■題名 : 違った・・・  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/9/25(水) 16:09  -------------------------------------------------------------------------
   すんません・・・質問をちゃんと読めてませんでしたね。
こうかな?

Private Sub CommandButton1_Click()

  Dim i As Long
  Dim ws As Worksheet
  
  For Each ws In Worksheets
    If ws.Range("b4").Value <> "" Then
      MsgBox "ボタンは使えません"
      Set ws = Nothing
      Exit Sub
    End If
  Next ws
  
  '続けて処理処理処理

End Sub
 ───────────────────────────────────────  ■題名 : Re:違った・・・  ■名前 : ぱとれす  ■日付 : 02/9/25(水) 16:47  -------------------------------------------------------------------------
   つんさん、こんにちわ。

レス早いですね〜おかげで助かりました。
頂いたコードそのまま使わせていただきました。解決です。
ありがとうございました。
 ───────────────────────────────────────  ■題名 : ちょっと応用を・・・  ■名前 : ぱとれす  ■日付 : 02/9/25(水) 17:45  -------------------------------------------------------------------------
   つんさん

これを応用して、Sheetが8つあって、
ws1とws8の場合は"A4"を、残りSheetは"B4"セルを参照するようにした場合は
どう書けばよいのでしょう?

>  
>  For Each ws In Worksheets
>    If ws.Range("b4").Value <> "" Then
>      MsgBox "ボタンは使えません"
>      Set ws = Nothing
>      Exit Sub
>    End If
>  Next ws
 ───────────────────────────────────────  ■題名 : Re:ちょっと応用を・・・  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/9/25(水) 17:57  -------------------------------------------------------------------------
   ぱとれすさん

>これを応用して、Sheetが8つあって、
>ws1とws8の場合は"A4"を、残りSheetは"B4"セルを参照するようにした場合は
>どう書けばよいのでしょう?

シート名で判断したらええと思います
こんな感じ・・・

Private Sub CommandButton1_Click()

  Dim ws As Worksheet

  For Each ws In Worksheets
    If (ws.Name = "ws1") Or (ws.Name = "ws8") Then
      If ws.Range("a4").Value = "" Then
        MsgBox "ボタンは使えません"
        Set ws = Nothing
        Exit Sub
      End If
    Else
      If ws.Range("b4").Value <> "" Then
        MsgBox "ボタンは使えません"
        Set ws = Nothing
        Exit Sub
      End If
    End If
  Next ws

End Sub
 ───────────────────────────────────────  ■題名 : Re:ちょっと応用を・・・  ■名前 : ぱとれす  ■日付 : 02/9/25(水) 18:50  -------------------------------------------------------------------------
   つんさん、ありがとうございます。

なるほど、わかりましたぁ。
こう書くのか。勉強になります。
ありがとうございました。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 130