[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『データが勝手に上書きされてしまう』(3Jpro)
建設会社で、工事の請負に関する注文書をエクセルで作成しています。
1番左のシート…必要項目を入力する入力シート
左から2番目のシート…空欄の雛形シート
簡単なフローは
1.入力シートに必須項目入力後、ボタンを押す
2.空欄の雛形シートのコピーがシート末尾に作成される
3.入力シートの内容を雛形コピーに代入する
※入力シートのボタンを押すたびに、末尾にシートが増える
と言った具合です。
ここで問題が発生します。
、
過去に作成したシートも最新の一番右のシートと同じ内容になってしまいます。
過去のシートが最新のシートの影響を受けないようにするには、どうすればいいでしょうか?
ぜひお知恵をお貸しください。
以下至極簡単ですがソースです(変更×=雛形シート)
'
Sheets("(変更×)").Select ' '原本をコピーする Sheets("(変更×)").Copy after:=Sheets(Sheets.Count) ' 'シートの名前を拾う ActiveSheet.Name = Sheets("入力シート").Range("C9") ' 'シート見出しの色を変える Sheets(Sheets.Count).Tab.ColorIndex = xlNone ' '入力シートの内容を注文書にコピー Range("F5:H5").Select ActiveCell.FormulaR1C1 = "=入力シート!R6C3" Range("C16:H17").Select ActiveCell.FormulaR1C1 = "=入力シート!R4C3" Range("C19:H20").Select ActiveCell.FormulaR1C1 = "=入力シート!R5C3" Range("C21").Select ActiveWindow.SmallScroll Down:=3 Range("D23:F24").Select ActiveCell.FormulaR1C1 = "=入力シート!R6C3" Range("D25:F26").Select ActiveCell.FormulaR1C1 = "=入力シート!R7C3" Range("D27").Select ActiveWindow.SmallScroll Down:=3 Range("F29:G29").Select ActiveCell.FormulaR1C1 = "=入力シート!R8C3" Range("F30:G30").Select ActiveWindow.SmallScroll Down:=-21 Range("I7:L7").Select ActiveCell.FormulaR1C1 = "=入力シート!R3C3" ' End Sub
< 使用 Excel:Excel2010、使用 OS:Windows7 >
以下のように、値をコピーするように書き換えてはいかがですか?
Range("F5:H5").Select ActiveCell.FormulaR1C1 = "=入力シート!R6C3" Range("C16:H17").Select ActiveCell.FormulaR1C1 = "=入力シート!R4C3"
↓
Dim wk As Worksheet Set wk = Sheets("入力シート")
wk.Range("C6:E6").Copy Range("F5") wk.Range("C4:H4").Copy Range("C16") (???) 2018/05/31(木) 14:20
具体的には、
手動なら、
セル全体をコピー
で、同じ位置に値のみ貼り付け
VBAで言ったら
With worksheets(worksheets.count).usedrange
.value = .value end with
みたいなことを、
入力が終ったらしておくと次の入力からは影響が無くなる。
まぁ、僕ならログはログで残しておいて、
雛型が参照するデータ行を切り替えて表示を変えるかな。
(まっつわん) 2018/05/31(木) 15:39
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.