人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

マクロ初心者です。

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

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


●質問者: リセール京都買取
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● きゃづみぃ
●20ポイント

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


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


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

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

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


リセール京都買取さんのコメント
うーん。ごめんなさい。k2のままだとエラーがでてしまいました。回答ありがとうございました。

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

2 ● gong1971
●100ポイント ベストアンサー

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

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

-----
以下、補足。

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


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

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


リセール京都買取さんのコメント
完ぺきでした。わかりやすい解説にも感謝します。

3 ● oil999
●70ポイント

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

リセール京都買取さんのコメント
こちらも完ぺきでした。しかもわかりやすく、助かりました。元の質問に対しては、gong1971さんがより近いと思いますので、いるか賞はgong1971さんになりますが、感謝します。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