• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA 文字の置き換え)

VBA文字の置き換えによるセル内容の変更方法

このQ&Aのポイント
  • VBAを使用してセルの文字を置き換える方法について質問があります。現在のコードでは、置き換えを行うと元々入力されていた文字が消えてしまいます。そこで、セルの一部の文字だけを置き換える方法を知りたいです。
  • 具体的には、あいう完⇒えお完⇒かきく完という文字列をあいう完⇒えお完⇒かきく中に変更したいです。現在のコードでは、最後の置き換えで全体の文字列が消えてしまいます。
  • 私は次のようなコードを使用しています。 Private Sub CommandButton4_Click() Dim txt As String Dim buf As String Dim buf2 As String txt = ActiveCell nStart = InStrRev(ActiveCell, '⇒') nLen = Len(ActiveCell.Text) - nStart buf = Replace(ActiveCell.Characters(Start:=nStart + 1, Length:=nLen).Text, '完', '中') ActiveCell = buf End Sub このコードを改良して、セルの一部の文字だけを置き換える方法を教えていただけますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • f272
  • ベストアンサー率46% (7995/17093)
回答No.1

ActiveCell = buf を ActiveCell = ActiveCell.Characters(Start:=1, Length:=nStart).Text & buf にすればいいんじゃないのかなあ?

yyrd0421
質問者

お礼

