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

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

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

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

Q&A

解決済

1回答

533閲覧

エクセルvba 左から7~8文字目がが_0なら_0を削除

kumiko

総合スコア48

VBA

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

0グッド

0クリップ

投稿2023/10/20 02:15

編集2023/10/20 03:58

実現したいこと

エクセル4列目を上から順に確認していき、左から7~8文字目が_0(アンダーバー0)なら_0を削除
イメージ説明

前提

Microsoft® Excel® for Microsoft 365 MSO (バージョン 2309 ビルド 16.0.16827.20166) 64 ビット

発生している問題・エラーメッセージ

以下のコードを実行しても動かないのですが誤りをご指摘いただけませんでしょうか

該当のソースコード

Sub 左から7文字目が_0なら_0を削除() Dim intRowEnd As Integer '最終行番号を格納 Dim p As Integer '行カウンタ Dim x As String '最終行番号の取得 intRowEnd = Sheets("renewal_csv (2)").Cells(Rows.Count, 1).End(xlUp).Row p = intRowEnd '最終行番号を行カウンタにセット Do While p >= 2 If Left(Right(Sheets("renewal_csv (2)").Cells(p, 4).Value, 7), 2) = "_0" Then '左から7文字目の2文字がアンダーバー0なら Sheets("renewal_csv (2)").Cells(p, 4).Replace "_0", "" ' _0を削除 End If p = p - 1 Loop End Sub

試したこと

If Left(Right(Sheets("renewal_csv (2)").Cells(p, 4).Value, 7), 2) = "_0" Then
のあとに
msgbox Left(Right(Sheets("renewal_csv (2)").Cells(p, 4).Value, 7), 2)
といれても無反応なのでここの書き方がおかしいのだろうとおもわれます

その他、絶対に合致する条件をorで入れて
then 
msgbox”あ”
としたら反応したのでループ自体はしてくれているようです

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

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

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

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

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

can110

2023/10/20 02:49

実現したいこととソースコードのコメントの記述が異なっていますが、どちらが正しいでしょうか? また、具体的な文字列で例示すると回答得られやすくなるかと思います。
otn

2023/10/20 03:57

・左から7~8文字目が_0 ・右から7文字目の2文字がアンダーバー0 どちらが正しいのでしょうか?
guest

回答1

0

自己解決

考えずにネットのコードを流用したり急いで書くとろくなことありませんね
ごめんなさい。midつかって自己解決しました。

Sub 左から7文字目が_なら_0を削除()
Dim intRowEnd As Integer '最終行番号を格納
Dim p As Integer '行カウンタ
Dim x As String
'最終行番号の取得
intRowEnd = Sheets("renewal_csv (2)").Cells(Rows.Count, 1).End(xlUp).Row
p = intRowEnd '最終行番号を行カウンタにセット
Do While p >= 2
If Mid(Sheets("renewal_csv (2)").Cells(p, 4).Value, 7, 2) = "_0" Then '左から7文字目の2文字がアンダーバーなら
MsgBox Mid(Sheets("renewal_csv (2)").Cells(p, 4).Value, 7, 2)
Sheets("renewal_csv (2)").Cells(p, 4).Replace "_0", "" ' _0削除
End If
p = p - 1
Loop

End Sub

投稿2023/10/20 04:00

編集2023/10/20 04:03
kumiko

総合スコア48

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

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

otn

2023/10/20 04:25

「左から○文字目」を処理したいのに「右から○文字目」のコードを無変更で使ったということでしたか。 考えずに実行するのは別にかまいませんが、結果が期待通りでないときは、人に聞く前に自分でも少し考えましょう。
kumiko

2023/10/20 05:14

申し訳ございませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問