MW211 EXIT

devlog
パワーポイント/最初からスライドショー
2018年08月22日
パワポファイルを開いた直後からスライドショー表示にして
その舞台裏を見せなくする方法。

やり方は簡単で「.pps」系拡張子で保存すればよい

「.pps」系拡張子は以下の通り。
┌───┬─────────┬────────────────────────┐
│.pps  │旧方式            │Excelにおける「.xls」にあたるもの               │
├───┼─────────┼────────────────────────┤
│.ppsx │新方式でマクロなし│Excelにおける「.xlsx」にあたるもの              │
├───┼─────────┼────────────────────────┤
│.ppsm │新方式でマクロあり│Excelにおける「.xlsm」にあたるもの              │
└───┴─────────┴────────────────────────┘

なお、この拡張子にしてしまうと舞台裏が見えなくできる代わりに
舞台裏が見れなくなる(要は編集できなくなる)。

編集したい場合には、空のパワポを起動し、そちらからファイルを開く形にすればよい。
分類:PowerPoint
ExcelVBA/テキストボックスの入力
2018年08月18日
【ActiveXコントロールのテキストボックスを入力不可にする方法】

  ■「.Enabled = Flase」にする
    →但し、文字色が淡くなる(濃くはできない)

  ■Textbox_Change()イベントで入力直後に元の値に戻す
    →但し、元の値がわかってなければならない
      (TextBox_GotFocus()イベントで取得しておくとか)
      また、イベントを再度起動してしまい無限ループに陥らないよう注意が必要

  □当該テキストボックスの保護ロックの状態にして(*1)
    シートを保護する(*2)
    但し、これは入力を不可とするものではなく
    デザインモード時にテキストボックスの位置やサイズを変更できなくするものの模様
    →つまり入力不可としては使えない

    *1:デザインモードで、右クリックメニュー「コントロールの書式設定」より
        「保護」タブの「■ロック」にチェックを入れる
    *2:シートの右クリックメニューから「シートの保護」を選ぶか
        リボンメニュー「ホーム」タブの「書式」から「シートの保護」を選ぶ

  □「.Locked = True」にする
    →これは前述の「■ロック」にチェックを入れたのと同等なので
      入力不可としては使えない

    なお、フォーム上のテキストボックスの場合は入力不可として使える模様
分類:ExcelVBA
ExcelVBA/ActiveXコントロール無限ループ
2018年08月17日
以下だと無限ループしてしまう。
┌──────────────────────────────────────┐
│Private Sub TextBox_Change()                                                │
│    Me.TextBox.Value = Rnd()                                                │
│End Sub                                                                     │
└──────────────────────────────────────┘

以下は、Excelシート向けのイベント抑止なので効かない。
┌──────────────────────────────────────┐
│Private Sub TextBox_Change()                                                │
│    Application.EnableEvents = False                                        │
│    Me.TextBox.Value = Rnd()                                                │
│    Application.EnableEvents = True                                         │
│End Sub                                                                     │
└──────────────────────────────────────┘

回避方法としては地道にフラグ制御しかないようだ。
┌──────────────────────────────────────┐
│Private mIs無限ループ回避 As Boolean  ' 初期値はFalseになる                 │
│Private Sub TextBox_Change()                                                │
│    If mIs無限ループ回避 Then                                               │
│        mIs無限ループ回避 = False     ' 次回に向けて再初期化                │
│    Else                                                                    │
│        mIs無限ループ回避 = True      ' 代入処理より前に置くこと            │
│        Me.TextBox.Value = Rnd()                                            │
│    End If                                                                  │
│End Sub                                                                     │
└──────────────────────────────────────┘
なお、「mIs無限ループ回避 = True」の位置は、
「Me.TextBox.Value = Rnd()」の前になければ効かないので注意。
分類:ExcelVBA
ライセンス/MAKとKMSの違い
2018年08月16日
マイクロソフトのライセンス、MAKとKMSの違いについて。

【MAK(マルチプルアクティベーションキー)】
  インターネットを経由して各PCが直接マイクロソフトに認証を行う方式。
  認証回数に上限がある。

【KMS(キーマネジメントサービスキー)】
  認証用PC(KMSホスト)にライセンスを設定(KMSをインストール)し
  ネットワーク上の他のPCはそれを介して認証を行う方式。
  有効期限がある。

かつてはMAKが標準だったが(それしかなかったが)、WindowsVista以降、
KMSが標準となっているので、MAKとする場合には手続きが必要。
分類:Windows
ExcelVBA/テキストボックスの数式は255文字制限
2018年08月15日
テキストボックスの数式欄にセル参照を指定すると
そのセルの内容をテキストボックス内に表示できるが
最大255文字までという制限がある。(末尾が途切れてしまう)

代案は以下の通り

○「ActiveXコントロールのテキストボックス」のLinkedCellにセル参照を設定
  △稀に印刷時にExcel例外が発生する場合がある
    →但し、LinkedCellに一旦別のセル参照を設定してみると回避できた

×「テキストボックス」の数式欄にセル参照を設定
  ×255文字までしか表示できない

×「画像」の数式欄にセル参照を設定
  ×元セルの表示領域しか表示できない
    画像扱いなので領域を拡大すると文字サイズが大きくなる

×「フォームコントロールのラベル」の数式欄にセル参照を設定
  ×255文字しか表示できない
  ×フォントの指定ができない
  ×罫線の指定ができない

×「ActiveXコントロールのラベル」
  ×セル参照を設定できない
分類:ExcelVBA
Excel/ActiveXコントロールのテキストボックス
2018年08月14日
ActiveXコントロールのテキストボックスを
一般的なテキストボックスのようににする設定。

