- ベストアンサー
マクロについてしつもんです。
b2に数字を入力すると、C列からI列まで非表示にしたり再表示したりするマクロを詳しく教えてください。よろしくお願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは! 横からお邪魔します。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてB2セルの値を色々変更してみてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から If Intersect(Target, Range("B2")) Is Nothing Then Exit Sub On Error Resume Next Columns.Hidden = False If Target > 0 Then Range(Columns(3), Columns(2 + Target)).Hidden = True End If End Sub 'この行まで こんな感じではどうでしょうか?m(_ _)m
その他の回答 (6)
- KURUMITO
- ベストアンサー率42% (1835/4283)
回答No1,2です。 B2セルに入力された数値をもとに該当する列を非表示にしたり、表示にしたりするのでしたら次のようにすればよいでしょう。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells = Range("B2") And IsNumeric(Range("B2").Value) = True Then If Columns(Range("B2").Value).Hidden = False Then Columns(Range("B2").Value).Hidden = True Else Columns(Range("B2").Value).Hidden = False End If End If End Sub
お礼
ありがとうございました。
- watabe007
- ベストアンサー率62% (476/760)
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$B$2" Then Exit Sub '入力がB2以外はExit '全表示 Columns("C:I").Hidden = False Select Case Target.Value Case 1: Columns("C:C").Hidden = True '1ならC列非表示 Case 2: Columns("D:D").Hidden = True '2ならD列非表示 Case 3: Columns("E:I").Hidden = True '3ならE:I列非表示 End Select End Sub
お礼
ありがとうございました。
- watabe007
- ベストアンサー率62% (476/760)
こんにちは、 シートモジュールに貼り付けてお試し下さい。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$B$2" Then Exit Sub Columns("C:I").Hidden = IsNumeric(Target.Value) And Target.Value <> "" End Sub
お礼
回答ありがとうございます。数字の1なら1列2なら2列とかの設定はできるでしょうか?
- DreamyCat
- ベストアンサー率56% (295/524)
backspaceキーとdeleteキーでも反応してしまいますが どうでしょう。 Private Sub Worksheet_Change(ByVal Target As Range) If Target = Range("B2") And IsNumeric(Target.Value) Then ActiveSheet.Columns("C:I").Hidden = Not ActiveSheet.Columns("C:I").Hidden End If End Sub
お礼
回答ありがとうございます。補足ですがよろしくお願いします。
補足
数字の1なら1列2なら2列とかの設定はできないでしょうか?
- KURUMITO
- ベストアンサー率42% (1835/4283)
解答No1です。 B2セルが数値の入力でなければ作動しないようにするのでしたら If Target.Cells = Range("B2") And IsNumeric(Range("B2").Value) = True Then に変更してください。
お礼
回答ありがとうございます。補足ですがよろしくお願いします。
補足
数字の1なら1列2なら2列とかの設定はできないでしょうか?
- KURUMITO
- ベストアンサー率42% (1835/4283)
例えば次のようなマクロにします。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells = Range("B2") And Range("B2") <> "" Then If Columns("C:I").Hidden = False Then Columns("C:I").Hidden = True Else Columns("C:I").Hidden = False End If End If End Sub
お礼
助かりました。ありがとうございました。