[[20150207120851]] 『指定セルを選択するとFormを表示させる方法』(まさ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『指定セルを選択するとFormを表示させる方法』(まさ)

引き続きお世話になります。
下記コードは、ワークシートモジュールに記載しているものです。

処理内容は
・指定セルを選択するとFormを表示し
・指定外セルの場合はFormを閉じる
といった動作をします。

質問は、
IF Target.Row = 4 And Target.Column = 6 Then の部分について

    ↓
IF Target. Range("F4") Then

と言った感じで記載したいのですが、型が一致しませんとでます。
正しい記述方法についてアドバイスの程よろしくお願いします。

現在の、コードです(見た目悪いかもしれませんが一応動いているみたいです)

' ◆Worksheetのコード◆
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Target.Row = 4 And Target.Column = 6 Then
        UserForm1.Show vbModeless
    Else

        If Target.Row = 13 And Target.Column = 6 Then
            UserForm1.Show vbModeless
        Else

            If Target.Row = 14 And Target.Column = 6 Then
                UserForm1.Show vbModeless
            Else

                If Target.Row = 42 And Target.Column = 6 Then
                    UserForm1.Show vbModeless
                Else

                    If Target.Row = 43 And Target.Column = 6 Then
                        UserForm1.Show vbModeless
                    Else

                        If Target.Row = 44 And Target.Column = 6 Then
                            UserForm1.Show vbModeless
                        Else

                            If Target.Row = 5 And Target.Column = 53 Then
                                UserForm1.Show vbModeless
                            Else

                                If Target.Row = 13 And Target.Column = 54 Then
                                    UserForm1.Show vbModeless
                                Else

                                    If Target.Row = 17 And Target.Column = 54 Then
                                        UserForm1.Show vbModeless
                                    Else
                                        UserForm1.Hide
                                    End If
                                End If
                            End If
                        End If
                    End If
                End If
            End If
        End If
    End If

    If Target.Row = 6 And Target.Column = 53 Then
        UserForm2.Show vbModeless
    Else
        UserForm2.Hide
    End If

End Sub

< 使用 Excel:Excel2010、使用 OS:Windows7 >


If Not Application.Intersect(Target, Union(Range("F1"), Range("F6"))) Is Nothing Then
 UserForm1.Show vbModeless
else
・・・
End If

(H) 2015/02/07(土) 13:24


 一例です。

 Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Select Case Target(1).Address(False, False)
        Case "F4", "F14", "F42", "F43", "F44", "BA5", "BB13", "BB17"
            UserForm1.Show vbModeless
    End Select

    If Intersect(Target, Range("BA6")) Is Nothing Then
        UserForm2.Hide
    Else
        UserForm2.Show vbModeless
    End If

 End Sub

(β) 2015/02/07(土) 19:26


 もし、Intersect処理がお望みなら

 Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Not Intersect(Target, Range("F4, F14, F42, F43, F44, BA5, BB13, BB17")) Is Nothing Then UserForm1.Show vbModeless

    If Intersect(Target, Range("BA6")) Is Nothing Then
        UserForm2.Hide
    Else
        UserForm2.Show vbModeless
    End If

 End Sub

(β) 2015/02/07(土) 20:03


 セル領域に抜けあり。

  Case "F4", "F13", "F14", "F42", "F43", "F44", "BA5", "BB13", "BB17"

  If Not Intersect(Target, Range("F4, F13, F14, F42, F43, F44, BA5, BB13, BB17")) Is Nothing Then UserForm1.Show vbModeless

(β) 2015/02/07(土) 20:15


 To (H)さん

 Union(Range("F1"), Range("F6")) これはオリジナルコードの読み違いだとして(たぶん・・・)

 この領域は Union メソッドを使わずとも Range("F1,F6") で直接指定可能です。

 Sub Test()
    MsgBox Union(Range("F1"), Range("F6")).Address & vbLf & _
           Range("F1, F6").Address
 End Sub

 なお、 Range("F1,F6") は F1「と」F6 ですが、Range("F1","F6") と記述すると F1 「から」 F6 となります。
 ご参考まで。

(β) 2015/02/07(土) 20:58


Hさん
βさん

ありがとうございます。
動作確認しました。

Form2は、指定セル以外は、閉じるようになっておりますが
Form1が、指定セル以外は、閉じないようです。

下記のコードの部分で、UserForm1.Hide する場合
どの部分にコードを記述すればよろしいのでしょうか?

すみません、アドバイスよろしくお願いします。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Not Intersect(Target, Range("F4, F14, F42, F43, F44, BA5, BB13, BB17")) Is Nothing Then UserForm1.Show vbModeless
    If Intersect(Target, Range("BA6")) Is Nothing Then
        UserForm2.Hide
    Else
        UserForm2.Show vbModeless
    End If
End Sub
(まさ) 2015/02/07(土) 21:00

 コードのその部分を見過ごしていました。(オリジナルコードがきわめて見づらいので、と言い訳?)

 Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Not Intersect(Target, Range("F4, F13, F14, F42, F43, F44, BA5, BB13, BB17")) Is Nothing Then
        UserForm1.Show vbModeless
    Else
        UserForm1.Hide
    End If

    If Intersect(Target, Range("BA6")) Is Nothing Then
        UserForm2.Hide
    Else
        UserForm2.Show vbModeless
    End If
 End Sub

 または

 Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Select Case Target(1).Address(False, False)
        Case "F4", "F13", "F14", "F42", "F43", "F44", "BA5", "BB13", "BB17"
            UserForm1.Show vbModeless
        Case Else
            UserForm1.Hide
    End Select

    If Intersect(Target, Range("BA6")) Is Nothing Then
        UserForm2.Hide
    Else
        UserForm2.Show vbModeless
    End If

 End Sub

(β) 2015/02/07(土) 21:23


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.