Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6131 / 13646 ツリー ←次へ | 前へ→

【47012】[無題] 熊川 07/2/25(日) 1:29 お礼[未読]
【47013】Re:[無題] Blue 07/2/25(日) 1:41 質問[未読]
【47014】Re:[無題] 熊川 07/2/25(日) 3:02 質問[未読]
【47016】Re:[無題] ichinose 07/2/25(日) 8:46 発言[未読]
【47046】Re:[無題] 熊川 07/2/27(火) 0:34 お礼[未読]

【47012】[無題]
お礼  熊川  - 07/2/25(日) 1:29 -

引用なし
パスワード
   スグにお返事ありがとうございます

bug=dir("***")で

(指定ファイル)"***"に2つのファイル(f1,f2)が
あるとして、


bug=dir()
の()の中は次のファイル名(f2)が自然に入る?ということでしょうか?

dir()以外での使う場面など是非教えてください。
array()?とかですか?

【47013】Re:[無題]
質問  Blue  - 07/2/25(日) 1:41 -

引用なし
パスワード
   返信ならば、新しいスレを建てずに前のスレにつけてください。
ヘルプ読みましたか?

ヘルプより抜粋

Dir 関数は、引数 pathname と一致する最初のファイル名を返します。それ以外のファイル名で引数 pathname と一致するファイル名を取得するには、引数を指定せずに再び Dir 関数を呼び出してください。一致するファイル名がない場合は、Dir 関数は長さ 0 の文字列を返します。長さ 0 の文字列が返された場合は、次に Dir 関数を呼び出すときに引数 pathname を再び指定しなければなりません。指定しないとエラーが発生します。

【47014】Re:[無題]
質問  熊川  - 07/2/25(日) 3:02 -

引用なし
パスワード
   スレの件申し訳ありませんでした。
お聞きしたいことですが

「引数を指定せずに再び dir関数を呼び出す」
と御説明ありましたが

「引数を指定せずに再び 〜関数を呼び出す」

といったコードの例を他の関数でも知りたいのですが
宜しくお願いします。
つまり
変数=関数("")の形について
文法みたいなものがあるのでしょうか?

【47016】Re:[無題]
発言  ichinose  - 07/2/25(日) 8:46 -

引用なし
パスワード
   おはようございます。

>
>「引数を指定せずに再び dir関数を呼び出す」
>と御説明ありましたが
>
>「引数を指定せずに再び 〜関数を呼び出す」
>
>といったコードの例を他の関数でも知りたいのですが
>宜しくお願いします。
>つまり
>変数=関数("")の形について
>文法みたいなものがあるのでしょうか?


私もこのDir関数と同じインターフェースはよく使いますよ!!



 プロシジャー名  diststr

 機能       指定された文字列を分解して一文字毎に取り出す

 呼び出し形式   diststr([mystr])
         
          inpout mystr 分解して一文字毎とり出す元になる文字列
          output diststr 一文字の文字


 使用例

 標準モジュールに

'=================================================================
Sub main()
  Dim a As String
  a = diststr("ichinose")
  Do Until a = ""
    MsgBox a
    a = diststr()
    Loop
End Sub
'====================================================================
Function diststr(Optional mystr As String = "") As String
  Static svstr As String
  Static svidx As Long
  diststr = ""
  If mystr <> "" Then
    svstr = mystr
    svidx = 1
    End If
  If svidx <= Len(svstr) Then
    diststr = Mid(svstr, svidx, 1)
    svidx = svidx + 1
    End If
End Function
 

上記のコードのmainを実行すると入力データとして、指定された
「ichinose」が分解され、一文字ずつ表示されます。
この手のコードのポイントは、

引数にある Optinalキーワードと

コード内の Staticステートメントです。

試してみて下さい

【47046】Re:[無題]
お礼  熊川  - 07/2/27(火) 0:34 -

引用なし
パスワード
   お礼が遅くなりすみませんでした。
とても参考になりました。
本当に
ありがとうございました。

6131 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free