2016-08-17 2 views
1

これは可能な限り明確にしようとしています。コードの混乱の可能性について私と一緒に裸をしてください。私は指定されたセルの色に応じて私に値を与える関数を持っています。次のようにこの機能は次のとおりです。VBA機能。 #VALUEエラー、数式で使用されている値のデータ型が間違っています。

Function CheckColor1(range) 
If range.Interior.Color = RGB(189, 215, 238) Then 
    CheckColor1 = "R" 
ElseIf range.Interior.Color = RGB(255, 230, 153) Then 
    CheckColor1 = "C" 
End If 
End Function 

だから私のシートの上に、L1にそれは私に対応する「R」と「Cを与え、罰金である、私は= CheckColor1(a1)を持っていると私はすべての行に対してフィルダウン"を各行に割り当てます。私はM1で、その隣に= L1を使用し、もう一度塗りつぶし、コピーして値を貼り付けます。私はL列に直接コピー&ペーストの値を試しましたが、うまくいきません。

これをマクロに記録しました。私に与えた:

range("L1").Select 
ActiveCell.FormulaR1C1 = "=CheckColor1(RC[-11])" 
range("L1").Select 
Selection.AutoFill Destination:=range("L1:L102") 
range("L1:L102").Select 
range("M1").Select 
ActiveCell.FormulaR1C1 = "=RC[-1]" 
range("M1").Select 
Selection.AutoFill Destination:=range("M1:M102") 
range("M1:M102").Select 

を私はマクロを実行するために来るときしかし、私はL1で正しく最初の値を取得しますが、その下にあるすべての値は、私が#VALUEエラーを取得します。これは、数式で使用される値が間違ったデータ型であると言います。

私はちょっと混乱しています!手動で入力すると機能します。しかし、マクロではありませんか?列はちょうど "一般的な"形式です。

ご迷惑をおかけして申し訳ありません。

答えて

2

はあなたがHow to avoid using Select in Excel VBA macros

すべてのことのコードはたった2行

range("L1:L102").Formula = "=CheckColor1(A1)" 
range("M1:M102").Formula = "=L1" 

次の2行を使用して、コードを交換して、再度お試しに書き込むことができます見てみたいことがあり.Selectの使用は避けてください。今回はうまくいくでしょう。

編集

アイデアは.Autofillを使用するのではなく、一度に完全な範囲で数式を入力することではありません。

"L"と "M"の列が固定され、行が毎回変更される場合は、列 "L"の最後の行を見つけてコードに組み込むことができます。これを参照してください

Dim lRow As Long 

With Worksheet("Orders") 
    lRow = .Range("L" & .Rows.Count).End(xlUp).Row 

    .Range("L1:L" & lRow).Formula = "=CheckColor1(A1)" 
    .Range("M1:M" & lRow).Formula = "=L1" 
End With 
+0

こんにちは、ありがとう、あなたのための迅速な返信。申し訳ありませんが、おそらく私はこれを元の質問に入れておきます。私がLとMに使用する範囲は、毎回変わるでしょう。小さくても大きくてもかまいません。私はこれと自動入力コード... 'ActiveCell.Offset置換されている(0、-1).Select Selection.End(xlDown).Select ActiveCell.Offset(0、1).Select 範囲(選択、Selection.End(xlUp))。選択 Selection.FillDown' しかし、私はそれに変更する前にエラーが発生していた。私はそれを変更した後もまだ発生しました。 –

+0

私は上記の投稿を更新しました。あなたはそれをリフレッシュする必要があります –

+0

こんにちは、ありがとうございました。申し訳ありませんが、私はこのすべての経験はありません!変数にストアは私の頭の上に行った。シートは注文のシートなので、範囲は日々変わる可能性があるので、式が必要な範囲はL:L102、L1:L80、L1:L600、M列と同じです。常に同じ量の列があります。 私のためにそれを愚かにするには、何を入れる必要がありますか? もう一度ありがとうございます! –

関連する問題