• ベストアンサー

マクロについてしつもんです。

b2に数字を入力すると、C列からI列まで非表示にしたり再表示したりするマクロを詳しく教えてください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.6

こんにちは! 横からお邪魔します。 画面左下の操作したい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

yoshimitsu525
質問者

お礼

助かりました。ありがとうございました。

その他の回答 (6)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.7

回答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

yoshimitsu525
質問者

お礼

ありがとうございました。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.5

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

yoshimitsu525
質問者

お礼

ありがとうございました。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.4

こんにちは、 シートモジュールに貼り付けてお試し下さい。 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

yoshimitsu525
質問者

お礼

回答ありがとうございます。数字の1なら1列2なら2列とかの設定はできるでしょうか?

  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.3

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

yoshimitsu525
質問者

お礼

回答ありがとうございます。補足ですがよろしくお願いします。

yoshimitsu525
質問者

補足

数字の1なら1列2なら2列とかの設定はできないでしょうか?

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

解答No1です。 B2セルが数値の入力でなければ作動しないようにするのでしたら If Target.Cells = Range("B2") And IsNumeric(Range("B2").Value) = True Then に変更してください。

yoshimitsu525
質問者

お礼

回答ありがとうございます。補足ですがよろしくお願いします。

yoshimitsu525
質問者

補足

数字の1なら1列2なら2列とかの設定はできないでしょうか?

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

例えば次のようなマクロにします。 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

関連するQ&A

専門家に質問してみよう