形式を選択して貼り付け
以下のコードで「元」シートと「先」シートの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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
Excel-vba 文字列と変数を...
-
数字の位ごとの値を表示するプ...
-
C言語
-
VBAの定数の使い方で、計算値を...
-
DWORDって
-
C言語でCLAMP(a,b,c)
-
VB6.0-整数と余りを求める
-
C#の問題で2つの整数a,bの...
-
long型のランダムな値を返す方法
-
10進数をアスキーコードに変換
-
DataGridView 複数行同時変更...
-
バッチファイルで正規表現を使...
-
足して100になるような乱数のア...
-
正誤を表す変数名ってどんなの...
-
1つ前の値を変数に保存する方法
-
VBAで配列のNULL判定
-
世界のナベアツ
-
vbsでテキストファイル内の文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
Excel-vba 文字列と変数を...
-
VB6.0-整数と余りを求める
-
数字の位ごとの値を表示するプ...
-
足して100になるような乱数のア...
-
DWORDって
-
VBAの定数の使い方で、計算値を...
-
1つ前の値を変数に保存する方法
-
世界のナベアツ
-
ラジオボタンの値の取得につい...
-
フリーランタイマーの時間差分...
-
C#で動的にコントロールを取得...
-
UWSCのcallについて
-
DataGridView 複数行同時変更...
-
10進数をアスキーコードに変換
-
4択問題のプログラムでランダム...
-
データ構造のmapとは?
-
VBAで配列のNULL判定
-
VBAで72時間タイマーがオーバー...
おすすめ情報
ご回答ありがとうございます。数式で貼り付けにしたい訳は、「元」シート
のセルの色などを引っ張って来ないために必要なのです。
何か良い方法はありませんでしょうか?