
形式を選択して貼り付け
以下のコードで「元」シートと「先」シートのA列に同じ値があったら指定範囲をコピペをしています。
これを数式で貼り付けの仕様に変更したいです。
お詳しい方宜しくお願い致します。
Dim c As Range, r As Range
With Sheets("元")
For Each c In .Range("A7", .Cells(Rows.Count, "A").End(xlUp))
If c <> "" Then Set r = Sheets("先").Range("A7", Cells(Rows.Count, "A")).Find(c)
If Not r Is Nothing Then
c.Copy r
c.Offset(, 6).Resize(2, 6).Copy r.Offset(, 6)
Set r = Nothing
End If
Next
End With
No.4ベストアンサー
- 回答日時:
セルの色を引っ張ってとはセルの背景色をデフォルトにしたいと言う事ですか?
もしそうなら貼り付けた後で背景色を塗り替えるって考えもありますよ。
https://www.tipsfound.com/vba/07007
そしてその範囲をどう決めるかですが、
c.Offset(, 6).Resize(2, 6).Copy r.Offset(, 6)
だとしたなら範囲は2行×6列になりますので、
r.Offset(, 6).Resize(2, 6).Interior.ColorIndex = 0
をコピペした後に追加するとか?
若しくは条件付き書式によるものですかね?
https://www.relief.jp/docs/excel-macro-remove-fo …
r.Offset(, 6).Resize(2, 6).FormatConditions.Delete
かな?
未検証なのでミスりましたらごめんなさい。
No.5
- 回答日時:
こんにちは
>数式で貼り付けにしたい訳は、「元」シート
>のセルの色などを引っ張って来ないために必要なのです。
「数式で貼り付け」という言葉からは、2種類の内容が考えられますが、どちらなんでしょうね。
その前に、もしも「値だけ貼り付け」で良いのなら
Range2.Value = Range1.Value
とすることで、値だけの転記ができますので、これで済むのなら一番簡単です。
あくまでも「値の転記」ですので、セルに数式は設定されません。
◇「数式で貼り付け」が「元のセルの数式のみをコピペ」したいという意味なら
手操作の「形式を選択して貼り付け」で数式を貼り付けた時と同様にすれば良いです。
構文は「マクロの記録」でも取れると思いますが、VBAならPasteSpecialメソッドがこれに相当します。
https://learn.microsoft.com/ja-jp/office/vba/api …
ただし、手操作でもそうですが、元の式の内容によっては思う通りの結果にならない場合がありますのでご注意。(シート間で一部のセル範囲をコピペする場合は特に)
◇「数式で貼り付け」が「元のセルを参照する式を貼り付けたい」という意味なら
セルの数式として、"=元のセル番地" を設定すればすみます。
対象がセル範囲なので
対象セル範囲.FormulaLocal = ”=" & 元のシート名 & "!" & 元のセル範囲の左上のセル番地
とすることで、まとめて設定が可能です。
ただし、「左上のセル番地」は絶対アドレスではなく、相対アドレスにする必要がありますので、
左上のセル.Address(0,0)
で求めることが必要です。
※ なお、Findの対象範囲の指定に関しては、No2様のご懸念の通りと思います。
ありがとうございます!教えていただいたことを一つづつ検証しました。時間がかかりましたが理解できたと思います。
結果うまくいきました❗
No.3
- 回答日時:
>Set r = Sheets("先").Range("A7", Sheets("先").Cells(Rows.Count, "A")).Find(c)
こちらでもいけるかな?
Set r = Sheets("先").Range("A7:A" & Rows.Count).Find(c)
No.2
- 回答日時:
気になった点。
> Set r = Sheets("先").Range("A7", Cells(Rows.Count, "A")).Find(c)
Cellsに対してシートが適切に指定されないケースもあり得ますので、
Set r = Sheets("先").Range("A7", Sheets("先").Cells(Rows.Count, "A")).Find(c)
としてみてはいかがでしょうか。
本来はwith~end withで纏めますが、別のシートで既に使用されてますからシート名を入れておくべきかなと。
No.1
- 回答日時:
仮にここだとして
c.Offset(, 6).Resize(2, 6).Copy r.Offset(, 6)
普通『値なら値を、数式なら数式を』コピペすると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Excel(エクセル) EXCEL マクロで行を挿入して貼り付けようとするとエラーになる。 2 2022/05/24 09:43
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Excel(エクセル) マクロで列を加えたら上手くいかなくなりました。 2 2022/05/23 17:59
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Excel(エクセル) マクロで行を追加、削除すると行位置がずれますが、解決方法はありませんか?。 5 2022/05/28 16:03
- Visual Basic(VBA) 2つのシートの任意のセルの番号が一致したら、一致した行をコピーする VBA 2 2023/06/19 20:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
Excel-vba 文字列と変数を...
-
数字の位ごとの値を表示するプ...
-
プログラミングについて教えて...
-
DWORDって
-
4択問題のプログラムでランダム...
-
バッチファイルがうまくいきま...
-
c言語で乱数を扱うときの
-
HTML上の2つの連動するプルダウ...
-
プログラミング 2つの整数を読...
-
fortran:角度の範囲を限定させる
-
バブルソートとクイックソート
-
VB6.0-整数と余りを求める
-
ラジオボタンの値の取得につい...
-
【C++/CLI】String型文字列の位...
-
フリーランタイマーの時間差分...
-
VBAで配列のNULL判定
-
VBAの定数の使い方で、計算値を...
-
VBAでダブルコーテーション入り...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 exitの使い方
-
Excel-vba 文字列と変数を...
-
フォームを開くときに、コンボ...
-
数字の位ごとの値を表示するプ...
-
VB6.0-整数と余りを求める
-
足して100になるような乱数のア...
-
ラジオボタンの値の取得につい...
-
C#で動的にコントロールを取得...
-
VBAで配列のNULL判定
-
データ構造のmapとは?
-
関数で複数の値を戻り値として...
-
世界のナベアツ
-
VBA コンボボックスの値をスピ...
-
VBAの定数の使い方で、計算値を...
-
スピンボタンで小数点
-
1つ前の値を変数に保存する方法
-
Nullってどういう意味ですか?
-
コンボボックスの名前を変数に...
-
DWORDって
-
vbaで極大値を抽出する方法
おすすめ情報
ご回答ありがとうございます。数式で貼り付けにしたい訳は、「元」シート
のセルの色などを引っ張って来ないために必要なのです。
何か良い方法はありませんでしょうか?