MW211 EXIT

devlog
ExcelVBA/乱数
2017年11月30日
たとえばこんな感じ。
┌──────────────────────────────────────┐
│Public Sub ランダム文字生成()                                               │
│    Dim result As String: result = ""                                       │
│    Dim i As Long, dw(0 To 2) As String                                     │
│    Randomize                                                               │
│    For i = 1 To 8                                                          │
│        dw(0) = Int(Rnd * 10)               ' 数字(0~9)                    │
│        dw(1) = Chr(Int(Rnd * 26) + 65)     ' 英大文字(A~Z)                │
│        dw(2) = Chr(Int(Rnd * 26) + 97)     ' 英小文字(a~z)                │
│        result = result & dw(Rnd * 2)                                       │
│    Next i                                                                  │
│    MsgBox result                                                           │
│End Sub                                                                     │
└──────────────────────────────────────┘
要点としては以下の通りである。
┌───────┬──────────────────────────────┐
│Randomize     │乱数をシャッフル                                            │
├───────┼──────────────────────────────┤
│Rnd           │0以上1未満                                                  │
├───────┼──────────────────────────────┤
│Int(Rnd * 10) │0~9                                                        │
└───────┴──────────────────────────────┘
分類:ExcelVBA
CSS/点滅
2017年11月29日
CSSで点滅させる方法。
(これだとJavaScriptでタイマを仕込んで定期的にトグルとかしなくてもよくなる)

まず、keyframes定義にて何らかの名称で属性を定義する。
ここでは「BLINK」という名称で定義した。
┌──────────────────────────────────────┐
│@keyframes BLINK {                                                          │
│    0% {                                                                    │
│        opacity :1.0;                                                       │
│    }                                                                       │
│    50% {                                                                   │
│        opacity :0;                                                         │
│    }                                                                       │
│}                                                                           │
└──────────────────────────────────────┘
「opacity」とは不透明度のことであり、「0」が透明となる。
つまり、始点(0%)では不透明(点灯)、終点では透明(消灯)となる指定を
「BLINK」に定義している
なお、本来終点は「100%」だが、後述の様に変化を一段で行うため、
今回は真ん中の「50%」を終点と見立てている

後は、それを各要素に対して、animation属性として定義してあげればOK。
┌──────────────────────────────────────┐
│div.light {                                                                 │
│    background-color    :#FFFF00;                                           │
│    animation           :BLINK 1.0s steps(1,end) 0s infinite normal;        │
│}                                                                           │
└──────────────────────────────────────┘
パラメータの詳細は以下のような感じ。
┌──────┬───────────────────────────────┐
│BLINK       │keyframes定義で定義した「BLINK」属性を用いる                  │
├──────┼───────────────────────────────┤
│1.0s        │処理周期1秒(1秒で点灯から消灯まで行われる)                    │
├──────┼───────────────────────────────┤
│steps(1,end)│変化の度合い                                                  │
│            │緩やかに変化させることもできるが、点滅なので、変化は一段のみ  │
├──────┼───────────────────────────────┤
│0s          │開始までの時間0秒(つまり、すぐ開始)                           │
├──────┼───────────────────────────────┤
│infinite    │繰り返し回数、無限(永久)                                      │
├──────┼───────────────────────────────┤
│normal      │順方向のみ                                                    │
└──────┴───────────────────────────────┘
分類:HTML5+CSS3
ExcelVBA/存在チェックいろいろ
2017年11月22日
存在チェックのやり方を遅い順に列挙してみた。
┌──────────────────────────────────────┐
│Set 検索 = 範囲.Find( _                                                     │
│    What:=セル.Value, _                                                     │
│    After:=セル, _                                                          │
│    LookIn:=xlValues, _                                                     │
│    Lookat:=xlWhole, _                                                      │
│    SearchOrder:=xlByRows, _                                                │
│    SearchDirection:=xlNext, _                                              │
│    MatchCase:=True, _                                                      │
│    MatchByte:=True _                                                       │
│)                                                                           │
│If 検索.Address <> セル.Address Then                                        │
│    ' 重複あり                                                              │
│Else                                                                        │
│    ' 重複なし                                                              │
│End If                                                                      │
├──────────────────────────────────────┤
│If WorksheetFunction.CountIf(範囲, セル.Value) > 0 Then                     │
│    ' 重複あり                                                              │
│Else                                                                        │
│    ' 重複なし                                                              │
│End If                                                                      │
├──────────────────────────────────────┤
│On Error Resume Next                                                        │
│Call WorksheetFunction.VLookup(セル.Value, 範囲, 1, False)                  │
│If Err.Number = 0 Then                                                      │
│    ' 重複あり                                                              │
│Else                                                                        │
│    ' 重複なし                                                              │
│End If                                                                      │
│On Error GoTo 0                                                             │
├──────────────────────────────────────┤
│On Error Resume Next                                                        │
│Call WorksheetFunction.Match(範囲, セル.Value, 0)                           │
│If Err.Number = 0 Then                                                      │
│    ' 重複あり                                                              │
│Else                                                                        │
│    ' 重複なし                                                              │
│End If                                                                      │
│On Error GoTo 0                                                             │
└──────────────────────────────────────┘
分類:ExcelVBA
Windows/delコマンドのエラーの違い
2017年11月17日
「del」コマンドでファイルを削除しようとしたら、以下のエラーが発生した。
  ・「■■■■が見つかりませんでした。」
  ・「指定されたファイルが見つかりません。」
  ・「指定されたパスが見つかりません。」
  ・「アクセスが拒否されました。」
