MW211 EXIT

devlog
ExcelVBA/ダラーマーク付き関数
2013年09月04日
文字列操作関数において、末尾に「$」マークが付加されているものを
見かけることはないだろうか?
これは、文字列操作関数を文字列(String型)に特化して使うことを明示しているものだ。
何もつけないと万能型(Variant型)を想定して動作するが、
文字列型に特化した方が対策を限定できるので若干速くなるようだ。
以下がその関数になる。
┌────────────────┬─────────────────────┐
│Chr$()、ChrB$()、ChrW$()        │文字コードからの変換                      │
├────────────────┼─────────────────────┤
│Format$()                       │書式変換                                  │
├────────────────┼─────────────────────┤
│Oct$()、Hex$()                  │8進数、16進数                             │
├────────────────┼─────────────────────┤
│LCase$()、UCase$()              │大文字小文字変換                          │
├────────────────┼─────────────────────┤
│Left$()、Mid$()、Right$()       │文字列の切り出し                          │
│LeftB$()、MidB$()、RightB$()    │                                          │
├────────────────┼─────────────────────┤
│Trim$()、LTrim$()、RTrim$()     │トリム                                    │
├────────────────┼─────────────────────┤
│Environ$()、Error$()、CurDir$() │各種情報                                  │
├────────────────┼─────────────────────┤
│Date$()、Time$()                │日付時刻                                  │
├────────────────┼─────────────────────┤
│Space$()、String$()、Str$()     │その他                                    │
└────────────────┴─────────────────────┘
分類:ExcelVBA
ExcelVBA/抜ける
2013年09月03日
Exit何とかの命令は以下のようなものがある。
┌──────────────────────────────────────┐
│Sub 関数()                                                                  │
│   Exit Sub                                                                 │
│End Sub                                                                     │
├──────────────────────────────────────┤
│Function 関数()                                                             │
│    Exit Function                                                           │
│End Function                                                                │
├──────────────────────────────────────┤
│For i = 1 To 3                                                              │
│    Exit For                                                                │
│Next x                                                                      │
├──────────────────────────────────────┤
│Do                                                                          │
│    Exit Do                                                                 │
│Loop                                                                        │
├──────────────────────────────────────┤
│Exit Property                                                               │
└──────────────────────────────────────┘
分類:ExcelVBA
ExcelVBA/比較
2013年09月02日
数値で比較すると数値に型変換して判定される。
つまり、「If セルの値 = 0」の場合、空欄も真に判定されてしまう。
よって、「0」のみを比較したい場合には、文字列で比較すればよい。
「If セルの値 = "0"」ってことだ。

実際に試してみると、以下のような傾向がある。
┌─────┬───┬───┬───┬───┬───┬───┐
│  比較対象│FALSE │数値0 │文字0 │文字0.0  空欄 │=""   │
│比較方法  │      │書式0.0 '0    │'0.0  │      │      │
├─────┼───┼───┼───┼───┼───┼───┤
│= False   │  ◎  │  ○  │  ○  │  ○  │  ○  │  ×  │
├─────┼───┼───┼───┼───┼───┼───┤
│= 0       │  ○  │  ◎  │  ○  │  ○  │  ○  │  ×  │
├─────┼───┼───┼───┼───┼───┼───┤
│= "0"     │  ×  │  ○  │  ◎  │  ×  │  ×  │  ×  │
├─────┼───┼───┼───┼───┼───┼───┤
│= Empty   │  ○  │  ○  │  ×  │  ×  │  ◎  │  ○  │
├─────┼───┼───┼───┼───┼───┼───┤
│IsEmpty() │  ×  │  ×  │  ×  │  ×  │  ◎  │  ×  │
├─────┼───┼───┼───┼───┼───┼───┤
│= ""      │  ×  │  ×  │  ×  │  ×  │  ◎  │  ○  │
└─────┴───┴───┴───┴───┴───┴───┘
比較対象を論理型、文字型、数値型に換算して比較しているので、
本来想定しているもの以外にも該当するものがでてくるといった感じだ。
少々毛色が違うのが「= Empty」。
これは比較対象の型に自身を換算している感じだ。
よって、数値0の場合は自身を数値0に変換するため一致する一方で
文字列0の場合は、自身は元々文字列""なので不一致となる。

それじゃ文字列の「"0"」と数値の「0」を判別したい場合には?
上記からもわかるように「If セルの値 = Empty」が一つの候補だ。

それ以外に「If WorksheetFunction.IsNumber(セルの値)」で
厳密に「数値0」(真)と「文字列0」(偽)を判別する方法などがある。
分類:ExcelVBA
jQuery/要素の存在チェック
2013年09月01日
セレクタで指定したものが実際にあるのかどうかを判定する方法は
いろいろあるようだ。

