YashiTech
Amebaでブログを始めよう!

久々にup

■InStr

【書式】 InStr([検索開始位置,]検索対象文字列,検索条件文字列[,検索方法])
      
検索開始位置:文字列式内の検索開始位置。省略した場合は先頭位置から検索されます。
        ただし,検索方法を設定した場合は指定しなければなりません。
検索対象文字列:検索対象となる文字列。
検索条件文字列:検索条件となる文字列。
検索方法:文字列の検索方法を指定。設定値は,StrComp関数と同じ。



今したいこと
xx03\~以下のフォルダパスが含まれるかを知りたい。
→含まれていたら、

*パスNull 識別子null
*パスNull 識別子Match
*パスMatch 識別子null
*パスMatch 識別子Match

……のときのみファイル種類を書き込んでExit
それ以外は次の行を読み込んで処理をする

○パスnull 識別子null
○パスnull 識別子(match)
×パスnull 識別子(not match)
○パスmatch 識別子null
○パスmatch 識別子(match)
×パスmatch 識別子(no match)
×パスno match 識別子null
×パスno match 識別子(match)
×パスno match 識別子(not match)


**************************************************************
拡張子がある限りループ
Do While 拡張子 <> Null
1 ファイルパスチェック
if 該当ファイルパスがNull
goto SHIKIBETSU
else
if フルパスに該当ファイルパスを含んでいる
goto SHIKIBETSU
end if
end if

goto NEXT_DATA

SHIKIBETSU:
2 ファイル識別子チェック
if ファイル識別子がnull
goto KAKUCHOU
else
if フルパスにファイル識別子を含んでいる
goto KAKUCHOU
end if
end if

goto NEXT_DATA

KAKUCHOU:
3 拡張子チェック
if 拡張子が等しい
ファイルの種類を取得してexit
end if

NEXT_DATA:
4 ファイルパスが不一致、もしくはファイル識別子が不一致の場合、次のデータを確かめる
次の行のデータ取得

Loop

■q指定による文字リテラル


・文字リテラルの記述で、区切り文字を任意の文字で指定できます
 q又はQで始まり、一重引用符で囲いますが、1文字の区切り文字で
 記述する文字を囲いします
 形式:q'区切り文字 .... 区切り文字'
・区切り文字の大文字/小文字は、区別されます
・開始の区切り文字が[、{、< 又は( の場合、終了の区切り文字は、
 ]、}、> 又は) になります
・文字リテラルは、最大4000バイトです
・qを指定しない文字リテラル記述で、一重引用符を指定するには、
 一重引用符を2つ指定します

《例》区切り文字として\を使用して記述します
q'\that's right\'

《参考》qを使用した文字リテラルは、10gからの機能です

■ショートカットの小技

windowsキーを使ったショートカットの小技
当ページでは、windowsキーを使ったショートカットの方法を紹介します。
便利な機能なのですが、以外と知られていないショートカットもあるかもしれません。
エクスプローラーを開く
windowsキー+E です。




「ファイル名を指定して実行」ダイアログを表示

windowsキー+R です。



開いている全ウインドウを最小化する
windowsキー+M です。
windowsキー+Dでも同じです。


最小化したウィンドウを元に戻す
shiftキー+windowsキー+M です。



ごみ箱に入れずに即削除
shiftキー+Delete です。

普通にDeleteだけでは、そのファイルはゴミ箱に移動するだけで、
パソコン本体の空き容量が増えるわけではありません。

なので、明らかに今後使うことの無いファイルであれば、
shift押しながら即削除しちゃいましょう。


CD-ROMを自動起動させない

WindowsOSは、CD-ROMを挿入すると、自動起動するようになっています。
そのCD-ROMの中身のファイルを見たいのに、
勝手に起動されて困るというケースがあります。

そんな場合は、
shiftキーを押しながらCD-ROMを挿入します。

これで勝手に起動されることは無くなります。


※注意
いつまで押していればいいのか?
CD-ROMがOSに認識されるまでshiftキーを押し続ける必要があります。

レジストリをいじって自動起動を抑止する方法も実はあるんですが、
ここではあえて載せません。
一歩間違うと壊れてしまうんで。


WEBのリンク先ページを別ウィンドウで開く
shiftキーを押しながらリンク先をクリック です。

このIt-newcomerのWEBサイトは基本的に、
リンクをクリックすると、同一ウインドウ内で、
今見ていたWEBページが切り替わって、新しいページが開くようになっています。

今見ているページと、リンク先のページを別ウィンドウでみたい場合もありますよね。

そんな場合は、shiftを押しながらクリックすれば解決します。
これ便利ですよー。


■大文字/小文字の変換

 Ucase関数はアルファベットの小文字を大文字に,Lcase関数はアルファベットの大文字を小文字に変換します。
【書式】 Ucase(文字列式)
     Lcase(文字列式)

文字列式:変換する文字列です。Null値が含まれる場合はNull値を返します。

■InStr関数

検索文字列が前方から何文字目にあるかを取得する(InStr関数、InStrB関数)
( Excel2000 )
 引数String1で指定した文字列の中からstring2で指定した文字列を前方から検索
し、検索文字列が最初に見つかった場所を返します。引数Compareで指定する比較
モードは次の一覧のとおりです。


・引数Compareで指定する比較モードを表す定数一覧(VbCompareMethod)

定数         値   説明

vbUseCompareOption  -1   Option Compare ステートメントの設定を使用
                して比較
vbBinaryCompare    0   バイナリ モードの比較
vbTextCompare     1   テキスト モードの比較
vbDatabaseCompare   2   Microsoft Access の場合のみ有効。データベース
               に格納されている設定に基づいて比較


 なお、InStr関数の戻り値は次の表のとおりです。

・InStr関数の戻り値一覧

