- ベストアンサー
マクロを使用して転記する方法
- マクロを使用して、入力シートの特定のセルの値をAIRシートに転記する方法を説明します。
- 転記するセルの範囲をA1からA3までに拡大する方法についても解説します。
- 入力シートのA1からA3までの値を全て転記することができるようにする手順を説明します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> Aは反映されるのにLは反映されません。 変ですねぇ、こちらではうまく行くのですが・・・。 ひょっとして半角のLじゃなく全角のLをいれてませんか? 一応、半角でも全角でも、小文字でも大文字でも、前後に気づかずにスペースが入っててもいいように修正しました。(こういうのを「fool proof」と言います。) Sub 入力する() Dim AIRシート最終行 As Long, LOCALシート最終行 As Long Dim i As Integer With Sheets("入力シート") For i = 1 To 3 Select Case StrConv(Trim(.Cells(i, "A").Value), vbNarrow + vbUpperCase) Case "A" AIRシート最終行 = Sheets("AIRシート").Cells(Rows.Count, "A").End(xlUp).Row + 1 If AIRシート最終行 = 30 Then MsgBox "AIRシートがいっぱいです " Exit Sub Else Sheets("AIRシート").Range("A" & AIRシート最終行).Value = .Cells(i, "B").Value End If Case "L" LOCALシート最終行 = Sheets("LOCALシート").Cells(Rows.Count, "A").End(xlUp).Row + 1 If LOCALシート最終行 = 30 Then MsgBox "LOCALシートがいっぱいです " Exit Sub Else Sheets("LOCALシート").Range("A" & LOCALシート最終行).Value = .Cells(i, "B").Value End If End Select Next End With End Sub
その他の回答 (3)
- merlionXX
- ベストアンサー率48% (1930/4007)
> AIRシートと同じようにもうひとつLOCALシートを作ってA1~A3に > AかLを入力すると各シートごとに転記をしたいのですが やりたいことは、こういうことですか? AやLを入力するのは、Sheets("入力シート")のA1~A3 マクロ実行により A1にAなら、Sheets("入力シート")のB1の値をSheets("AIRシート")のA列へ A1にLなら、Sheets("入力シート")のB1の値をSheets("LOCALシート")のA列へ A2にAなら、Sheets("入力シート")のB2の値をSheets("AIRシート")のA列へ A2にLなら、Sheets("入力シート")のB2の値をSheets("LOCALシート")のA列へ A3にAなら、Sheets("入力シート")のB3の値をSheets("AIRシート")のA列へ A3にLなら、Sheets("入力シート")のB3の値をSheets("LOCALシート")のA列へ ただし、Sheets("AIRシート")、Sheets("LOCALシート")が29行目まで行ったら、それ以上はメッセージを出して転記しない。 ということなら↓ Sub 入力する() Dim AIRシート最終行 As Long, LOCALシート最終行 As Long Dim i As Integer With Sheets("入力シート") For i = 1 To 3 Select Case .Cells(i, "A").Value Case "A" AIRシート最終行 = Sheets("AIRシート").Cells(Rows.Count, "A").End(xlUp).Row + 1 If AIRシート最終行 = 30 Then MsgBox "AIRシートがいっぱいです " Exit Sub Else Sheets("AIRシート").Range("A" & AIRシート最終行).Value = .Cells(i, "B").Value End If Case "L" LOCALシート最終行 = Sheets("LOCALシート").Cells(Rows.Count, "A").End(xlUp).Row + 1 If LOCALシート最終行 = 30 Then MsgBox "LOCALシートがいっぱいです " Exit Sub Else Sheets("LOCALシート").Range("A" & LOCALシート最終行).Value = .Cells(i, "B").Value End If End Select Next End With End Sub
お礼
ご理解いただいてありがとうございました。 早速やってみたのですが、 Aは反映されるのにLは反映されません。
- merlionXX
- ベストアンサー率48% (1930/4007)
すみませんがseikasanさんがなにをどうしたいのか理解できません。
お礼
説明がへたですよね・・・すいません。 いずれかではなく各セルごとにマクロが読み取って転記したいのですが。
- merlionXX
- ベストアンサー率48% (1930/4007)
A1~A3のいずれかがAだったら実行すればいいんですね? こういうことですか? Sub 入力する() With Sheets("AIRシート") If .Range("A1").Value = "A" Or .Range("A2").Value = "A" Or .Range("A3").Value = "A" Then Dim AIRシート最終行 As Long AIRシート最終行 = .Range("A65536").End(xlUp).Row + 1 If AIRシート最終行 = 30 Then MsgBox "AIRシートがいっぱいです " Exit Sub End If .Range("A" & AIRシート最終行).Value = Sheets("入力シート").Range("A1").Value .Range("B" & AIRシート最終行).Value = Sheets("入力シート").Range("B1").Value MsgBox "入力完了" End If End With End Sub
お礼
回答ありがとうございます。 すいません。質問内容が足りませんでした。 いずれかではなく例えば、 AIRシートと同じようにもうひとつLOCALシートを作ってA1~A3に AかLを入力すると各シートごとに転記をしたいのですが。 例えば A B 1 A 100 2 L 200 3 300 1行目は『A』を指定してるのでAIRシートに転記 2行目は『L』を指定してるのでLOCALシートに転記 3行目は『』指定がないので転記なし ということです。
お礼
すいません。 わたしの間違いでした。 ありがとうございました