MW211 EXIT

devlog
ExcelVBA/ユーザフォームがLoad中か判定
2019年01月24日
「Unload フォーム」もしくは「×」ボタン押下でユーザフォームを閉じた場合と
「フォーム.Hide」で非表示にした場合(隠した場合)とで、それを識別する方法。

ベタにUserForms中に登録されているか検索する他ないようだ。
┌──────────────────────────────────────┐
│Public Function isLoad(ByVal userFormName As String) As Boolean             │
│    Dim theUserForm As UserForm                                             │
│    For Each theUserForm In UserForms                                       │
│        If TypeName(theUserForm) = userFormName Then                        │
│            isLoad = True                                                   │
│            Exit Function                                                   │
│        End If                                                              │
│    Next theUserForm                                                        │
│    isLoad = False                                                          │
│End Function                                                                │
└──────────────────────────────────────┘
分類:ExcelVBA
ExcelVBA/ActiveXコントロールとメッセージボックス
2019年01月21日
ActiveXコントロールの表示内容を変更しても、
メッセージボックスが終了するまで画面に反映されない。。。
┌──────────────────────────────────────┐
│ActiveSheet.TextBox1.Value = Now                                            │
│' ここで一旦描画したい                                                      │
│MsgBox "処理は終わっているはずなのに"                                       │
└──────────────────────────────────────┘
「DoEvents」や「Application.ScreenUpdating = True」を使ってもダメ。

できないってことなのだろうか?(情報がみつからない)
ひとまず注意するしかないだろう
分類:ExcelVBA
CSS/領域いっぱいに画像を表示
2019年01月17日
┌──────────────────────────────────────┐
│div {                                                                       │
│    background-image    :url("画像ファイル");                               │
│    background-size     :contain;                                           │
│    background-repeat   :no-repeat;                                         │
│}                                                                           │
└──────────────────────────────────────┘
但し、縦横比は維持。
分類:CSS
ExcelVBA/配列中の重複を除去
2018年12月27日
連想配列を使う方法がよいらしい。
┌──────────────────────────────────────┐
│Private Function 配列重複除去(ByVal 配列 As Variant) As Variant             │
│    Dim i As Long, 連想配列 As Object                                       │
│    Set 連想配列 = CreateObject("Scripting.Dictionary")                     │
│    For i = 0 To UBound(配列)                                               │
│        If Not 連想配列.Exists(配列(i)) Then                                │
│            連想配列.Add 配列(i), ""                                        │
│        End If                                                              │
│    Next i                                                                  │
│    配列重複除去 = 連想配列.Keys                                            │
│End Function                                                                │
└──────────────────────────────────────┘
分類:ExcelVBA
SQL/孫との関わり
2018年12月23日
孫からのアクセスはエラーとなる。
┌──────────────────────────────────────┐
│SELECT *                                                                    │
│    FROM [親表]                                                             │
│        INNER JOIN [子表]                                                   │
│            INNER JOIN [孫表]                                               │
│              ON  [孫表].[孫ID] = [子表].[孫ID]                             │
│              AND [孫表].[列]   = [親表].[列]    -------------------------NG│
│          ON  [子表].[子ID] = [親表].[親ID]                                 │
└──────────────────────────────────────┘
孫へのアクセスはよい。
┌──────────────────────────────────────┐
│SELECT *                                                                    │
│    FROM [親表]                                                             │
│        INNER JOIN [子表]                                                   │
│            INNER JOIN [孫表]                                               │
│              ON  [孫表].[孫ID] = [子表].[孫ID]                             │
│          ON  [子表].[子ID] = [親表].[親ID]                                 │
│          AND [孫表].[列]   = [親表].[列]        -------------------------OK│
└──────────────────────────────────────┘
分類:SQL
MSSQL/日時型の日付部分
2018年12月22日
日時型の日付部分だけを抽出する方法。
┌──────────────────────────────────────┐
│[日付] = CONVERT(date, [日時])                                              │
└──────────────────────────────────────┘
分類:MSSQL
MSSQL/更新時のROW_NUMBER()
2018年12月21日
┌──────────────────────────────────────┐
│UPDATE [表]                                                                 │
│    SET [列] = ROW_NUMBER() OVER(PARTITION BY [集団]                        │
│                                 ORDER BY [順] ASC);                        │
└──────────────────────────────────────┘
上記のように直接使うと以下エラーとなる。
  ┌────────────────────────────────────┐
  │メッセージ 4108、レベル 15、状態 1、行 3                                │
  │ウィンドウ関数は、SELECT 句または ORDER BY 句だけで使用できます。       │
  └────────────────────────────────────┘
