MW211 EXIT

devlog
ExcelVBA/Chr関数の全貌
2018年09月28日
Chr関数の全貌を出力するマクロ。
┌──────────────────────────────────────┐
│Public Sub Chr関数の全貌()                                                  │
│    Dim i As Long                                                           │
│    With ActiveCell                                                         │
│        For i = 0 To 255                                                    │
│            With .Offset(i)                                                 │
│                .Offset(, 0).Value = i                                      │
│                .Offset(, 1).Value = Chr(i)                                 │
│                With .Offset(, 2)                                           │
│                    Select Case i                                           │
│                        Case 8:     .Value = "[BS]"                         │
│                        Case 9:     .Value = "[TAB]"                        │
│                        Case 10:    .Value = "[LF]"                         │
│                        Case 13:    .Value = "[CR]"                         │
│                        Case 32:    .Value = "[SPACE]"                      │
│                    End Select                                              │
│                End With                                                    │
│            End With                                                        │
│        Next i                                                              │
│    End With                                                                │
│End Sub                                                                     │
└──────────────────────────────────────┘
分類:ExcelVBA
PHP/同名項目のPOST
2018年09月27日
同名項目(name属性が同じ)をPOSTしたらどうなるか?
┌──────────────────────────────────────┐
│<form method="post" action="test.php">                                      │
│  <div>                                                                     │
│    <input type="hidden" name="abc" value="a">                              │
│    <input type="hidden" name="abc" value="b">                              │
│    <input type="hidden" name="abc" value="c">                              │
│    <input type="submit" value="送信">                                      │
│  </div>                                                                    │
│</form>               ┌────────┐                                  │
├───────────│array(1) {      │─────────────────┤
│<?php                 │  ["abc"]=>     │                                  │
│var_dump($_POST); //→│  string(1) "c" │                                  │
└───────────│}               │─────────────────┘
                        └────────┘
最後の項目の値が有効になるようだ。
分類:PHP
jQuery/セレクタが複数該当
2018年09月26日
セレクタが複数該当する場合、参照は一件目のみ、設定は全件が対象となる。
全件参照したい場合には.each()メソッドを使う。
┌──────────────────────────────────────┐
│<input type="hidden" class="a" value="a">                                   │
│<input type="hidden" class="b" value="b">                                   │
│<input type="hidden" class="c" value="c">                                   │
├──────────────────────────────────────┤
│alert($('input:hidden').val());  // →「a」(一件目)のみ                     │
│┌────────────────────────────────────┐│
││// 全件参照したい場合には.each()メソッドでループさせる                  ││
││$('input:hidden').each(function() {                                     ││
││    alert($(this).val());  // →「a」、「b」、「c」                     ││
││});                                                                     ││
│└────────────────────────────────────┘│
├──────────────────────────────────────┤
│$('input:hidden').val('z');  // →全件に設定される                          │
│alert($('.a').val());        // →「z」                                     │
│alert($('.b').val());        // →「z」                                     │
│alert($('.c').val());        // →「z」                                     │
└──────────────────────────────────────┘
分類:jQuery
jQuery/.data()(2)
2018年09月24日
値の設定方法は以下の通り。第二引数に指定してあげればよい。(「.attr()」と同じ)
┌──────────────────────────────────────┐
│$(function(){                                                               │
│    $(':button').on('click', function() {                                   │
│        $(this).data('key', '新しい値');                                    │
│        alert($(this).data('key'));  //→「新しい値」                       │
│    });                                                                     │
│});                                                                         │
├──────────────────────────────────────┤
│<input type="button" value="表示" data-key="古い値"/>                       │
└──────────────────────────────────────┘

但し、「.data()」によるデータの設定の反映はjQuery上のみで
HTML上には反映されないので、「.attr()」では取得できないので注意。
┌──────────────────────────────────────┐
│$(function(){                                                               │
│    $(':button').on('click', function() {                                   │
│        $(this).data('key', '新しい値');                                    │
│        alert($(this).data('key'));       //→「新しい値」                  │
│        alert($(this).attr('data-key'));  //→「古い値」  ★                │
│    });                                                                     │
│});                                                                         │
├──────────────────────────────────────┤
│<input type="button" value="表示" data-key="古い値"/>                       │
└──────────────────────────────────────┘

逆に「.attr()」でHTML上に反映させれば、「.data()」でも取得できる。
┌──────────────────────────────────────┐
│$(function(){                                                               │
│    $(':button').on('click', function() {                                   │
│        $(this).attr('data-key', '新しい値');                               │
│        alert($(this).data('key'));       //→「新しい値」★                │
│        alert($(this).attr('data-key'));  //→「新しい値」                  │
│    });                                                                     │
│});                                                                         │
├──────────────────────────────────────┤
│<input type="button" value="表示" data-key="古い値"/>                       │
└──────────────────────────────────────┘
分類:jQuery
jQuery/.data()(1)
2018年09月23日
data属性は「data-」を接頭辞につけた属性で自由に定義できる。
そしてそれをjQueryで操作するのが「.data()」である。

例えば、以下のようにhidden属性でデータを横に置いている処理を…。
┌──────────────────────────────────────┐
│$(function(){                                                               │
│    $(':button').on('click', function() {                                   │
│        alert($(this).closest('div').find(':hidden[name="key"]').val());    │
│    });                                                                     │
│});                                                                         │
├──────────────────────────────────────┤
│<div>                                                                       │
│<input type="button" value="表示"/>                                         │
│<input type="hidden" name="key" value="値"/>                                │
│</div>                                                                      │
└──────────────────────────────────────┘

