モジュール

※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

Goto

 Dim strData As String
   strData = "Access VBA"
   GoTo Skip
   MsgBox strData  '---実行されない。        
 Skip:
   MsgBox "処理がスキップされました。" 
------------------------------------------------------------------------
StartDelete:
For
  If
    ソース
     GoTo StartDelete
  End If
next

本体左上にあるコントロールメニュー無効2007

   Option Compare Database
   Option Explicit
                  
   Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, _
   ByVal bRevert As Long) As Long
   
   Private Declare Function EnableMenuItem Lib "user32" (ByVal hMenu As _
   Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long
   
   Const MF_GRAYED = &H1&
   Const MF_BYCOMMAND = &H0&
   Const SC_CLOSE = &HF060&
   Public Function SetEnabledState(blnState As Boolean)
   Call CloseButtonState(blnState)
   End Function
   'Disable the Close Button Option
   Sub CloseButtonState(boolClose As Boolean)
   Dim hWnd As Long
   Dim wFlags As Long
   Dim hMenu As Long
   Dim result As Long
   
   hWnd = Application.hWndAccessApp
   hMenu = GetSystemMenu(hWnd, 0)
   If Not boolClose Then
   wFlags = MF_BYCOMMAND Or MF_GRAYED
   Else
   wFlags = MF_BYCOMMAND And Not MF_GRAYED
   End If
   
   result = EnableMenuItem(hMenu, SC_CLOSE, wFlags)
   End Sub
   
   ----------------------------------------------------------------------------------
   Private Sub Form_Open(Cancel As Integer)
       Call SetEnabledState(False)
   End Sub

本体左上にあるコントロールメニュー無効

//Call InvalidSysMenu
//Call InvalidAccessResize でフォームから呼び出す

   Public Declare Function GetSystemMenu Lib "user32" _
           (ByVal hWnd As Long, ByVal bRevert As Long) As Long
   Public Declare Function DeleteMenu Lib "user32" _
           (ByVal hMenu As Long, ByVal nPosition As Long, _
             ByVal wFlags As Long) As Long
   Public Declare Function DrawMenuBar Lib "user32" _
           (ByVal hWnd As Long) As Long
   
   Private Const MF_BYCOMMAND = &H0&       'メニュー項目の識別子
   Private Const MF_BYPOSITION = &H400&    'メニュー項目の番号
   Private Const SC_SIZE = &HF000          '[サイズ変更]コントロールメニュー
   Private Const SC_MOVE = &HF010          '[移動]コントロールメニュー
   Private Const SC_MINIMIZE = &HF020      '[最小化]コントロールメニュー
   Private Const SC_MAXIMIZE = &HF030      '[最大化]コントロールメニュー
   Private Const SC_CLOSE = &HF060         '[閉じる]コントロールメニュー
   Private Const SC_RESTORE = &HF120       '[元に戻す]コントロールメニュー
   
   
   Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
           (ByVal hWnd As Long, ByVal nIndex As Long) As Long
   Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
           (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
   
   'Private Const WS_MINIMIZEBOX = &H20000  '最小化ボタン
   'Private Const WS_MAXIMIZEBOX = &H10000  '最大化ボタン
   Private Const GWL_STYLE = -16
   
   Public Sub InvalidSysMenu()
   
     Dim lngMenuWnd As Long
   
     'コントロールメニューのハンドルを取得
     lngMenuWnd = GetSystemMenu(Application.hWndAccessApp, False)
   
     '[閉じる]メニューを削除
     DeleteMenu lngMenuWnd, SC_CLOSE, MF_BYCOMMAND
     '[閉じる]メニューの上の横線を削除
     DeleteMenu lngMenuWnd, 5&, MF_BYPOSITION
     '[元のサイズに戻す]メニューを削除
   '  DeleteMenu lngMenuWnd, SC_RESTORE, MF_BYCOMMAND
     '[移動]メニューを削除
   '  DeleteMenu lngMenuWnd, SC_MOVE, MF_BYCOMMAND
     '[サイズ変更]メニューを削除
     DeleteMenu lngMenuWnd, SC_SIZE, MF_BYCOMMAND
     '[最小化]メニューを削除
   '  DeleteMenu lngMenuWnd, SC_MINIMIZE, MF_BYCOMMAND
   '  '[最大化]メニューを削除
   '  DeleteMenu lngMenuWnd, SC_MAXIMIZE, MF_BYCOMMAND
     
     '変更を反映させるためメニューを再描画
     DrawMenuBar Application.hWndAccessApp
   
   End Sub
   
   Public Sub InvalidAccessResize()
   
     Dim lngSetValue As Long
   
     '現在の設定値を取得
     lngSetValue = GetWindowLong(Application.hWndAccessApp, GWL_STYLE)
   
     '最小化ボタンを外す
   '  lngSetValue = lngSetValue And Not WS_MINIMIZEBOX
     '最大化ボタンを外す
   '  lngSetValue = lngSetValue And Not WS_MAXIMIZEBOX
   
     '新しい設定値を設定
     SetWindowLong Application.hWndAccessApp, GWL_STYLE, lngSetValue
   
   End Sub

ユーザー名取得

 Private Declare Function WNetGetUser Lib "mpr" Alias "WNetGetUserA" 
 (ByVal lpName As String, ByVal lpUserName As String, lpnLength As Long) As Long
 
 Function NetUserName() As String
 
 Dim strUserName As String * 255
 'WindowsAPIをコールして、ネットワークユーザー名を取得します。
 If WNetGetUser("", strUserName, 255) = 0 Then
 'APIの返り値が正常なら、後続のNullを取り除きます。
 '(これはAPIの関数から値を取得する場合にしばしば使用する定型的な処理です)
   NetUserName = Left$(strUserName, InStr(strUserName, Chr$(&H0)) - 1)
 Else
   NetUserName = ""
 End If
   
 End Function
最終更新:2011年09月02日 11:14
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。