No.4ベストアンサー
- 回答日時:
ご質問の「文字列」から察するにあるファイルのパス(ドライブ+パス+ファイル名)を
ドライブ+パスとファイル名に分解する、のような使い方をされるのでしょうか?
先の例ですとstrArrey(numArrey)を参照すると「ファイル名のみ」が取得できます。
あと、Splitの反対で「JOIN関数」があります。
なお、Split,JoinはExcel2000以降のVBAでも利用可能です。
'ここから
Dim strArrey() As String
Dim numArrey As Integer
Dim strPath As String
strPath = "C:\MYDOCU~1\THINKB~1\THINKB~1\TEMP"
strArrey() = Split(strPath, "\")
numArrey = UBound(strArrey())
MsgBox "これがファイル名:[" & strArrey(numArrey) & "]"
strArrey(numArrey) = ""
strPath = Join(strArrey(), "\")
MsgBox "これがパス名:[" & strPath & "]"
'ここまで
二度にわたり親身な回答していただき、本当にありがとうございます。
bin-chan様の言われるとおり、パスとファイル名に分解しようとしていました。
とどめ(!?)のJOIN関数はとても勉強になりました。現在つくっているプログラムに役立てそうです。
本当にありがとうございました。
No.6
- 回答日時:
模範的なものを書かせていただきます。
Dim St as String
Dim a as Integer, i as Integer
St = "C:\MYDOCU~1\THINKB~1\THINKB~1\TEMP"
For i = 1 To Len(St)
If Right(Left(St, i), 1) = "\" Or Right(Left(St, i), 1) = "¥" Then
a = a + 1
End If
Next i
If文の後の条件判断式は「\」が半角でも全角でも良いようにしています。多分これが一番分かりやすく簡単な方法だと思います。
回答していただき、本当にありがとうございます。
みなさまに教えて頂いた手法を試すのに時間がかかってしまい、返信が遅れてしまったことをお詫びします。
これだけの手法があるとは思ってもいませんでした。
どれも参考になった回答ばかりで、この中から次点などの返信をしなければいけない事がとても心苦しいです、、、
right、left関数を工夫するんですね。また、半角と全角についてのコメントがとても勉強になりました。
ありがとうございました。
No.5
- 回答日時:
こんな方法はどうでしょうか。
Dim moji As String 'path
Dim Cot As Integer '\の個数
moji="C:\MYDOCU~1\THINKB~1\THINKB~1\TEMP"
Cot=Len(moji)-Len(Replace(moji,"\",""))
回答していただき、本当にありがとうございます。
みなさまに教えて頂いた手法を試すのに時間がかかってしまい、返信が遅れてしまったことをお詫びします。
これだけの手法があるとは思ってもいませんでした。
どれも参考になった回答ばかりで、この中から次点などの返信をしなければいけない事がとても心苦しいです、、、
Len関数の使い方は、意表をつかれたというか、眼からウロコが落ちた状態です(苦笑)nishi6様のような使い方があるんですね~。
ありがとうございました。
No.3
- 回答日時:
お疲れ様です。
いろいろな方法が考えられると思います^^
一例を挙げますと、
例)
Dim STR As String
Dim Start As Long
Dim Count As Long
STR = "C:\MYDOCU~1\THINKB~1\THINKB~1\TEMP"
Start = 1 '// 先頭文字
Count = 0
While InStr(Start, STR, "\")
Count = Count + 1
Start = InStr(Start, STR, "\") + 1
Wend
Debug.Print Count
というやり方もあると思います。
InStr関数で"\"の位置を探しあればカウントアップし、また次の文字から"\"を探しています。この繰り返しです。
"\"がなくなったらループを抜けて終了です。
間違っていたらごめんなさい。
回答していただき、本当にありがとうございます。
みなさまに教えて頂いた手法を試すのに時間がかかってしまい、返信が遅れてしまったことをお詫びします。
これだけの手法があるとは思ってもいませんでした。
どれも参考になった回答ばかりで、この中から次点などの返信をしなければいけない事がとても心苦しいです、、、
InStr関数は「特定文字の存在の有無」だけの意味しか知りませんでした。josyo_m様のような使い方がとても勉強になりました。
ありがとうございました。
No.2
- 回答日時:
VB6以降で「Split関数」というのがあります。
指定の文字を区切り記号として対象文字列を分割して配列に格納してくれます。
配列の件数を取得すると「区切り記号の数」がわかります。
dim strArrey() as String
dim numArrey as Integer
strArrey()=Split([文字列の変数でも定数でもOK],"\")
numArrey = UBound(strArrey())
これでnumArreyに"\"の個数が入ります。
お試しあれ。
回答していただき、本当にありがとうございます。
みなさまに教えて頂いた手法を試すのに時間がかかってしまい、返信が遅れてしまったことをお詫びします。
これだけの手法があるとは思ってもいませんでした。
どれも参考になった回答ばかりで、この中から次点などの返信をしなければいけない事がとても心苦しいです、、、
bin-chan様の言われたsplit,ubound関数は初めて知りました。
特にsplit関数は便利ですね。とても勉強になり、今後に活かせそうです。
ありがとうございました。
No.1
- 回答日時:
mid関数を使って左から1文字ずつとりだしていき、
\と一致したときカウントしていくのはどうでしょうか?
こんなかんじで
for i = 1 to len("C:\MYDOCU~1\THINKB~1\THINKB~1\TEMP")
c=mid("C:\MYDOCU~1\THINKB~1\THINKB~1\TEMP",i,1)
if c="\" then cnt=cnt+1
next i
msgbox ("\は" & cnt &"個ありました。")
回答していただき、本当にありがとうございます。
みなさまに教えて頂いた手法を試すのに時間がかかってしまい、返信が遅れてしまったことをお詫びします。
これだけの手法があるとは思ってもいませんでした。
どれも参考になった回答ばかりで、この中から次点などの返信をしなければいけない事がとても心苦しいです、、、
id関数は知っていましたが、sha-girl様のような上手な扱い方は知りませんでした。とても勉強になり、今後に活かせそうです。
ありがとうごさいました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
- その他(プログラミング・Web制作) 2つのテキストファイルを比べて文字列を特定する方法を教えて下さい 5 2022/05/01 15:22
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Excel(エクセル) エクセルの条件付き書式で*を使いたい 4 2022/05/13 16:49
- C言語・C++・C# int temp = 0; if(isdigit(arr[i])){//文字が数字であれば(0~9) 1 2022/03/27 01:37
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- PHP c言語 文字 - '1'+26 3 2022/03/26 20:58
- Excel(エクセル) SUMIF関数について 4 2023/06/14 13:13
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
%dなどの違い
-
C++で入力した文字列から数字を...
-
プログラムによく出てくるst...
-
nullと""、\\0とEOFの違いにつ...
-
C++で文字列の右端から特定の文...
-
C言語の課題で困っています;
-
16進数を2文字ずつ配列に格納し...
-
VB6.0でのバイナリデータの扱い...
-
VBA-DLLの引数受け渡しについて
-
バイナリファイル中の日本語文...
-
C#でstringをポインタとして渡す
-
数字の入った配列をファイルへ...
-
文字コードによる表記
-
アルファベットの出て来た回数
-
CSVファイルの「”」について
-
シリアル通信で0x00を送信した...
-
c言語によって文字列を逆順する...
-
TCL言語で文字列検索方法を教え...
-
C言語のコンパイル時に表示され...
-
セグメントエラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C#でstringをポインタとして渡す
-
プログラムによく出てくるst...
-
C++で入力した文字列から数字を...
-
nullと""、\\0とEOFの違いにつ...
-
c#で他のアプリの文字入力フォ...
-
TCL言語で文字列検索方法を教え...
-
16進数を2文字ずつ配列に格納し...
-
シリアル通信で0x00を送信した...
-
_tcscpy_s(wcscpy_s)の第二引数...
-
WSH(VBS)でJSONの文字列を読み...
-
VB6.0でのバイナリデータの扱い...
-
C++で文字列の右端から特定の文...
-
数字の入った配列をファイルへ...
-
%dなどの違い
-
構造体→文字列→構造体 をする方法
-
char型配列の最大要素数
-
VBA-DLLの引数受け渡しについて
-
[C++]WCHARの1文字目しか表示で...
-
Shift_JIS(16進)を文字に変換す...
-
CSVファイルの「”」について
おすすめ情報