MW211 EXIT

devlog
UUID(GUID)
2018年02月01日
┌──────────────────┬───────────────────┐
│xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx│16進法による文字列表記                │
└──────────────────┴───────────────────┘
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
【バリアント(変種)】
┌──────────────────┬───────────────────┐
│xxxxxxxx-xxxx-xxxx-0xxx-xxxxxxxxxxxx│後方互換予約                          │
│xxxxxxxx-xxxx-xxxx-1xxx-xxxxxxxxxxxx│(Network Computing System)            │
│xxxxxxxx-xxxx-xxxx-2xxx-xxxxxxxxxxxx│                                      │
│xxxxxxxx-xxxx-xxxx-3xxx-xxxxxxxxxxxx│                                      │
│xxxxxxxx-xxxx-xxxx-4xxx-xxxxxxxxxxxx│                                      │
│xxxxxxxx-xxxx-xxxx-5xxx-xxxxxxxxxxxx│                                      │
│xxxxxxxx-xxxx-xxxx-6xxx-xxxxxxxxxxxx│                                      │
│xxxxxxxx-xxxx-xxxx-7xxx-xxxxxxxxxxxx│                                      │
├──────────────────┼───────────────────┤
│xxxxxxxx-xxxx-xxxx-8xxx-xxxxxxxxxxxx│一般的に使用(RFC4122)                 │
│xxxxxxxx-xxxx-xxxx-9xxx-xxxxxxxxxxxx│                                      │
│xxxxxxxx-xxxx-xxxx-Axxx-xxxxxxxxxxxx│                                      │
│xxxxxxxx-xxxx-xxxx-Bxxx-xxxxxxxxxxxx│                                      │
├──────────────────┼───────────────────┤
│xxxxxxxx-xxxx-xxxx-Cxxx-xxxxxxxxxxxx│後方互換予約                          │
│xxxxxxxx-xxxx-xxxx-Dxxx-xxxxxxxxxxxx│(マイクロソフト(COMのGUID))           │
├──────────────────┼───────────────────┤
│xxxxxxxx-xxxx-xxxx-Exxx-xxxxxxxxxxxx│将来予約                              │
│xxxxxxxx-xxxx-xxxx-Fxxx-xxxxxxxxxxxx│                                      │
└──────────────────┴───────────────────┘
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
【バージョン】
┌──────────────────┬───────────────────┐
│xxxxxxxx-xxxx-1xxx-xxxx-xxxxxxxxxxxx│バージョン1(時刻とMACアドレス)        │
├──────────────────┼───────────────────┤
│xxxxxxxx-xxxx-2xxx-xxxx-xxxxxxxxxxxx│バージョン2(時刻とMACとローカルID)    │
├──────────────────┼───────────────────┤
│xxxxxxxx-xxxx-3xxx-xxxx-xxxxxxxxxxxx│バージョン3(ハッシュ値)               │
├──────────────────┼───────────────────┤
│xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx│バージョン4(乱数値)                   │
├──────────────────┼───────────────────┤
│xxxxxxxx-xxxx-5xxx-xxxx-xxxxxxxxxxxx│バージョン5(ハッシュ値)               │
└──────────────────┴───────────────────┘
分類:設計
ExcelVBA/リボンの最小化と非表示
2018年01月26日
Excel2010までは「リボンの最小化」しかなかったが
(というか「リボンの最小化」の導入はExcel2010からだが)
Excel2013から「リボンの非表示」も導入された。

力関係的には、「リボンの非表示」>「リボンの最小化」なので
リボンが非表示状態で、最小化云々をやろうとするとエラー(*1)となってしまう。
*1:「'ExecuteMso'メソッドは失敗しました:'_CommandBars'オブジェクト」

たとえば、以下は最小化されていない場合に、最小化するマクロだが…
┌──────────────────────────────────────┐
│If Application.CommandBars.GetPressedMso("MinimizeRibbon") = False Then     │
│    Application.CommandBars.ExecuteMso "MinimizeRibbon"                     │
│End If                                                                      │
└──────────────────────────────────────┘
非表示状態の場合には、エラーとなってしまう。