ありがとうございます。 このような書き方をするんですね。 また一つ勉強になりました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBA 文字数の判定

    テキストファイルを1行ずつ読み取り、 100文字を超えている行のみ、新しいテキストファイルまたはexcel行に書き込んでいくという バッチを作成したいと思います。 以下でテキストファイルを1行ずつ読み取ることはできました。 1行ずつ読み取った行に対して、文字数以上の判定の方法を教えてください。 また100文字以上の場合は、別ファイルに書き込んでいく構文も教えていただけますか。 Sub test() Dim buf As String, n As Long Open "パス\a.txt" For Input As #1 Do Until EOF(1) Line Input #1, buf n = n + 1 Cells(n, 1) = buf Loop Close #1 End Sub

  • Excel VBA セル選択

    Sub 全角() Dim i As Long, buf As String For i = 1 To Len(ActiveCell.Value) If Mid(ActiveCell.Value, i, 1) Like "[ア-ン]" Then buf = buf & StrConv(Mid(ActiveCell.Value, i, 1), vbWide) Else buf = buf & Mid(ActiveCell.Value, i, 1) End If Next i ActiveCell.Value = buf End Sub このコードだと一つのセルしか変換できません。 選択した範囲全部を変換できるようにしたいです。

  • エクセル2003のVBAを教えてパート3

    kドライブのVBA練習フォルダにある、全てのテキストデータファイル(拡張子.txt)を、エクセルに繋げて取り込こむ(指定のエクセルの1シートに全テキストデータを繋げて取り込む)方法がわかりません。どなたか教えてください。データは、A列にのみに入ります。 テキストデータファイルの数は、1~4ファイルと色々な場合があります。また、行数も1ファイル10行~ 400行と色々です。 次のように、決められた1つのデータなら、プログラムに「元データ.txt」と入力する方法で出来るのでっすが。 Sub テキストファイルの読み込み() '1ファイルのとき  Dim buf As String  Dim cnt As Long  Open "k:\VBA練習\元データ.txt" For Input As #1   Do Until EOF(1)    Line Input #1, buf    cnt = cnt + 1    Cells(cnt, 1) = buf   Loop End Sub

  • エクセル2007でVBAが動きません、助けて下さい

    先日、使用していたエクセルを2003から2007に変更した所、 オブジェクトのテキストが読み込めなくなってしまいました。 マクロの記録なども試したのですが、問題が解決せず 困っています。 原因が分かる方が入らしたら、ぜひとも教えてください。 =================================== Sub namae() Dim namae1 As String Dim namae2 As String namae1 = Application.Caller namae2 = ActiveSheet.Shapes(namae1).TextFrame.Characters.Text MsgBox namae2 End Sub

  • VBAで大量のテキストファイル結合ができません

    いつもお世話になっております。 icevainと申します。 早速ですが、 VBAで大量のテキストファイルを結合したいのですが 下記コードを実行すると、 ある一定量のファイルまでは期待通り結合されるのですが、 それを超えると途中でコマンドプロンプトの黒い画面が出て止まってしまいます。 結合ファイル(out.txt)を見ると途中まで(70ファイル程度)は結合されています。 ちなみに結合するファイルはすべて3行、文字数は300程度です。 'ここから----------------------------------------------------- Private Sub CommandButton1_Click() 'コマンドプロンプト用のオブジェクトWindows Script Dim wshell As New IWshRuntimeLibrary.WshShell Dim retbuf As WshExec Dim cmdline As String Dim v0 As String Dim v1 As String Dim v2 As String Dim v3 As String Dim v4 As String v0 = "copy " v1 = ThisWorkbook.Path & "\temp\*.txt" v1 = """" & v1 & """" v2 = " " v3 = ThisWorkbook.Path & "\out.txt" v3 = """" & v3 & """" cmdline = v0 & v1 & v2 & v3 'コマンド を 実行 Set retbuf = wshell.Exec("%ComSpec% /c " & cmdline) 'コマンド の 実行 終了 まで 待機 Do While retbuf.Status = 0 DoEvents Loop End Sub 'ここまで----------------------------------------------------- どなたかお知恵お貸しいただけないでしょうか。 よろしくお願いいたします。

  • 【VBA】 ファイル名の取得

    23歳OLです。 会社でマクロを組んでいるのですが、 できないところがあったのでご相談させてください。 ▼やりたいこと ================================================ ・フォルダを自分で指定して、選択したファイルの名前をシートに書き込む 1.txt 2.log 3.xls とフォルダに入っていたら 1.txt 2.log 3.xls とシートに名前を書き込んでほしいです。 ・ファイルの種類はいろいろある。(txt.logなど) ================================================ ▼現在書いてみたコード ======================== Sub Sample1() Dim buf As String, cnt As Long Const Path As String = "" buf = Dir(Path & "*.*") Do While buf <> "" cnt = cnt + 1 Cells(cnt, 1) = buf buf = Dir() Loop End Sub ======================== これだと、初めから指定したフォルダしか取得することができないらしいです。 そもそもConst Path As String = "このぶぶん" このぶぶんにフォルダを指定しても動きませんでした。? どこが原因なのでしょうか? ご教示お願いします。

  • エクセルマクロ フォルダ内のファイル検索で

    よろしくおねがいします。 下記で、どうも指定フォルダ内のファイル名を検索できていないようで 条件の"ないなら"に反応して中断するハズがファイルを開いてしまいます。 思ったのですが、bufの設定にファイル名は指定できないのでしょうか? Sub Start8() Dim buf As String, IptA As String Const Path As String = "C:\001\" IptA = Workbooks("AAA.xls").Sheets("Sheet1").Cells(1, 1).Value buf = Dir(Path & "" & IptA & ".txt") If buf = "" Then Range("A2").Select ActiveCell.FormulaR1C1 = "" & IptA & "は見つかりません" Exit Sub Else Range("A2").Select ActiveCell.FormulaR1C1 = "" & IptFN & "が見つかりました" End If Workbooks.OpenText Filename:= _ "C:\001\" & IptA & ".txt" End Sub

  • エクセルVBAで特定の文字を削除したい

    選択しているセルの中に入っている文字「■」を 削除したいのですがうまくいきません。 お願いいたします。 Sub ■削除() Dim myRange As Range Dim keyWord1 As String, keyWord2 As String Dim bool As Boolean Set myRange = ActiveCell keyWord1 = "■" keyWord2 = "" bool = myRange.Replace(keyWord1, keyWord2, LookAt:=xlWhole) End Sub

  • ある文字列を検索するボタンのつくりかた

    あるテキストファイル(*.txt)の内容をテキストボックスに表示するボタンを作りました。さらに、このテキストファイルの内容の中から、決まった文字列のみを表示できるようにしたい(例.abcdefgと書かれたテキストに対してbcdのみ抜き出す)のですが、どうすれば良いのでしょうか。初心者なので、簡単にできる方法があれば教えてください。 <現在のコード> Dim myFile As String Private Sub Command1_Click() CommonDialog1.Filter = "テキスト(*.txt)|*.txt|すべて(*.*)|*.*" CommonDialog1.FilterIndex = 1 CommonDialog1.Flags = cdlONFileMustExist '既存ファイルのみ読み込み CommonDialog1.ShowOpen If CommonDialog1.FileName = "" Then Exit Sub myFile = CommonDialog1.FileName FileRead Form1.Caption = "Form1 " & myFile End Sub Private Sub Form_Load() Form1.Height = 3510 End Sub Private Sub FileRead() Dim buf As String On Error GoTo ErrTrap1 Open myFile For Input As #1 RichTextBox1.Text = "" While Not EOF(1) Line Input #1, buf RichTextBox1.Text = RichTextBox1.Text & buf & Chr(13) & Chr(10) Wend Close #1 Exit Sub ErrTrap1: MsgBox Err.Description Err.Clear End Sub

  • VBAで特定の文字が含まれている画像ファイル

    下記コードで画像の貼り付けを行っていますが 現在は適当な順番で貼り付けが行われます。 Declare Function SetCurrentDirectory Lib "kernel32" Alias _ "SetCurrentDirectoryA" (ByVal CurrentDir As String) As Long Sub ShapeLoadtest() Dim Fname As Variant, fe As Variant Dim Fn As Variant, Pic As Shape Dim pno As Long Dim myFileName As String Dim strFileName As String Range("B4").Select SetCurrentDirectory "C:\Users\yuya\Desktop\画像\" Fname = Application.GetOpenFilename _ (",*", MultiSelect:=True) If Not IsArray(Fname) Then MsgBox "取り消されました。", vbInformation Exit Sub End If Application.ScreenUpdating = False pno = 0 For Each Fn In Fname 'この次へ追加すべき行 Selection.Offset(-1, 0) = Mid(Fn, InStrRev(Fn, "\") + 1, Len(Fn) - InStrRev(Fn, "\")) ActiveCell.Select Set Pic = ActiveSheet.Shapes.AddPicture(Filename:=Fn, _ LinkToFile:=False, _ SaveWithDocument:=True, _ Left:=0, Top:=0, Width:=0, Height:=0) With Pic .ScaleWidth 1, msoTrue .ScaleHeight 1, msoTrue .Top = ActiveCell.Top ' 位置:アクティブセルの上側に重ねる .Left = ActiveCell.Left ' 位置:アクティブセルの左側に重ねる .Placement = xlMove ' 移動するがサイズ変更しない End With If ActiveCell.Column = 2 Then ActiveCell.Offset(, 8).Select ElseIf ActiveCell.Column = 10 Then ActiveCell.Offset(, 8).Select ElseIf ActiveCell.Column = 18 Then ActiveCell.Offset(32, -16).Select End If Set Pic = Nothing pno = pno + 1 Next Application.ScreenUpdating = True Range("A1").Select MsgBox pno & "枚の画像を挿入しました", vbInformation End Sub これを画像ファイル名に【あいう】という文字が混じっていたら If ActiveCell.Column = 2 Then ActiveCell.Offset(, 8).Select のセルに 【123】という数字が混じっていたら ElseIf ActiveCell.Column = 10 Then ActiveCell.Offset(, 8).Select のセルに貼り付けという具合にしたいです。 よろしくお願いします。

自分の子育てを自慢する母親
このQ&Aのポイント
  • 母親が自慢してくる子育ての記憶に困惑
  • 自己評価に苦しむ人との人間関係の悩み
  • 母親の傷つける言動に疲れる
回答を見る

専門家に質問してみよう