
No.4ベストアンサー
- 回答日時:
> ActiveCell.FormulaR1C1 = hiduke
それは、おそらく、マクロの記録を元にして、コードを編集する方法を解説しているのだと思います。
マクロの記録を相対参照で記録した場合は、セルに値を入力しただけで
ActiveCell.FormulaR1C1 = 値
のように.FormulaR1C1 プロパティで書かれます。
実際、標準的な記法として値の設定をする正しい記述は
ActiveCell.Value = hiduke
です。
ですから、本来は
> ActiveCell.FormulaR1C1 = hiduke
↑こういう使い方をするものではありません。
たぶん、
相対参照でのマクロ記録
↓
自分でコードを書き換えてみよう
(あまり煩いこと言わないから気楽に試してみよう)
というような場面でしか、あり得ない記述だと思います。
たぶん、そのセクションで覚えて欲しいと筆者が意図するところは
プロパティを操作してみよう
↓
変数を使ってみよう
↓
入力用にInputBoxを使ってみよう
という、いわば、オリエンテーリングのようなものだと思います。
つまり、その段階では、プロパティがどんなものであるか、ということよりも
自分で書いたコマンドが、ちゃんと、動く体験をしてもらって。、
次の説明に繋げよう、というようなものなのでしょう。
本に沿って学習してゆくお積りなら、今はあまり拘らないでいても良いのかも知れませんね。
(一応、書名、とかは、晒さない方向でお願いします。)
助かりました。
そういう観点からみると、うなづけます。
やっと解決しました。
ありがとうございます。
注意点・・・これからも気を付けて相談させて頂こうと思います。
本当にありがとうございました。
No.3
- 回答日時:
またまた、こんにちは。
#お邪魔します。メリット、というと、相対参照が容易に実現できるってことになると思います。
例えば、
Sheet2に数式を設定する時、Sheet1の同じ位置にあるセルを参照したいなんて場合
B2 : =Sheet1!B2*1.05
E5 : =Sheet1!E5*1.05
みたいに、セル参照を指定する必要がある”A1形式”に比して
”R1C1形式”では
=Sheet1!RC*1.05
という数式一個で賄えるという利点はあります。
具体的なVBA記述としては
Sub Re7740084_R1C1()
Sheets("Sheet2").Range("B2,E5").FormulaR1C1 = "=Sheet1!RC*1.05"
End Sub
となります。
ただし、実際は”A1形式”で指定しても一種類の数式には違いありません。
Sub Re7740084_A1()
Sheets("Sheet2").Range("B2,E5").Formula = "=Sheet1!B2*1.05"
End Sub
でも、相対的に同じ位置にある時は、セル番地を確認しなくても
"RC"だけで指定できるのは、私は便利だと思います。
教科書では教えてくれない、というか、Microsoftは推奨しませんが
実は以下のようなコードでも同じ結果が得られます。
Sub Re7740084_R1C1_2()
Sheets("Sheet2").Range("B2,E5").Formula = "=Sheet1!RC*1.05"
End Sub
Sub Re7740084_R1C1_3()
Sheets("Sheet2").Range("B2,E5").Value = "=Sheet1!RC*1.05"
End Sub
だったら、.FormulaR1C1 プロパティなんて要らない、と思われるかも知れません。
私自身は、「この数式は相対参照で書いてますよ」と一目見て解るように
明示的にする意味で.FormulaR1C1 プロパティを使うことが殆どです。
これが無いと困るものではありませんが、これを使った方が、
お行儀いい、とか、読む人に親切、というのはあるとおもいます。
この回答への補足
先ほどは有難うございました。
度々で申し訳ないのですが、下記のコードでFormulaR1C1は何を意味しているのでしょうか?
ご回答いただければ助かります。
よろしくお願いします。
教本の一部抜粋
ActiveCell.FormulaR1C1 = hiduke ←変数名
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = inputbox("得意先コードを入力してください")
ActiveCell.Offset(0, 2).Range("A1").Select
ActiveCell.FormulaR1C1 = inputbox("商品コードを入力してください")
ActiveCell.Offset(0, 4).Range("A1").Select
ActiveCell.FormulaR1C1 = inputbox("数量を入力してください")
ActiveCell.Offset(1, -7).Range("A1").Select
No.2
- 回答日時:
オンラインヘルプ
FormulaR1C1 プロパティ
指定されたオブジェクトの数式を R1C1 形式で、コード記述時の言語で設定します。値の取得および設定が可能です。Range オブジェクトの場合はバリアント型 (Variant) の値を使用します。Series オブジェクトの場合は文字列型 (String) の値を使用します。
解説
セルに定数が含まれているときには、その定数がそのまま返されます。セルが空のときには、空の文字列が返されます。セルに数式が含まれるときには、数式バーの表示と同じ形式の文字列で (等号も付加されます)、その数式が返されます。
セルの値や数式を日付に設定すると、そのセルが日付や時刻の書式になっているかどうかが確認されます。日付や時刻の書式になっていないときは、既定の日付の形式に変更されます。
対象セル範囲が 1 次元または 2 次元のセル範囲のときは、同じ次元を持つ Visual Basic の配列から各セルの数式を設定できます。同様に、各セルの数式を Visual Basic の配列に代入することもできます。
セル範囲に対して数式を設定すると、範囲内のすべてのセルに同じ数式が設定されます。
使用例
次の使用例は、シート 1 のセル B1 に数式を設定します。
Worksheets("Sheet1").Range("B1").FormulaR1C1 = "=SQRT(R1C1)"
R1C1形式での数式の設定や取得に便利です。
A1形式の場合は、「Formula」です。
この回答への補足
分かりやすいご説明ありがとうございます。
一点質問なのですが、
下記の文章でFourmuraR1C1は何を意味しているのでしょうか?
また数式の設定OR取得が必要だからなのでしょうか?
ご回答いただければ助かります。よろしくお願いします。
教本の一部抜粋
ActiveCell.FormulaR1C1 = hiduke ←変数名
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = inputbox("得意先コードを入力してください")
ActiveCell.Offset(0, 2).Range("A1").Select
ActiveCell.FormulaR1C1 = inputbox("商品コードを入力してください")
ActiveCell.Offset(0, 4).Range("A1").Select
ActiveCell.FormulaR1C1 = inputbox("数量を入力してください")
ActiveCell.Offset(1, -7).Range("A1").Select
No.1
- 回答日時:
使用するメリットはほとんど無いんじゃないでしょうか。
と、言いましたが、私はほとんど使ったことないのであくまで印象です。
FormulaR1C1でセル指定するメリットは、プログラムの中で取得した行番号と列番号によって、数式で参照するセル範囲を特定できるような場合だ、と以下のサイトに書いています。
moug
https://www.moug.net/tech/exvba/0050098.html
個人的にはA1形式で慣れており、A1形式で不自由がなくコーディングできてるので、
使わなくて良いなら使いたくないです。
同じコードにA1、R1C1が入り混じってるのは読み辛いでしょうし。
また、上記で挙げたメリットを生かせるようなプログラム組んだことがないので、
冒頭の通り、(私には)メリットを感じられないです
ご回答ありがとうございます。
まだ私は初歩の初歩でありまして、教本で勉強していまして
これは?と思い相談させて頂きました。
ご回答者さんの回答を読むと確かに必要性が薄く感じられました。
サイトも拝見させていただきます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel 表の作成について 3 2022/06/16 12:15
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- 会社・職場 SE職4年目、25歳の社会人です。 今年の4月から別部署に異動したのですがLinux、Git、Pyt 5 2023/05/23 06:41
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- その他(プログラミング・Web制作) EXCEL VBAについて 2 2022/12/04 17:03
- その他(行事・イベント) イベントの来賓用徽章(花のリボン)について 2 2023/04/08 22:52
- 就職 こんにちは 将来パン屋を開きたいと思っています そこで、進路に迷っています 現在、高校卒業して1年目 7 2022/09/11 20:29
- 面接・履歴書・職務経歴書 志望動機と自己PRの添削をお願いしたいです。 前職はネイリストで アクセサリー販売に転職を考えており 1 2023/01/01 22:54
- 工学 CR発振回路 C1=C2=C=0.001【uF】 R1=R2=R3=16【kΩ】 R4は出力電圧が正 2 2023/05/10 19:13
- Excel(エクセル) ExcelのFSO(ファイルシステムオブジェクト)について学びたいのですが。。。 5 2022/12/15 18:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba テキストボックスとリフト...
-
エクセルで指定したセルのどれ...
-
セルをクリック⇒そのセルに入力...
-
貼り付けで複数セルに貼り付けたい
-
EXCEL VBA セルに既に入...
-
エクセルの書式設定の表示形式...
-
数式を残したまま、別のセルに...
-
枠に収まらない文字を非表示に...
-
エクセルのセルの枠を超えて文...
-
エクセル セルの中に縦線が入っ...
-
Excel 例A(1+9) のように番地の...
-
エクセルの一つのセルに複数の...
-
【エクセル】IF関数 Aまたは...
-
Excelでのコメント表示位置
-
エクセル オートフィルタで絞...
-
(Excel)数字記入セルの数値の後...
-
VBAでセルを指定した画像のコピ...
-
【Excel】 セルの色での判断は...
-
libreoffice calcで行を挿入し...
-
エクセルで、複数の参照範囲を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
スプレッドシートで複数のプル...
-
excelで日付関数の文字列変換の...
-
エクセルで指定したセルのどれ...
-
貼り付けで複数セルに貼り付けたい
-
枠に収まらない文字を非表示に...
-
セルをクリック⇒そのセルに入力...
-
エクセルの一つのセルに複数の...
-
数式を残したまま、別のセルに...
-
(Excel)数字記入セルの数値の後...
-
Excel 例A(1+9) のように番地の...
-
対象セル内(複数)が埋まった...
-
エクセルの書式設定の表示形式...
-
EXCEL VBA セルに既に入...
-
excelの特定のセルの隣のセル指...
-
エクセルのセルの枠を超えて文...
-
Excelでのコメント表示位置
-
エクセル オートフィルタで絞...
-
Excelで数式内の文字色を一部だ...
おすすめ情報