Translate

2011年6月29日水曜日

ExcelVBAかなりざっくりしためも

モジュール、ブック、シートをを全て表示する
Sub SampleCode1() '
    Dim VBComponent As Variant
    For Each VBComponent In ThisWorkbook.VBProject.VBComponents
        Debug.Print VBComponent.CodeModule
        Debug.Print VBComponent.Type
    Next
End Sub
type
1→標準モジュール
2→クラスモジュール
3→フォーム
100→Documentモジュール

'Module1内のプロシージャ名を列挙する
Sub SampleCode2()
    Dim TempProcName As String
    Dim ProcNames As String
    Dim i As Long
    
    With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
        For i = 1 To .CountOfLines
            If TempProcName <> .ProcOfLine(i, 0) Then
                TempProcName = .ProcOfLine(i, 0)
                Debug.Print TempProcName
            End If
        Next i
    End With
End Sub

2011年6月25日土曜日

vbscriptメモ

■CUIから実行
cscript ファイル名.vbs で実行

オプション :
//B バッチ モード : スクリプトのエラーおよびプロンプトを非表示にする
//D アクティブ デバッグを使用可能にする
//E:engine スクリプト実行時にエンジンを使用する
//H:CScript 既定のスクリプト ホストを CScript.exe に変更する
//H:WScript 既定のスクリプト ホストを WScript.exe に変更する (既定値)
//I 対話モード (既定値、//B と逆の動作)
//Job:xxxx WSF ジョブを実行する
//Logo ロゴを表示する (既定値)
//Nologo ロゴを表示しない : 実行時に見出しを表示しない
//S このユーザーの現在のコマンド ライン オプションを保存する
//T:nn 秒単位のタイムアウト時間 : スクリプトを実行できる時間の最大値
//X デバッガでスクリプトを実行する
//U コンソールからリダイレクトされた I/O に Unicode を使用する

例えば、実行時にロゴ↓を表示したくなければ・・・
Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

cscript ファイル名.vbs //Nologo とすればよい


■算術演算子
msgbox 7 + 5 '12
msgbox 7 - 5 '2
msgbox 7 * 5 '35
msgbox 7 / 5 '1.4
msgbox 7 \ 5 '1(商)
msgbox 7 Mod 5 '2(余り)
msgbox 7 ^ 5 '16807

■制御文
'If文
If 条件1 THen 処理1

If 条件2 Then
    処理2
ElseIf 条件3 Then
    処理3
ELse
    処理4
End If

'Select Case文
Select Case 値
    Case 値1
        処理1

    Case 値2, 値3
        処理2

    Case 値4, 値5, 値6
        処理3
 
    Case Else
        処理4
End Select

'For文
For 変数 = 初期値 To 最終値 [Step 変化量]
    処理
Next

'For Each文
For Each 変数 In コレクションor配列
    処理
Next

'While文
While 条件
    処理(条件がTrueの間ループする)
Wend

'Do Loop文
Do While 条件
    処理(条件がTrueの間ループ)
Loop


Do
    処理(条件がTrueの間ループ)
Loop While 条件


Do Until
    処理(条件がFasleの間ループ)
Loop

Do
    処理(条件がFalseの間ループ)
Loop Until 条件


■エラー処理
'On Error Resume Next から OnError GoTo 0の間は
'エラーを無視する
On Error Resume Next
    エラーの起きそうな処理

    msgbox Err.Number      'エラーの番号 エラーがない時は0
    msgbox Err.Description 'エラーの説明
    Err.Clear 'エラーの初期化 連続してエラーがおきそうな場合はその都度判定し、クリアする

On Error GoTo 0

■文字列操作
・Replace関数
変数 = Replace(引数1、引数2、引数3[、引数4、引数5、引数6]

引数1…置換を実施する文字列を指定
引数2…引数1から探し出す文字列
引数3…引数2と置き換える文字列
引数4…検索開始位置(1以上の整数)
引数5…置換を実施する回数。-1or指定しないは全て置換
引数6…文字列比較モード vbBinaryCompare or vbTextCompare

引数6を指定→引数4,引数5も指定
引数5を指定→引数4も指定


■Timerで100分の1以下を取得する
Timerで表示されるのは0時から現在までの秒を100分の1秒まで返してくれる。
例)85547.14

それ以下の値が欲しい場合は整数部を取り除くと取り出すことができる。
Dim CurrentTime : CurrentTime  = Timer '86274.84
Dim IntegralPart: IntegralPart = Fix(CurrentTime) '86274
Dim FractionPart: FractionPart = CurrentTime - IntegralPart '0.84375

msgbox FractionPart