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

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

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

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

Q&A

解決済

1回答

1988閲覧

VBA: 入力シートから別シートに転記

SatokoH

総合スコア9

VBA

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

0グッド

0クリップ

投稿2021/08/19 07:46

編集2021/08/19 07:51

ExcelVBAにおいて、入力シートに入力した内容を転記シートに反映させたいのですが、下記のケースの場合どのようにすればよいかご教示ください。

入力シートへ一通り入力したら、転記シート1行に転記。ということを繰り返します。

① 入力シートの受取人欄②は、入力する場合としない場合がありますが、最終行の1つ下に転記するという構文だと繰り返し入力すると記載行がずれてしまいます。どのようにすれば同じ行に転記されますでしょうか。

② 転記シートの受取人欄①には入力シートの2か所のセルを結合したい。
→ 入力シートの D8 が中国 もしくは ベトナム の場合、F8 とD10 を転記シートの受取人欄①に反映させる
D8が中国とベトナム以外の場合は、D10のみ転記シートの受取人欄①に反映させる。
F8はD8をプルダウンから選択することによって、文言が変わります。

大変恐縮ですが上記2つにつき教えてください。
どうぞよろしくお願いいたします

<入力シート>
イメージ説明
<転記シート>
イメージ説明

下記構文の場合、転記行がずれてしまう。またIF文が正しくないため、エラーになっております

Sub 起票シートに転記() Dim ws As Worksheet Set ws = Worksheets("起票") With Worksheets("入力シート") ws.Cells(Rows.Count, 2).End(xlUp).Offset(1) = .Range("D5") ws.Cells(Rows.Count, 4).End(xlUp).Offset(1) = .Range("D4") ws.Cells(Rows.Count, 5).End(xlUp).Offset(1) = .Range("D6") ws.Cells(Rows.Count, 6).End(xlUp).Offset(1) = .Range("D7") ws.Cells(Rows.Count, 7).End(xlUp).Offset(1) = if(range("D8")="中国"or"ベトナム" then Application.WorksheetFunction.Concat(.Range("F8"), Range("D10")) Else .Range ("D10") End If ws.Cells(Rows.Count, 8).End(xlUp).Offset(1) = .Range("D11") .Range("F9").Copy ws.Cells(Rows.Count, 9).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues .PrintOut .Range("D4:D11") = "" End With End Sub

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

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

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

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

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

guest

回答1

0

ベストアンサー

これでどうでしょうか。

VBA

1Sub 起票シートに転記() 2 Dim ws As Worksheet 3 Set ws = Worksheets("起票") 4 With Worksheets("入力シート") 5 Dim r 6 r = ws.Cells(Rows.Count, 2).End(xlUp).Row + 1 7 ws.Cells(r, 2) = .Range("D5") 8 ws.Cells(r, 4) = .Range("D4") 9 ws.Cells(r, 5) = .Range("D6") 10 ws.Cells(r, 6) = .Range("D7") 11 ws.Cells(r, 7) = IIf(.Range("D8") = "中国" Or .Range("D8") = "ベトナム", .Range("F8") & Range("D10"), .Range("D10")) 12 ws.Cells(r, 8) = .Range("D11") 13 ws.Cells(r, 9) = .Range("F9") 14 15 .PrintOut 16 .Range("D4:D11") = "" 17 End With 18End Sub 19

投稿2021/08/19 08:01

jinoji

総合スコア4585

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

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

SatokoH

2021/08/19 08:47

いつもありがとうございます。 とてもシンプルで わかりやすく、あっさり解決していただきましてありがとうございます。 IIF関数は初めて知りました。 大変勉強になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.45%

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

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

質問する

関連した質問