Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9269 / 13644 ツリー ←次へ | 前へ→

【28258】チェックボックスで行の表示、非表示を切り替えたいです ドナルド 05/9/1(木) 15:15 質問[未読]
【28264】Re:チェックボックスで行の表示、非表示を... こたつねこ 05/9/1(木) 16:30 発言[未読]
【28304】Re:チェックボックスで行の表示、非表示を... bykin 05/9/2(金) 12:44 回答[未読]

【28258】チェックボックスで行の表示、非表示を切...
質問  ドナルド  - 05/9/1(木) 15:15 -

引用なし
パスワード
     A
1 □都内 □東京 □川崎 □横浜 □千葉 □埼玉
2
3 tokyo23
4 tokyo23
5 tokyo23
6 tokyo23
7 tokyo
8 tokyo
9 kawasaki
10 kawasaki
11 kawasaki
12 kawasaki
13 kawasaki
14 yokohama
15 yokohama
16 yokohama
17 yokohama
18 chiba
19 chiba
20 chiba
21 saitama
22 saitama

設定
1.[表示] - [ツールバー]で[フォーム]にチェックを入れます。
2.チェックボックスを6つ配置します。
3.適当に配置します。
4.A列に「tokyo23」「tokyo」「kawasaki」「yokohama」「chiba」「saitama」と入力しています。

以上の設定をしているとき
1.「都内」チェックボックスをONにしたとき、3行目〜6行目のみ表示
2.「都内」と「川崎」チェックボックスをONにしたとき、3行目〜6行目と9行目〜13行目のみを表示
3. チェックボックスをOFFにしたときは、非表示

といったように、
チェックの入った地域に対応した行だけを表示させたいのです。

私は、以下のようなコードを各地域ごとに作成し、各チェックボックスに割り当てたのですが、うまくいきませんでした。
****************************************************
Sub open_close_tokyo23()

  Dim myGen As String
  Dim myRow As Integer
  Dim rowEnd As Integer
  Dim targetGen As String
 
  rowEnd = CInt(ActiveSheet.Range("A65536").End(xlUp).Row)
  targetGen = "tokyo23"

  Rows("A:IV").Hidden = False
  Columns("1:65536").Hidden = False
 
  For myRow = 1 To rowEnd
    myGen = Range("A" & myRow).Value
    If myGen = targetGen Then
      Rows(myRow).Hidden = True
    End If
  Next myRow

End Sub
****************************************************

どなたかコードをご教授くださいませ。

【28264】Re:チェックボックスで行の表示、非表示...
発言  こたつねこ  - 05/9/1(木) 16:30 -

引用なし
パスワード
   ▼ドナルド さん:
こんにちは

Excelのオートフィルタとかはダメなんでしょうね・・・

>1.「都内」チェックボックスをONにしたとき、3行目〜6行目のみ表示
の条件なのに

>    If myGen = targetGen Then
>      Rows(myRow).Hidden = True
>    End If
とは??
HiddenプロパティはTrueの時非表示ですよ?
条件が逆になってますね。

>2.「都内」と「川崎」チェックボックスをONにしたとき、
>  3行目〜6行目と9行目〜13行目のみを表示
複合条件になるので各チェックボックスのClickイベント
で共通の関数を呼出してその中でチェックボックスの値を
取得し、条件を追加するとかの方法を取れば可能ですね。

>どなたかコードをご教授くださいませ。
再度挑戦してみてください。

【28304】Re:チェックボックスで行の表示、非表示...
回答  bykin  - 05/9/2(金) 12:44 -

引用なし
パスワード
   こんにちわ。もう見てへんかな?

VBAだけで解決しようとするから難しいんですわ。
こういうやつは一般機能も活用した複合技を使えばええんです。
↓考えてみました。

1.A列のデータは3行目以降に連続して入力する。

2.C2:H2の各セルにtokyo23〜saitamaの各文字列(ローマ字です)を入力して、
  さらに文字の色を白にして見えなくする。

3.C2:H2の各セル内に収まるようにチェックボックスを6個配置する。
  (チェックボックスの表示は都内〜埼玉(漢字です)にしておく)

4.各チェックボックスの書式設定画面(コントロールの書式設定)を開き、
  リンクするセルに当該チェックボックスの真上のセルを設定する。
  (C2にあるtokyo23のチェックボックスならC1を指定)

5.B3に
  =OFFSET($B$1,0,MATCH(A3,$C$2:$H$2,FALSE))
  という数式を入力して、下までコピーする。

6.標準モジュールに下記コードを書く。

Sub test()
  Range(Cells(2, 2), Cells(Rows.Count, 2).End(xlUp)).AutoFilter Field:=1, _
                                 Criteria1:="TRUE", _
                                 VisibleDropDown:=False
End Sub

7.すべてのチェックボックスに上記マクロを登録する。

これで、チェックボックスをクリックすれば、チェックの入った項目のみ抽出されます。
わかりやすいように改行してるけど、実際は中身がたった1行のマクロが1個だけでええってことやね。
1行目やB列が目障りやったら、非表示にするか文字を白くしてみておくれやす。

試してみてな。
ほな。

9269 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free