カテゴリー
SugiBlog ホームページ制作・システム開発|大阪

ナビゲーションウィンドウを非表示にする

ACCESSにて、コードでリンクテーブルを設定した時など、非表示にしていたナビゲーションウィンドウが表示されてしまうことがあります。
以下のコードを実行するとナビゲーションウィンドウを再び非表示にすることができます。

DoCmd.NavigateTo "acNavigationCategoryObjectType", ""
DoCmd.RunCommand acCmdWindowHide

また、逆に表示したいときは以下のようにします。

DoCmd.NavigateTo "acNavigationCategoryObjectType", ""
DoCmd.RunCommand acCmdWindowShow

この記事がお役に立ちましたらシェアお願いします

191 views

他のシートの値を参照するときに便利なINDIRECT関数

通常は他のシートの値を参照し表示しようとするとき、
以下のように式を書くと思います。

=Sheet1!A1

特に数が少ない場合はこれで問題ないと思いますが、
数が増え、参照するシートも可変の場合にはいちいちシート名を
打ち変えて修正していくには手間がかかり過ぎます。

そんな時に利用したいのがINDIRECT関数です。
INDIRECT関数は参照したいシートの名前をセルの値を元に判別してくれるのです。

Sheet2のA1に「Sheet1」と入力されていたとします。
そしてA2に以下の式を入力します。

=INDIRECT(A1&"!A1")

するとSheet1のA1に入力されている値が表示されます。

こうすることで、いちいち式を変更しなくても
セルの値を変えれば参照するシートを変更することができます。

この記事がお役に立ちましたらシェアお願いします

183 views

3ヶ月前の末日を取得する

日付関数を使って3ヶ月前の末日を取得するTipsです。

$year  = date("Y"); //2018
$month = date("n"); //3
$day   = 0;         //末日を取得するので「0」とする

$time = mktime(0, 0, 0, $month - 2, $day, $year);

echo date("Y-m-d", $time);

出力結果は「2017-12-31」となります。

Visual Basicでやってみる

VBでも同様のことができます。

DateSerial(Year(Date), Month(Date) - 2, 0)

この記事がお役に立ちましたらシェアお願いします

498 views

文字列の長さを求める Len/LenB

VBAで文字列の長さを求める際は少し注意が必要です。
通常のLen関数を使用した場合、半角・全角に関わらず全ての文字を一文字として計算します。
かといって、LenB関数を使用しても、全ての文字を2バイトとして計算するため、答えは倍になるだけです。

他のプログラム、例えばPHPならstrlen関数になりますが、こちらでは半角は1バイト、全角なら2バイトとなります。
こちらと同じようにVBAでも計算したい場合はどうすれば良いのでしょうか?
答えは以下のようになります。

'長さを求めたい文字列
HenkanStr = "LenB関数"
MsgBox LenB(StrConv(HenkanStr, vbFromUnicode))

出力結果は「8」となります。

この記事がお役に立ちましたらシェアお願いします

1,479 views

データ競合のエラーを無視する

ACCESSで発生したデータ競合のエラーを無視するにはエラーイベントに
以下のような記述をします。

Private Sub Form_Error(DataErr As Integer, Response As Integer)

    If DataErr = 7787 Then
         Response = acDataErrContinue
    End If

End Sub

「7787」はデータ競合エラーのエラー番号

定数「acDataErrContinue」の値は「0」です。

これで競合エラーを無視した場合は、[他のユーザーによる変更を反映]を
選択したのと同じ扱いになります。

この記事がお役に立ちましたらシェアお願いします

1,383 views