No.4ベストアンサー
- 回答日時:
例示の意味がちょっと判りにくいです。
例えば
Sub test1()
Dim l_rngA As Range
Dim l_lngMargeCount As Long
Set l_rngA = Range("A65535").End(xlUp)
l_lngMargeCount = l_rngA.MergeArea.Cells.Count
If l_lngMargeCount > 1 Then
':
End If
MsgBox l_lngMargeCount > 1
':
Set l_rngA = Nothing
End Sub
Sub test2()
Dim l_rngA As Range
Set l_rngA = Range("A65535").End(xlUp)
If l_rngA.MergeArea.Cells.Count > 1 Then
':
End If
MsgBox l_rngA.MergeArea.Cells.Count > 1
':
Set l_rngA = Nothing
End Sub
このtest1とtest2の違いの事ですか?
『文法を使ってVBAとしてプログラムで表現するもの』とは、
『l_lngMargeCount』という【変数】に
『l_rngA.MergeArea.Cells.Count』の結果を格納して
以降の処理をするもの、という意味でしょうか。(test1)
それに対して
『.を使用して』変数を介さず『タイトな感じで組める』感じのものが
test2という印象でしょうか。
>後者の表し方をなんというのでしょうか?
特に呼称はないと思います。
『l_rngA』はセル範囲を格納するRange型変数で、
l_rngA.MergeArea.Cells.Count
これはそのRange型変数に格納したセルの、結合セルの個数を表します。
コードの内容によって、
『l_rngA.MergeArea.Cells.Count』を何回も取得するような処理内容なら、
毎回、l_rngAのMergeAreaのCellsのCount..という風に上のほうから呼び出すよりも
l_lngMargeCount = l_rngA.MergeArea.Cells.Count
『l_lngMargeCount』という変数に格納(記憶)させておいて、
それを使い回すほうが効率的です。
逆に1回しか使わないなら変数を使うまでもない、という考え方もあります。
コーディングスタイルは人それぞれですし、
ケースバイケースの対応でよろしいかと思います。
>..基礎を把握したいのですが何か良いサイトなのありますでしょうか?
参考サイトを挙げておきます。
http://excelvba.pc-users.net/
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/i …
http://www.asahi-net.or.jp/~ef2o-inue/top01.html
では。
返信ありがとうございます。
大変判りやすい例えをだして頂いて助かります。
コーディングの内容によって使い分けるべきなんですね。
参考サイトありがとうございます。
No.3
- 回答日時:
#1の回答者です。
>またけしてWendy02さんの技術を否定してる訳ではありませんよ(笑
いえいえ、疑ったほうがよいのですよ。そのために、開いている他の二つの質問に回答を書いたのです。
今回の質問は、かなり微妙なもので、経験がものを言うだけで、その資格などの裏打ちなどありません。プログラマの専門家と言いながら、VBAは知らなかったりして、VBAのコードを書かせれば、そんな人が言っている内容はあやふやなのは、見る人が見ればバレてしまいます。まともに、コードが通るだけではダメなのです。
この人は、まともなコードが書けるのかなっていう所からあたっていかないと、やっぱり振り回されてしまいます。その人が、どの程度の実力で、なぜ、そういうことを言っているのか、それは、ここの掲示板では特に注意が必要だと思います。ベストアンサー率なんていうのも、素人受けしているかどうかですから、ほとんどアテにはなりません。
有名なサイトでも、内容を更新していない、なかなか書き換えるのは難しいにしても、人に自分の技術的なものを見せるためのコードを書いていると、だんだん、自分のコードがおかしくなってしまうのではないか、と思います。
また、抽象的ですが、人に使ってもらうための作った人の心遣いが、VBAで表現できるということが大事なんだろうと思うのです。
例えば、10/08/05 は、2010/08/05 と正しく認識させるためにはどうするか、そういうことを考えなくてはならないと言うと、ここの掲示板の回答者の中では、食ってかかって必要ないと攻撃するような人間がいます。そういう調子では、永遠に上達は望めないと思ったほうがよいです。
No.2
- 回答日時:
私の反省でもあるのですが、IF文は、素人的には、X>1 を判別されて、その条件に合えば何々をすると言うコードだと昔は思っていました。
しかし本当は別途 X>1の真偽は別に判定されて結果が出る。その結果がTRUEかFALSEであるかを聞くのがIF文である、というのが正しいようです。似たようなことは、昔々私の使っていたコンピュタ機種では、コンピュタのマシン語レベルでは、比較の指令の実行をさせて、真か偽のビットがフラグレジスタなどにたつ。そのビットを判定したように思います。しかし高級言語では、こう考えるメリットは余りないように思います。
ーー
Ifの次からThenの前までを()でくくるというのは上記を連想させまましたが、その理由ではなくて、()でくくるというのは()内が複雑だったり長い場合に注意喚起的にまとまりを示し、見やすくしているのではないでしょうか。
ーーー
>基礎を把握したいのですが
http://home.att.ne.jp/zeta/gen/excel/c04p20.htm
優先順位のカッコもあります。
中ほどの>論理演算子を複数使った条件判定には必ずカッコを使用してください。開発者の意図しなかった誤動作を防ぐことができます
ーー
私見
言語によっては条件判定部分を()でくくるものも在る。C言語とか。
この影響というのは考えすぎかな。
ーー
調べても()で囲む理由はWEBなどでも見つからないのでは。
返信ありがとうございます。
まとまりがあり、判りやすいと思った書き方は
VBAではあまり適切ではなかったということなんですね。。
初心者の私にとっては判りやすいと感じました(笑
ご丁寧にありがとうございました。
No.1
- 回答日時:
不要なら入れない、必要なら入れる。
VBAの場合は、基本的に、() でくくっても同じなら、入れないというのが原則です。それと、可読性を良く口にする人がいますが、VBAプログラマ(プロの場合)は、素人に分かりやすくとか、そんな親切なことは考えず、無駄な部分を省くことが多いです。最悪は、2バイト変数とごちゃごちゃと書いたコメントです。
>後者の方がタイトな感じで組めるので基礎を把握したいのですが
私の技術的なレベルを疑うなら、それでもよいのですが、そのような恣意的な書き方を肯定的に認めて、基礎を固めるようなものはないと思います。一応、私の技術の証明のために、ご質問者の、まだ開けている質問のひとつを回答しておきます。
VBAにはVBAの暗黙のルールはあります。ただ、公にはなっていません。VB6の書き方をそのまま使うということもありません。ただ、しょせん、素人が扱う言語だから、ルールがあっても、それに従わない人がほとんどだということだけです。そうしたら、面倒な書き方はやめるだけでよいです。
なお、
l_lngMargeCount
ハンガリアン記表に似ていますが、ハンガリアン表記でもありません。しかし、必ずしも、ハンガリアン記表が正しいわけではありません。
良いサイトというなら、まず、MSDNをご覧ください。
日本の個人で開いているサイトのどれをとっても、私は満足したことはありません。
失礼かもしれませんが、他のいくつかの質問を見せていただいて、それぞれの回答者に振り回されすぎだと思います。なるべく一定の基準を身につけたほうがよいようです。
参考URL:http://msdn.microsoft.com/ja-jp/library/default( …
返信ありがとうございます。
よく使用される方をみるので勘違いしていましたが
他意見からもあるようにVBAでは適切な表記ではないようですね。
またけしてWendy02さんの技術を否定してる訳ではありませんよ(笑
仰る通り、基礎を身につけようと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) VBA初心者です。 2 2022/10/10 11:52
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 3 2022/06/12 11:17
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- Excel(エクセル) VBAのエラーが直せません 4 2023/06/12 22:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
ExcelのVBAコードについて教え...
-
access2003 クエリSQL文に...
-
Excel VBA 空白をセルを探して...
-
chatgptでつくってもらったコー...
-
欠番の抽出について
-
pythonにてseleniumを使うも、...
-
SQL
-
課題なのですがどなたかコード...
-
アルファベットに付いて質問し...
-
◾️Excel VBA 統合について Cons...
-
パイソンプログラム
-
1、Rstudioで回帰直線を求める...
-
C#で入力可能なカウントダウン...
-
VBA リストボックス(複数条件...
-
Gitのクローンについて
-
画像を最背面にし、ブックを後...
-
CFormViewでの印刷について
-
デバッグ前のコードに戻すには?
-
ASCIIコードを文字に変換したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
access2003 クエリSQL文に...
-
1日に1人がこなせるプログラム...
-
Exel VBA 別ブックから該当デ...
-
pythonにてseleniumを使うも、...
-
ExcelのVBAコードについて教え...
-
ExcelのVBAコードについて教え...
-
chatgptでつくってもらったコー...
-
欠番の抽出について
-
JANコードとPOSコードは同じ?
-
JavaScriptの定数名が取り消し...
-
特定行の背景色を変えたいのですが
-
1、Rstudioで回帰直線を求める...
-
変数名「cur」について
-
将来AIが進歩してくるにつれて...
-
PreviewKeyDownイベントが2回...
-
ACCESSユニオンクエリでORDER B...
-
VBAでファイルオープン後にコー...
-
COBOLの文法
-
Nullの使い方が不正です。
おすすめ情報