MW211 EXIT

devlog
ExcelVBA/ActiveXコントロール部品の設定
2014年08月13日
「デザインモード」にした上で右クリックで「プロパティ」を編集する

共通の代表的なプロパティ
・フォント  …フォントタイプのみ代表的に表示されるが
              詳細設定でフォントサイズも変更できる

ボタンの代表的なプロパティ
・Caption  …ボタンのラベル名

コンボボックス(プルダウンメニュー)の代表的なプロパティ
・Style=2(fmStyleDropDownList)  …入力禁止にする
分類:ExcelVBA
ExcelVBA/ボタンを追加する
2014年08月12日
「開発タブ」の「挿入」。
分類:ExcelVBA
人員配置の変遷
2014年08月11日
行きつく先は人工知能なのか。こんな段階を踏んでいるところだろう。
┌──────────────────────────────────────┐
│        ┌──────┐  ┌──────┐  ┌──────┐                │
│設計担当│アーキテクト│  │アーキテクト│  │アーキテクト│                │
│        ├──────┤  ├──────┤  ├──────┤                │
│製造担当│ プログラマ │→│  (ツール)  │→│  (ツール)  │                │
│        ├──────┤  ├──────┤  ├──────┤                │
│評価担当│   テスタ   │  │   テスタ   │  │  (ツール)  │                │
│        └──────┘  └──────┘  └──────┘                │
└──────────────────────────────────────┘

でも、実際は「システムエンジニア」という名のプログラマが全てを兼ねてたりする。
┌──────────────────────────────────────┐
│        ┌──────┐  ┌──────┐                                  │
│設計担当│アーキテクト│  │アーキテクト│                                  │
│        │     兼     │  │     兼     │                                  │
│製造担当│ プログラマ │OR│ プログラマ │                                  │
│        ├──────┤  │     兼     │                                  │
│評価担当│   テスタ   │  │   テスタ   │                                  │
│        └──────┘  └──────┘                                  │
└──────────────────────────────────────┘
分類:設計
ExcelVBA/データ範囲の縮小
2014年08月10日
以下のように「.SpecialCells(xlLastCell)」を使うと、
「Ctrl+End」と同じ挙動となる。
┌──────────────────────────────────────┐
│Cells(1, 1).SpecialCells(xlLastCell)                                        │
└──────────────────────────────────────┘
「Cells(1, 1).SpecialCells(xlLastCell).Row」という風にすると
空行を跨いだ最後の行を調査できるので便利だ。
つまり、「.SpecialCells(xlLastCell)」は
データのある範囲の末尾に行けるということだ。

但し、一度、末尾の方に値を入力すると、それを削除しても
データのある範囲は縮小されない。
ファイルを保存する時に再計算されるのだ。

よって、「.Cells.Clear」だけでは元あったデータの範囲が残ってしまうということだ。

これでは困る場合、ファイルを保存すれば解決する訳だが
そんなことのためにファイルにアクセスしたくはない。

その解決方法の裏技。
「.UsedRange.Row」をシートに対して使ってあげればいい。
ということで、以下のようなダミー処理を実行すればいいらしい。
┌──────────────────────────────────────┐
│ダミー変数 = UsedRange.Row                                                  │
└──────────────────────────────────────┘

ま、たいていは範囲の境目とかを検索する時に再計算したくなるものだから
以下のようにダミーの代入処理をかましてやればいいのかもしれない。
┌──────────────────────────────────────┐
│With ThisWorkbook.ActiveSheet                                               │
│    y = .UsedRange.Row  'ダミー処理                                         │
│    y = .Cells(1, 1).SpecialCells(xlLastCell).Row                           │
│End With                                                                    │
└──────────────────────────────────────┘
分類:ExcelVBA
ExcelVBA/別シートを選択
2014年08月09日
別シートのセルを選択しようとした場合、以下のように指定しまいがちだ。
┌──────────────────────────────────────┐
│Worksheets("別シート").Range("A1").Select                                   │
└──────────────────────────────────────┘
でも「実行時エラー'1004':RangeクラスのSelectメソッドが失敗しました。」となる。

以下のように二段階でシートを選んで、セルを選ばなければならない。
┌──────────────────────────────────────┐
│Worksheets("別シート").Select                                               │
│Worksheets("別シート").Range("A1").Select                                   │
└──────────────────────────────────────┘

シートは既に絞り込まれているから、セルについては以下のように省略できる。
┌──────────────────────────────────────┐
│Worksheets("別シート").Select                                               │
│Range("A1").Select                                                          │
└──────────────────────────────────────┘

これを一発でやるには「Application.Goto」を使えばいいらしい。
┌──────────────────────────────────────┐
│Application.Goto Worksheets("別シート").Range("A1")                         │
└──────────────────────────────────────┘
この場合は、(「Application.Goto」がその役割を担うので)
「.Select」は不要となる。
分類:ExcelVBA
Windows/BOM除去
2014年08月08日
BOM付きUTF-8ファイルをBOM無しにする方法。

・サクラエディタで開いて、BOM無しで保存する。

