
形式を選択して貼り付け
以下のコードで「元」シートと「先」シートの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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
Excel VBA でデータ転記について
-
VB6.0-整数と余りを求める
-
Excel-vba 文字列と変数を...
-
バッチファイルで正規表現を使...
-
フリーランタイマーの時間差分...
-
VB6でのLog
-
10進数をアスキーコードに変換
-
コンボボックスの名前を変数に...
-
ラジオボタンの値の取得につい...
-
C言語(DXlib)での音ゲーについ...
-
c言語で乱数を扱うときの
-
long型のランダムな値を返す方法
-
DWORDって
-
VBAで配列のNULL判定
-
関数で複数の値を戻り値として...
-
Access2003 オートナンバーの現...
-
VBAでダブルコーテーション入り...
-
vbsでテキストファイル内の文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
Excel-vba 文字列と変数を...
-
VB6.0-整数と余りを求める
-
数字の位ごとの値を表示するプ...
-
VBAで配列のNULL判定
-
C#で動的にコントロールを取得...
-
足して100になるような乱数のア...
-
ラジオボタンの値の取得につい...
-
VBAの定数の使い方で、計算値を...
-
フリーランタイマーの時間差分...
-
DWORDって
-
関数で複数の値を戻り値として...
-
vbaで極大値を抽出する方法
-
4択問題のプログラムでランダム...
-
10進数をアスキーコードに変換
-
コンボボックスの名前を変数に...
-
VBA コンボボックスの値をスピ...
-
1つ前の値を変数に保存する方法
-
バッチファイルで正規表現を使...
おすすめ情報
ご回答ありがとうございます。数式で貼り付けにしたい訳は、「元」シート
のセルの色などを引っ張って来ないために必要なのです。
何か良い方法はありませんでしょうか?