
入力表と集計表を作成し入力シートの入力表にデータを入れてマクロを実行すると集計表にレコード転記されるようにしました。
集計表シートに転記することは出来たのですが入力表でデータを修正した後集計表に上書き保存する方法がわかりません。
もしご存じの方がいたらご教示お願いいたします。
下記のコードで転記をしています。
Sub ボタン1_Click()
Dim lastRow As Long
lastRow = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("集計表").Cells(lastRow + 1, 1) = Worksheets("入力表").Cells(1, 2)
Worksheets("集計表").Cells(lastRow + 1, 2) = Worksheets("入力表").Cells(2, 2)
Worksheets("集計表").Cells(lastRow + 1, 3) = Worksheets("入力表").Cells(3, 2)
Worksheets("集計表").Cells(lastRow + 1, 4) = Worksheets("入力表").Cells(4, 2)
Worksheets("集計表").Cells(lastRow + 1, 5) = Worksheets("入力表").Cells(5, 2)
Worksheets("集計表").Cells(lastRow + 1, 6) = Worksheets("入力表").Cells(6, 2)
Worksheets("集計表").Cells(lastRow + 1, 7) = Worksheets("入力表").Cells(7, 2)
Worksheets("集計表").Cells(lastRow + 1, 8) = Worksheets("入力表").Cells(8, 2)
Worksheets("集計表").Cells(lastRow + 1, 9) = Worksheets("入力表").Cells(2, 3)
Worksheets("入力表").Cells(1, 2).Clear
Worksheets("入力表").Cells(2, 2).Clear
Worksheets("入力表").Cells(3, 2).Clear
Worksheets("入力表").Cells(4, 2).Clear
Worksheets("入力表").Cells(5, 2).Clear
Worksheets("入力表").Cells(6, 2).Clear
Worksheets("入力表").Cells(7, 2).Clear
Worksheets("入力表").Cells(8, 2).Clear
Worksheets("入力表").Cells(2, 3) = ""
MsgBox "転記しました。"
End Sub
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
#1です
訂正します。;;
間違え
.Range("B1:B8", "C2").ClearContents
正しくは
.Range("B1:B8, C2").ClearContents
書式などすべてをクリアーするなら.Clearで
No.1
- 回答日時:
こんばんは、
>修正した後集計表に上書き保存する方法がわかりません。
新規で書き込む時は、
lastRow = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row
lastRow + 1
で行番号を特定していますが、上書きする場合、対象の行番号をどのように取得するかが、問題です。
つまり、入力表のどこかのセル(一意の値が望ましい)の値で
集計表の該当セルを特定して行番号を取得してlastRow + 1の代わりに使えば、その行の値が上書きされます。
入力表のB1セルの値が一意の値ならその値をキーワードにして集計表のA列を探せば良いと思います。 探し方は色々方法があります。
一意の値で1行目からデータがあるなら、ExcelのMATCH関数でも取得できると思いますし、Findや範囲をべたにループしても取得できます。
書き換えを行う時の入力表の情報を精査してどの値で集計表の該当セルを探すか考えてみましょう。
少し気になったのですが、オブジェクトSheet2は、Worksheets("集計表")の事でしょうか?もし違うなら、違うシートの新規行(lastRow + 1)を取得する意味が解りません。。同じなら、オブジェクト名にするかシート名にするか、またはインデックスなどで統一した方が後に良いと思います。
分かり難いかも知れませんが、ご質問のコードを添削して、
入力表C2セルの値で探し出してその行を上書きするサンプルです。
Sub ボタン1_Click()
Dim TrgRow As Long
Dim keyword As String
Dim Ary
Dim SH_集計表
Set SH_集計表 = Worksheets("集計表")
keyword = Worksheets("入力表").Range("C2").Value
On Error Resume Next
TrgRow = SH_集計表.Range("I1", SH_集計表.Cells(Rows.Count, "I").End(xlUp)) _
.Find(What:=keyword, LookIn:=xlValues, LookAt:=xlWhole).Row
If TrgRow >= 1 Then
With Worksheets("入力表")
Ary = .Range("B1:B8")
SH_集計表.Cells(TrgRow, 1).Resize(, 8).Value = _
Application.Transpose(Ary)
SH_集計表.Cells(TrgRow, 1).Offset(, 8).Value = .Cells(2, "C").Value
.Range("B1:B8", "C2").ClearContents
End With
MsgBox "転記しました。"
Else
MsgBox "該当行が見つかりません。"
End If
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
抽出したデータを修正して元のセルに上書きしたい
Access(アクセス)
-
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
-
エクセルのマクロで検索・抽出したデータを修正及び更新して元データに反映
Excel(エクセル)
-
-
4
【マクロ】転記ツール。転記先にデータがある場合、上書きするか消すか質問をして欲しい
Excel(エクセル)
-
5
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
6
エクセルVBAのエディターが上書きモード?に・・・・。
Excel(エクセル)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
9
ExcelVBAのユーザーフォームで一度保存したデータを同じフォームに呼び出して編集する方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数のExcelファイルをマージす...
-
VBAでCOPYを繰り返すと、処理が...
-
【ExcelVBA】5万行以上のデー...
-
エクセルの改行について
-
【マクロ】並び替えの範囲が、...
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
Vba FileSystemObject オブジェ...
-
VBA ユーザーフォーム ボタンク...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
VBA 入力箇所指定方法
-
vb.net(vs2022)のtextboxのデザ...
-
[Excel VBA]特定の条件で文字を...
-
Vba Array関数について教えてく...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】開いているブックの...
-
エクセルのマクロについて教え...
-
VBA 最終行の取得がうまくいか...
-
Excel マクロについて詳しい方...
-
エクセルのVBAコードと数式につ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Java、配列の問題を教えて欲し...
-
splitを使ってスペース位置で文...
-
VBAについて質問。別シートに転...
-
上書き保存されない
-
VBAで連番に色を付けたい
-
VBA SubTotalで集計を出そうと...
-
VBAでIEを最小化したい
-
ImageIOクラスでの画像入出力時...
-
Caps Lockキーの解除
-
リース初心者です 利子率の計...
-
VBA 条件が一致した場合の...
-
プルダウンで選択すると隣のセ...
-
Excelでカーソルが逆に動く
-
Excel2010の並べ替えで行の高さ...
-
エクセルで作った書類に、パン...
-
エクセルで複数の勤務時間ごと...
-
60進法で複数セルの足し算、引...
-
エクセル関数で {=TABLE(,セル...
-
エクセルシートを重ねることは...
-
WORDで先頭ページを追加するには?
おすすめ情報