EXCEL VBA 入門
> 自分専用のVBA資料
infoseek MSN livedoor goo Excite MSNオークション 楽天オークション WANTED
|
------------------------------------------------------------------------------------------------------------- ・カーソルを「砂時計」に変換 ------------------------------------------------------------------------------------------------------------- Application.Cursor=xlWait '砂時計ON Application.Cursor=xlDefault '砂時計OFF ------------------------------------------------------------------------------------------------------------- ・ステータスバーへメッセージを表示 ------------------------------------------------------------------------------------------------------------- cntRec = cntRec + 1 Application.StatusBar = "処理実行中....(現在 " & cntRec & "件)" ------------------------------------------------------------------------------------------------------------- ・現ワークブックの絶対パスを参照 ------------------------------------------------------------------------------------------------------------- w=ThisWorkBook.Path ------------------------------------------------------------------------------------------------------------- ・ウエイト動作 ------------------------------------------------------------------------------------------------------------- Thread.Sleep(500) '500=0.5秒 ------------------------------------------------------------------------------------------------------------- ・特定シートのセルのデータを変数へ ------------------------------------------------------------------------------------------------------------- (1) w=Sheets("入力").Range("L8") (2) w=Worksheets("商品マスタ").Cells(1,9) ------------------------------------------------------------------------------------------------------------- ・特定シートの全クリアー ------------------------------------------------------------------------------------------------------------- Worksheets("商品マスタ").ClearContents ------------------------------------------------------------------------------------------------------------- ・特定シートへ切り替える ------------------------------------------------------------------------------------------------------------- Sheets("納品書").Select ------------------------------------------------------------------------------------------------------------- ・特定シートの任意セルにカーソルを移動する ------------------------------------------------------------------------------------------------------------- Sheets("納品書").Range("A2").Select cells(5,3).select ------------------------------------------------------------------------------------------------------------- ・現セルの行・桁位置を変数へ ------------------------------------------------------------------------------------------------------------- dim wgyo as string '行 dim wkta as string '桁 wgyo=ActiveCell.Row:wkta=ActiveCell.Column ------------------------------------------------------------------------------------------------------------- ・現在位置セルのデータ ------------------------------------------------------------------------------------------------------------- w=ActiveCell.Value ' 現セル→変数へ ActiveCell.Value=w ' 変数 →現セルへ ------------------------------------------------------------------------------------------------------------- ・全セルを選択 ------------------------------------------------------------------------------------------------------------- ActiveSheet.Cells.Select ------------------------------------------------------------------------------------------------------------- ・値・数式クリア ------------------------------------------------------------------------------------------------------------- Selection.ClearContents ------------------------------------------------------------------------------------------------------------- ・書式クリア ------------------------------------------------------------------------------------------------------------- Selection.ClearFormats ------------------------------------------------------------------------------------------------------------- ・コメントクリア ------------------------------------------------------------------------------------------------------------- Selection.ClearComments ------------------------------------------------------------------------------------------------------------- ・値・数式、書式、コメントを一緒にクリア ------------------------------------------------------------------------------------------------------------- Selection.Clear ------------------------------------------------------------------------------------------------------------- ・シート全クリアー ------------------------------------------------------------------------------------------------------------- Worksheets("シート名").Cells.ClearContents ------------------------------------------------------------------------------------------------------------- ・範囲指定でのセルをクリアー ------------------------------------------------------------------------------------------------------------- (1) Sheets("商品").Range(Cells(i,1),Cells(i,13)).Value="" (2) Sheets("成績表").Range("D6:AB125")="" シートから実行可 (3) Sheets("成績表").Range("B4:B10").Select Selection.ClearContents ※いつも苦労するので完全版のソース例 wk=ActiveSheet.Name '現シート名を保存 Application.ScreenUpdating=False '画面更新の停止(画面のチラツキをなくす) Worksheets("****").Activate '指定シートに切換える worksheets("****").Range("Nn:Nn").Select Selection.ClearContents Worksheets(wk).Activate '元のシートに戻す Application.ScreenUpdating=True '画面更新の再開 (spbox にfunction化する) function cell_clear(sell_name as string,w_range as string) 'w_range="Nn:Nn" ------------------------------------------------------------------------------------------------------------- ・リストボックス等を開く(閉じる) ------------------------------------------------------------------------------------------------------------- UserForm1.Show (UserForm1.Hide) ------------------------------------------------------------------------------------------------------------- ・コマンドボタン表示を複数行にする ------------------------------------------------------------------------------------------------------------- CommandButton1.Caption="コマンド"&Chr$(13)&"の検索" ------------------------------------------------------------------------------------------------------------- ・セルの文字サイズを変える ------------------------------------------------------------------------------------------------------------- Range("A1").Font.Size=14 ------------------------------------------------------------------------------------------------------------- ・メッセージボックスの表示 ------------------------------------------------------------------------------------------------------------- (1) Okボタンのみ w1=MsgBox("完了しました",vbInformation,"確認ボックス") (2) Yes or No If MsgBox("処理して良いですか?",vbQuestion+vbYesNo+vbDefaultButton2,"確認ボックス")<>vbYes Then Exit Sub ------------------------------------------------------------------------------------------------------------- ・ワークシート保護設定 ------------------------------------------------------------------------------------------------------------- ActiveSheet.Protect '(保護設定) ActiveSheet.Unprotect '(保護解除) ------------------------------------------------------------------------------------------------------------- ・ワークシート保護設定:パスワード付き ------------------------------------------------------------------------------------------------------------- ActiveSheet.Protect Password:="1234" '(保護設定) ActiveSheet.Unprotect Password:="1234" '(保護解除) ------------------------------------------------------------------------------------------------------------- ・カーソルの相対移動 ------------------------------------------------------------------------------------------------------------- ActiveCell.Offset( 2, 3).Activate '現セルから下へ2行&右へ3列移動 ActiveCell.Offset(-1, 2).Activate '現セルから上へ1行&右へ2列移動 ActiveCell.Offset( 5,-3).Activate '現セルから下へ5行&左へ3列移動 ActiveCell.Offset(-4,-2).Activate '現セルから上へ2行&左へ3列移動 ActiveCell.Offset(5).Activate '現セルから下へ5行移動 ActiveCell.Offset(,-2).Activate '現セルから左へ2列移動 ------------------------------------------------------------------------------------------------------------- ・カーソルの絶対移動 ------------------------------------------------------------------------------------------------------------- Range("B4").Select ------------------------------------------------------------------------------------------------------------- ・カーソルの移動方向の設定 ------------------------------------------------------------------------------------------------------------- Application.MoveAfterReturnDirection=xlToRight '左から右へ移動 Application.MoveAfterReturnDirection=xlToLeft '右から左へ移動 Application.MoveAfterReturnDirection=xlDown '上から下へ移動 Application.MoveAfterReturnDirection=xlUp '下から上へ移動 ------------------------------------------------------------------------------------------------------------- ・イベント割込みの許可と不許可 ------------------------------------------------------------------------------------------------------------- Application.EnableEvents=False '割込NG ****↓↓**** Application.EnableEvents=True '割込OK ****↑↑**** ------------------------------------------------------------------------------------------------------------- ・画面更新の停止と再開 ------------------------------------------------------------------------------------------------------------- Application.ScreenUpdating=False '画面更新の停止(画面のチラツキをなくす) Application.ScreenUpdating=True '画面更新の再開 ------------------------------------------------------------------------------------------------------------- ・外部プログラムを起動 ------------------------------------------------------------------------------------------------------------- wk=Shell("test.exe",n) (n=1:通常Window 2:アイコン化 3:最大化 4:フォーカス無し 5:フォーカス無しでアイコン化) ------------------------------------------------------------------------------------------------------------- ・外部プログラムを起動 ------------------------------------------------------------------------------------------------------------- Shell (パス名,[Windowスタイル]) [] は省略可 スタイル 1/5/9:フォーカスをもった通常のWindow 2 :フォーカスをもちアイコン化されているWindow 3 :フォーカスをもち最大表示されているWindow 4/8 :フォーカスを持たない通常のWindow 6/7 :フォーカスを持たないアイコン化されたWindow ------------------------------------------------------------------------------------------------------------- ・ファイルの削除 ------------------------------------------------------------------------------------------------------------- Kill "\temp3.bmp" ------------------------------------------------------------------------------------------------------------- ・自身のファイル名を取得 ------------------------------------------------------------------------------------------------------------- Application.Volatile ファイル名=Application.ThisWorkbook.Name ------------------------------------------------------------------------------------------------------------- ・スクリプトのキーボード割当て (public sub) ------------------------------------------------------------------------------------------------------------- Application.OnKey "{(key)}","xxx_pro" ← sub名 (key) ↑{UP} →{RIGHT} ↓{DOWN} ←{LEFT} BackSpace {BACKSPACE} or {BS} CapsLock {CAPSLOCK} Clear {CLEAR} ^Break {BREAK} Delete {DELETE} or {DEL} End {END} Enter {RETURN} Enter(テンキー) {ENTER} Esc {ESCAPE} or {ESC} F1-F15 {F1} - {F15} Help {HELP} Home {HOME} Ins {INSERT} NumLock {NUMLOCK} PageDown {PGDN} PageUp {PGUP} Return {RETURN} ScrollLock {SCROLLLOCK} Tab {TAB} (shift他) Shift + Ctrl ^ Alt % (使用例) ・次の使用例は、InsertProc を Ctrl + + キーに、SpecialPrintProc を Shift + Ctrl + →キーに登録します。 Application.OnKey "^{+}", "InsertProc" Application.OnKey "+^{RIGHT}", "SpecialPrintProc" ・次の使用例は、Shift + Ctrl + →キーを通常の機能に戻します。 Application.OnKey "+^{RIGHT}" ・次の使用例は、Shift + Ctrl + →キーを無効にします。 Application.OnKey "+^{RIGHT}", "" ------------------------------------------------------------------------------------------------------------- ・現在の範囲指定に同じ文字を入れる ------------------------------------------------------------------------------------------------------------- Range(Selection.Address)="1" ------------------------------------------------------------------------------------------------------------- ・<***1秒後に消え去るメッセージボックス***最小が1秒> CreateObject("Wscript.Shell").popup "メッセージ",1,"タイトル" ------------------------------------------------------------------------------------------------------------- ・<***xx秒後に消え去るメッセージボックス***最小が1/1000秒> ------------------------------------------------------------------------------------------------------------- Private Declare Function MessageBoxTimeoutA Lib "user32" ( _ ByVal hWnd As Long, ByVal lpText As String _ , ByVal lpCaption As String, ByVal uType As Long _ , ByVal wLanguageId As Long, ByVal dwMilliseconds As Long _ ) As Long Sub mbox() MessageBoxTimeoutA 0&,"5秒後に閉じます。","タイトル",vbMsgBoxSetForeground,0,500 End Sub ------------------------------------------------------------------------------------------------------------- ・ストリング変換(strconv) ------------------------------------------------------------------------------------------------------------- w=strconv(w,スイッチ) スイッチは以下の数値の合計数で表現する vbUpperCase 1 文字列を大文字に変換 vbLowerCase 2 文字列を小文字に変換 vbProperCase 3 文字列の各単語の先頭の文字を大文字に変換します。 vbWide 4 文字列内の半角文字を全角文字に変換 vbNarrow 8 文字列内の全角文字を半角文字に変換 vbKatakana 16 文字列内のひらがなをカタカナに変換 vbHiragana 32 文字列内のカタカナをひらがなに変換 vbUnicode 64 システムの既定のコードページを使って文字列をUnicodeに変換 vbFromUnicode 128 文字列をUnicodeからシステムの既定のコードページに変換 ------------------------------------------------------------------------------------------------------------- ・エクセルの強制終了 ------------------------------------------------------------------------------------------------------------- Application.DisplayAlerts=False これが有れば強制終了 Application.Quit これだけなら普通の終了(直前に保存ボックスが開く) ------------------------------------------------------------------------------------------------------------- ・保護シートをVBAから操作可能にする ------------------------------------------------------------------------------------------------------------- Worksheets("入力").Protect UserInterfaceOnly:=True ------------------------------------------------------------------------------------------------------------- ・範囲指定の位置を取得 ------------------------------------------------------------------------------------------------------------- 1.行位置 開始行 = Selection.Row 終了行 = 開始行 + Selection.Rows.Count - 1 2.列位置 開始列 = Selection.Column 終了列 = 開始列 + Selection.Column.Count - 1 ------------------------------------------------------------------------------------------------------------- ・セル単位でのロック(保護)操作 ------------------------------------------------------------------------------------------------------------- Cells(y,x).Locked=False 'ロック解除 Cells(y,x).Locked=True 'ロック設定 ------------------------------------------------------------------------------------------------------------- ・範囲名の削除法 ------------------------------------------------------------------------------------------------------------- [挿入]-[名前]-[定義]で削除 ------------------------------------------------------------------------------------------------------------- ・エラーなどで死んでしまった割込み機能を復活させる ------------------------------------------------------------------------------------------------------------- Application.EnableEvents=True ------------------------------------------------------------------------------------------------------------- ・現在のアクティブシート名を得る ------------------------------------------------------------------------------------------------------------- ActiveSheet.Name ------------------------------------------------------------------------------------------------------------- ・エクセルがインストールされているフォルダ名(フルパス) ------------------------------------------------------------------------------------------------------------- Application.Path ------------------------------------------------------------------------------------------------------------- ・カレントフォルダ名(フルパス) ※注 C:\Documents and Settings\OWNER\My Documents のこと ------------------------------------------------------------------------------------------------------------- curdir ------------------------------------------------------------------------------------------------------------- ・コンピュータのユーザー名の取得 ------------------------------------------------------------------------------------------------------------- Object.UserName ------------------------------------------------------------------------------------------------------------- ・コンピュータ名の取得(実ソース) ------------------------------------------------------------------------------------------------------------- Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long Function GetMyComputerName() As String Dim strCmptrNameBuff As String * 21 GetComputerName strCmptrNameBuff, Len(strCmptrNameBuff) GetMyComputerName = Left$(strCmptrNameBuff, InStr(strCmptrNameBuff, vbNullChar) - 1) End Function ------------------------------------------------------------------------------------------------------------- ・行/列の非表示と再表示 ------------------------------------------------------------------------------------------------------------- Rows("4:5").EntireRow.Hidden=True '行の非表示 Rows("3:6").EntireRow.Hidden=False '行の再表示 Columns("E:F").EntireColumn.Hidden=True '列の非表示 Columns("D:G").EntireColumn.Hidden=False '列の再表示 ------------------------------------------------------------------------------------------------------------- ・ファイルのコピー ------------------------------------------------------------------------------------------------------------- FileCopy "c:\test.dat","c:\aaa\test.dat" |






