プロが教える店舗&オフィスのセキュリティ対策術

以下のVBAで該当文字列の前後に付与したい。


前に付与  abc
ユーザーID 12345
後に付与  @sample.com

結果 abc12345@sample.com

下記の内容だと1対象分なので、これを対象数分に適応したいです。

また対象数は一律ではないので、該当数を最終行まで実行したいです。

対象をa2〜最終行まで処理させる為にはどうしたら良いでしょうか?
前後は変わらず中にくるユーザーIDのみa2列から参照させたいです。(都度対象者数が変動する)


Sub address()

'文字列格納用の変数を用意する
Dim Text As String
Dim BeforeText As String
Dim AfterText As String

'文字列を変数に代入する
Text = Cells(1, 2).Value
BeforeText = Cells(2, 2).Value
AfterText = Cells(3, 2).Value

'文字列の先頭と末尾に文字列を追加
Cells(5, 2).Value = BeforeText & Text & AfterText

End Sub

説明がうまくできず申し訳ございませんが、ご教示いただけますと幸いです。

A 回答 (3件)

対象数分、を明確にしましょう。



案1. A1セルに書いた数
Range("A1").Value で数を読み出し

案2. A2セルから下方向に領域の終わりまでの行数
Range("A2").End(xlDown).Rows.Count で数を読み出し
参考)
https://docs.microsoft.com/ja-jp/office/vba/api/ …

数が決まれば単純な繰り返しです。

For r=1 To 数
_ 行 = 先頭行+(r-1)
_ Cells(行,5).Value = 前 & Cells(行,1).Value & 後
Next
    • good
    • 0

こんばんは、


列と行を間違えていませんか?
>対象をa2〜最終行まで処理させる為にはどうしたら良いでしょうか?
前後は変わらず中にくるユーザーIDのみa2列から参照させたいです。(都度対象者数が変動する)

だとすると・・こんな感じです
Sub address()
Dim i As Long 'ループカンター変数
Const firstText As String = "abc" '定数
Const lastText As String = "@sample.com" '定数
'2行目から最終行まで繰り返し処理
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
'文字列の先頭と末尾に文字列を追加 (B列に出力)
Cells(i, "B").Value = firstText & Cells(i, "A").Text & lastText
Next
End Sub


Cells(Rows.Count, "A").End(xlUp).Rowは値のあるA列最終行番号


一番下のセル(A1048576セル)からCtrl+↑を押した時に選択されるセルの行№
    • good
    • 0

こんばんは。



直接の回答ではありませんが、
セルA2:ユーザーID があって、これは完全に固定?
他のデータがどの様に並んでいるのでしょうか?B2とC2、B3とC3・・・?
マクロだと、B列にデータがある様な感じですが。。。
書き出しは1行空けて記載されるのでしょうか?
例題を画像で載せて貰えると解り易いかと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!