こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

投稿日時 - 2008-03-07 16:30:22

QNo.3841245

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

再度の登場、onlyromです。
残念ながら、まだまだ情報が不足です。(^^;;;

●営業A,営業B,営業C、以下か必要分の表があると仮定して

(1)「シート売上」と「シート請求書」は
    ■同じブック■ではなくて、本当に■別々のブック■なのか
(2)「シート売上」の「営業A」と表中の「担当項目」の「A」はどういう関係か
(3)「シート売上」の「営業A」「営業B」「営業C」の表のレイアウト
     (1)それぞれの表の開始行や列番号
     (2)「営業A」が入っているセル番地
     (3)表の見出しの行番号
     (4)データの開始行
(4)「営業A]のデーターを追加していくうちに「営業B」の表に重なることはないのか
(5)「シート請求」のレイアウト


(苦情?)
「営業A」「営業B」とも全く同じデータの例を挙げては見る方は余計なことまで考えなければいけないので、
例を提示するときは、そこらを勘案して(実際のデータに沿ったものを)提示するべきです。
 

これくらいの情報があると回答が多々寄せられるでしょう。

--------------------------------------------------------------------------
それから「シート売上」の表の作り方はあまり感心しません。

   営業_売上_担当_利益

このようにしておけば、請求書からのデータも転記しやすいし、後から集計表作成などデータ加工がし易いと思うのですが。。。
 

投稿日時 - 2008-03-08 10:43:35

ANo.3

説明がし易いように代入される側のシート名を仮に「集計表」とします。
でやりたいことは、
集計表の「最終行+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は不要ですが今回はそのままで。。。

勘違いでしたらご容赦!

●質問するときは何をやりたいのかも少し具体的にしたほうがいいでしょう。
以上。

投稿日時 - 2008-03-07 17:31:08

補足

ご回答ありがとう御座います。
本当に勉強になります。
今回やりたいことは

請求書に入力された値を営業のシートに連動させたいのです。
その際一番下の行にデータを追加し、なおかつ担当営業の表が同じシート内に人数分縦に並んでいる状況です。

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の表の一番下にデータを追加してくという風にしています。

投稿日時 - 2008-03-07 17:56:00

ANo.2

数式が入っていても入ってなくても関係ありません。
もしかしてOffset値が間違ってませんか?

Cells(111 + mycount, 2).Selectの後に
MsgBox ActiveCell.Address
を表示させて、アドレス値を見て下さい。そこが、Offsetの基準になります。
ActiveCell.Offset(0, 0).Value
には、
ActiveCell.Addressのアドレスに
値が入ります。

投稿日時 - 2008-03-07 17:14:32

補足

ご回答ありがとう御座います。
早速確認してみた所、offset値は合ってました。
offsetの基準になる場所に値も入っていたので、大丈夫だと思います。

CurrentRegionがダメなんでしょうか??
お手数お掛けします。

投稿日時 - 2008-03-07 17:25:29

ANo.1

こんにちは。

wb1.Range("XXX").Value をすべて
wb1.Range("XXX").Formula に置換してみてください

投稿日時 - 2008-03-07 16:45:19

補足

早速の回答ありがとう御座います。
教えて頂いた通りやってみたところ、失敗でした

本当に申し訳ないです。
値だけを持ってきて貼り付けたいと思っています。
宜しくお願いいたします。

投稿日時 - 2008-03-07 16:49:50

あなたにオススメの質問