質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

493閲覧

Excel VBA 各行に対して末尾に「_H,_L」を追加したい

2017yamaguchi

総合スコア14

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/05/13 02:23

前提・実現したいこと

vba初心者です。
Excel vbaで各行に対して、下図のように、それぞれ_H,_Lを追加するvbaを作りたいです。
For文やif文を組み合わせて実装できると思うのですが、どのように作ればよいかわかりません。
実装方法を教えてください。

イメージ説明

補足情報(FW/ツールのバージョンなど)

excel2019を使用

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決しました。

  • 2つの行変数row1,row2を定義して使用すること、
  • 空欄部分があってもプログラムを終了しないように
    "Cells(Rows.Count, 1).End(xlUp).row"

を使用することで解決しました。

Excel

1Public Sub uRunWork04() 2 Dim row1 As Integer 3 Dim row2 As Integer 4 Dim row1_max As Integer 5 Dim s As String 6 7 Dim ap As Excel.Application 8 Dim wb As Workbook 9 Dim ws As Worksheet 10 Set ap = GetObject(, "Excel.Application") 11 Set wb = ap.ThisWorkbook 12 Set ws = wb.Worksheets("_work04") 13 14 ws.Activate 15 '最終行を取得 16 row1_max = Cells(Rows.Count, 1).End(xlUp).row 17 18 'D:F列クリア 19 ws.Range("D1:F2000").Select 20 Selection.ClearContents 21 ws.Range("A1").Select 22 23 row2 = 1 24 For row1 = 1 To row1_max 25 26 s = ws.Cells(row1, 3) 27 If s = "" Then 28 row2 = row2 + 2 29 Else 30 ws.Cells(row2, 7).Value = s + "_H" 31 row2 = row2 + 1 32 ws.Cells(row2, 7).Value = s + "_L" 33 row2 = row2 + 1 34 End If 35 36 Next 37 38 Set ws = Nothing 39 Set wb = Nothing 40 Set ap = Nothing 41End Sub

投稿2021/05/13 03:48

2017yamaguchi

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問