Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7645 / 13645 ツリー ←次へ | 前へ→

【37770】1つの入力フォームで2つのシートにコピーしたい。 16茶 06/5/18(木) 15:37 質問[未読]
【37773】Re:1つの入力フォームで2つのシートに... ハチ 06/5/18(木) 15:59 発言[未読]
【37774】Re:1つの入力フォームで2つのシートに... 16茶 06/5/18(木) 16:08 お礼[未読]
【37775】Re:1つの入力フォームで2つのシートに... ハチ 06/5/18(木) 16:13 発言[未読]
【37810】Re:1つの入力フォームで2つのシートに... 16茶 06/5/19(金) 9:06 お礼[未読]

【37770】1つの入力フォームで2つのシートにコピ...
質問  16茶 E-MAIL  - 06/5/18(木) 15:37 -

引用なし
パスワード
   先日はどうもありがとうございました。

今回もどうしてもわからないことができてしまい、ご質問させていただきます。

エクセル2003で、ある検査データのデータベースを作成しています。

目次−−
   |−入力
   |−集計
   |−巡回集計

このようなシート構成で、「入力」から同じ項目を「集計」と「巡回集計」へコピーしたいんですが、どうしてもうまくいきません。

私が作成したマクロは、
Sub データ登録マクロ()
'変数を使用することを設定します。(変数MyRowに長い整数を使用します。)
Dim MyRow As Long
'シート「集計」のB列を参照して入力されていない行を見つけ、行番号を取得します。
MyRow = Worksheets("集計").Cells(Rows.Count, "b").End(xlUp).Row + 1
'シート「入力」の項目をシート「集計」へコピーします。
With Worksheets("集計")
Cells(MyRow, "a").Value = Sheets("入力").Range("c5").Text
Cells(MyRow, "b").Value = Sheets("入力").Range("c6").Text
Cells(MyRow, "c").Value = Sheets("入力").Range("c7").Text
Cells(MyRow, "d").Value = Sheets("入力").Range("c8").Text
Cells(MyRow, "e").Value = Sheets("入力").Range("c9").Text
Cells(MyRow, "f").Value = Sheets("入力").Range("c10").Text
Cells(MyRow, "g").Value = Sheets("入力").Range("c11").Text
Cells(MyRow, "i").Value = Sheets("入力").Range("c12").Text
Cells(MyRow, "j").Value = Sheets("入力").Range("c13").Text
Cells(MyRow, "k").Value = Sheets("入力").Range("c14").Text
Cells(MyRow, "l").Value = Sheets("入力").Range("c15").Text
Cells(MyRow, "m").Value = Sheets("入力").Range("c16").Text
Cells(MyRow, "n").Value = Sheets("入力").Range("c17").Text

End With

End Sub

Sub 巡回集計用マクロ()
'変数を使用することを設定します。(変数MyRowに長い整数を使用します。)
Dim MyRow As Long
'シート「巡回集計」のB列を参照して入力されていない行を見つけ、行番号を取得します。
MyRow = Worksheets("巡回集計").Cells(Rows.Count, "b").End(xlUp).Row + 1
'シート「入力」の項目をシート「巡回集計」へコピーします。
With Worksheets("巡回集計")
Cells(MyRow, "b").Value = Sheets("入力").Range("c6").Text
Cells(MyRow, "e").Value = Sheets("入力").Range("c8").Text
Cells(MyRow, "f").Value = Sheets("入力").Range("c9").Text
Cells(MyRow, "g").Value = Sheets("入力").Range("c10").Text
Cells(MyRow, "h").Value = Sheets("入力").Range("c11").Text
Cells(MyRow, "i").Value = Sheets("入力").Range("c12").Text
Cells(MyRow, "k").Value = Sheets("入力").Range("c13").Text
Cells(MyRow, "j").Value = Sheets("入力").Range("c14").Text
Cells(MyRow, "l").Value = Sheets("入力").Range("c15").Text
Cells(MyRow, "m").Value = Sheets("入力").Range("c16").Text
Cells(MyRow, "n").Value = Sheets("入力").Range("c17").Text

End With

End Sub

Sub 消去()
'画面を更新しないようにします。
Application.ScreenUpdating = False
Sheets("集計").Select
Application.Run "データ登録マクロ"
Application.Run "巡回集計用マクロ"
Sheets("入力").Select
Range("c5:c17").Select
Selection.ClearContents
Range("c5").Select

End Sub


以上です。
この方法でマクロを実行すると、「集計」にはコピーされるのですが、「巡回集計」にはコピーされません。
どのようにしたらいいでしょうか?

【37773】Re:1つの入力フォームで2つのシートに...
発言  ハチ  - 06/5/18(木) 15:59 -

引用なし
パスワード
   ▼16茶 さん:

>With Worksheets("集計")
>Cells(MyRow, "a").Value = Sheets("入力").Range("c5").Text
>Cells(MyRow, "b").Value = Sheets("入力").Range("c6").Text

Cellsの頭に.がついてないんで、
Withが効いてないと思われます。
.Cells(MyRow, "a").Value = Sheets("入力").Range("c5").Text

同じSheetに2度 書き込みしてるのではないでしょうか?

Application.Run "データ登録マクロ"
Application.Run "巡回集計用マクロ"
の間に
Worksheets("巡回集計").Activate
を入れて確認してみては?

【37774】Re:1つの入力フォームで2つのシートに...
お礼  16茶 E-MAIL  - 06/5/18(木) 16:08 -

引用なし
パスワード
   >ハチ さん

>Worksheets("巡回集計").Activate
>を入れて確認してみては?

どうもありがとうございました。
ハチさんのご指摘通り、アクティブにしたら無事コピーできました。
ありがとうございました。

【37775】Re:1つの入力フォームで2つのシートに...
発言  ハチ  - 06/5/18(木) 16:13 -

引用なし
パスワード
   ▼16茶 さん:
>>ハチ さん
>
>>Worksheets("巡回集計").Activate
>>を入れて確認してみては?
>
>どうもありがとうございました。
>ハチさんのご指摘通り、アクティブにしたら無事コピーできました。
>ありがとうございました。

アクティプにするのは確認の意味で書いただけです。

全部のCellsの頭に.を入れて
.Cellsで記述することをお勧めします。

【37810】Re:1つの入力フォームで2つのシートに...
お礼  16茶 E-MAIL  - 06/5/19(金) 9:06 -

引用なし
パスワード
   >ハチ さん

>全部のCellsの頭に.を入れて
>.Cellsで記述することをお勧めします。

はい、.cellsにすべて変更しました。
ご丁寧にどうもありがとうございました。

7645 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free