エクセル2000のVBAで、入力セルのデータを転記したい

このQ&Aのポイント
  • エクセル2000のVBAを使用して、入力セルのデータを特定のセルに転記する方法を教えてください。
  • また、転記するデータは日付と為替相場であり、休日は空欄とする方法も教えてください。
  • 現在のマクロでは指定した列からデータが入力されてしまうため、正しい方法を教えてください。
回答を見る
  • ベストアンサー

エクセル2000のVBAで、入力セルのデータを転記したい

シート1の5行目あたり(例えばBの5)に入力用セルを置き、値を入れてボタンを押したら 11/6の部分にその値が表示されるようにしたい。 同じシート1の10行目に題名を入れている(下記ではABCD・・・の部分) 11行目からデータ内容を下に記載していく。 10    A      B     C       D 11 2007/11/1 $2000 月平均  半月平均 12 2007/11/2 $2300 月平均  半月平均 13 2007/11/3        月平均  半月平均 14 2007/11/4 $2350 月平均  半月平均 15 2007/11/5        月平均  半月平均 16 2007/11/6        月平均  半月平均 このデータは日付A列がもともと入っています。 毎日の為替相場をデータにしていきたいと考えてください。 土日祝日等は入力しませんので、入力しない日(休祝日だった場合)はそのまま空欄に していくと言う形です。11/5が休みだといって11/4の次のセルを11/6にすると言うのではありません。 1年365日あるのでデータとしては日付部分に365行分先に入力されている形です。 Bだけが空欄で、CとDはアベレージ計算式が入っています。 下のマクロを組みましたが、これだと17行目の指定した列から入力されてしまいます。 どのようにしたらいいのか教えていただけますか? 入力セルに日付も必要ですか? Sub ボタン1_Click() Application.ScreenUpdating = False Sheets("シート1").Select Range("B5").Select Selection.Copy Sheets("シート1").Select Range("A65536").Select Selection.End(xlUp).Select Selection.Offset(1, 0).Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Application.CutCopyMode = Flase Sheets("シート1").Select Range("C10").Select Selection.ClearContents Range("B5").Select End Sub

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

  • ベストアンサー
  • nekoron07
  • ベストアンサー率37% (69/184)
回答No.1

毎日、その日のデータを入力する、ということですね。 VBA内で「今日」の日付を取得する方法がわからなかったので、ワークシートでTODAY関数を使って取得する方法です。 B5のセルに数値、B6のセルに 「 =TODAY() 」と入力して、下記マクロを実行してみてください。 Sub ボタン1_Click() Dim souba, today   Range("B5").Select   souba = ActiveCell   today = ActiveCell.Offset(1, 0)   Range("A11").Select   Do While ActiveCell <> today    ActiveCell.Offset(1, 0).Range("A1").Select   Loop   ActiveCell.Offset(0, 1) = souba   Range("B5").Select End Sub