なので、非表示状態じゃない時という条件が必要になる。
しかも、Excel2010では非表示自体ないので、その条件文にも注意が必要。

例えばこんな感じになる(事前に非表示を解消してしまう方法)。
┌──────────────────────────────────────┐
│If CInt(Application.Version) >= 15 Then     ' Excel2013(バージョン15.0)以降 │
│    If Application.CommandBars.GetPressedMso("HideRibbon") = True Then      │
│        Application.CommandBars.ExecuteMso "HideRibbon"                     │
│    End If                                                                  │
│End If                                                                      │
│If Application.CommandBars.GetPressedMso("MinimizeRibbon") = False Then     │
│    Application.CommandBars.ExecuteMso "MinimizeRibbon"                     │
│End If                                                                      │
└──────────────────────────────────────┘
なお、"HideRibbon"も"MinimizeRibbon"もトグル命令なので、状態が反転する。
False下で実行するとTrueとなり非表示化・最小化し、
True下で実行するとFalseとなりそれが解除される。
分類:ExcelVBA
ExcelVBA/ボタンの設定
2018年01月25日
ボタンを設定するには以下の方法がある。
┌──────────┬───────────────────────────┐
│フォームコントロール│マクロを登録する                                      │
├──────────┼───────────────────────────┤
│ActiveXコントロール │イベントとして登録する                                │
├──────────┼───────────────────────────┤
│オートシェイブ      │マクロを登録する                                      │
└──────────┴───────────────────────────┘
分類:ExcelVBA
ExcelVBA/セルの範囲
2018年01月21日
┌───────────┬──────────────────────────┐
│起点セル.CurrentRegion│空白で囲まれた範囲(矩形)を選択                      │
├───────────┼──────────────────────────┤
│シート.UsedRange      │(空白関係なく)すべての使用済み範囲(矩形)を選択      │
└───────────┴──────────────────────────┘
分類:ExcelVBA
ExcelVBA/.Formulaのイコール
2018年01月16日
┌─┬────────────────────────────────────┐
│A│With Selection                                                          │
│  │    .Formula = .Formula                                                 │
│  │End With                                                                │
├─┼────────────────────────────────────┤
│B│With Selection                                                          │
│  │    .Formula = "=" & .Formula                                           │
│  │End With                                                                │
└─┴────────────────────────────────────┘
上記の違い。

元々の値が数式だった場合には、影響はなし。
Aで「=」が足りないとか、Bで「=」が過剰とか、怒られたりはしない。

違いは、元の値が数式っぽい文字列だった場合。
例えば「A1」という文字だったら、Aはそのままだが、Bは数式「=A1」となる。
分類:ExcelVBA
ExcelVBA/選択とオブジェクト
2018年01月15日
選択中のものは、セルだけとは限らない。オブジェクトの場合もある。
オブジェクトも一つの種類のオブジェクトとは限らない。
但し、セルとオブジェクトを同時に選択することはない。
何を選択しているかは、「TypeName(Selection)」で確認すればよい。
なお、複数のオブジェクトを選択している場合には
その種類に差異があるかは不問で「DrawingObjects」となる。
┌──────┬───────┬──────────────┐
│セル        │Range         │                            │
├──────┼───────┼─────┬────────┤
│オブジェクト│DrawingObjects│TextBox   │テキストボックス│
│            │              ├─────┼────────┤
│            │              │Line      │直線            │
│            │              ├─────┼────────┤
│            │              │Rectangle │四角形          │
│            │              ├─────┼────────┤
│            │              │Oval      │円(楕円)        │
│            │              ├─────┼────────┤
│            │              │Picture   │画像            │
└──────┴───────┴─────┴────────┘

