• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:転記の仕方)

マクロを使用して転記する方法

このQ&Aのポイント
  • マクロを使用して、入力シートの特定のセルの値をAIRシートに転記する方法を説明します。
  • 転記するセルの範囲をA1からA3までに拡大する方法についても解説します。
  • 入力シートのA1からA3までの値を全て転記することができるようにする手順を説明します。

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.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

seikasan
質問者

お礼

すいません。 わたしの間違いでした。 ありがとうございました

その他の回答 (3)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

> 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

seikasan
質問者

お礼

ご理解いただいてありがとうございました。 早速やってみたのですが、 Aは反映されるのにLは反映されません。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

すみませんがseikasanさんがなにをどうしたいのか理解できません。

seikasan
質問者

お礼

説明がへたですよね・・・すいません。 いずれかではなく各セルごとにマクロが読み取って転記したいのですが。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

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

seikasan
質問者

お礼

回答ありがとうございます。 すいません。質問内容が足りませんでした。 いずれかではなく例えば、 AIRシートと同じようにもうひとつLOCALシートを作ってA1~A3に AかLを入力すると各シートごとに転記をしたいのですが。 例えば    A      B 1   A     100 2   L      200 3        300 1行目は『A』を指定してるのでAIRシートに転記 2行目は『L』を指定してるのでLOCALシートに転記 3行目は『』指定がないので転記なし ということです。

関連するQ&A