たびたび失礼いたします。
以前にも同じ内容で質問させていただきました。
前回の質問の答えを自分なりに調べ考えた結果なんですが、私の頭が悪いようできちんとしたコードが記述できません。
シート”必要入力事項”のI16からI18まで記述がない場合、シート”2-2現場組織表”の16~22行を非表示
シート”必要入力事項”のI19からI21まで記述がない場合、シート”2-2現場組織表”の23~28行を非表示
シート”必要入力事項”のI22からI24まで記述がない場合、シート”2-2現場組織表”の29~34行を非表示
というのをVBAで行いたいのですが、どなたか、間違いを指摘していただけると助かります。
以下、記述したコードです。
Private Sub worksheet_change(ByVal Target As Range)
Dim CNT As Long
Dim GS As Long
Dim flg As Boolean
Dim Sh1 As Worksheet
Dim Sh2 As Worksheet
Set Sh1 = Worksheets("必要入力事項")
Set Sh2 = Worksheets("2-2現場組織表")
With Me
If Intersect(Target, .Range("I16:i24")) Is Nothing Then Exit Sub
For CNT = 16 To 24 Step 3
If Sh1.Range("C" & CNT).Value = "" Or Sh1.Range("C" & CNT + 1).Value = "" Or Sh1.Range("C" & CNT + 2).Value = "" Then
flg = True
GoTo contenue
End If
contenue: If CNT = 16 Then
GS = 17
Sh2.Rows(GS & ":" & GS + 5).Hidden = flg
ElseIf CNT = 19 Then
GS = 23
Sh2.Rows(GS & ":" & GS + 5).Hidden = flg
ElseIf CNT = 22 Then
GS = 29
Sh2.Rows(GS & ":" & GS + 5).Hidden = flg
Next CNT
End With
End Sub
No.1ベストアンサー
- 回答日時:
こんにちは
よくわからないところがあるのと、今までのご質問でも回答者にちゃんと通じていない節がありますが・・・
とりあえず、ループの中をこんな感じにしてみては?
For CNT = 16 To 24 Step 3
flg = CBool(WorksheetFunction.CountIf(sh1.Cells(CNT, 9).Resize(3), ""))
sh2.Rows(2 * CNT - 15).Resize(6).Hidden = flg
Next CNT
※ セルの値の判定が""かどうかになっていますので、スペースや改行だけのセルでも、値があるものとして判断されます。
※ ご質問の文章では『16~22行を非表示』とあるけれど、コードでは17行目らしいので、一応17行目を正と考えました。
ありがとうございます。
下手な質問の仕方をしてしまい、すいませんでした。
ループの中を変えたところ、私のやりたかった結果がでました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) 配列の勉強をしています。使用する変数の意味、検索条件の書き方が難しいです。 2 2022/09/15 14:06
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 特定の文字を含むシートだけマクロ処理をしたい 1 2023/05/22 01:43
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
同じ作業を複数のシートに実行...
-
VBA 存在しないシートを選...
-
ユーザーフォームに入力したデ...
-
実行時エラー'1004': WorkSheet...
-
ExcelのVBAのマクロで他のシー...
-
Excelマクロのエラーを解決した...
-
【ExcelVBA】全シートのセルの...
-
実行時エラー1004「Select メソ...
-
excelのマクロで該当処理できな...
-
エクセルのシート名変更で重複...
-
Excel チェックボックスにチェ...
-
VBAで指定シート以外の選択
-
特定の文字を含むシートだけマ...
-
Worksheet_Changeの内容を標準...
-
VBA 最終行まで数式をコピーする
-
IFステートの中にWithステート...
-
Excel VBA で自然対数の関数Ln...
-
エクセルVBA 変数への代入がう...
-
エクセルのマクロについて教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
XL:BeforeDoubleClickが動かない
-
ExcelVBA シート名を複数セルか...
-
実行時エラー'1004': WorkSheet...
-
VBA 存在しないシートを選...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ブック名、シート名を他のモジ...
-
【Excel VBA】Worksheets().Act...
-
ExcelのVBAのマクロで他のシー...
-
エクセルのシート名変更で重複...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
Excel マクロについての相談
-
VBA 検索して一致したセル...
おすすめ情報
前回の質問内容です。
>https://oshiete.goo.ne.jp/qa/9705666.html
>https://oshiete.goo.ne.jp/qa/9705907.html