
No.3ベストアンサー
- 回答日時:
#2の回答者です。
一応、マクロの訂正部分です。
Dim FolderList() As Variant
まあ、これは、 cnt=cnt=1 →cnt = cnt +1 でしょうね。
>If strFolder Like f Then ' ★ここが問題
これは、逆です。
f Like strFolder です。 それに、コードのままですと、f は、オブジェクトです。
以下は、ちょっと手を入れてみました。
'//
Dim strFolder As String, Root As String
Dim f As Variant
Dim FolderList() As Variant
Dim i As Long
strFolder = "s*" '全部小文字で。ワイルドカード
Root = ThisWorkbook.Path & "\data"
Set FSO = CreateObject("Scripting.fileSystemObject").GetFolder(Root).SubFolders
cnt = 0
strFolder = StrConv(strFolder, vbLowerCase)
For Each f In FSO
Range("A1").Value = f.Name '値確認用
Range("A2").Value = strFolder '値確認用
f = StrConv(f.Name, vbLowerCase)
If f Like strFolder Then ' ★ここが問題(比較が逆です)
cnt = cnt + 1
ReDim Preserve FolderList(cnt)
FolderList(cnt) = f
End If
Next
'//
ありがとうございます。
>If strFolder Like f Then ' ★ここが問題
今さらながら申し訳ありませんが、誤記しました。
>If strFolder Like f.Name Then ' ★ここが問題
が正しい、かどうかは別として私の書いたマクロです。
Likeに順序があるとは知りませんでした。
No.2
- 回答日時:
こんにちは。
Like演算子は、ある意味では、バイナリ比較になってしまいます。全角と半角、大文字と小文字の違いは検出してしまいます。そこで、モジュール先頭に、「Option Compare Text」 ステートメントを置くという方法を見かけます。そうすることによって、ある程度、大雑把な比較で済みます。
また、私自身は、Instr 関数で、TextCompare モードにしたり、同じく、StrComp関数を用いてすることがありますが、ワイルドカードで複雑なものは、正規表現(VBScript.RegExp) の文字比較を使うことがあります。
実際に、具体的には、どんな比較をされているのでしょうか。
No.1
- 回答日時:
FIND関数での確認は?
実際のコードと文字列を提示したら原因を探してもらえると思います
ありがとうございます。
指定のRootフォルダ内にある複数のフォルダの中から、strFolderにマッチ(Like使用)するものを選び、配列FolderListとして出力するものです。
sub SearchFolder()
Dim strFolder As String, Root As String
Dim i As Long
Root=Thisworkbook.Path & "\data"
Set FSO=CreateObject("Scripting.fileSystemObject").GetFolder(Root).SubFolders
cnt=0
For Each f In FSO
Range("A1")=f.Name '値確認用
Range("A2")=strFolder '値確認用
If strFolder Like f Then ' ★ここが問題
cnt=cnt=1
ReDim Preserve FolderList(cnt)
FolderList(cnt)=f.Name
End If
Next
End Sub
Rootのフォルダの中には例えばA,B,Cと3個のフォルダがあるとして、
strFolder="B"
として実行すると★行ではf.Name="B"の時にTrue判定してくます。ところが、
strFolder="B*"
として実行すると、Falseです。私はTrueである事を期待してますが、何か違うのでしょうか?
もうひとつ、デバック中はカーソルを当てた変数の値を確認出来ますが、f.Nameは出来ません。しかしfはフルパス表示がなされます。これは正しいと思っていいでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アトピー性皮膚炎
-
コロナになるのが死ぬほど怖い...
-
24歳、女性です。性欲が強すぎ...
-
頭痛に関する質問です。現在高...
-
肝臓がんになりたいです。肝機...
-
未成年の従姉妹が自分の真似絵...
-
◎敢えてノンジャンルカテゴリー...
-
何故 削除され続けるか、
-
首吊りどこ締めるの
-
検便についてです。 便は取れた...
-
血液検査の結果が悪くefgrの値...
-
彼女のことが好きすぎて彼女の...
-
風俗店へ行く前のご飯
-
2つの数値のうち、数値が小さい...
-
excel関数で TRUEやFALSEについて
-
excelでsin二乗のやり方を教え...
-
イタリアから帰国する際、肉製...
-
EXCELで条件付き書式で空白セル...
-
エクセルのラベルの値(文字列...
-
リンク先のファイルを開かなく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
検便についてです。 便は取れた...
-
血小板増加について
-
彼女のことが好きすぎて彼女の...
-
Excel 数値の前の「 ' 」を一括...
-
病院側から早く来てくださいと...
-
VLOOKUP関数を使用時、検索する...
-
腕を見たら黄色くなってる部分...
-
値が入っているときだけ計算結...
-
リンク先のファイルを開かなく...
-
2つの数値のうち、数値が小さい...
-
風俗店へ行く前のご飯
-
小数点以下を繰り上げたものを...
-
一番多く表示のある値(文字列...
-
MIN関数で空白セルを無視したい...
-
勃起する時って痛いんですか? ...
-
エクセルで空白セルを含む列の...
-
増減表のプラスマイナスの符号...
-
【Excelで「正弦波」のグラフを...
-
エクセルで数式の答えを数値と...
おすすめ情報