次の方法で共有

マクロの別ファイルの情報の照合について

Anonymous
2017-05-16T07:31:44+00:00

お世話になっています。

マクロの初心者からの質問となります。

下記のようなデータベースがエクセル上にあると考えてください。

ファイル名:履修一覧

ABCDEFG学生番号レコード名称所属学科講義1講義2講義3講義4A00001111○田○也○○科A00002222△木△郎■■科A00003333■野■子△△科ファイル名:申込書

ABCDEF学生番号氏名受講する講義1受講する講義2受講する講義3受講する講義4A00001111○田○也ABCD現在、ファイル「申込書」を自動的に読み込み、学生番号からvlookupのような処理を行い、ファイル「履修一覧」に書き込むマクロを構築しようとしています。

コードは下記のように現在書いています。

Sub データ変更マクロ()

    Dim fileNames As Variant

    Dim username As Variant

    Dim i As Long

    fileNames = Application.GetOpenFilename(MultiSelect:=True)

    If IsArray(fileNames) = True Then

        For lp = 1 To UBound(fileNames)

            Workbooks.Open (fileNames(lp))

            username = ActiveWorkbook.Worksheets("Sheet1").Range("C16").Value

            ' マクロ搭載ブックのシート

            Dim tSht As Worksheet

            ' 申請書

            Dim aSht As Worksheet

            ' オブジェクト変数に設定する。

            Set tSht = ThisWorkbook.Worksheets("履修一覧")

            Set aSht = ActiveWorkbook.Worksheets("申込書")

            For i = 2 To 15000

            If tSht.Range("A" & i) = username

            ' 申請内容を転記する

            tSht.Cells(i, 4).Cells(lp, 1).Value = aSht.Range("C2").Value

            tSht.Cells(i, 5).Cells(lp, 1).Value = aSht.Range("D2").Value

            tSht.Cells(i, 6).Cells(lp, 1).Value = aSht.Range("E2").Value

            tSht.Cells(i, 7).Cells(lp, 1).Value = aSht.Range("F2").Value

            Else: i = i + 1

            End If

            Next

            ActiveWorkbook.Close

        Next

    End If

End Sub

以上のように書き込んで実行しようとすると、エラーが発生してしまいます。

太字のところに問題があると思うのですが、「履修一覧」と「申込書」の学生番号を比較し、一致したら該当の行のDからGの部分を書き換える、ということがいろんなサイトを見てもどうしてもできず、困り果てています。

お手数ですが、上記のコードのどこに問題があるのか、他にいいコードの書き方があるのか、ご教授いただければ幸いです。

よろしくお願いいたします。

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2017-05-16T12:40:04+00:00

太字の行に then が必要なのではないでしょうか?

この回答は役に立ちましたか?

0 件のコメント コメントはありません

1 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2017-05-19T06:18:38+00:00

    お世話になっております。

    すみません。ご回答ありがとうございました。

    直したらうまくいきました。

    コードの中身を勉強しながら改良を続けます。

    ありがとうございました。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません