c27から各セルのAddColumnofData関数を実行する必要があります。隣接するすべての空でないセルは右に移動する必要がありますが、実行時エラー424オブジェクトが必要です感謝。セル範囲をループする
Set col = Range("$C$27", Range("$C$27").End(xlToRight))
For Each c In col
AddColumnofData (c)
Next c
c27から各セルのAddColumnofData関数を実行する必要があります。隣接するすべての空でないセルは右に移動する必要がありますが、実行時エラー424オブジェクトが必要です感謝。セル範囲をループする
Set col = Range("$C$27", Range("$C$27").End(xlToRight))
For Each c In col
AddColumnofData (c)
Next c
あなたはAddColumnofData
Sub AddColumnofData(c As Range)
...
End Sub
それへのお電話は
AddColumnofData c
にする必要がある
へ
がジェシーのアドバイス(つまりは、ブラケットを取り外している)あなたの変数は、義務ではないが、良いアドバイスです。 [col
]にも適用されます。それをmanditoryにするには、モジュールの先頭にOption Explicit
を追加します。
別のサブ – JMax
あなたがC宣言する場合:
Dim c as Range
を次に、あなたが持っているものに動作するはずです。
前提に範囲オブジェクトを関数に渡す前に宣言または設定できます。関数に正しい値を渡していることを証明するには、これを試してください。
Dim r As Range '-- if you don't declare it as a range type you get a variant type as default
Dim c As Range '-- this is used to store the single cell in the For Each loop
Set r = Range("A1:D1") '-- substitute your range as per your example
For Each c In r '-- you could also use r.cells
MsgBox c.Value '-- pass to your function instead of a call to the Message Box
Next
あなたレンジ「r」は、代わりにします。Debug.Printに渡す真剣に大きい場合、これは、アクティブなワークシートのD1にセルA1の値を含む4つの一連のメッセージボックスを生成します。
を呼び出すときにカッコを使用する方法(または使用しない)については、[チップピアソンのこのリンク(http://www.cpearson.com/excel/byrefbyval.aspx)]も参照してください。関数?利点は、最初に範囲内のセルに対していくつかの検証を行うことができ、セル値などを連結することができるということです。範囲の代わりに文字列として値を渡すこともできます。そのため、関数は範囲オブジェクトの代わりに文字列関数を扱うことができます。 – Eric
'AddColumnofData'は何をするのですか?私たちはあなたの機能の速度を最適化できるかもしれませんか? – brettdj