エクセル雑感
素直なプログラミング

ExcelマクロVBAとエクセル関数についての私的雑感
最終更新日:2013-02-18

素直なプログラミング


プログラムを作る場合、「可読性」「保守性」等々に気を配る必要がありますが、


まずは、素直なコードを書くことでしょう。


テクニックに走ったりせず、頭に浮かんだ事をそのままコーディングしていく事も重要です。


頭に浮かんだ事が、今の自分のスキルレベルなのですが、


スキルが上がれば、頭に浮かぶ事も、少しずつ変化してきます。


素直なコードと書きましたが、ではどんなことでしょうか。


例として、


「変数Aが0で、変数Bも0の場合は何もしない、それ以外の場合は処理する。」


これをそのまま書けば、

If A = 0 And B = 0 Then
Else
  ・・・処理する
End If


となりますね。


しかしここで、Thenの時に何も記述がないのはおかしい、


ThenとElseを入れ替えた方が良いのでは考える人が多くいます。


その場合は、

If A <>0 Or B <> 0 Then
  ・・・処理する
End If


一見スマートに見えるのですが、頭の思考とは違ったコードになっています。


人間の思考は、否定形になじみません。


「変数Aが0で、変数Bも0の場合は何もしない、それ以外の場合は処理する。」


と考えた頭で、後のプログラムを見ると、一瞬、思考が停止してしまいます。


コードは、短ければ良いというわけではありません。


素直に、考えた事をそのままコードにすることも重要なのです。


さらに、可読性を考慮して、コメントをいれておくのです。


つまり、

If A = 0 And B = 0 Then
  '何もしない

Else
  ・・・処理する
End If


このように記述しておけば、だれが見ても解り易いコードとなるのです。



以上は、あくまで、簡単な例としての話ではありますが、


無理な考えをしない、素直に書いていくということです。


また、たまに玉石混交のコードを見かけます。


素晴らしいコードが書いてあるかと思えば、何だこれはというようなコードがあったり。


おそらく、自身のスキルに見合わないコードを、ネットからコピペして使っているのでしょう。


こういう統一感のないコード程、見づらいものはありません。


自身のスキルで書けるコードを、素直に書いていく、まずはそこからです。





同じテーマ「エクセル雑感」の記事

エクセル関連ツイート

「エクセルvbasort互換性」との検索。まだまだ2003ユーザーが多いので、ソート・条件付き書式、フィルタ、関数(SUMIFS等)…2003までの機能で作成するようにして下さい。ソートは2003ではキーが3つまでですが、キーを変更してソートを繰り返す事で対応可能です。
プログラミングについて
プログラミングをしていると、時に「開けゴマ」みたいなのにぶつかる。確かに扉はひらくのだが、「いったいこれは何だ、特にゴマって何だ」となる。危険のない命令なら別に知らなくても良いだろうが、多少でも危険性のある場合はそんな訳にはいかない。
エクセルの日付のお話
エクセルでの日付の扱いは特別です。では、エクセルでの日付についてのお話です。エクセルでの日付は1900/1/1を1として、そこからの日数になっています。通常、私もこのように説明するのですが、実は、ちょっとからくりがあります。
素直なプログラミング
エクセル関連ツイートNo2
何を始めるにしても、まずは、それぞれの用語というものは覚える必要があります。これを無視して進んではダメですよ。困った時に調べようとしても、なかなか目的にたどり着けないことになります。基礎をおろそかにしては、結局後で時間を浪費することになります。
エクセル関連ツイートNo3
無理してクラスを使う必要性はないと思っています。VBAの場合は、完成後にプロではない他人(ユーザー等)にとって易しくわかりやすく書くことが重要だと思います。なので私は極力クラスは使わずに易しいコードで、それでいて速度が速くなるように書くことを心がけています。
エクセル関連ツイートNo4
VBEのこの左下のボタン「プロシージャの表示」「モジュール全体を連続表示」このボタンの説明ってどこにも書いた覚えがないです。といいますかVBEの全体としての説明を書いてない。とはいえVBEの機能を全部説明するのは無理、VBA全体を理解しないとどのみち意味が通じないでしょうし。
エクセル関連ツイートNo5
「セルに特定の文字が含まれているかどうかの判定」A列にExcelという文字を含む行を別シートに転記するとしたらどうするか。やり方がいっぱいありすぎる気も大文字小文字を区別するかどうかで変わってきますね。直前のコマンドまたは操作を繰り返すExcelショートカット F4 これが一番使われているように思う。
IF文の整理と論理的思考
論理的思考でIf文を整理することについて、簡単な例で解説していきます。無駄な条件が入っていたり、条件が重複しているプログラム程理解しずらい物はありません。問題です。以下のマクロについて、気が付いたことを指摘して下さい。
エクセルVBAを覚えるには
エクセルのマクロ(VBA)を覚えるには、何が必要か… マクロで何ができるのか、そして、マクロで何を自動化したいのか、そのイメージをしっかりと持つことです。VBAの本を買ってきて、1ページ目から読み始めたとしたら… ほぼ確実に、途中で挫折すると思います。
EXCELマクロを始める時、まず最初にやるべきことは
EXCELマクロを始める時、まず最初にやるべきことは何か 入門書により、いろいろな事がかいてあるかもしれませんが、まず最初にやるべき事は、2007以降なら、「開発」タブを表示する事。そして、VBE(VisualBasicEditor)のオプション変更です。


新着記事NEW ・・・新着記事一覧を見る

Byte配列と文字コード関数について|VBA技術解説(8月20日)
PowerQueryの強力な機能をVBAから利用する方法|VBA技術解説(8月4日)
練習問題31(セル結合を解除して値を埋める)|VBA練習問題(7月30日)
練習問題30(マトリックス→リスト形式)|VBA練習問題(7月25日)
Applicationを省略できるApplicationのメソッド・プロパティ一覧|VBA技術解説(7月22日)
コレクション(Collection)の並べ替え(Sort)に対応するクラス|VBA技術解説(7月20日)
CSVの読み込み方法(ジャグ配列)|VBAサンプル集(7月15日)
その他のExcel機能(グループ化、重複の削除、オートフィル等)|VBA入門(7月14日)
オートフィルタ退避回復クラスを複数シート対応させるVBAクラス|VBA技術解説(7月6日)
オートフィルタを退避回復するVBAクラス|VBA技術解説(7月6日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|ExcelマクロVBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数とデータ型(Dim)|ExcelマクロVBA入門
6.繰り返し処理(For Next)|ExcelマクロVBA入門
7.マクロって何?VBAって何?|ExcelマクロVBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.ひらがな⇔カタカナの変換|エクセル基本操作
10.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説



  • >
  • >
  • >
  • 素直なプログラミング

  • このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。




    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
    本文下部へ