エクセルマクロでの回答をお願いします。数値とある言葉を組み合わせてセルに連続代入したい


マクロ初心者です。

A列のA2~A16までに、AP列にある画像番号の.jpgを抜き取って、
Inputboxで入れる言葉を後にくっつけて代入したいのですが、うまくいきません。

下記の式のどこがいけませんでしょうか?★でエラーがでます。


Dim k2 As String
Dim r As long

'行列の行が2からスタート

k2 = InputBox("文字列", Title:="特定の文字列を入れてください", Default:="")


for  r = 2 to 16
Cells(r, 1).Select
★ActiveCell.FormulaR1C1 = "=SUBSTITUTE(RC[41],"".jpg"","""")"&""k2"""

Next

教えてくださいませ。
お手数をおかけしますが、よろしくお願いいたします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/02/13 20:25:43
  • 終了:2013/02/14 02:32:52

ベストアンサー

id:gong1971 No.2

gong1971回答回数443ベストアンサー獲得回数682013/02/13 22:21:55

ポイント100pt

ActiveCell.FormulaR1C1 = "=SUBSTITUTE(RC[41],"".jpg"","""")&""" & k2 & """"

k2は文字列変数なので""内に書いてしまうと、k2という固定の文字列で処理されてしまいます。

-----
以下、補足。

元の数式では、 ) の後の " が不要なのと、
k2 を固定文字列(""内)に入れているのが正しくないですね。


きゃづみぃさんの回答と私の回答の違いですが、
きゃづみぃさんの回答では .jpg を入力した文字列で置換しているのに対し、
私の回答では、 .jpg を置換で消したあと、後ろに入力した文字列を連結しています。

もし、AP列のセルに .jpg が無かった場合、私の回答では強制的に入力した文字列を連結し、
きゃづみぃさんの回答では入力した文字が連結されません。

id:naranara19

完ぺきでした。わかりやすい解説にも感謝します。

2013/02/14 02:27:49

その他の回答(2件)

id:taknt No.1

きゃづみぃ回答回数13539ベストアンサー獲得回数11982013/02/13 21:23:30

ポイント20pt

ActiveCell.FormulaR1C1 = "=SUBSTITUTE(RC[41],"".jpg"","" & k2 & "")"


こういうことでしょうか?


あ、後に くっつけるだけだから

ActiveCell.FormulaR1C1 = "=SUBSTITUTE(RC[41],"".jpg"","""") & " & k2
でもいいのか。

でも、最初のでも 最後が .jpgなら それに 置換するから 結果は だいたい同じかもね。

id:naranara19

うーん。ごめんなさい。k2のままだとエラーがでてしまいました。回答ありがとうございました。

2013/02/14 02:27:21
id:naranara19

gong1971さんの解説通りかと思います。ActiveCell.FormulaR1C1 = "=SUBSTITUTE(RC[41],"".jpg"","""") & " & k2でとまってしまいました。もう修正されなくて大丈夫ですからね。ありがとうございました。

2013/02/14 12:35:00
id:gong1971 No.2

gong1971回答回数443ベストアンサー獲得回数682013/02/13 22:21:55ここでベストアンサー

ポイント100pt

ActiveCell.FormulaR1C1 = "=SUBSTITUTE(RC[41],"".jpg"","""")&""" & k2 & """"

k2は文字列変数なので""内に書いてしまうと、k2という固定の文字列で処理されてしまいます。

-----
以下、補足。

元の数式では、 ) の後の " が不要なのと、
k2 を固定文字列(""内)に入れているのが正しくないですね。


きゃづみぃさんの回答と私の回答の違いですが、
きゃづみぃさんの回答では .jpg を入力した文字列で置換しているのに対し、
私の回答では、 .jpg を置換で消したあと、後ろに入力した文字列を連結しています。

もし、AP列のセルに .jpg が無かった場合、私の回答では強制的に入力した文字列を連結し、
きゃづみぃさんの回答では入力した文字が連結されません。

id:naranara19

完ぺきでした。わかりやすい解説にも感謝します。

2013/02/14 02:27:49
id:oil999 No.3

oil999回答回数1728ベストアンサー獲得回数3202013/02/13 22:37:11

ポイント70pt

SUBSTITUTEはワークシート関数なので、Application.WorksheetFunction.SUBSTITUTE のようにして呼び出します。
それよりも Replace を使った方が簡単で、下記のようになります。

Dim k2 As String
Dim r As Long

'行列の行が2からスタート
k2 = InputBox("文字列", Title:="特定の文字列を入れてください", Default:="")

For r = 2 To 16
    Cells(r, 1).Value = Replace(Cells(r, 42).Value, ".jpg", "") & k2
Next r
id:naranara19

こちらも完ぺきでした。しかもわかりやすく、助かりました。元の質問に対しては、gong1971さんがより近いと思いますので、いるか賞はgong1971さんになりますが、感謝します。

2013/02/14 02:32:20

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません