ID:qadFHjVDxのレス一覧:


904デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 06:15:52.01ID:qadFHjVDx
>>903
前者はメソッドが返す戻り値を取得するために関数としてメソッドを使用している
文法上、引数指定の箇所で括弧が必要

後者はメソッドをコールしてそのまま次の処理に制御を渡している
引数指定の箇所には文法上括弧が不要
908デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 08:06:02.34ID:qadFHjVDx
>>905
メゾットではなくメソッド(Method)ね
PasteSpecialはメソッドだよ

関数の定義は曖昧だが、ここでは制御と戻り値を返す命令文の意味で使っている
一方メソッドはオブジェクト外からアクセス可能になるようメンバとして実装された機能プログラムのことを指す
戻り値を返すものと返さないものの両方がある
910デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 08:14:33.55ID:qadFHjVDx
>>907
細かい話だが、VB6共通の標準関数やステートメント類、列挙定数はApplicationクラス配下のメンバではないはず
あと調べていけばApplicationクラスから独立しているクラスもあるかもしれない
プログラム本体をコードする言語ではなくマクロ言語なのでApplicationというカレントなインスタンスに依存しないクラスがあってもおかしくない
913デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 08:25:19.80ID:qadFHjVDx
>>911
上級者になりたいなら分からない言葉を自分で調べてキャッチアップする姿勢も必要
メンバとかは初心者向けの解説書やネット記事にも載ってる
920デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 08:57:20.31ID:qadFHjVDx
>>917
自分で調べるといいよ
921デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 09:02:35.06ID:qadFHjVDx
VBAのプロパティのアクセサやセッターも実体はただのプロジージャだからね
クラス外から見たらただの関数でしかない
923デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 09:04:20.04ID:qadFHjVDx
>>915
RangeオブジェクトとPasteSpecialメソッドの違いを考えたらわかる
932デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 09:30:09.60ID:qadFHjVDx
>>926
全然違う
RangeクラスとRangeプロパティを混同してはいけない

Range("A1")の式はWorksheetクラスのメンバのRangeプロパティを引数つきで呼び出している
このプロパティ式で参照を取得しているのが、Excelのオブジェクトモデルで定義されたRangeクラスの実体(インスタンス)、つまりA1セルになる
要するに、Range("A1").Valueと書いた場合、.Value以下がRangeオブジェクトのメンバになる

Rangeクラスがセル範囲のコレクションとして自己再帰的に実装されているのは確かだけどね
937デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 09:52:45.12ID:qadFHjVDx
>>931
戻り値を使う場合には()が必須、
名前付き引数を使おうが使うまいが()の要否には影響しない、
が正解
括弧つけてても名前付き引数の指定はできるので
939デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 10:05:48.08ID:qadFHjVDx
>>935
緑川吉行っていうOffice/VBA界の有名人が初心者向けに書いた記事
https://allabout.co.jp/gm/gc/297719/

これはコンパクトで分かりやすい。ただし初心者向けにわざとSheetsをオブジェクト名とかコレクション名とか言っているのは問題がある

正確な知識を得るならこっち

インストラクターのネタ帳 -
「オブジェクト名.プロパティ」という解説はウソですよ
https://www.relief.jp/docs/excel-vba-that-is-not-object-name.html
940デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 10:12:50.14ID:qadFHjVDx
>>938
Callの引数として引数付き関数を呼び出す場合、呼び出される側の引数を特定して先に評価してCallに渡さなきゃいけないから括弧必須なんだよな
しかも戻り値が取れないという
943デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 10:21:51.97ID:qadFHjVDx
>>942
記事を読めば分かる
944デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 10:25:54.76ID:qadFHjVDx
>>941
組み込みオブジェクトはそもそも仕様としてNewできなさそうだけどな
要は As ActiveCell とか As Cells とかいう型指定が出来ないってことだわ、そういうクラスが存在しないわけだから
949デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 12:08:59.14ID:qadFHjVDx
正確に言うと値の代入もLetステートメントで行うのがBasic系言語の本来の姿
それを規約上で略記できるようにしているにすぎない
逆にSetステートメントは言語設計上、変数用に確保されたスタックメモリに格納される値がヒープへの参照ポインタであることを示す役割を持っているものと思われる
Variant型変数にオブジェクトを代入するときもこのSetがあるおかげで、スタックの値を参照アドレスとして解釈できるようになっているはず
952デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 14:45:17.26ID:qadFHjVDx
>>951
Letとのバッティングだろう
推測だが、VB6/VBAのコンパイラは、代入演算子と等価演算子がともに'='であることを前提とした仕様になっているんだと思う
プリミティブ型の値の代入はスタックの値のコピーに他ならないので、代入演算子を等価演算子と混同しても論理矛盾が起きない

