- ベストアンサー
ExcelVBAのSetステートメントについて
お世話になります。 この土日で、ExcelVBAの勉強でもしようと思っていたのですが 掲題の件で躓いてしまいました。 具体的には、オブジェクト変数には、Setステートメントを使って 「オブジェクトへの参照」を代入するということらしいのですが、 恥ずかしながら理解できませんでした。 当方、財務・法務を担当しているのでプログラミングとは無縁の キャリアを歩んできました。 Setステートメントについて、知見のある方からご指導いただけると 幸いです。どうぞ、よろしくお願い申し上げます。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
使い方の理解という事であれば、 文字列(String)、数値(Integer等いろいろ)、真偽値(Boolean)、日付(Date)以外の変数はオブジェクト型で、そこへの代入はSetを付けた代入を使います。 文字列、数値などは、Set無しの代入を使います。 使い方の質問では無く、そもそも、オブジェクトとはなんぞや?参照とは?という質問であれば、ゼロから説明するのは大変なので、入門書を読んでください。
その他の回答 (3)
- chayamati
- ベストアンサー率41% (260/624)
今晩は、回答No.3です。 躓きの内容が分かりませんので、手探りになります。 セルの式で A1=A1+1は循環参照として、受け付けられませんが VBAでは A = A + 1 は普通に記述できます 「=」野意味を 右側の式の結果を左側の変数の値とすると動的なものです。 使用例 A = 0 For I = 1 To 10 Step 1 A = A + I Next I これを実行すると Aの値は55です
お礼
ご回答ありがとうございました!
- chayamati
- ベストアンサー率41% (260/624)
ご存知とは思いますが、「VBAとはVisual Basic for Applications」 の頭文字で、Applications(最後尾が複数形のs) 本題に入ります ExcelVBAですので,Worksheetのハンドリングが目的です。 ・一塊のVBAは「SUB プログラム名()で始まり 「END SUB で終わります」 ・マクロの記録は操作手順をVBAに記録します。 ・特定のセルは Range(アドレス)と記述します また、別で計算した列名、行No.を用いて Range(列名 & 行名)も可能です ・通常計算はセルに式を記述しますが、 VBAではステートメントが実行された時に計算結果の値を Range(アドレス)に反映されます 注プログラムを終了して、保存するときは添付のように マクロ有効ブック(*.xlsm)形式で保存します
お礼
ご回答ありがとうございました!
- imogasi
- ベストアンサー率27% (4737/17069)
まづ、エクセルで初めになじみのオブジェクトはWorksheetオブジェクトです。 その下(構成員)のセルを表す(捉える)には Sub test01() ActiveWorkbook.Worksheets("Sheet1").Range("a1").Value = "aaa" End Sub のように書けるのですが、 ActiveWorkbook.Worksheets("Sheet1")の部分の記述が長いので、 Sub test02() Dim ws1 As Worksheet Set ws1 = ActiveWorkbook.Worksheets("Sheet1") ws1.Range("a2").Value = "bbb" End Sub としたりします。 小生は要領的に、置き換わる記述と、記号的に考えてます。 昔のBasicでは、値の代入は、Let s=1のように書く文法でした。 略して、s=1のようにもかける処理系が出回りました。 それがVBへやオブジェクト指向的に進化して、Objectの定義はSet をつけ、値の代入では、Letをつけないようになり、VB,VB.Net系でも続いています。 ーー 付け加えて、オブジェクトの上位の記述を省略できる場合があり、省略したとき の記述と、記述例を見て、本件話題の関連性に戸惑うかもしれない。 また「Active何とかオブジェクト」という記述ができる場合があることに注意。
お礼
ご回答ありがとうございました!
お礼
ご回答ありがとうございました!