以下のようにdata属性として内包させることができる。
┌──────────────────────────────────────┐
│$(function(){                                                               │
│    $(':button').on('click', function() {                                   │
│        alert($(this).data('key'));                                         │
│    });                                                                     │
│});                                                                         │
├──────────────────────────────────────┤
│<input type="button" value="表示" data-key="値"/>                           │
└──────────────────────────────────────┘
「.data('key')」のように「data-」を外した残りを指定して
参照することができるのだが、元々、「data-key」という属性なので
「.attr('data-key')」のように「.attr()」でフルネームでも取得できる。
分類:jQuery
PowerBI/COUNTIF
2018年09月22日
(Excelの)COUNTIF関数代替としては以下二つの方法がある。
┌──────────────────────────────────────┐
│重複件数 = COUNTX(FILTER('クエリ名', [列] = EARLIER([列])), [列])           │
├──────────────────────────────────────┤
│重複件数 = CALCULATE(COUNT([列]), FILTER('クエリ名',[列] = EARLIER([列])))  │
└──────────────────────────────────────┘
分類:PowerBI
PostgreSQL/generate_seriesの別名
2018年09月18日
generate_series()で別名を定義する場合には、
表と列の両方を同時に定義してやればよい。
┌──────────────────────────────────────┐
│SELECT "表"."列"                                                            │
│    FROM "generate_series"(1, 3) AS "表"("列");                             │
└──────────────────────────────────────┘

もしも、表だけ別名を定義してしまうと列名も表と同名となってしまう。
┌──────────────────────────────────────┐
│SELECT "表"."表"                                                            │
│    FROM "generate_series"(1, 3) AS "表";                                   │
└──────────────────────────────────────┘
なので、「"表"."generate_series"」とかはエラーとなる。

クロス結合する場合には、以下のような感じでできる。
┌──────────────────────────────────────┐
│SELECT "表A"."列A",                                                         │
│       "表B"."列B"                                                          │
│    FROM "generate_series"(1, 3) AS "表A"("列A")                            │
│        CROSS JOIN  "generate_series"(1, 2) AS "表B"("列B")                 │
│    ORDER BY  "表A"."列A" ASC,                                              │
│              "表B"."列B" ASC                                               │
└──────────────────────────────────────┘
分類:PostgreSQL
PHP/画像ファイル名のハッシュ化
2018年09月12日
画像ファイルの中身からハッシュ値(SHA1(40文字))を変換して
(コピーして)それをファイル名にするPHPプログラム。
┌──────────────────────────────────────┐
│$input = 'C:\…\ファイル.jpg';                                              │
│$path_parts = pathinfo($input);                                             │
│$output = $path_parts['dirname']                                            │
│        . '\\' . hash_file('sha1', $input)                                  │
│        . '.'  . $path_parts['extension'];                                  │
│if (!copy($input, $output)) {                                               │
│    echo 'コピー失敗(' . $input . ')';                                      │
│}                                                                           │
└──────────────────────────────────────┘
中身が同じであれば同じファイル名となるため、名寄せができる。

ディレクトリ内のすべてのファイルを対象とする場合は以下のような感じ。
┌──────────────────────────────────────┐
│$dir = 'C:\…\ディレクトリ名';                                              │
│main($dir);                                                                 │
│exit();                                                                     │
├──────────────────────────────────────┤
│function main($dir) {                                                       │
│    foreach (glob($dir . '\\*') as $value) {                                │
│        $path_parts = pathinfo($value);                                     │
│        $output = $path_parts['dirname']                                    │
│                . '\\' . hash_file('sha1', $value)                          │
│                . '.'  . $path_parts['extension'];                          │
│        $utf8 = mb_convert_encoding($path_parts['filename'], 'utf-8', 'sjis');
│        if ($output === $value) {                                           │
│            echo 'スキップ(' . $utf8 . ')' . "\n";                          │
│        } else {                                                            │
│            if (copy($value, $output)) {                                    │
│                echo '成功(' . $utf8 . ')' . "\n";                          │
│            } else {                                                        │
│                echo '失敗(' . $utf8 . ')' . "\n";                          │
│            }                                                               │
│        }                                                                   │
│    }                                                                       │
│}                                                                           │
└──────────────────────────────────────┘
分類:PHP
Excel/セルの表示形式が勝手に変わる
2018年09月08日
セルの表示形式が「標準」のセルに、日付の文字列(例えば「2018/9/8」など)を
入力(コピペも)すると、表示形式が「日付」になってしまう。

つまり、例えば、実は数値「1」を入力すべき項目だった場合、
間違って日付を入力してしまうと、再度「1」を入力した瞬間
「1900/1/1」と表示されてしまう。

これを解決するには、表示形式を「標準」としないで
「数値」とかにちゃんと設定する方法がよいようだ。

特にセルの保護をして書式設定を直せないものについては予防しておくとよい。
分類:Excel
Excel2010/例外の起こし方
2018年09月07日
ActiveXコントロールでボタンを追加し、
そのイベントとして以下のような感じで改頁設定全削除を仕込む。
┌──────────────────────────────────────┐
│Private Sub CommandButton1_Click()                                          │
│    ActiveSheet.ResetAllPageBreaks                                          │
│End Sub                                                                     │
└──────────────────────────────────────┘
後は、ボタンを押すだけで(ボタンを押してイベントを実行するだけで)
Excelが例外で落ちる。

なぜだろう?
分類:ExcelVBA
前へ 1 2 次へ