オブジェクトの場合はそうはいかないので、オブジェクト変数として型宣言した変数へのインスタンス代入の際にはSetの識別子付与を強制するようにしてるんじゃなかろうか

VB.NETではSetが要らなくなってるからコンパイラの仕様だよなこれは
954デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 15:36:05.55ID:qadFHjVDx
>>953
知らなかった、ありがとう
代入値の評価をして変数スコープ内で参照カウンタを管理するためのステートメントなのか
確かにそれだとLetと違って省略不可だな
956デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 15:47:47.95ID:qadFHjVDx
>>955
なるほどそういうことか
ありがとう納得した
ここは勉強になるな
968デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 21:06:45.20ID:qadFHjVDx
>>964
RangeクラスのValueプロパティのアクセサは引数いらないよね
アクセス時に引数を要求されるプロパティとそうじゃないプロパティがあるだけ
970デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 21:23:50.92ID:qadFHjVDx
>>969
ひょっとしてまだメソッド/プロパティの引数指定の丸括弧記法の話をしていたのか?メゾット君
プロパティのアクセサの引数指定は丸括弧必須
戻り値を取得するための命令だから当たり前
972デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 22:00:59.47ID:qadFHjVDx
>>971
クラス側で保持するプロパティという概念自体には引数という観念が成立しないのはその通り
でもこの人が言ってるのは多分プロパティの受け渡しに使うアクセサの引数のことだと思う
979デフォルトの名無しさん (アークセー Sx79-CWam)
2019/12/01(日) 22:52:46.61ID:qadFHjVDx
>>974
VBA アクセサで普通にヒットするぞ

レス:1-200 201-400 401-600 601-800 801-1000 ALL

このスレへの固定リンク: http://5chb.net/r/tech/1568630099/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「Excel VBA 質問スレ Part63 ->画像>2枚 」を見た人も見ています:
Excel VBA 質問スレ Part49
Excel VBA 質問スレ Part47
Excel VBA 質問スレ Part65
Excel VBA 質問スレ Part81
Excel VBA 質問スレ Part69
Excel VBA 質問スレ Part61
Excel VBA 質問スレ Part50
Excel VBA 質問スレ Part68
Excel VBA 質問スレ Part80
Excel VBA 質問スレ Part67
Excel VBA 質問スレ Part71
Excel VBA 質問スレ Part70
Excel VBA 質問スレ Part83
Excel VBA 質問スレ Part56
Excel VBA 質問スレ Part62
Excel VBA 質問スレ Part60
Excel VBA 質問スレ Part64
Excel VBA 質問スレ Part75
Excel VBA 質問スレ Part74
Excel VBA 質問スレ Part58
Excel VBA 質問スレ Part37
Excel VBA 質問スレ Part51
Excel VBA 質問スレ Part79(ワッチョイあり)
Excel VBA 質問スレ Part80(ワッチョイあり) (101)
Access VBA 質問スレ Part2
幻想神域 -Innocent World- 質問スレ Part14
【PoE】 Path of Exile 質問スレ part27
Excel Python 質問スレ
Excel ピボット Power Pivot DAX関数 質問スレ
PSP質問スレpart83
原神質問スレ Part1
PSVita 質問スレ part9
STAP細胞質問スレ PART3
モバプロ質問スレpart3
英雄島 質問スレ Part2
大学物理質問スレ part.1
iPhone 質問スレ Part96
高校物理質問スレpart27
Dota2 質問スレ Part9
d払い 質問スレ Part1
PSVita 質問スレ part8
PSVita 質問スレ part6
ChMate 質問スレ Part55
VB.NET質問スレ(Part44)
VB.NET質問スレ(Part43)
Lineage 質問スレ Part72
眼鏡総合質問スレ Part.8
PSVita 質問スレ part2
PSVita 質問スレ part1
Share 質問スレ Part147
眼鏡総合質問スレ Part.6
FX初心者質問スレPart109
FX初心者質問スレPart107
Share 質問スレ Part145
FX初心者質問スレPart108
FX初心者質問スレPart105
眼鏡総合質問スレ Part.7
眼鏡総合質問スレ Part.9
経済学 質問スレ part1
FX初心者質問スレPart104
MTB初心者質問スレ part99
陰陽師◆質問スレPart8◆
x264 初心者質問スレ part6
幻想神域 質問スレ Part41
Avisynth質問スレ Part12
Dark Eden 質問スレ Part7
06:38:14 up 22 days, 22:00, 0 users, load average: 70.77, 69.73, 60.85

in 0.055308818817139 sec @[email protected] on 111420