他にもいろいろありそう。
分類:Windows
設計/複数条件の順番
2014年08月06日
「if (条件1 and 条件2)」や「if (条件1 or 条件2)」のように
複数の条件を組み合わせて条件式の場合、
論理的には「条件1」と「条件2」の順番を入れ替えても問題ないことになるが
(「どっちも」もしくは「どっちか」ってことだから)
プログラムの場合は前から順番に処理をおこなっていくということに留意すべき。

つまり「条件1」が「条件2を判定しても問題ない」という条件の場合
「if (条件2を判定しても問題ない and 条件2)」となるが
これは順番を入れ替えたらエラーとなるわけだ。

つまりAND条件の場合、「条件1」が「偽」の時点で
「条件2」へは進まない(で「偽」と結論づける)。
一方OR条件の場合、「条件1」が「真」の時点で
「条件2」へは進まない(で「真」と結論づける)ということになる。

だから「if (isset($a) && ($a == 1))」のような条件式で
「$a」が定義されていなくても問題なく動くということになる。
順番無視だったら、「$a == 1」を先に処理して未定義エラーに
なってしまう可能性もあるってことになる。
分類:設計
Windowsバッチ/カレントフォルダ
2014年08月05日
実行したバッチのあるフォルダにコピーしてきたい場合。
#Linuxでいうところの「cp コピーしたいファイル .」をしたい場合。
┌──────────────────────────────────────┐
│copy コピーしたいファイル %~dp0                                             │
└──────────────────────────────────────┘

「.」が「%~dp0」ってことになる。

「%0」がバッチファイルのフルパス(ファイル名も含む)でかつ
ダブルクォーテーションで囲まれたもの。

「%~0」でダブルクォーテーションをはずしたもの。

「%~dp0」でドライブ名とパスのみ、つまりファイル名を除いたものとなる
ということらしい。

「%~d0」でドライブ名のみ、「%~p0」でパス名のみとなる。

但し、「%dp0」「%d0」「%p0」でダブルクォーテーションつきで
分割はできないようだ。
分類:Windows
座右の銘
2014年08月04日
・完璧とは、これ以上付け足すものがない状態ではなく、
  これ以上削ぎ落とすものがない状態である
・戦術的勝利で戦略的敗北を覆すことはできない
・選択と集中そして速度(スピード)
・愚者は成功体験に学び、賢者は歴史に学ぶ
分類:設計
ルール
2014年08月03日
【プログラムの集団開発をする上での基礎知識と最低限のコーディングルール】
  □構造化プログラミングを理解すること
    □基本的にgoto文を使わないこと
    □順次・反復・分岐を理解すること
    □continue文などの特殊脱出文の位置づけを認識すること
    □著名な標準規格をできるだけ多く理解すること(C言語の場合はMISRA-Cなど)
  □変数のスコープをできるだけ狭くすること
    □グローバル変数を濫用しないこと
    □C言語のグローバル変数および関数について、
      externおよびstatic修飾子を適切に付与すること(省略しないこと)
    □C言語のexternグローバル変数を宣言するヘッダファイルについて、
      適切にインクルードすること(濫りにインクルードしないこと)
    □C言語の変数について、const修飾子を適切に付与すること(省略しないこと)
    □オブジェクト指向言語のクラス内メンバ変数について、
      publicやprivateなどのアクセス修飾子を適切に付与すること
    □オブジェクト指向言語のpublicメンバ変数は極力使用せず
      getterメソッド等他の手段を使用すること
  □バージョン管理ソフトを使用できること
    □CVS
    □Subversion
    □Git
  □プロジェクト管理ソフトを使用できること
    □Redmine
    □Trac
  □その他
    □文字コード・改行コードは統一すること
    □不要な全角スペースは除去(半角スペースに置換)すること
    □不要な行末尾のスペース類は除去すること
    □if文の波括弧{}は省略しないこと(swiftの仕様より)
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
【冗長的なコーディングルール】
  →こだわり過ぎると開発の障害となる(場合によっては宗教論争)ので
    思い切って切り捨ててしまった方が逆にいいかもといったルール(楽市楽座的な話)
  □命名規則を統一すること
    ・略字のルールを統一して命名台帳を設ける
    ・ハンガリアン記法を禁止する
    →命名に躊躇して処理作成に集中できなくなる
  □字下げやスペースの空け方やタブの使い方を統一すること
    ・制御文や関数の波括弧{}の前で改行するか否かを統一する
    →記法に躊躇して処理作成に集中できなくなる
  □大文字・小文字・キャメル文字の使用ルールを統一すること
    ・特に小文字のみとローワーキャメル文字を混在しないようにする
    →外部関数などの影響もあり完全な統一は難しくなる
  □switch文におけるcase節の字下げを統一すること
    ・case節をswitch文と同列にするかもしくは一段下げるかを統一する
    →if文との比較から同列が妥当だが、一段下げた方が見やすい(PHP)
  □カンマ区切り記述で最後に余計なカンマを許容しているものでも
    カンマを記述しないこと(もしくは一律記述すること)で統一すること
    ・C言語のenum文やPHPの配列定義など
    →一律最後にカンマを付けて改行にすれば行の入れ替えが容易だが
      余計なカンマを許容しないものとの統一感がなくなる
  →命名や記法については後で一括して置換するかツールで強制的に行うなら別だが
    開発者個々人に都度強制するのは逆効果になる
分類:設計
前へ 1 2 3 次へ