この場合、下記のように間接的に使えばよい。
┌──────────────────────────────────────┐
│UPDATE [表]                                                                 │
│    SET [列] = [入力D].[列]                                                │
│    FROM [表] AS [出力D]                                                   │
│        INNER JOIN (                                                        │
│            SELECT [主キー],                                                │
│                   ROW_NUMBER() OVER(PARTITION BY [集団]                    │
│                                     ORDER BY [順] ASC)  AS [列]            │
│                FROM [表]                                                   │
│        ) AS [入力D]                                                       │
│          ON [入力D].[主キー] = [出力D].[主キー];                         │
└──────────────────────────────────────┘
分類:MSSQL
ExcelVBA/クラス内のエラーを捕捉
2018年12月06日
クラス内でエラーが発生すると、外側(メソッド実行時点)でエラーで止まる。
これでは何がエラーなのかわからない。

しかし、以下の設定を変更すれば、クラス内のエラー箇所で止まるようになる。
┌──────────────────────────────────────┐
│「Microsoft Visual Basic for Applications」のメニューバー「ツール」より     │
│「オプション」を選択                                                        │
│┌────────────────────────────────────┐│
││オプション                                                              ││
│├────────────────────────────────────┤│
││┌─┬─┌──┐─┐                                                    ││
│││  │  │全般│  │                                                    ││
││┌───┘──└───────────────────────────┐││
│││                                                                    │││
│││                                ┌エラートラップ─────────┐│││
│││                                │○エラー発生時に中断            ││││
│││                                │●クラスモジュールで中断        ││││
│││                                │○エラー処理対象外のエラーで中断││││
│└────────────────────────────────────┘│
│ラジオボタン「●クラスモジュールで中断」を選択して「OK」で保存              │
└──────────────────────────────────────┘
分類:ExcelVBA
ExcelVBA/キーブレイク
2018年12月05日
┌──────────────────────────────────────┐
│With 入力シート                                                             │
│    y入Max = .UsedRange.Rows(.UsedRange.Rows.Count).Row                     │
│    x出 = 1                                                                 │
│    ' 一件目                                                                │
│    y入 = 1                                                                 │
│    Do While y入 <= y入Max _                                                │
│         And .Cells(y入, Xキー).Value = ""                                  │
│        y入 = y入 + 1                                                       │
│    Loop                                                                    │
│    Do While y入 <= y入Max                                                  │
│        出力シート.Cells(y出, X見出).Value = .Cells(y入, X集合キー).Value   │
│        合計 = 0                                                            │
│        oldキー = .Cells(y入, X集合キー).Value                              │
│        Do                                                                  │
│            合計 = 合計 + .Cells(y入, X値).Value                            │
│            ' 次へ                                                          │
│            y入 = y入 + 1                                                   │
│            Do While y入 <= y入Max _                                        │
│                 And .Cells(y入, Xキー).Value = ""                          │
│                y入 = y入 + 1                                               │
│            Loop                                                            │
│        Loop While y入 <= y入Max _                                          │
│               And .Cells(y入, X集合キー).Value = oldキー                   │
│        出力シート.Cells(y出, X合計).Value = 合計                           │
│        x出 = x出 + 1                                                       │
│    Loop                                                                    │
│End With                                                                    │
└──────────────────────────────────────┘
分類:ExcelVBA
ExcelVBA/画面分割の右下の左上を選択
2018年11月28日
┌─┬──┐
│  │    │
├─┼──┤
│  │★  │
│  │    │
└─┴──┘
上記における★を選択する方法。
┌──────────────────────────────────────┐
│シート.Select                                                               │
│シート.Cells(                                                               │
│    IIf(ActiveWindow.Split, ActiveWindow.SplitRow + 1, 1), _                │
│    IIf(ActiveWindow.Split, ActiveWindow.SplitColumn + 1, 1)                │
│).Select                                                                    │
└──────────────────────────────────────┘
分類:ExcelVBA
前へ 1 … 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 … 156 次へ