質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

3回答

25724閲覧

VBA 特定文字以降削除

akakatsu

総合スコア4

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

1クリップ

投稿2020/09/25 06:27

下のコードの様に特定文字以下を取得できたのですが、削除の仕方がわからないので教えてください。
よろしくお願いします。

Sub check() Dim s As String s = Cells(1, 2).Value s = Mid(s, InStr(s, "\") + 1) Cells(1, 10).Value = s End Sub

イメージ説明

この画像の様にa.xslmfolder\yamadaの¥yamadaを削除したいです。
また 逆に¥より左を削除する方法もわかりません。教えてください。お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/09/25 06:40

>特定文字以下を取得できた それなら「できた」と言えませんか? あくまで「1文字目から特定文字列目を取得」で目的達せられそうに思います。
akakatsu

2020/09/25 06:43

取得はできるのですが、削除の方法がわかりません
Usirow

2020/09/25 06:43

まずはこの質問のタイトルをそのままグーグルで検索してみてください。解説しているサイトがいっぱい出てきます。
m.ts10806

2020/09/25 06:44

いやですから、取得した文字列でそのまま上書きすれば「削除した」ことになりませんか?と言う話をしています。
m.ts10806

2020/09/25 06:46

abと言う文字列をもった領域に対してaという文字列を入れればbはなくなりますよね。
akakatsu

2020/09/25 06:49

bは取得できたのですが、\マーク以前のaは取得できていません。 aを取得する方法を聞いているのです。
m.ts10806

2020/09/25 06:52

「1文字目から特定文字列目を取得」に対して「取得はできるのですが」と書いているのでできてるものと思ったのですが。
guest

回答3

0

ベストアンサー

そこまでできてるなら出来そうなもんだけど。
文字列加工はLeftかRightかMidがあればなんとかなるので、質問する前に色々試してみましょう。

VBA

1Sub check() 2 Dim s As String 3 Dim p As Long 4 s = Cells(1, 2).Value 5 p = InStr(s, "\") 6 Cells(1, 10).Value = left(s, p - 1) 7 Cells(2, 10).Value = Mid(s, p) 8End Sub

投稿2020/09/25 06:49

ttyp03

総合スコア17000

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

正規表現を使うと色々出来て面白いです。(参考まで)
(参照設定必要:Microsoft VBScript Regular Expression .)

VBA

1Option Explicit 2Sub Test_Sample_Miniature() 3 Dim MyRange As Range 4 Dim s As String 5 Dim re As RegExp 6 Dim mc As MatchCollection 7 Set re = CreateObject("VBScript.RegExp") 8 re.IgnoreCase = False 9 re.Global = True 10 For Each MyRange In Range("A1:A6") 11 ' 12 re.Pattern = "^.*(?=\)" 13 s = MyRange.Value 14 Set mc = re.Execute(s) 15 Cells(MyRange.Row, 10) = mc(0).Value 16 ' 17 re.Pattern = "^.*\" 18 Cells(MyRange.Row, 11) = re.Replace(s, "") 19 ' 20 Next 21 Set re = Nothing 22 Set mc = Nothing 23End Sub

投稿2020/09/25 07:33

tosi

総合スコア553

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

いろいろな方法を覚えておくと、場面に応じて追加分けできると思いますので、ご参考までに。

vba

1Sub sample() 2 Dim s As String 3 Dim a 4 s = Cells(1, 1).Value 5 a = Split(s, "\") 6 Cells(1, 10).Value = a(0) 7 Cells(1, 11).Value = a(1) 8End Sub

VBA Split 関数

vba

1Sub sample() 2 Range("A1:A10").TextToColumns _ 3 Destination:=Range("J1"), _ 4 OtherChar:="\" 5End Sub

範囲の TextToColumns メソッド (Excel) | Microsoft Docs

投稿2020/09/25 08:20

hatena19

総合スコア34075

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問