ということで、テキストボックスの数式を置換するマクロはこんな感じになる。
┌──────────────────────────────────────┐
│Public Sub テキストボックスの数式参照相対化()                               │
│    Dim theObject As Object                                                 │
│    Select Case TypeName(Selection)                                         │
│        Case "DrawingObjects"                                               │
│            For Each theObject In Selection                                 │
│                If TypeName(theObject) = "TextBox" Then                     │
│                    With theObject                                          │
│                        .Formula = Replace(.Formula, "$", "")               │
│                    End With                                                │
│                End If                                                      │
│            Next theObject                                                  │
│        Case "TextBox"                                                      │
│            With Selection                                                  │
│                .Formula = Replace(.Formula, "$", "")                       │
│            End With                                                        │
│        Case Else                                                           │
│            MsgBox "テキストボックスを選択してください"                     │
│            Exit Sub                                                        │
│    End Select                                                              │
│End Sub                                                                     │
└──────────────────────────────────────┘
分類:ExcelVBA
SQL/採番をバッティングさせない方法
2018年01月11日
①列の自動採番機能を使う
  ○確実(漏れがない、直接SQL文で更新しても効く)
  ×単一列でしか利用できない(複合キーには向かない)
②更新前トリガを使う
  ○確実(漏れがない、直接SQL文で更新しても効く)
  ○採番方法は自由(複合キーでもOK)
  △トリガの管理が煩雑(他列が増減した場合にトリガも追従させないといけない)
③排他トランザクションを使う
  ○採番方法は自由(複合キーでもOK)
  △不確実(処理ルートに漏れがあってはならない、直接SQL文で更新したら対応外)
④プログラムで行う
  ○採番方法は自由(複合キーでもOK)
  △不確実(処理ルートに漏れがあってはならない、直接SQL文で更新したら対応外)
  △管理が煩雑(SQLに一元化されない)
分類:SQL
SVN/ファイルの更新日時
2018年01月05日
SVNから更新してひっぱってきたファイルの更新日時は、その時の現在日時となる。

コミットした日時にしたい場合には、以下の設定を行う。

  TortoiseSVNのメニューより、「設定」を選び、以下にチェックを入れる
  ┌────────────────────────────────────┐
  │設定 - 全般                                                             │
  ├────────────────────────────────────┤
  │┌Subversion─────────────────────────────┐│
  ││■ファイルの更新日時を「最終コミット日時」に設定する                ││
  │└──────────────────────────────────┘│
  │                        ┌────┐┌────┐┌────┐┌────┐│
  │                        │   OK   ││        ││        ││        ││
  │                        └────┘└────┘└────┘└────┘│
  └────────────────────────────────────┘
分類:SVN
ExcelVBA/勝手に折り返される
2017年12月29日
【現象】
  「セルの書式設定」で「折り返して全体を表示する」のチェックを外して
  無効にしたのに、なぜか文字列を出力すると、
「折り返して全体を表示する」のチェックが復活して、折り返して表示される。

【原因】
  出力した文字列に改行コード(LF)が含まれているため。
分類:ExcelVBA
ExcelVBA/セル範囲の入力(ユーザフォーム編)
2017年12月28日
ユーザフォームでセル範囲を入力させるには
「RefEdit」というコントロール(オブジェクト)を使う。
これはフォームのツールボックスに既定で存在する。

以下のようなイベント関数ができる。(「RefEdit1」の部分はオブジェクト名に依存)
┌──────────────────────────────────────┐
│Private Sub RefEdit1_BeforeDragOver(Cancel As Boolean,                      │
│                                    ByVal Data As MSForms.DataObject,       │
│                                    ByVal x As stdole.OLE_XPOS_CONTAINER,   │
│                                    ByVal y As stdole.OLE_YPOS_CONTAINER,   │
│                                    ByVal DragState As MSForms.fmDragState, │
│                                    Effect As MSForms.fmDropEffect,         │
│                                    ByVal Shift As Integer)                 │
│End Sub                                                                     │
└──────────────────────────────────────┘

そんでもってボタンオブジェクト(「CommandButton1」の部分はオブジェクト名に依存)で
以下のように参照してあげればよい。
┌──────────────────────────────────────┐
│Private Sub CommandButton1_Click()                                          │
│    Dim 範囲 As Range                                                       │
│    Set 範囲 = Range(RefEdit1.Value)                                        │
│    MsgBox 範囲.Rows.Count  ' 選択した(範囲の)行数はいくつ?                │
│End Sub                                                                     │
└──────────────────────────────────────┘
「RefEdit」オブジェクトの値が範囲(Range)相当となる。
分類:ExcelVBA
前へ 1 … 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 … 156 次へ