- 締切済み
excel vbaでの質問になります
このようなマクロを作成したのですが、セルに数式が入れてあると、どうしてもその下の空白の行に値を入力されてしまいます。 数式が入っているセルにもそのままセルに値を入れたいのですが・・ 宜しくお願いします。 Dim wb1 As Worksheet, r1 As Range Dim N As Integer, i As Integer Dim mycount As Long Set wb1 = ThisWorkbook.Worksheets("請求書") mycount = Range("B111").CurrentRegion.Rows.Count Cells(111 + mycount, 2).Select ActiveCell.Offset(0, 0).Value = wb1.Range("C60").Value ActiveCell.Offset(0, 1).Value = wb1.Range("C61").Value ActiveCell.Offset(0, 12).Value = wb1.Range("C66").Value ActiveCell.Offset(0, 13).Value = wb1.Range("C74").Value ActiveCell.Offset(0, 14).Value = wb1.Range("C75").Value ActiveCell.Offset(0, 15).Value = wb1.Range("C84").Value ActiveCell.Offset(0, 16).Value = wb1.Range("C85").Value ActiveCell.Offset(0, 20).Value = wb1.Range("C69").Value ActiveCell.Offset(0, 22).Value = wb1.Range("C68").Value ActiveCell.Offset(0, 23).Value = wb1.Range("C76").Value ActiveCell.Offset(0, 24).Value = wb1.Range("C77").Value Exit Sub
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- onlyrom
- ベストアンサー率59% (228/384)
再度の登場、onlyromです。 残念ながら、まだまだ情報が不足です。(^^;;; ●営業A,営業B,営業C、以下か必要分の表があると仮定して (1)「シート売上」と「シート請求書」は ■同じブック■ではなくて、本当に■別々のブック■なのか (2)「シート売上」の「営業A」と表中の「担当項目」の「A」はどういう関係か (3)「シート売上」の「営業A」「営業B」「営業C」の表のレイアウト (1)それぞれの表の開始行や列番号 (2)「営業A」が入っているセル番地 (3)表の見出しの行番号 (4)データの開始行 (4)「営業A]のデーターを追加していくうちに「営業B」の表に重なることはないのか (5)「シート請求」のレイアウト (苦情?) 「営業A」「営業B」とも全く同じデータの例を挙げては見る方は余計なことまで考えなければいけないので、 例を提示するときは、そこらを勘案して(実際のデータに沿ったものを)提示するべきです。 これくらいの情報があると回答が多々寄せられるでしょう。 -------------------------------------------------------------------------- それから「シート売上」の表の作り方はあまり感心しません。 営業_売上_担当_利益 このようにしておけば、請求書からのデータも転記しやすいし、後から集計表作成などデータ加工がし易いと思うのですが。。。
- onlyrom
- ベストアンサー率59% (228/384)
説明がし易いように代入される側のシート名を仮に「集計表」とします。 でやりたいことは、 集計表の「最終行+1」の行に、請求書から値を代入したいということですか? そして、集計表にはデータが代入されていないセルにも式だけはセットされているんですね。 なら、 mycount = Range("B111").CurrentRegion.Rows.Count これで最終行はとれません。 例えば、集計表の式の入っていない列をB列とし、 この列で最終行が分かるとした場合 >mycount = Range("B111").CurrentRegion.Rows.Count >Cells(111 + mycount, 2).Select これを mycount = Cells(Rows.Count,"B").End(xlup).Row Cells(mycount+1, 2).Select 実際はそのたびにSelectは不要ですが今回はそのままで。。。 勘違いでしたらご容赦! ●質問するときは何をやりたいのかも少し具体的にしたほうがいいでしょう。 以上。
- suz83238
- ベストアンサー率30% (197/656)
数式が入っていても入ってなくても関係ありません。 もしかしてOffset値が間違ってませんか? Cells(111 + mycount, 2).Selectの後に MsgBox ActiveCell.Address を表示させて、アドレス値を見て下さい。そこが、Offsetの基準になります。 ActiveCell.Offset(0, 0).Value には、 ActiveCell.Addressのアドレスに 値が入ります。
補足
ご回答ありがとう御座います。 早速確認してみた所、offset値は合ってました。 offsetの基準になる場所に値も入っていたので、大丈夫だと思います。 CurrentRegionがダメなんでしょうか?? お手数お掛けします。
- htmcr
- ベストアンサー率36% (11/30)
こんにちは。 wb1.Range("XXX").Value をすべて wb1.Range("XXX").Formula に置換してみてください
補足
早速の回答ありがとう御座います。 教えて頂いた通りやってみたところ、失敗でした 本当に申し訳ないです。 値だけを持ってきて貼り付けたいと思っています。 宜しくお願いいたします。
補足
ご回答ありがとう御座います。 本当に勉強になります。 今回やりたいことは 請求書に入力された値を営業のシートに連動させたいのです。 その際一番下の行にデータを追加し、なおかつ担当営業の表が同じシート内に人数分縦に並んでいる状況です。 book1 "シート売上" 営業A ----------------------------- | 売上 | 担当| 利益 | ----------------------------- 企業A| \1200 | A | \300 | 企業B| \2000 | A | \400 | 企業C| \3500 | B | \500 | 営業B ----------------------------- | 売上 | 担当| 利益 | ----------------------------- 企業A| \1200 | A | \300 | 企業B| \2000 | A | \400 | 企業C| \3500 | B | \500 | book2 "請求書" ------------------------------ 企業名| 手入力 ------------------------------ 売上 | 手入力 ------------------------------ 担当 | 手入力 ------------------------------ 利益 | 手入力 |更新| 更新ボタンを押した時、担当営業がAだった場合Aの表の一番下にデータを追加してくという風にしています。