電子書籍の厳選無料作品が豊富!

別シート上の範囲は、以下のようになりますで、罫線や色の変更などは可能です。とは、このプログラム片に何をすれば(付け加えれば)、罫線や色の変更などが出来るのでしょうか?
後、なぜ、.が付いているのでしょうか?
以下がプログラム片の内容です。
With Worksheets("sheet1")
Set rng=.Range(.Cells(a,b), .Cells(c,d))
End With
です。
教えて頂けると幸いです。

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

  • 迅速な回答ありがとうございます!所で、No.2のプログラムでは、アクティブシートでなくても、罫線や、色の変更は可能ですよね?ただ、アクティブシートでないと、範囲選択が出来ないだけですよね?.Selectが出来ないと言うことはつまり、どういう事でしょうか?教えて頂けると幸いです。

    No.3の回答に寄せられた補足コメントです。 補足日時:2024/10/29 21:20
  • すみません。説明が少し省略してしまいましたが、そこに、なお、アクティブシートでないと選択(.Select)が出来ないと書かれていて、大変失礼致しました。教えて頂けると幸いです。

    No.4の回答に寄せられた補足コメントです。 補足日時:2024/10/29 21:41
  • つまり、アクティブシートでないと、.Selectは出来ないので、Cellsを使っていると言う事でしょうか?教えて頂けると幸いです。

    No.5の回答に寄せられた補足コメントです。 補足日時:2024/10/29 22:02
  • はい。実行しました。納得もしました。

    No.6の回答に寄せられた補足コメントです。 補足日時:2024/10/29 22:03

A 回答 (8件)

以下のマクロを実行してください。


これが、提示されたプログラム片にプログラムを付け足したサンプルです。
実行すると
Sheet1のB2:F4の範囲に罫線が引かれます。
尚、a,b,c,dの値が不明なので、こちらでB2:F4となるように設定しました。

Sub sample()
a = 2
b = 2
c = 4
d = 6
With Worksheets("sheet1")
Set Rng = .Range(.Cells(a, b), .Cells(c, d))
'①上部
Rng.Borders(xlEdgeTop).LineStyle = xlContinuous

'②左
Rng.Borders(xlEdgeLeft).LineStyle = xlContinuous

'③下部
Rng.Borders(xlEdgeBottom).LineStyle = xlContinuous

'④右
Rng.Borders(xlEdgeRight).LineStyle = xlContinuous

'⑤範囲内の縦線
Rng.Borders(xlInsideVertical).LineStyle = xlContinuous

'⑥範囲内の横線
Rng.Borders(xlInsideHorizontal).LineStyle = xlContinuous
End With

End Sub
    • good
    • 0

>つまり、アクティブシートでないと、.Selectは出来ないので、Cellsを使っていると言う事でしょうか?



もしかして、以下のようなことを期待されていますか?
⑦は、Sheet1をアクティブにするためのもので、マクロ実行にSheet1がアクティブであることが担保されているなら、⑦の行は不要です。



Sub sample()
Worksheets("sheet1").Activate '⑦Sheet1をアクティブにする
Range("B2:F4").Select
'①上部
Selection.Borders(xlEdgeTop).LineStyle = xlContinuous

'②左
Selection.Borders(xlEdgeLeft).LineStyle = xlContinuous

'③下部
Selection.Borders(xlEdgeBottom).LineStyle = xlContinuous

'④右
Selection.Borders(xlEdgeRight).LineStyle = xlContinuous

'⑤範囲内の縦線
Selection.Borders(xlInsideVertical).LineStyle = xlContinuous

'⑥範囲内の横線
Selection.Borders(xlInsideHorizontal).LineStyle = xlContinuous
End Sub
    • good
    • 0

>アクティブシートでないと、.Selectは出来ないので、Cellsを使っていると言う事でしょうか?



質問の意味が分かりません。
「Cellsを使っている」とは、以下のことでしょうか?
Set rng=.Range(.Cells(a,b), .Cells(c,d))

あなたは、アクティブシートなら.Selectが使えるので、
上記の行が、どのようになることを期待されているのでしょうか?
    • good
    • 0

私が、No2で提示したマクロは実行されましたでしょうか。


そして、その動作結果を確認し、納得されたのでしょうか。
この回答への補足あり
    • good
    • 0

>アクティブシートでないと選択(.Select)が出来ないと書かれていて



そういうことでしたら、
アクティブシートでないと、.Selectはできません。(実行するとエラーになります)
この回答への補足あり
    • good
    • 0

>No.2のプログラムでは、アクティブシートでなくても、罫線や、色の変更は可能ですよね?



回答:はい。可能です。


>ただ、アクティブシートでないと、範囲選択が出来ないだけですよね?

回答:意味がよくわかりません。「範囲選択が出来ない」とはどういうことでしょうか。

>.Selectが出来ないと言うことはつまり、どういう事でしょうか?教えて頂けると幸いです。

回答:「.Selectが出来ない」の意味が分かりませんので、回答できません。
なぜ、いきなりSelectがでてくるのでしょうか。
この回答への補足あり
    • good
    • 0

>後、なぜ、.が付いているのでしょうか?



with ステートメント の決まり事です。
詳細は下記を参照ください。
https://excel-ubara.com/excelvba1/EXCELVBA351.ht …


With Worksheets("sheet1")
Set rng=.Range(.Cells(a,b), .Cells(c,d))
End With

をwithを使わないで書くと、
Set Rng = Worksheets("sheet1").Range(Worksheets("sheet1").Cells(a, b), Worksheets("sheet1").Cells(c, d))
のようになります。
この回答への補足あり
    • good
    • 0

こんにちは



エクセルには「マクロの記録」という機能がありますので、それを利用して記録してみれば、なさりたいことの構文がわかることでしょう。

また、VBAエディターには「オブジェクトブラウザ」の機能もありますので、各オブジェクトの属性構成なども調べることができますよ。
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A