セルのデータをマクロで置換する方法とは?

このQ&Aのポイント
  • エクセル2010でマクロを使ってセルのデータを置換する方法について教えてください
  • ネットで調べてもreplaceStrが使われているという情報しか見つけられませんでした
  • 日本語表現を含む式をエクセルで使用する場合、リンクするソフト側でエラーになるためマクロで書く必要があるとのことです。どう書けばよいでしょうか?
回答を見る
  • ベストアンサー

セルのデータをマクロで置換するには?

よろしくお願いします。エクセル2010でマクロを勉強しています。 日本語で表現している部分をマクロではどう書いたらいいのでしょうか ネットで調べたらreplaceStrを使うようですが、ここから前に進めません どなたか教えてください 単に式で書いてもいいようですが、式で書くと、リンクするソフト側でエラーになるので マクロで書く必要があります 例としてセルM7には =RSS|'3000.t'!更新済 という式が書いてあります  Private Sub Worksheet_Change(ByVal Target As Range) 'セルB7に数値が入力されたら     'セルM7の数値をB7の数値で置き換える    '数値は常に4桁です End Sub 以上です。よろしくお願いします

  • maamaa
  • お礼率85% (274/322)

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! M7セルに =RSS|'3000.t'!更新済 という数式が入っていて、B7セルに4桁数値が入力された場合 仮に「2500」の場合はM7セルの数式が =RSS|'2500.t'!更新済 のようになればよい!というコトでしょうか? Private Sub Worksheet_Change(ByVal Target As Range) Dim str As String, buf As String If Target.Address = "$B$7" Then If IsNumeric(Target) Then If Target > 999 And Target < 10000 Then buf = Range("M7").Formula str = Mid(buf, InStr(buf, "'") + 1, 4) Range("M7").Formula = Replace(buf, str, Target) End If End If End If End Sub こんな感じではどうでしょうか?m(_ _)m

maamaa
質問者

お礼

早速教えていただきましてありがとうございます おかげさまですぐにできました 世間には優秀な方がいるんですね この一ヶ月ほど、ずっとネットで調べていたのですがだめでした 本当にありがとうございました この型を組み合わせて完成させたいと思います 完璧に教えてもらっておきながら簡単なお礼で申し訳ありません ありがとうございました

