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"


 

 

 

Copyright(C)1996 System Engineering Connections All Rights Reserved.