• ベストアンサー

マクロ)入力フォームの内容を、指定したセルに反映

入力フォームに入れた内容を、別ブックの指定したセルに反映したいです。正確には指定したセルの値の頭から6文字目までを置き換えたいのです。※※※※※※000 ←※の部分だけ いまのところ戻り値を利用して、指定したセルに置き換えるところまではできたのですが、入力フォームに入れた内容まんま上書きされるので(000が消えてしまう)目的とズレてしまいました。 頭から何文字目…を変換はどのような方法があるのでしょうか。

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

  • ベストアンサー
  • dedypraja
  • ベストアンサー率40% (88/220)
回答No.4

入力フォームに入力された内容の一部を指定したセルに反映するには、以下のようなマクロを作成することができます。 Sub UpdateCellValue() ' 入力フォームから入力された文字列を取得 Dim inputString As String inputString = InputBox("入力してください", "入力フォーム") ' 反映先のセルを指定 Dim targetCell As Range Set targetCell = Workbooks("Book2.xlsx").Worksheets("Sheet1").Range("A1") ' 反映先セルの値を変更 Dim currentValue As String currentValue = targetCell.Value Dim newValue As String newValue = Left(inputString, 6) & Right(currentValue, Len(currentValue) - 6) targetCell.Value = newValue End Sub このマクロは、入力フォームから入力された文字列の頭から6文字目までを、指定したセルの値の頭から6文字目までと置き換えます。反映先のセルは、Workbooks("Book2.xlsx").Worksheets("Sheet1").Range("A1") のように指定してください。また、置き換えたい文字列の位置が6文字目でない場合は、Left 関数の第2引数を変更してください。

1930orz
質問者

お礼

主業務が入ってしまい、遅くなりました。 変換できました! 今後の参考にさせていただきます。 ありがとうございます。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

これはユーザーフォームに関連した質問とするのは適当でないのでは。VBAの問題というだけ。 例ですが、下記をやると、意味的におかしくなる。 「市」を見つけて、それより以左を置き換えるとかが必要かな。 本質問は、意味的な具体例(パターン)を挙げて質問しなければならないのでは。または説明不足とか。 Sub test01() x = Cells(1, "A") '武蔵野市東町2丁目" MsgBox x, Len(x) tx = "調布市" MsgBox tx, Len(tx) y = tx & Right(x, Len(x) - Len(tx)) MsgBox y '調布市市東町2丁目となる End Sub

1930orz
質問者

お礼

先日の質問も、アドバイスくださりありがとうございました。お礼を打っていないまま操作間違い締まってしまい申し訳ありません。 勉強になります、今後の参考にさせて頂きます。 ありがとうございました!

  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.2

No.1の追加です。 データが以下のように ※※※※※※000※※※※※※ 変換したい文字列と同じ文字列が変換元の文字列に複数存在した場合 結果 ABCDEF000ABCDEF のなってしまうので 変換回数を指定した以下の方がいいかもしれません Replace(Range("A1").Value, Left(Range("A1").Value, 6), "ABCDEF", 1, 1) 結果は最初の6文字だけ変換 ABCDEF000※※※※※※

  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.1

たとえば Replace(Range("A1").Value, Left(Range("A1").Value, 6), "ABCDEF") でA1の最初の6文字までをABCDEFに変換します。

1930orz
質問者

お礼

先日の質問も、アドバイスくださりありがとうございました。お礼を打っていないまま操作間違い締まってしまい申し訳ありません。仰る通りシートの指定抜けと、Rangeでのセル指定が悪さしていたようでした。 参考にさせていただきます。ありがとうございます。