シートの1~2行がタイトル行。3行目以降は400人程の個人情報(以後増加有)が1行に1人を言う形でB~BA列まで入力されており、A列にはその個人情報によって関数で通し番号AxxxかTxxx(xは数字)が振られるようになっています。
A1は入力規則のリストで【個人データ】【会費】の2択。
A2はマクロ登録用に図形でボタンを作っています。
A1を【個人データ】にした場合はL~AI列を非表示。
A1を【会費】にした場合はAG~AQ列を非表示。
A2をクリックしたらA3以降が通し番号で昇順に並び変え。
その上で
B列に”T”が入力されている行は、すべて塗りつぶしの色を灰色。
B列が”T”以外の行でAJ~AQ列に10000以下の数字が入力されているセルは塗りつぶしが黄色。
B列が”T”以外の行でAJ~AQ列が10000以上の場合は表示形式を【[$-411]ge.m.d;@】にしたいのです。
塗りつぶしや表示形式の設定は「条件付き書式」も考えたのですが、
マクロで並び替えを行うたびに同じルールが複数出来てしまい重くなるので、
マクロで設定できればしたいと思っています。
非表示も並び替えも、A1セルの値に対するchamgeイベント【Private Sub Worksheet_Change(ByVal Target As Range)】で動いていただければA2の図形がいらなくなるのでベストなのですが、
もちろん図形クリックでも構いません。
どうぞよろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
こんばんは。
そろそろ、質問を公開してから1週間が経つわけで、気にはしていたので、良く読ませていただきました。
そうすると、いくつかの問題点が見え隠れするのです。
もう少し、自分はここまで作ったけれども、ここが分からないとか、もう少し具体的な形で聞いたほうがよいですね。掲示板は、マクロの作成を依頼するところではありませんから。
1.
>A2をクリックしたらA3以降が通し番号で昇順に並び変え。
項目行がないのでしょうか。
あれば、
>B列が”T”以外の行でAJ~AQ列に10000以下
こちらも使えます。
2.
>B列が”T”以外の行でAJ~AQ列が10000以上の場合は表示形式を【[$-411]ge.m.d;@】にしたいのです。
10000というのは、どうやら日付らしいと分かりましたが、昭和2年で区分けするというのは、かなり変則的です。できれば、数字よりも日付で探したほうが自然のような気がします。今は、純粋に数字を探しています。
A2 の所は、T を入れれば、起動するように変えました。
'//
Private Sub Worksheet_Change(ByVal Target As Range)
Dim col As Long
Dim c As Range
Dim r As Range
If Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
If Target.Address = "$A$1" Then
If Target.Value = "個人データ" Then
Columns("L:AQ").EntireColumn.Hidden = False
Columns("L:AI").EntireColumn.Hidden = True
ElseIf Target.Value = "会費" Then
Columns("L:AQ").EntireColumn.Hidden = False
Columns("AG:AQ").EntireColumn.Hidden = True
ElseIf Target.Value = "OPENSESAME" Then '魔法のことば"(全部オープンにします)
Columns("L:AQ").EntireColumn.Hidden = False
End If
ElseIf Target.Address = "$A$2" Then
Application.ScreenUpdating = False
If StrConv(Target.Value, vbUpperCase) = "T" Then 'Tが入力されていたら
col = Cells(3, Columns.Count).End(xlToLeft).Column
Range("A3", Cells(Rows.Count, 1).End(xlUp)).Resize(, col).Sort _
Key1:=Range("A3"), Order1:=xlAscending
For Each c In Range("B1", Cells(Rows.Count, 2).End(xlUp))
If StrConv(c.Value, vbUpperCase) <> "T" Then
c.EntireRow.Interior.ColorIndex = xlColorIndexNone
Set r = Intersect(c.EntireRow, Columns("AJ:AQ"))
Call FindNumbertoYear(r)
ElseIf StrConv(c.Value, vbUpperCase) = "T" Then
c.EntireRow.Interior.ColorIndex = xlColorIndexNone
c.EntireRow.Interior.ColorIndex = 15
End If
Next
End If
Application.ScreenUpdating = True
End If
End Sub
Sub FindNumbertoYear(ByVal rng As Range)
'サブルーチンマクロ
Dim r As Variant
Dim c As Range
On Error Resume Next
Set r = rng.SpecialCells(xlCellTypeConstants, xlNumbers)
On Error GoTo 0
If IsObject(r) Then
For Each c In r.Cells
If c.Value2 >= 10000 Then
c.NumberFormatLocal = "[$-411]ge.m.d;@"
ElseIf c.Value2 < 10000 Then
c.Interior.ColorIndex = 6
End If
Next c
End If
End Sub
'///
今回、急遽作りましたので、決定的なミスが残っているかもしれません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- Excel(エクセル) Excelのマクロについて教えてください。 4 2022/05/31 14:07
- Excel(エクセル) 【マクロ】リボン、行列、数式・ステータスバを非表示に 4 2022/12/12 07:32
- Excel(エクセル) [オートフィルター]機能について 3 2023/02/04 14:32
- Excel(エクセル) Excelのテーブルについて 6 2023/07/07 08:37
- Visual Basic(VBA) 2つのシートの任意のセルの番号が一致したら、一致した行をコピーする VBA 2 2023/06/19 20:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでの作業計算方法について
-
はがきについて。
-
エクセル 文字を増やしたい。
-
セルの内容表示が邪魔になる
-
Microsoft365に変えたのですが...
-
エクセルの計算
-
Microsoft1Officeの互換ソフト...
-
【マクロ】その時、その時で変...
-
【マクロ】読取専用のファイル...
-
エクセル初心者です 関数の入れ...
-
Excel ピボットテーブルで日付...
-
【関数】適切な文字数の数字を...
-
LOOKUP関数を使えばいいのでし...
-
Aというブックの1というシート...
-
エクセル関数を教えてください
-
Excelのチェックボックスの使い...
-
エクセル 白黒印刷で白線を印刷...
-
時間によってファイル名が変わ...
-
WPS OFFICEでの縦書きについて
-
エクセルの条件付き書式につい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報