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

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

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

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

1回答

1684閲覧

VBAの登録ボタン押下により、別シートへデータを登録していきたい

shogakusha

総合スコア12

VBA

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2021/05/10 02:27

前提・実現したいこと

VBAの登録ボタン押下により、入力データ(社員情報)を別シートにマスタデータとして次々に登録したいのですが、1レコードしか登録されません。
なぜ1レコードしか登録されないのかわからないため、アドバイスをいただけませんでしょうか。
ご教示の程、よろしくお願いいたします。

該当のソースコード

VBA

1Sub Touroku_Click() 2 3 Dim sht As Worksheet 4 Set sht = Worksheets("社員マスタ") 5 6 Dim LastRow As Integer 7 LastRow = Cells(Rows.Count, 2).End(xlUp).Row + 1 8 9 'MsgBox LastRow 10 11 If Range("E3").Value <> "" Then 12 sht.Range("B" & LastRow) = Range("E3").Value 13 End If 14 15 If Range("J3").Value <> "" Then 16 sht.Range("C" & LastRow) = Range("J3").Value 17 End If 18 19 If Range("E5").Value <> "" Then 20 sht.Range("D" & LastRow) = Range("E5").Value 21 End If 22 23 If Range("E7").Value <> "" Then 24 sht.Range("E" & LastRow) = Range("E7").Value 25 End If 26 27 If Range("J7").Value <> "" Then 28 sht.Range("F" & LastRow) = Range("J7").Value 29 End If 30 31 If Range("M7").Value <> "" Then 32 sht.Range("G" & LastRow) = Range("M7").Value 33 End If 34 35 'If Range("E9").Value <> "" And Range("E7").Value = "" Then 36 'MsgBox "入社年月日を入力してください" 37 38 If Range("E9").Value <> "" Then 39 sht.Range("H" & LastRow) = Range("E9").Value 40 End If 41 'End If 42 43 If Range("J9").Value <> "" Then 44 sht.Range("I" & LastRow) = Range("J9").Value 45 End If 46 47 If Range("M9").Value <> "" Then 48 sht.Range("J" & LastRow) = Range("M9").Value 49 End If 50 51 Select Case Range("BA11").Value 52 Case 1 53 sht.Range("K" & LastRow) = "未経験" 54 Case 2 55 sht.Range("K" & LastRow) = "1年未満" 56 Case 3 57 sht.Range("K" & LastRow) = "1年~3年" 58 Case 4 59 sht.Range("K" & LastRow) = "3年~5年" 60 Case 5 61 sht.Range("K" & LastRow) = "5年~10年" 62 Case 6 63 sht.Range("K" & LastRow) = "10年以上" 64 End Select 65 66 67 If Range("E13").Value <> "" Then 68 sht.Range("L" & LastRow) = Range("E13").Value 69 End If 70 71 If Range("J13").Value <> "" Then 72 sht.Range("M" & LastRow) = Range("J13").Value 73 End If 74 75 If Range("O13").Value <> "" Then 76 sht.Range("N" & LastRow) = Range("O13").Value 77 End If 78 79 If Range("T13").Value <> "" Then 80 sht.Range("O" & LastRow) = Range("T13").Value 81 End If 82 83End Sub

試したこと

最大行(LastRow)を定義してみました。

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

vba

1 Dim LastRow As Integer 2 LastRow = Cells(Rows.Count, 2).End(xlUp).Row + 1

これだと、アクティブなシート(社員情報シートかな?)の最終行を取得してます。

ご希望ことは、「社員マスタ」シートの最終行に、社員データを転記したいということだと思いますので、下記のようにシートを指定しないとダメだと思います。

vba

1 Dim sht As Worksheet 2 Set sht = Worksheets("社員マスタ") 3 4 Dim LastRow As Integer 5 LastRow = sht.Cells(sht.Rows.Count, 2).End(xlUp).Row + 1

投稿2021/05/10 03:26

hatena19

総合スコア34075

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

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

shogakusha

2021/05/10 03:42

ありがとうございます。 無事に解決できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問