advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 978 for チェックボックス (0.008 sec.)
[[20091029173109]]
#score: 5499
@digest: 64fa096a6298d1e324131f5dcd5b7165
@id: 46125
@mdate: 2009-10-30T01:31:29Z
@size: 5124
@type: text/plain
#keywords: 県□ (30814), 数tx (28880), 市xx (18382), 道□ (14761), 社愛 (12397), 」終 (12049), 阜県 (5861), 岐阜 (5724), 知県 (5359), 列x (5201), クボ (4956), 用変 (4089), 森県 (3637), 愛知 (3593), 県名 (3525), タ用 (3474), 数i (2878), 。en (2455), hidden (2137), チェ (1809), 変数 (1725), ェッ (1638), entirerow (1557), 青森 (1524), 字目 (1523), トマ (1371), ボッ (1339), 北海 (1313), txt (1303), 海道 (1281), 示。 (1263), クス (1075)
『複数条件におけるオートフィルタ』(Jun)
[環境:Excel2003,WindowsXP] 以下のような構成となっている状態で、 (Sheet1) 北海道 □ 青森県 □ : 愛知県 □ ←チェックボックス 岐阜県 □ 三重県 □ : : (Sheet2) 会社名 県名 住所 AA社 愛知県 名古屋市xxx BB社 愛知県 春日井市xxx CC社 岐阜県 岐阜市xxx : Sheet1 にてチェックボックスにチェックを入れた対象(複数選択あります)のみ Sheet2 にてオートフィルタにて選択されるようにしたいです。 どなたか、お知恵をお貸し下さい。 ---- フォームのチェックボックスの場合です。 Sheet2のシートモジュールに貼り付けてみてください。 オートフィルタではなく、行の非表示で対応しています。 (ROUGE)#逆のことをやっていたので、修正。 Private Sub Worksheet_Activate() 'Sheetがアクティブになったら起動するイベントマクロ。 Dim obj As Object, x(), i As Long, rr As Range, tbl, txt As String '変数宣言 Cells.EntireRow.Hidden = False 'すべてのセルを表示。 For Each obj In Sheets("Sheet1").CheckBoxes 'Sheet1にあるチェックボックスをループ。 If obj.Value = 1 Then 'もしチェックボックスにチェックが入っていたら、 i = i + 1 'カウンタ用変数iを1増やす。 ReDim Preserve x(1 To i) '動的配列xの容量をiまでにする。 x(i) = obj.TopLeftCell.Offset(, -1).Value '配列変数xの最後の部分に、 'チェックボックスが配置されている左上のセルのひとつ左のセルの値を代入。 ' ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾★この部分。 End If '「もし」終わり。 Next '次のチェックボックスを処理。 If i > 0 Then 'もしカウンタ用変数iが0より大きい(何かチェックが入っている)ならば、 tbl = Range("B1", Range("B" & Rows.Count).End(xlUp)).Value '変数tblにB列の値を配列として取り込む。 For i = 2 To UBound(tbl, 1) '配列tblの2行目から最後までループ。 If IsError(Application.Match(tbl(i, 1), x, 0)) Then 'もしtbl(i,1)の値が配列xにないならば、 txt = txt & "," & "A" & i 'String型変数txtに「,A2」といった形で追加登録。 If Len(txt) > 245 Then 'もし変数txtの文字数が245を超えているならば、 Range(Mid(txt, 2)).EntireRow.Hidden = True '変数txtの2文字目以降をRangeオブジェクトの引数として利用し、 '該当するセルの行を非表示。 txt = "" '変数txtを初期化。 End If '「もし」終わり。 End If '「もし」終わり。 Next 'ループ。 If Len(txt) > 0 Then '変数txtに文字が残っているならば、 Range(Mid(txt, 2)).EntireRow.Hidden = True '変数txtの2文字目以降をRangeオブジェクトの引数として利用し、 '該当するセルの行を非表示。 End If '「もし」終わり。 Else 'そうでないならば、 With Range("A1").CurrentRegion 'A1から続くエリアの .Resize(.Rows.Count - 1).Offset(1).EntireRow.Hidden = True '一つ行サイズを小さくして、一つ下にずらした範囲の行を非表示。 End With 'Withは終わり。 End If '「もし」終わり。 End Sub 'イベントマクロ終了。 ---- (ROUGE)さんありがとうございます。 シートモジュールに貼り付けてみたら動作しました。 ですが、Sheet1の構成が実は以下のようにタイトル(県名)が あるためか、チェックした対象の上の行がSheet2で選択されて しまいます。 (Sheet1) 県名 北海道 □ 青森県 □ : ソースを修正しようと思ったのですが、どこをどう直してよいものか わからず困っています。 簡単な説明をいただけないでしょうか。(Jun) ---- 直接説明を加えました。 「★この部分」としたところが該当する部分です。 具体的には、フォームのチェックボックスの位置が少し上になっているためと思われます。 一律に制御するのであれば、チェックボックスは該当するセルの左のセルの左上に合わせるようにした方が良いと思います。 (ROUGE) ---- (ROUGE)さん早速の解説ありがとうございます。 無事動作し解決しました。 ソースの意味についてはこれからじっくり 勉強させていただきます。(Jun) ...
https://www.excel.studio-kazu.jp/wiki/kazuwiki/200910/20091029173109.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97065 documents and 608342 words.

訪問者:カウンタValid HTML 4.01 Transitional