• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ロートルの初心者です、VBAについての質問です。)

VBAでデータを条件検索し入力履歴に追記する方法

このQ&Aのポイント
  • エクセル2003を使用して、VBAを使って「テスト2」シートから条件検索されたデータを抽出し、「入力履歴」シートに追記する方法を知りたいです。
  • 抽出データに含まれる関数が影響して「入力履歴」シートにデータが「#A/N」と表示される問題について解決方法を教えてください。
  • 初心者のため、VBAの書き方や形式を指定して貼り付ける方法がわからないため、手助けをお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.1

「マクロの記録」機能はご存知ですか? http://www4.synapse.ne.jp/yone/excel2010/excel2010_macro_kiroku.html 上記など、解説サイトはゴロゴロしていますので、別途お調べくださいませ。 要するに「記録中のエクセルでの操作をコードに置いてくれる」機能です。 これで大体の基本操作を記録することが出来ます。 さて、本題の「コピー→値の貼り付け」の操作ですが、 例えば「A1セルをコピー→B1セルに値を貼り付け」を マクロに記録してやると、 Sub Macro1() ' ' Macro1 Macro ' '     Range("A1").Select     Selection.Copy     Range("B1").Select     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _         :=False, Transpose:=False End Sub このように録れるはずです。 「形式を選択して貼り付け」には「.PasteSpecial」を使うんだなぁ、と気が付くでしょう。 ついでに、なんとな~く、 「値を貼り付け」=「Paste:=xlPasteValues」なんだろうなぁ、と読めてくるはずです。 さらにちょっとだけツッコムと、「形式を選択して貼り付け」ダイアログと照らし合わせ、 ・Operation:=xlNone⇒演算=なし ・SkipBlanks:=False⇒空白セルを無視するのチェック=なし ・Transpose:=False⇒行列を入れ替えるのチェック=なし というのが見えてきます。(ちなみにこれらは「なし」なら省略可能です。) では、あとはこれをお望みの形に書き換えてやりましょう。 例) Sub prog2() Dim myFld As String, myCri As String Dim myRow As Long Dim Sh2 As Worksheet, Sh3 As Worksheet Set Sh2 = Worksheets("テスト2") Set Sh3 = Worksheets("入力履歴") With Sh2     myRow = .Range("D" & Rows.Count).End(xlUp).Row     ' コピーして     Range("A1:H" & myRow).Copy         ' 値を貼り付け     Sh3.Range("A" & Rows.Count).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues     Application.CutCopyMode = False End With Sh3.Activate Range("A1").Select End Sub こんな具合にしてやると、おそらく上手くいくと思いますよ。

chip88
質問者

お礼

出張中で確認が遅れました。 回答ありがとうございました、分かりやすく私が求めていた通りで 大変助かります。 年をとると頭が固くなり一寸したことが浮かばなくて・・・f^ ^;

その他の回答 (1)

回答No.2

>「形式を選択して貼り付け→値」 セルの「値」はValue、「数式」はFunctionで参照できます。 ここで、「式の結果の値」つまりセルに表示されているものは…じつはValueで取得できます。 なので、ややこしいことは考えず、 貼り付け先セル.Value = コピー元セル.Value とすればOKだったりします。 PasteSpecialについて知るのはもちろんいいことですけどね。

chip88
質問者

お礼

遅くなり申し訳ありません。 そうですね、難しく考えることはなかったのですね。 ありがとうございました。

関連するQ&A

専門家に質問してみよう