Page 472 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼値が無い場合は、次の処理への文法? ビビンバ 02/12/19(木) 15:52 ┗Re:値が無い場合は、次の処理への文法? クッパ 02/12/19(木) 16:43 ┗Re:値が無い場合は、次の処理への文法? ビビンバ 02/12/20(金) 10:35 ┗Re:値が無い場合は、次の処理への文法? クッパ 02/12/20(金) 11:40 ┗Re:値が無い場合は、次の処理への文法? ビビンバ 02/12/20(金) 12:54 ─────────────────────────────────────── ■題名 : 値が無い場合は、次の処理への文法? ■名前 : ビビンバ ■日付 : 02/12/19(木) 15:52 -------------------------------------------------------------------------
教えて下さい。 ”J”の列に「ハード関連」の文字が入力されている場合 その「行」ごと「まとめ」シートにコピーする文法を教えて頂きました。 その続きで困ってます。 「ハード関連」の文字が見つからない場合はエラーになってしまいます。 なかった場合は”次の処理に進みなさい”とゆう具合にしたいのですが できません(悲) re = Cells(Rows.Count, "A").End(xlUp).Row ce = Cells(1, Columns.Count).End(xlToLeft).Column Application.ScreenUpdating = False Range("J1:J" & re).AutoFilter Field:=1, Criteria1:="ハード関連" Range("A2", Cells(re, ce)).SpecialCells(xlCellTypeVisible).Copy Sheets("まとめ").Range("A4") Range("A" & re).AutoFilter Application.ScreenUpdating = True ここで次の処理(下記)に進みたいのですが無い場合、エラーになってしまいます。 Sheets(Array("既設関連", "既設以外")).Select Sheets("既設関連").Activate Range("E4:E100").Select Selection.Insert Shift:=xlToRight Range("E4").Select どなたか教えて下さい。 |
こんにちは。 If Application.CountIf(Range("J1:J" & re), "ハード関連") > 0 Then 'ある時の処理 ここでAutoFilter Else '無い時の処理 End If |
おはようございます 上手く行きましたが問題がまた、、、勉強不足ですいません。 下記を繰り返す場合は、どうすればいいでしょうか? J列には、”パソコン””プリンタ”など8種類の文字が入っています。 それぞれを別のシートに行ごとコピーし貼り付けたいのです。 教えて頂いたマクロをAutoFilterの検索名・シート名を変更し下記のように書いてみたら 最初のパソコン時に"特になし"になった場合 それ以降は"特になし"になってしまいます。 どうしたら良いですか? Countをクリアすれば良さそうな気がするのですが、、、 re = Cells(Rows.Count, "A").End(xlUp).Row ce = Cells(1, Columns.Count).End(xlToLeft).Column If Application.CountIf(Range("J1:J" & re), "パソコン") > 0 Then 'ある時の処理 ここでAutoFilter Range("J1:J" & re).AutoFilter Field:=1, Criteria1:="パソコン" Range("A2", Cells(re, ce)).SpecialCells(xlCellTypeVisible).Copy Sheets("@1").Range("A4") Range("A" & re).AutoFilter Else '無い時の処理 Sheets("@1").Activate Range("E4").Select ActiveCell.FormulaR1C1 = "特になし" End If re = Cells(Rows.Count, "A").End(xlUp).Row ce = Cells(1, Columns.Count).End(xlToLeft).Column If Application.CountIf(Range("J1:J" & re), "スキャナ") > 0 Then 'ある時の処理 ここでAutoFilter Range("J1:J" & re).AutoFilter Field:=1, Criteria1:="スキャナ" Range("A2", Cells(re, ce)).SpecialCells(xlCellTypeVisible).Copy Sheets("@2").Range("A4") Range("A" & re).AutoFilter Else '無い時の処理 Sheets("@2").Activate Range("E4").Select ActiveCell.FormulaR1C1 = "特になし" End If re = Cells(Rows.Count, "A").End(xlUp).Row ce = Cells(1, Columns.Count).End(xlToLeft).Column If Application.CountIf(Range("J1:J" & re), "プリンタ") > 0 Then 'ある時の処理 ここでAutoFilter Range("J1:J" & re).AutoFilter Field:=1, Criteria1:="プリンタ" Range("A2", Cells(re, ce)).SpecialCells(xlCellTypeVisible).Copy Sheets("@3").Range("A4") Range("A" & re).AutoFilter Else '無い時の処理 Sheets("@3").Activate Range("E4").Select ActiveCell.FormulaR1C1 = "特になし" End If |
If Application.CountIf(Range("J1:J" & re), "パソコン") > 0 Then 'ある時の処理 ここでAutoFilter Range("J1:J" & re).AutoFilter Field:=1, Criteria1:="パソコン" Range("A2", Cells(re, ce)).SpecialCells(xlCellTypeVisible).Copy Sheets("@2").Range("A4") Range("A" & re).AutoFilter Else '無い時の処理 Sheets("@2").Activate Range("E4").Select ActiveCell.FormulaR1C1 = "特になし" End If 上記で Sheets("@2").Activate となった場合、以後のコードは特別にシート名を指定してないので、アクティブなシートになっているSheets("@2")を対象としてしまいます。 以下コードにおいてもActivateとなったシートが対象になりますから、選択シートを元に戻すか選択せずに書き込む方法に変える必要があります。 では。 例 Sheets("@2").Activate Range("E4").Select ActiveCell.FormulaR1C1 = "特になし" ↓ Sheets("@2").Range("E4").Value = "特になし" |
あとはIF文を8回も書いているので、短くしようと思ってます 煮詰まった時には、お手数ですが教えて下さい。 大変ありがとうございました。 |