- ベストアンサー
excel2000マクロ記述
シート名JISEKIの中のF列には2行目から4桁のコードが入っています。 X列の2行目から数値データが入っています。 条件としてF列のコードがA310又はA505で、X列の数値がマイナスの場合は、 R列からW列の数値データを非表示にしたい。 これをマクロ化したいのですが、記述の仕方を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
>もうひとつ条件の追加が出て来たのですが、教えてください。 >条件 F列がA310OrA505でX列が<0の場合 R列~X列に0の数値を挿入したい。 とのことですが、条件は変わらず処理を追加するということですね。 以下のコードを参考にしてください。 Sub Macro1() Dim SheetName As String Dim i As Integer Dim LastRow As Integer Dim rng As Range SheetName = "JISEKI" 'シート名 LastRow = 50 '最終行の番号 With Sheets(SheetName) For i = 2 To LastRow If (.Range("F" & i) = "A310" Or .Range("F" & i) = "A505") And .Range("X" & i) < 0 Then For Each rng In .Range("R" & i & ":X" & i) rng=0 Next For Each rng In .Range("R" & i & ":W" & i) If IsNumeric(rng) Then rng.Font.Color = rng.Interior.Color End If Next End If Next End With End Sub
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 私も#1 さんとコンセプト自体は、あまり変わりありません。 ご質問の中には、いくつか、気になる点がありますが、後は、ご自身で考えてください。 Sub Sample1() Dim c As Variant Worksheets("JISEKI").Select For Each c In Range("F2", Range("F65536").End(xlUp)) If (c.Value = "A310" Or c.Value = "A505") And _ c.Offset(, 18).Value < 0 Then On Error Resume Next c.Offset(, 12).Resize(, 6).SpecialCells(2, 1) _ .Font.ColorIndex = 2 '色は白 On Error GoTo 0 End If Next End Sub
詳しい処理の内容が分からないので自分の理解の範囲で答えさせてもらいます。 Sub Macro1() Dim SheetName As String Dim i As Integer Dim LastRow As Integer Dim rng As Range SheetName = "JISEKI" 'シート名 LastRow = 50 '最終行の番号 With Sheets(SheetName) For i = 2 To LastRow If (.Range("F" & i) = "A310" Or .Range("F" & i) = "A505") And .Range("X" & i) < 0 Then For Each rng In .Range("R" & i & ":W" & i) If IsNumeric(rng) Then rng.Font.Color = rng.Interior.Color End If Next End If Next End With End Subでいかがでしょうか? ちなみこの例では、50行目までデータがあるという仮定です。 あと、数値データを非表示にするという方法がちょっと分からなかったので、 フォントのカラーを背景色と同じにすることによって擬似的に非表示にしています。
補足
回答有難うございました。 もうひとつ条件の追加が出て来たのですが、教えてください。 条件 F列がA310OrA505でX列が<0の場合 R列~X列に0の数値を挿入したい。