関連するQ&A

  • 数値が入力されたら別の2つのセルに式を書き込みたい

    よろしくお願いします エクセル2010のマクロで次のことをしたいのですが、私にはその知識がありません どなたか教えてください Private Sub Worksheet_Change(ByVal Target As Range)   B10に4桁(1000から9999)の数値が入力されたら   C10に以下の式を書き込みます 仮にB10の数値が3000なら =RSS|'3000.t'!更新済 とC10にマクロで書きます   同時にL10には =E10*D10 の式をマクロで書きます   もしもB10に入力されていた数値が削除されたら C10からL10のデータ(数値です)をすべて削除します(空白のセルにします) End Sub ネットでよく似たサンプルを探していますがうまくできません よろしくお願いします

  • VBA マクロを動かさない

    (1)ある行のセルを変更したら動くマクロがあります。  Private Sub Worksheet_Change(ByVal Target As Range) (2)ある行のセルに数値を入れるマクロがあります。  Private Sub CommandButton_Click() (2)のマクロが動くと(1)がその後に発動して上書きをしてしまうようです。 これを発動させないようにスキップするにはどうしたらいいのでしょうか?

  • エクセルマクロ(VBA)で指定したセルが変化したときに実行するには?

    VBAでsheetの中のworksheet_changeなどでマクロを書くと、そのシー トの中のどのセルを変化させてもマクロが実行されるのですが、これ を、A1とc1とc2が変化したときだけ処理を実行させたいのです。 以下のマクロのどこかを編集すると、そのようなことが出来るのでし ょうか? Private Sub Worksheet_SelectionChange(ByVal Target As Range) ----実行する内容---- End Sub Private Sub Worksheet_Change(ByVal Target As Range) ----実行する内容---- End Sub

  • エクセル95のマクロ

    エクセル95で Private Sub Worksheet_Change(ByVal Target As Range)  というのは使えるんでしょうか? リターン押したときに移るセルを操作したいので 代わりになるものでもあれば教えて頂きたいです。 よろしくお願いします。

  • エクセルのマクロ

    セルの値が変わったら動くマクロですが、2つ書くとエラーが出ます。 どのように直したらいいでしょうか? Private Sub Worksheet_Change(ByVal Target As Range) Select Case Target.Address If Intersect(Target, Range("EK22")) Is Nothing Then Exit Sub Else Range("EK24:EM28").Select Selection.ClearContents End If End Sub Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("EK24")) Is Nothing Then Exit Sub Else Range("EK27:EM28").Select Selection.ClearContents End If End Sub

  • エクセル イベントマクロ Changeイベントを複数作りたい

    Private Sub Worksheet_Change(ByVal Target As Range)   If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub 以下マクロの内容 End Sub これでセルA1が変わるとイベントマクロが発生しますが セルB1が変わると別のマクロが発生し セルC1が変わるとまた別のマクロが発生し…とするには どうすればよいのですか 単純に並べて書いたらだめみたいだったんですけど

  • Excelでセルの値を変化させた時にマクロを実行するには?

    "A1"のセルに値を入れるとマクロが実行するように組んだのですが、問題が発生しました。 Private Sub Worksheet_Change(ByVal Target As Range) If Target = Range("A1") Then      cells(1,2)=5      ・・・・ End If End Sub ここでA1に"5"を入力すると、B1に5と入力されるのですが、Target=5と認識してしまい、A1と同じ値になるので無限ループになってしまいます。 なにか回避策はないでしょうか? よろしくお願いします。

  • イベントマクロで「コンパイルエラー 因数は省略できません」

    マクロ初心者です イベントマクロを作りました Sheet2の結合されたB44:E44のセルに入力すると自動的にマクロが働いて Sheet1のW1の値のみがSheet2の結合されたB44:E44のセルに貼り付けられるマクロなのですが 実行すると「コンパイルエラー 因数は省略できません」と表示されます マクロ自体は正しく動いているのですがどういうことなんでしょう Sheet2 Worksheet Change Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target.Range("B44:E44")) Is Nothing Then Exit Sub Application.EnableEvents = False Sheets(1).Select Range("W1").Copy Sheets(2).Select Range("B44:E44").Select ActiveSheet.Paste Application.CutCopyMode = False Application.EnableEvents = True End Sub Private Sub Worksheet_Change(ByVal Target As Range)…この行が黄色になります If Intersect(Target.Range("B44:E44")) Is Nothing Then Exit Sub…intersectのところが青くなります こんな説明でわかってもらえるでしょうか?

  • セルに入力された値を別セルに条件付で転記したい

    エクセルにおいて、 セルのA1に 1 と入力したら セルA2に 半角で Q00000001と表示 セルのA1に 10 と入力したら セルA2に 半角で Q00000010と表示 セルのA1に 100 と入力したら セルA2に 半角で Q00000100と表示させたいです。 先頭は必ずQで計9桁でセルA1の入力値がみたない場合0で埋める。 これを行う一番いい方法は何がありますでしょうか? できたらセルには式は入れたくないです。 そのエクセルには Private Sub Worksheet_SelectionChange(ByVal Target As Range) Call ●● End Sub  が入っています。 シート保護をかけて セルA1とB1しか入力できないようになっています。 今はセルB1に入力するとマクロ●●が走って セルB2にマクロのSelect Caseで変換された値が転記されるようになっています。 もうひとつマクロを作って Private Sub Worksheet_SelectionChange(ByVal Target As Range) Call ●● Call ●●2 End Sub がいいでしょうか? その場合、そのマクロの記述そのものを教えてください。  お願いします。

  • Excel VBA イベントプロシージャを2つ記述する(基本です)

    基本的な事なのですが、Excelのイベントプロシージャで2つプログラムを作るにはどうやって記述すればよいのでしょうか? 具体的には、worksheetのchangeイベントで、セルC5の値を変えた時と、セルG7の値を変えた時の2通りのマクロを作成したいのです。 Private Sub Worksheet_Change(ByVal Target As Range) C5を変えた時の処理 End Sub Private Sub Worksheet_Change(ByVal Target As Range) G7を変えた時の処理 End Sub このように書けばよいのでしょうか?そうするとTargetがかぶっておかしくなる気がします。。 お願いします。

専門家に質問してみよう