アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつもお世話になります。

OSは、Win11,エクセルは、Office365 です。

下記の参考のコードですが同じパターンの繰り返しです。

短縮してまとめる方法をご指導をいただけませんか。
 ※この参考のコードは使用できるのですが今後の
  知識向上のためによろしくお願いします。

参考
Sub 行閉じる()
Application.Left = 34.75
Application.Top = 17.5
Rows("4:10").Select
Selection.EntireRow.Hidden = True
Rows("12:18").Select
Selection.EntireRow.Hidden = True
Rows("20:26").Select
Selection.EntireRow.Hidden = True
Rows("28:34").Select
Selection.EntireRow.Hidden = True
Rows("36:42").Select
Selection.EntireRow.Hidden = True
Rows("44:50").Select
Selection.EntireRow.Hidden = True
Rows("52:58").Select
Selection.EntireRow.Hidden = True
Rows("60:66").Select
Selection.EntireRow.Hidden = True
Rows("68:74").Select
Selection.EntireRow.Hidden = True
Rows("76:81").Select
Selection.EntireRow.Hidden = True
Range("A2").Select
End Sub

質問者からの補足コメント

  • どう思う?

    ご指導をありがとうございます。
    色々試させていただきました。

    上手くゆきません。
    例えば、
    このコードでは無反応でした。
    Sub 行閉じる1()
    Application.Left = 34.75
    Application.Top = 17.5
    Const scope = ("4:10,12:18,20:26,28:34,36:42,44:50,52:58,60:66,68:74,76:81")
    Range(scope).EntireRow.Hidden = False
    Range("A2").Select
    End Sub

    No.1の回答に寄せられた補足コメントです。 補足日時:2022/11/17 16:52
  • うれしい

    ご指導を参考に下記のようしたら上手くできました。

    Sub 行閉じる()
    Application.Left = 34.75
    Application.Top = 17.5
    Range("4:10,12:18,20:26,28:34,36:42,44:50,52:58,60:66,68:74,76:81").EntireRow.Hidden = True
    Range("A2").Select
    End Sub

    No.2の回答に寄せられた補足コメントです。 補足日時:2022/11/17 16:59

A 回答 (3件)

こんにちは



規則的なのでループで回して処理すれば・・・
と思ったのですが、最後だけ規則から外れているようですね。

例外処理をするくらいなら、ベタで、こんなんではいかがでしょうか?

Const scope = "4:10,12:18,20:26,28:34,36:42,44:50,52:58,60:66,68:74,76:81"
Range(scope).EntireRow.Hidden = False
この回答への補足あり
    • good
    • 0

こんにちは


> ※この参考のコードは使用できるのですが今後の知識向上のためによろしくお願いします。

(初期の私が行った独学方法です)
自動記録マクロで作成する場合、出来るだけ同じ操作をまとめるようにすると記録も纏まります(仕様と制限の為、限界があります)
他にも作成テクニックとしてショートカットキーなどを使って記録をしてみましょう(記録によって作成されたメソッドやプロパティなどを調べると理解が深まり、参考コードなどをWebで見る時に役立ちます)

Rows("4:10").Select 以下の記録はCtrlキーを押しながら選択し非表示にする
例 20:26 まで自動記録
Range("4:10,12:18,20:26").Select
Range("A20").Activate
Selection.EntireRow.Hidden = True

これを更にまとめると 下記のようになります
Range("4:10,12:18,20:26").EntireRow.Hidden = True
この回答への補足あり
    • good
    • 0

No1です。



サンプルの右辺をTrueにするところをFalseにしてしまっていました。

Trueに訂正して解釈してください。
    • good
    • 0
この回答へのお礼

ありがとうございます。
上手くゆきました。

お礼日時:2022/11/17 17:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!