関連するQ&A

  • マクロでシート2~6のデータをシート1に転記したい

    マクロでシート2~6のデータをシート1に転記したいです。 シート2~6のデータを シート1に順番に転記したくてマクロの記録を利用して作成しました。 シート2~6は列は同じですが行数は異なります。 また行数は作業の都度異なります。 同じ記述が繰り返されているので もう少し記述が短くできるのではと思うのですが どうすればいいでしょうか? Sub データ更新() 'シート1の前回データをクリア Sheets("シート1").Select Range("A2:Q2").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlDown)).Select Selection.ClearContents Range("A2").Select Sheets("シート1").Select Range("A1").Select Sheets("シート2").Select Range("A1").Select 'ヘッダーも合わせて取得 Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("シート1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.End(xlDown).Select Selection.Offset(1, 0).Select Sheets("シート3").Select Range("A2").Select 'データのみ取得 Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("シート1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.End(xlDown).Select Selection.Offset(1, 0).Select Sheets("シート4").Select Range("A2").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("シート1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.End(xlDown).Select Selection.Offset(1, 0).Select Sheets("シート5").Select Range("A2").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("シート1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.End(xlDown).Select Selection.Offset(1, 0).Select Sheets("シート6").Select Range("A2").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("シート1").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.End(xlDown).Select Selection.Offset(1, 0).Select End Sub

  • エクセルでシート名をセル参照するマクロ

    いつもお世話になっております。 ワークシートをコピーする際、 B1セルの値を複製したシート名にするマクロを と思ってやってみましたが、 Sub Macro1() ' ' Macro1 Macro Sheets("0000").Select Application.CutCopyMode = False Sheets("0000").Copy Before:=Sheets(3) Range("B1").Select Selection.Copy Sheets("0000 (2)").Select Sheets("0000 (2)").Name = "0524" Range("B1").Select End Sub 5行目でB1セルをコピーしましたが、 シート名として命名されたのは、 "0524"という固定の値でした。 (そのときのB1セルの値です) このB1セルは日付データなのですが、 マクロを実行する日によって、 翌日だったり、3日後だったりします。 (営業日ベースなので) どのようにしたら、B1セルの値を シート名に使用できるでしょうか よろしくお願いいたします。

  • エクセルVBAについて

    こんにちわ! 今、エクセルでAシートの入力した項目をBのシートへデーターが入力できるようなシステムを以下のようにくみました。 そこでBシートにデーターが入力されるのですが20行まで入力すると入力できないようにしたいのですが、なかなか上手くいきません。 A1からF20まで書式のロックを外しそれ以外のセルは保護をかけたのですがその状態でVBAを使って20行以上入力できませんという感じのエラー表示をしたいのですが、どうすればいいでしょうか? VBAは初心者ですが宜しくお願いします。 Private Sub CommandButton1_Click() Dim row As Integer row = WorksheetFunction.CountA(Sheets("date").Columns(1)) + 1 Sheets("date").Cells(row, 1).Value = Range("B2").Value row = WorksheetFunction.CountA(Sheets("date").Columns(2)) + 1 Sheets("date").Cells(row, 2).Value = Range("B3").Value row = WorksheetFunction.CountA(Sheets("date").Columns(3)) + 1 Sheets("date").Cells(row, 3).Value = Range("B4").Value row = WorksheetFunction.CountA(Sheets("date").Columns(4)) + 1 Sheets("date").Cells(row, 4).Value = Range("B5").Value row = WorksheetFunction.CountA(Sheets("date").Columns(5)) + 1 Sheets("date").Cells(row, 5).Value = Range("B6").Value row = WorksheetFunction.CountA(Sheets("date").Columns(6)) + 1 Sheets("date").Cells(row, 6).Value = Range("B7").Value Sheets("統制入力").Select Range("B17").Select ActiveWindow.SmallScroll Down:=-9 Range("B3:B7").Select Selection.ClearContents Range("B1").Select End Sub

  • EXCELのVBAについて

    マクロのボタンで内容を削除する様に設定した所、 Dim re As Integer Sheets("投入シート").Select re = MsgBox("入力データをクリアします。" & vbCrLf & vbCrLf & "よろしいですか?", vbOKCancel, "クリア確認") If re <> vbCancel Then Sheets("投入シート").Select ActiveSheet.Unprotect Range("a1:c30").Select Selection.Copy Application.CutCopyMode = False Selection.Copy Sheets("work").Select Range("A1").Select ActiveSheet.Paste Sheets("投入シート").Select ActiveSheet.Unprotect Range("c4:c30").Select Selection.ClearContents Range("f31").Select Selection.Copy Range("c9").Select ActiveSheet.Paste Range("f33").Select Selection.Copy Range("c11").Select ActiveSheet.Paste Range("f32").Select Application.CutCopyMode = False Selection.Copy Range("c14").Select ActiveSheet.Paste Range("c4").Select Application.CutCopyMode = False 'ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End If Sheets("投入シート").Select Range("c4").Select End Sub この様に入力したのですがセルのC11の計算式だけセル番号が消えてしまいます。 どうしてでしょうか?ご指導をお願いします。

  • エクセルマクロ 繰り返して、別のシートへコピーしたい

    エクセルマクロ 繰り返して、別のシートへコピーしたい マクロ初心者のため、やり方が全くわかりません。 どなたか教えてください。 やりたいことは、 コピーするシートはあらかじめ作成しています。 簡素化の方法がわからないので、 とりあえず自分で作ってみたものが下にあるものです。 繰り返す方法がわからないので、 どなたか教えてください。 よろしくお願いします。 以下、作成したマクロです。 1行目から10行目まで繰り返したくて、 1行目から2行目のセルの移動の差は10行目までかわりません。 '1行目 Sheets("Sheet1").Select Range("B14:C14").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet1").Select Range("B15:C17").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B1").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False '2行目 Sheets("Sheet1").Select Range("B18:C18").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("A2").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet1").Select Range("B19:C21").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B2").Select Range("B2").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False

  • EXCELマクロ セルに入力したシート名から参照

    よろしくお願いします。 複数のシートがあり、それぞれ 1109,1110,1111,1112,1201,1202,1203,1204,1205 と名前がついています。 それぞれのシートには月毎のデータが入っています。 Sub Macro1() Columns("F:J").Select Selection.ClearContents Sheets("1205").Columns("A:E").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range("C4:E5"), CopyToRange:=Range("F2:J2"), Unique:=False End Sub ↑のマクロをSheet3で作りましたが、4行目の「Sheets("1205")」の1205の部分を可変で作れればと 思っています。Sheet3のC3セル内に入力したシート名(1109や1203等)でフィルタ出来ると助かります。 どうぞよろしくお願いします。

  • excel vba DATAの日集計

    excel vba DATAの日集計 いつもお世話になっています。 "DATA"シートのセル"D2"の日付を変えると表の数値が変わるようにしています。 その日毎のデータを"集計"シートの日別の表に飛ぶようにしているのですが、 1日分の転記するセル数が多く、Select Caseで31日分のコードを書くと、あまりにも プロシージャーが大きくなります。(Case1からCase31・・・結果分割してますが) FOR NEXT なのかな~、もっと効率のいい書き方がありましたらよろしくお願いします。 例:"集計"シート1日分は、9行となります。それぞれ"DATA"シートからの転記です。"DATA"シートのF5+F10,G5+G10~AC5+AC10までそれぞれの値を"集計"シートのG5からAD5まで、F6+F12,G6+G12~AC6+AC12までそれぞれの値を"集計"シートのG13からAD13までといった具合です (日の9行はそれぞれ決まったある行とある行の加算です、これが31日分の行があります) Sub macro() Dim myrng As Range Dim c As Range Set myrng = Sheets("DATA").Range("D2") For Each c In myrng Select Case c.Value Case 1 '1行目 Sheets("集計").Range("G5").Value = Sheets("DATA").Range("F5") + Sheets("DATA").Range("F10") | | Sheets("集計").Range("AD5").Value = Sheets("DATA").Range("AC5") + Sheets("DATA").Range("AC10") | | '9行目Sheets("集計").Range("G13").Value = Sheets("DATA").Range("F6") + Sheets("DATA").Range("F12") | | Sheets("集計").Range("AD13").Value = Sheets("DATA").Range("AC6") + Sheets("DATA").Range("AC12")

  • 【エクセル VBA マクロ】

    シートAの日付を確認してデータをコピーし、シートBの該当する日付の列に売り上げを貼り付けるというマクロを組みたいです。 他の方達のを参考にしながら作成しましたが、実行をすると「エラー1004」 Matcheプロパティが見つからないというエラーが出ます。 どなたか原因と対策を教えてください。 Sub() Sheets("シートA").Select Range("J3:J10000").Select ※売上データ Selection.Copy 検査値 = Range("R2").Value ※日付データ Sheets("シートB").Select Set 検索範囲 = Range("J4:AN4") ※日付データ 列 = Application.WorksheetFunction.Match(検査値, 検索範囲, 0) Cells("4, 9" + 列).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,SkipBlanks:False, Transpose:=True End Sub

  • ExcelのVBAでできますか?

    こんにちは。 項目1 項目2 あ a1 あ a2 あ a3 あ a4 い b1 い b2 い b3 い b4 い b5 い b6 い b7 というデータがあり、これを別シートに 項目1 項目2 項目3 項目4 項目5 項目6 項目7 項目8 あ a1 a2 a3 a4 い b1 b2 b3 b4 b5 b6 b7 と表示させたいです。 が、VB初心者なので「あ」のところまでしかできませんでした。 実際のデータは「い」から下もずーっとあるので変数などを使わなくてはいけないのでしょうが、よくわかりません。 どうしたらうまくいくでしょうか? ここまで自分でやってみました。 Range("A2").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="あ" Range("A2").Select Selection.Copy Sheets.Add ActiveSheet.Paste Sheets("Sheet1").Select Range("B2:B15").Select Application.CutCopyMode = False Selection.Copy Sheets(1).Select Range("B1").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True

  • エクセル2000VBA コマンドボタンがうまく動きません

    こんにちは、VBA初心者です。 2枚のシートがあり、「入力」というシートの任意のセルを、「出力」という別シートにコピーするという作業をコマンドボタンによって行いたいと思っています。 自分で作ってみたものは、このようになります。 Private Sub 任意の行のコピー・印刷_Click() Application.ScreenUpdating = False 'セル内容コピー Selection.Copy Sheets("出力").Select Range("A9").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("入力").Select ActiveCell.Offset(0, 1).Select Application.CutCopyMode = False Selection.Copy Sheets("出力").Select Range("C9").Select (以下略) ところが、これだと 「実行時エラー1004 RangeクラスのSelectメソッドが失敗しました」と表示され、デバッグをかけると6行目のRange("A9").Selectが黄色く反転した状態になります。 どうしてでしょうか。 同じ内容のものをマクロで登録し、実行すると、何の問題もなく動くのですが… ほとほと困っております。 どうかよろしくお願いします。

専門家に質問してみよう