それぞれの違いは何か?

例えば「del "C:\a\b\c.txt"」の場合

・「■■■■が見つかりませんでした。」
  →フォルダまでは存在するが、ファイルが見つからない場合
    「C:\a\b」までは存在するが、「c.txt」が存在しない場合

・「指定されたファイルが見つかりません。」
  →フォルダ自体が存在しない場合(但し、直前のフォルダまで存在する場合)
    「C:\a」までは存在するが、「b」が存在しない場合

・「指定されたパスが見つかりません。」
  →フォルダ自体が存在しない場合(但し、直前のフォルダも存在しない場合)
    「C:\a」が存在しない場合

・「アクセスが拒否されました。」
  →読み取り専用属性が設定されている場合
    「del /f」コマンドに切り替える必要あり
分類:Windows
ExcelVBA/Type
2017年11月15日
Type(構造体)のいろいろ。こんな感じということで。
┌─────┬────────────────────────────────┐
│Typeの定義│Type 構造体                                                     │
│          │    列1          As Long                                        │
│          │    列2          As String                                      │
│          │End Type                                                        │
├─────┼────────────────────────────────┤
│Typeの使用│Dim 構造体インスタンス As 構造体                                │
│          │構造体インスタンス.列1 = 0;                                     │
│          │MsgBox 構造体インスタンス.列1                                   │
│          │Call 関数(構造体インスタンス)                                   │
│          │────────────────────────────────│
│          │Sub 関数(ByVal 引数インスタンス As 構造体)                      │
│          │    MsgBox 構造体インスタンス.列1                               │
│          │End Sub                                                         │
└─────┴────────────────────────────────┘
分類:ExcelVBA
ExcelVBA/.NumberFormatの違い
2017年11月14日
「.NumberFormatLocal」の方が、通常の画面入力(「セルの書式設定」)に近い。
  ┌──────────────────┬──────────────────┐
  │         .NumberFormatLocal         │           .NumberFormat            │
  ├──────────────────┼──────────────────┤
  │標準書式(書式なし)の指定            │標準書式(書式なし)の指定            │
  │.NumberFormatLocal = "G/標準"       │.NumberFormat = "General"           │
  ├──────────────────┼──────────────────┤
  │文字色の指定                        │文字色の指定                        │
  │.NumberFormatLocal = "0;[赤]-0"     │.NumberFormat = "0;[Red]-0"         │
  ├──────────────────┼──────────────────┤
  │円マークのの指定                    │文字色の指定                        │
  │.NumberFormatLocal = "\0"           │.NumberFormat = """\""0"            │
  └──────────────────┴──────────────────┘
「.NumberFormatLocal」を使った方がいいのでは?
分類:ExcelVBA
Excel/小数第一位のゼロパディング
2017年11月13日
小数第一位をゼロパディングしたい場合。(「1」→「1.0」)

(a) 小数第二位を入力しない場合
    →セルの書式を「0.0」とする

(b) 小数第二位を入力して、そのまま出力する場合
    →セルの書式を「0.0」とすると、小数第二位で四捨五入され
      小数第一位までしか表示されないので
      「0.0########」みたいに「#」を後ろに付ける
      ※「#」の数は任意(もうこれでいいってくらいに)
        なお、溢れたところ(小数第何位か)で、四捨五入されるので
        大目にとった方がよい
      ※正規表現的にいうと「#+」的なのがあるといいのだが見つからない
分類:Excel
Windowsバッチ/処理を封印
2017年11月07日
途中で強制終了して、誤って実行させない処置。
┌──────────────────────────────────────┐
│exit;  REM 封印                                                             │
└──────────────────────────────────────┘
例えば、以下のような感じ。
┌──────────────────────────────────────┐
│exit;  REM 封印                                                             │
│del "重要なファイル.txt"                                                    │
└──────────────────────────────────────┘
分類:Windows
前へ 1 次へ