いかにも入力欄のような凹凸をなくし(SpecialEffect)、
逆に枠線を引く(BorderStyle)。
┌───────┬────────────┬────────────┐
│              │         既定値         │         設定値         │
├───────┼────────────┼────────────┤
│SpecialEffect │2-fmSpecialEffectSunken │0-fmSpecialEffectFlat   │
├───────┼────────────┼────────────┤
│BorderStyle   │0-fmBorderStyleNone     │1-fmBorderStyleSingle   │
├───────┼────────────┼────────────┤
│MultiLine     │False                   │True                    │
└───────┴────────────┴────────────┘

入力不可にもできるが(Enabled)、文字色が灰色がかるのが難点。
┌───────┬────────────┬────────────┐
│              │         既定値         │         設定値         │
├───────┼────────────┼────────────┤
│Enabled       │True                    │False                   │
└───────┴────────────┴────────────┘
分類:ExcelVBA
jQuery/遅延(delay)(3)非アニメーション系メソッド
2018年08月13日
┌──────────────────────────────────────┐
│setTimeout(function() {$('div').text('1秒後に表示');}, 1000);               │
└──────────────────────────────────────┘
とはいえ、アニメーション系メソッド以外でも遅延処理をしたいという場合がある。
例えば、上記のようにsetTimeout()を使えばよいのだが、
.delay()でやってみたい。そんな時の方法。

まず、アニメーション系メソッドは、キュー(queue)というものに登録されて
順番に実行するものである点を理解しなければならない。

つまり、アニメーション系メソッドは、実行した瞬間に実行されるのではなく
実行した瞬間は、キュー(queue)に登録されるだけで
キュー(queue)の方で先入先出で順番に実行していくのだ。
よって、.delay()が効くという寸法になっているのだ。

ってことで、自動で行われるキュー(queue)の登録を手動に行えばよい。
┌──────────────────────────────────────┐
│$('div').delay(1000).queue(function() {                                     │
│    $(this).text('1秒後に表示').dequeue();                                  │
│});                                                                         │
└──────────────────────────────────────┘
つまり、上記のような感じ。
.dequeue()を用いて、キュー(queue)からの削除も手動で行う必要がある点に注意。

これを応用すれば以下のおうに要素を追加することもできる。
┌──────────────────────────────────────┐
│$('div').delay(1000).queue(function() {                                     │
│    $(this).append(                                                         │
│        $('<span>').text('1秒後に表示')                                     │
│    ).dequeue();                                                            │
│});                                                                         │
└──────────────────────────────────────┘

ちなみに、キュー(queue)をクリアする方法は以下の通り。
┌──────────────────────────────────────┐
│$('div').clearQueue();                                                      │
├──────────────────────────────────────┤
│$('div').queue([]);                                                         │
└──────────────────────────────────────┘

また、キューの数を確認するには以下の通り。
┌──────────────────────────────────────┐
│$('div').queue().length                                                     │
└──────────────────────────────────────┘
分類:jQuery
jQuery/遅延(delay)(2)アニメーション系メソッド
2018年08月12日
.delay()が効くのはアニメーション系メソッドのみである。
アニメーション系メソッドは以下の通り。
┌───────┬──────────────────────────────┐
│.animate()    │アニメーション                                              │
├───────┼──────────────────────────────┤
│.show()       │表示                                                        │
│.hide()       │非表示                                                      │
│.toggle()     │表示/非表示                                                 │
│              │→「.hide(0).delay(1000).show(0)」(引数0が必要)             │
├───────┼──────────────────────────────┤
│.fadeIn()     │徐々に表示                                                  │
│.fadeOut()    │徐々に非表示                                                │
│.fadeTo()     │透明度変更                                                  │
│              │→「.fadeOut().delay(3000).fadeIn()」                       │
├───────┼──────────────────────────────┤
│.slideDown()  │スライド表示                                                │
│.slideUp()    │スライド非表示                                              │
│.slideToggle()│スライド表示/非表示                                         │
└───────┴──────────────────────────────┘
分類:jQuery
jQuery/遅延(delay)(1)基本認識
2018年08月11日
sleep関数的な使い方をするものではない。
┌──────────────────────────────────────┐
│$('div').text('初期表示');                                                  │
│$('div').delay(1000);  // sleep1秒                                          │
│$('div').text('1秒後に上書');                                               │
├──────────────────────────────────────┤
│$('div').text('初期表示')                                                   │
│        .delay(1000)                                                        │
│        .text('1秒後に上書');                                               │
└──────────────────────────────────────┘
上記は効かない。すぐに上書されてしまう。
分類:jQuery
ExcelVBA/ADODBデータベースに時間がかかる場合
2018年08月10日
以下のパラメータ値(プロパティ値)を変更(大きく)すればよい。(以下は既定値)
┌──────────────────────────────────────┐
│Dim データベース As New ADODB.Connection                                    │
│With データベース                                                           │
│    .ConnectionTimeout = 15                                                 │
│    .CommandTimeout = 30                                                    │
│End  With                                                                   │
└──────────────────────────────────────┘
┌─────────┬────────────────────────────┐
│.ConnectionTimeout│接続まで時間がかかる場合                                │
│                  │ネットワークの調子が悪い場合向け                        │
├─────────┼────────────────────────────┤
│.CommandTimeout   │SQL応答に時間がかかる場合                               │
│                  │重い(複雑な)SQL文を待つ場合向け                         │
└─────────┴────────────────────────────┘
分析系など特別なプログラムの場合には後者の値を大きくする感じか。
分類:ExcelVBA
前へ 1 … 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 … 156 次へ