内容                    値

String1が長さ0の文字列("")のとき      0
String1がNull値のとき            Null 値
String2が長さ0の文字列("")のとき      start
String2がNull値のとき            Null 値
String2が見つからないとき          0
String2がString1内で見つかったとき     見つかった文字列の位置
Startの値がString1の文字数を超えるとき   0


 構文 InStr(Start, String1, String2, Compare)
    InStrB(Start, String1, String2, Compare)


 設定項目 内容
 Start      検索開始位置を指定。省略時は1 [省略可能]
 String1 検索対象の文字列を指定 [省略不可]
 String2 検索文字列を指定 [省略不可]
 Compare 文字列比較のモード指定(一覧参照) [省略可能]


 次のサンプルは、メールアドレスに含まれる「@」の位置をInStr関数で検索し、
その前後のユーザー名、ドメイン名を取り出します。


●ポイント●
 比較モードのバイナリモードとテキストモードの違いは下の一覧のとおり
です。Excel2000VBAの既定ではバイナリモードが使用されます。

・バイナリモードとテキストモードの違い
内容          例            バイナリモード テキストモード
大文字と小文字   「ABCDE」と「abcde」     異なる文字列  同じ文字列
全角と半角     「ABCDE」と「ABCDE」   異なる文字列  同じ文字列
ひらがなとカタカナ 「あいうえお」と「アイウエオ」異なる文字列  同じ文字列

■他のシートを操作

Range Object の Select メソッドで、単独または複数セルの領域を選択できます。カーソルの位置は、選択領域の先頭セルに移動します。
Sub Range15()
Sheet1.Activate
Range("D5").Select
Range("D5:E7").Select
End Sub

Select メソッドは、Active でないシートには適用できません。したがって、次のようなコードは、ワークシートの状況に依存して、エラーになることがあります。
Sub Range15bad()
Sheet1.Range("D5").Select
End Sub

Sheets(N_SHEET).Range("B6:K600").ClearContents

■他アプリケーションを開く

Private Sub OpenFile(i_iPath)
Dim sFilePath As String
Dim lngRet As Long
Dim lngHwnd As Long
Dim strEXT As String
Dim strMSG As String
Dim sSecondPath As String
Dim sFileName As String

Dim sKind As String '拡張子の一文字
Dim sKindKaku As String '拡張子full
Dim iLoopCnt As Integer
Dim iKindLen As Integer
Dim sTempFilePath As String

On Error GoTo ErrProc
lngHwnd = GetForegroundWindow() 'excelの他のウィンドウを取得する
sFilePath = Trim(Cells(i_iPath, C_COL_COMMON1)) '指定された比較(元or先)フォルダのパス
sSecondPath = Cells(ActiveCell.Row, C_COL_FILE_PATH) 'ファイルまでのパス
sFileName = Cells(ActiveCell.Row, C_COL_FILE_NAME) 'ファイル名

'-------------------------------ファイルのパスを取得
If Right(sFilePath, 1) <> YEN Then
sFilePath = sFilePath & YEN 'フォルダ語尾の\の有無
End If
If sSecondPath <> "" Then 'ファイルまでのパス名があるとき
sFilePath = sFilePath & sSecondPath & YEN
End If
sFilePath = sFilePath & sFileName 'フルパス
'-------------------------------ファイルの拡張子を取得
sKindKaku = GetExtension(sFileName)
'■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
''''''拡張子によって分岐してます! '■
If sKindKaku <> EXCEL_FILE And sKindKaku <> WORD_FILE Then '■
'-------------------------------ノートパッドで起動 '■
Shell "Notepad """ & sFilePath & "", 1 '■
Else '■
'■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

'-------------------------------WinAPIを使って関連付けられた
' アプリケーションを起動
lngRet = ShellExecute(lngHwnd, "Open", _
sFilePath, vbNullString, vbNullString, 1)
' エラー確認(戻り値が32以上は成功)
If lngRet < 32 Then
If lngRet = 31 Then
' 関連付けプログラムなし
strMSG = "拡張子に関連付けられたプログラムが登録されていません。"
strEXT = StrConv(Right$(sFilePath, 4), vbUpperCase)
' 拡張子によりエラー表示を切り分ける
If strEXT = ".VSD" Then
MsgBox strMSG & vbCr & "Visio" & cnsNotINSTALL, _
vbExclamation
ElseIf strEXT = ".MDB" Then
MsgBox strMSG & vbCr & "Access" & cnsNotINSTALL, _
vbExclamation
ElseIf strEXT = ".PDF" Then
MsgBox strMSG & vbCr & "AcrobatReader" & cnsNotINSTALL, _
vbExclamation
ElseIf strEXT = ".PPT" Then
MsgBox strMSG & vbCr & "PowerPoint" & cnsNotINSTALL, _
vbExclamation
ElseIf MsgBox(strMSG & vbCr & "「メモ帳」で開きますか?", _
vbExclamation + vbYesNo) = vbYes Then
' メモ帳で開く
Shell "Notepad """ & sFilePath & "", vbNormalFocus
End If
Else
' その他のエラー
Select Case lngRet
Case 2: strMSG = "ファイルが見つかりません。"
Case 3: strMSG = "パスが見つかりません。"
Case 5: strMSG = "アクセス不可です。"
Case 8: strMSG = "メモリオーバーフローしました。"
Case 30: strMSG = "ファイルが使用中です。"
Case Else: strMSG = "その他エラーです。"
End Select
MsgBox strMSG, vbExclamation
End If
End If
End If

Exit Sub

ErrProc:
MsgBox ("error")

■スクエアルート


・sqrt() 関数は、平方根を返す。

select sqrt(2.0);

sqrt
-----------------
1.4142135623731



http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/psql_k12.htm