[[20150720112410]] 『関数の埋め込んで有るセルの数値の転記』(風) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『関数の埋め込んで有るセルの数値の転記』(風)

教えてください。
以前、β様が質問者あき様に提供したコードを使って似たような事がしたくて質問します。

内容はセルの背景色は良いのですが、関数が埋め込んであるセルの数値も転記したいのです。
そこで、安易ですが
Set c = .Columns("A").Find(What:="", After:=.Range("A" & .Rows.Count), LookIn:=xlFormulas,
Set c = .Columns("A").Find(What:="", After:=c, LookIn:=xlFormulas,
 
を下記に変更したのですが

Set c = .Columns("A").Find(What:="", After:=.Range("A" & .Rows.Count), LookIn:=xlPasteValues,
Set c = .Columns("A").Find(What:="", After:=c, LookIn:=xlPasteValues,

変化は有りませんでした。

何方か教えて頂けると助かります。

Sub 転記()

    Dim c As Range
    Dim f As Range
    Dim Sh1 As Worksheet
    Dim Sh2 As Worksheet

    Set Sh1 = Worksheets("test")
    Set Sh2 = Worksheets("date")

    With Sh2
        Application.FindFormat.Clear
        Application.FindFormat.Interior.ColorIndex = 4
        Set c = .Columns("A").Find(What:="", After:=.Range("A" & .Rows.Count), LookIn:=xlFormulas, _
            LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, MatchByte:=False, _
            SearchFormat:=True)
        If c Is Nothing Then
            MsgBox "緑色のセルがありませんよ〜"
        Else
            Set f = c
            Do
                If IsEmpty(c) Then
                    '転記
                    Sh1.Range("F1:J19").Copy c
                    Exit Do
                Else
                    'FindNext
                    Set c = .Columns("A").Find(What:="", After:=c, LookIn:=xlFormulas, _
                        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, MatchByte:=False, _
                        SearchFormat:=True)
                    If c.Address = f.Address Then
                        MsgBox "緑色のセルはもう、すべて転記ずみで満杯ですよ〜"
                        Exit Do
                    End If
                End If
            Loop
        End If

        Application.FindFormat.Clear
    End With

 End Sub

< 使用 Excel:Excel2007、使用 OS:Windows7 >


以下について、説明できますか。
 1)どこから、どこに、何を転記したいのか
 2)あきさんのコードだと期待とどう違うか

(マナ) 2015/07/20(月) 12:20


マナ様
返答ありがとうございます。
1)どこから、どこに、何を転記したいのか ですが
sheet2 deta の"F1:J19"に背景色のついたセルが有り表全体の色の割合を計算するために
セルの中に数式が入っています。その値を sheet1 testに転記したいので
 LookIn:=xlPasteValuesに変えたのですが値が表示されません。
2)あきさんのコードだと期待とどう違うか ですが
基本は同じです。只、セルの中に数式が入っており、その値を転記出来ない。
                               以上です。
(風) 2015/07/20(月) 12:56

まだよくわかりません。再度説明お願いします。

 1)コピー元は、detaシートの表全体("F1:J19")ですか。
 2)testシートの、どこに、コピーしたいのでしょうか。
 3)式ではなく、値だけをコピーしたいということですか。

 また、あきさんのコードで
 4)実際にコピーを実行している箇所はどこかわかりますか
 5)どこにコピーするかは検索して決めていますが、何を検索しいているか説明できますか。

(マナ) 2015/07/20(月) 13:38


マナ様
6月8日カット&コピーで あき様 の質問が有ります。
sheet2 のA列にカラーインデックス4 緑のセルが有るから sheet1の("F1:J19")を
sheet2 A列 カラーインデックス4 緑のセルに貼り付けなさい。という事です。
実際動かすと転記はされますが、sheet1の数式が転記されるので値を転記したいのです。
(風) 2015/07/20(月) 13:55

ごめんなさい。
早く解決したいでしょうから、撤退します。
回答はすぐに得られると思います。

(マナ) 2015/07/20(月) 14:30


やりたいことが、よくわかりません。(特に今日は、暑くて、頭がぼぉっと・・・)

 LookIn は元に戻して、変数宣言で Dim sv As Variant といったものを追加し

 Sh1.Range("F1:J19").Copy c

 これを

                    With Sh1.Range("F1:J19")
                        sv = .Formula
                        .Value = .Value
                        .Copy c
                        .Value = sv
                    End With

 こうすれば、お望みの結果になりますか?

(β) 2015/07/20(月) 15:11


β様
回答ありがとうございます。
コードを走らせた結果、望み通り動作しました。
安易にコードを変えても基本がないから駄目ですね!
痛感しました。
明日からの仕事に早速役立てたいと思います。
ありがとうございました。
(風) 2015/07/20(月) 15:35

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.