[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『R1C1形式にする理由』(hiro)
お世話になっております。
Range("A3").CurrentRegion.Select
'データベース範囲の選択
ActiveWorkbook.Names.Add Name:="家計簿",RefersToR1C1:=Selection
'データベース範囲に名前を定義
ここでわざわざR1C1形式で定義するのは、何か理由があるのでしょうか。
よろしくお願いします。
< 使用 Excel:unknown、使用 OS:unknown >
この後、Activesheet.PageSetup.PrintArea = "家計簿"です。
PageSetup.PrintArea プロパティのヘルプでは、印刷するセル範囲を A1 形式の文字列で設定するとありますが、これはR1C1形式での定義とバッティングするようなものではないのでしょうか。
関係があるのは、ヘルプの後半でしょうか。値の取得や設定が可能で、文字列型 の値を使用するという内容です。
よろしくお願いします。
(hiro) 2018/05/11(金) 09:58
こんにちは ^^ じーさん はよくわからないので、A1の絶対参照、よく使います。 RefersTo:="=$A$1" 数えるのに10本の指で足らなくなる。。。。^^;;; 無理にR1C1、使わなくてもよいのでは。 用途に合わせてというか。。。 http://www.moug.net/tech/exvba/0050159.html PageSetup.PrintArea は ?
双方とも他の方の回答をお待ちください。 でわ
(隠居じーさん) 2018/05/11(金) 10:59
PrintAreaについては、ヘルプに書いてある通り、プロパティで指定しようとすると、A1形式しか受け付けてくれません。 Excelがそう作られているから、仕方ないです。 しかしながら、これを実行した結果は名前定義が追加されますが、こちらの表示はどちらの表示形式かで変わってきますよね。 何でR1C1指定できないの?、と思っても、そう作られたからとしか答えようがないです。 デフォルトはA1形式だからでしょうね。 追求しても大して意味はないので、ありのまま受け入れて使えばよいかと思います。
(???) 2018/05/11(金) 11:10
新規:
ActiveWorkbook.Names.Add Name:="Print_Area", RefersToR1C1:="=Sheet1!R1C1:R6C2"
変更:
ActiveWorkbook.Names("Print_Area").RefersToR1C1 = "=Sheet1!R1C1:R8C2"
(???) 2018/05/11(金) 11:22
1点目は書き忘れです。質問のコードは私の書いたものではなく、引用です。
2点目はPrintareaについて。
たぶん、聞きたいことがうまく伝わっていませんね。
PrintareaがR1C1形式で指定できない理由を知りたかったわけではないのです。
質問文に記載したコードでR1C1形式で定義をしていますよね?
そして、R1C1形式で定義された"家計簿"をPrintAreaに設定しますよね。
ところで、ヘルプには、PrintAreaは A1 形式の文字列で設定するとありますよね。R1C1形式で定義された"家計簿"が、A1形式の文字列で設定できるものに該当するのかどうかがよくわからなかったのです。
色々勘違いしていると思うので、これでも伝わらない質問かもしれませんが。すみません。
(hiro) 2018/05/11(金) 11:40
ActiveSheet.Range("A3").CurrentRegion.Select ActiveWorkbook.Names.Add Name:="家計簿", RefersToR1C1:=Selection PageSetup.PrintArea = ActiveWorkbook.Names("家計簿").RefersTo
でもそれは、以下のように書けば、名前定義が1つ不要になるわけで…。 A1形式制限のあるPrintAreaプロパティは使わなくとも良いのではないかと思います。
ActiveWorkbook.Names.Add Name:="Print_Area", RefersTo:=ActiveSheet.Range("A3").CurrentRegion
(???) 2018/05/11(金) 11:55
printareaの疑問は晴れていませんが、printareaを使わない例も挙げて下さっているので、ひとまずはそちらを理解の上使いたいと思います(よくわからないままprintareaを使うわけにはいかないので)。
返信にも反応してくださりありがとうございました。
(hiro) 2018/05/11(金) 17:38
>printareaの疑問は晴れていませんが
名前の定義で設定したセル範囲は、
R1C1形式で設定しようと、A1形式で設定しようと、セル範囲はセル範囲であり、
そのアドレスは、
セル範囲からのプロパティで必要な情報を取り出すだけです。
設定したアドレスは勝手にエクセル君が変換します。
なにを心配しているかよくわかりませんが、
定義されたセル範囲をセル範囲として扱うなら、
どんな方法で指定されたとしても、同じセル範囲です。
(まっつわん) 2018/05/12(土) 08:19
>ここでわざわざR1C1形式で定義するのは、何か理由があるのでしょうか。 あ、たまたまマクロの記録ではR1C1形式で記録される仕様になっているだけで、 A1形式でも定義できるようになっています。 詳しくはヘルプを参照してください。
>そして、R1C1形式で定義された"家計簿"をPrintAreaに設定しますよね。
ぼくなら、
PageSetup.PrintArea = Range("A3").CurrentRegion.Address
としますけど。。。
印刷範囲の定義をすることがテーマなら、
名前の定義を意識する必要はないと思います。
ヘルプに書いてある通り、
セル範囲をA1形式のアドレスの文字列で設定するだけです。
(まっつわん) 2018/05/12(土) 14:04
PageSetup.PrintArea = Range("A3").CurrentRegion.Address そういうことですよね。ありがとうございます。
繰り返しになりますが、質問のコードは私の書いたものではなく、引用です。マクロの記録でもありません。念のため…。
(hiro) 2018/05/12(土) 14:27
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.