但し、一番やりがちな以下はダメです。いずれでも真になってしまいます。
┌──────────────────────────────────────┐
│if ($(セレクタ)) {存在あり;} else {存在なし;}                               │
└──────────────────────────────────────┘

ということで、やり方は以下の通り。
┌──────────────────────────────────────┐
│if ($(セレクタ)[0])              {存在あり;} else {存在なし;}               │
│if ($(セレクタ).get(0))          {存在あり;} else {存在なし;}               │
├──────────────────────────────────────┤
│if ($(セレクタ).length  > 0)     {存在あり;} else {存在なし;}               │
│if ($(セレクタ).size()  > 0)     {存在あり;} else {存在なし;}               │
├──────────────────────────────────────┤
│if ($(セレクタ).is('*') == true) {存在あり;} else {存在なし;}               │
└──────────────────────────────────────┘

「.size()」よりも「.length」が推奨されるので、以下を推奨したいと思う。
┌──────────────────────────────────────┐
│if ($(セレクタ).length > 0) {存在あり;} else {存在なし;}                    │
└──────────────────────────────────────┘
分類:jQuery
jQuery/キー入力による表示位置移動
2013年08月31日
「<div id="point"><div>」を上下左右キー入力で移動させるサンプル。
┌──────────────────────────────────────┐
│$(window).keydown(function(e) {                                             │
│    switch (e.keyCode) {                                                    │
│        case 37:    // ←                                                   │
│            $('#point').css('left', $('#point').position().left - 16);      │
│            break;                                                          │
│        case 38:    // ↑                                                   │
│            $('#point').css('top' , $('#point').position().top  - 16);      │
│            break;                                                          │
│        case 39:    // →                                                   │
│            $('#point').css('left', $('#point').position().left + 16);      │
│            break;                                                          │
│        case 40:    // ↓                                                   │
│            $('#point').css('top' , $('#point').position().top  + 16);      │
│            break;                                                          │
│    }                                                                       │
│});                                                                         │
└──────────────────────────────────────┘
分類:jQuery
PHP配列/配列が全て空であることの判定
2013年08月28日
全ての要素が、FALSE相当(FALSE、NULL、0、'0'、''、array())の場合に検出。
┌──────────────────────────────────────┐
│$empty = array_filter($配列);                                               │
│if (empty($empty)) {                                                        │
│    return '全て空です';                                                    │
│} else {                                                                    │
│    return '空ではありません';                                              │
│}                                                                           │
└──────────────────────────────────────┘

全ての要素が、空文字相当(FALSE、NULL、'')の場合に検出。
┌──────────────────────────────────────┐
│$empty = array_filter($配列, 'strlen');                                     │
│if (empty($empty)) {                                                        │
│    return '全て空です';                                                    │
│} else {                                                                    │
│    return '空ではありません';                                              │
│}                                                                           │
└──────────────────────────────────────┘
なお、要素が(子)配列(array())の場合はエラーとなるので注意。
分類:PHP配列
設計/Web画面の入出力
2013年08月27日
Web画面における入出力情報をまとめてみた。
【入力】
  ・URL
  ・GETパラメータ
  ・POSTパラメータ
  ・ファイルアップロード
【出力】
  ・画面表示
  ・ファイルダウンロード
  ・メール送信
分類:設計
PostgreSQL/分を時間に換算するSQL文
2013年08月26日
以下のような感じ。
┌──────────────────────────────────────┐
│to_char(to_timestamp(分||'','MI'),'HH24:MI')                                │
└──────────────────────────────────────┘

例えば、150分を2時間30分に換算する場合には以下となる。
┌──────────────────────────────────────┐
│SELECT to_char(to_timestamp(150||'','MI'),'HH24:MI');                →02:30│
└──────────────────────────────────────┘
分類:PostgreSQL
シェル/ファイル分割
2013年08月25日
「EOF」という文字のある行を境にファイルを分割するシェル。
┌──────────────────────────────────────┐
│#!/bin/sh                                                                   │
│sed '1,/EOF/{ w out1.txt                                                    │
│d                                                                           │
│}' in.txt > out2.txt                                                        │
└──────────────────────────────────────┘
分類:Linuxシェル
PostgreSQL/パスワードを調べる方法
2013年08月24日
以下のSQL文で。
┌──────────────────────────────────────┐
│SELECT "usename",                                                           │
│       "passwd"                                                             │
│    FROM "pg_shadow";                                                       │
└──────────────────────────────────────┘
但し、md5変換後の値なので(しかも単純に変換しているわけではない)、
元の値はわからない。

何かと同じパスワードに設定していたっけかなの確認ぐらいには使えそう。
分類:PostgreSQL
前へ 1 … 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 … 156 次へ