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

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

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

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

Q&A

2回答

535閲覧

【VBA】AシートからBシートへの転記

Maeda

総合スコア1

VBA

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

0グッド

0クリップ

投稿2022/05/24 08:47

編集2022/05/27 01:35

質問させていただきます。
Aシートは下記の通りです。イメージ説明

Bシートは下記の通りです。イメージ説明

Aシートで入力した情報をBシートに転記したいです。
例)Aシートで入力したAさんは5月6日欠勤です。 Bシートのセル「K7」に「欠勤」、「L7」に「5.5」と入力したいです。

下記、途中まで組んでいたマクロですが、訳が分からなくなりました。
ご教示いただけますと幸いです。宜しくお願い致します。

Sub 連絡表シートに入力した情報である種類と時間を勤怠シートに転記する() Dim Renrakuhyou As Worksheet Dim Kintaideta As Worksheet Dim MyList() As Variant Dim LastRow As Long Dim i As Long Dim j As Long Dim Cnt As Long Set Renrakuhyou = Worksheets("連絡表") Set Kintaideta = Worksheets("勤怠データ") Renrakuhyou.Select '連絡表シートの値を配列へ格納 MyList = Renrakuhyou.Range(Cells(4, 4), Cells(Cells(Rows.Count, 4).End(xlUp).Row, 5)) '勤怠データシート 最終行 LastRow = Kintaideta.Cells(Rows.Count, 4).End(xlUp).Row '連絡表シート 最終行までループ For i = 2 To LastRow Cnt = 0 '配列ループ For j = 2 To UBound(MyList) '日づけが一致したら If Renrakuhyou.Cells(i, 7) = MyList(j, 1) Then End If Next j Next i End Sub

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

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

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

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

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

meg_

2022/05/24 10:43

コード全体を「コードの挿入」で記入してください。 > 下記、途中まで組んでいたマクロですが、訳が分からなくなりました。 どこで詰まってしまったのでしょうか?
Maeda

2022/05/27 01:38

失礼いたしました。コードの挿入で記入いたしました。 連絡表のデータ(Aシートの日付・届出内容・時間)が勤怠データ(Bシートの該当する日付の種類・時間)にうまく転記出来ません。
guest

回答2

0

サンプルとしてのコードとして捉えてください
サンディプログラマ 独学で覚えた70代のシニアですので
モニター半分をシート、画面もう半分をモジュール画面にして「F8]を押しながらプログラムをチェックしていきます
イメージ説明
サンプルとしてコード記載します
Sub Macro1()
Dim i As Long
Dim j As Long
Dim n As Long
Dim shimei As String
Dim hiduke As Date
Dim naiyo As String
Dim jikan As Single
'
Sheets("連絡表").Select
For i = 5 To Cells(Rows.Count, 4).End(xlUp).Row
Cells(i, 3).Select
shimei = Cells(i, 3)
hiduke = Cells(i, 4)
naiyo = Cells(i, 5)
jikan = Cells(i, 8).Value
'勤怠データシートに転記
Sheets("勤怠データ").Select
n = Cells(Rows.Count, 5).End(xlUp).Row
For j = 2 To n
Cells(j, 5).Select
If Cells(j, 5) = shimei And Cells(j, 7) = hiduke Then
Cells(j, 11) = naiyo
Cells(j, 12) = jikan
End If
Next j
Sheets("連絡表").Select
Next i

End Sub
イメージ説明
この様にしたかったのかな?

投稿2022/06/07 15:20

syousuke.33

総合スコア312

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

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

0

とりあえず、以下を直してみてはどうでしょう。

'連絡表シートの値を配列へ格納 MyList = Renrakuhyou.Range(Cells(4, 4), Cells(Cells(Rows.Count, 4).End(xlUp).Row, 5))
'日づけが一致したら If kintaideta.Cells(i, 7) = MyList(j, 1) Then

<追記>
こんな感じでしょうか。

Set Renrakuhyou = Worksheets("連絡表") Set Kintaidata = Worksheets("勤怠データ") Dim shimei, hiduke, naiyo, jikan With Renrakuhyou For i = 5 To .Cells(Rows.Count, 4).End(xlUp).Row If .Cells(i, 4) <> "" Then '連絡表の値取得 If .Cells(i, 3).Value <> "" Then shimei = .Cells(i, 3).Value hiduke = .Cells(i, 4).Value naiyo = .Cells(i, 5).Value jikan = .Cells(i, 8).Value '勤怠データシートに転記 With Kintaidata For j = 2 To .Cells(.Rows.Count, 4).End(xlUp).Row If .Cells(j, 5).Value = shimei And .Cells(j, 7).Value = hiduke Then .Cells(j, 11).Value = naiyo .Cells(j, 12).Value = jikan End If Next End With End If Next End With

投稿2022/05/24 10:52

編集2022/05/27 02:50
jinoji

総合スコア4585

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

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

Maeda

2022/05/27 01:40

修正しました。自分でも調べてみましたが上手く行きません…。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問