[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『指定セルを選択すると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 >
(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
ありがとうございます。
動作確認しました。
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.