2016-03-26 14 views
2

によって返された範囲を処理することはできません。VBAが正しく、私はこのコードを持っているfindメソッド

Private Sub UserForm_Initialize() 

Dim Text_Cell As Range 
Dim temp As Control 

Set Text_Cell = Sheet1.Cells.Find("Text") 

Do Until Text_Cell.Offset(1, 0).Value = "" 
    Set temp = UserForm1.MultiPage(1).Controls.Add("Forms.Commandbutton.1", "h") 

    Set Text_Cell = text_Cell.Offset(1, 0) 
Loop 

編集:だけで簡単に明確化 - MsgBoxes、ブレークポイント、科学、魔法などを使用して、私は "の原因を発見VBAがループに到達する前に「必要なオブジェクト」エラーが発生します。

"テキスト"の値を持つシート内のセルを見つけようとしています。そのセルの値が下にあるセルごとに、私のユーザーフォームのコントロールを作成します。私が抱えている問題は、Findメソッドが正しいセルを見つけて返し、割り当てますが、何らかの理由でVBAが "text_Cell"変数を処理できないということです。たとえブレークポイントを設定して "text_Cell"私はそれが適切な細胞に割り当てられているのを見ました。私は "Object Required"エラーが発生し続ける。セルを単独で取得すると何も返されないため、Offst(1,0)を参照しようとすると「Object required」エラーが発生します。

+0

あなたは*テキスト*を見つけて、その下の空白のセルすべてをループしています。空白以外のセルのすべてをその下に置いてはいけないと確信していますか? – Jeeped

+0

@ジープ、ありがとう、私の間違い。私はそれを修正しますが、元の問題はループの外側にあります – mathgenius

+0

あなたの例で問題を再現できませんでした。あなたはそれをテストしましたか? –

答えて

1

私はのために、それ以下の値を持つ各セルを「テキスト」の値を持つシート内のセルを見つけようとしています - 私のユーザーフォーム上のコントロールを作成します。

テキストとセルの下非空白細胞の全てを循環に以下を使用します。

Set Text_Cell = Sheet1.Cells.Find(What:="text", MatchCase:=False, _ 
           LookAt:=xlWhole, LookIn:=xlFormulas) 

Do Until Text_Cell.Value = "" 
    Set temp = UserForm1.MultiPage(1).Controls.Add("Forms.Commandbutton.1", "h") 

    Set text_Cell = text_Cell.Offset(1, 0) 
Loop 
+0

ありがとうございます。あなたが私の主要な問題に気が付いたら、私はそれを感謝します。 – mathgenius

+0

[Range.Findメソッド](https://msdn.microsoft.com/en-us/library/office/ff839746.aspx)には、前回の使用時に明示的に「記憶」されていないパラメータの「メモリ」があります(ワークシートからでも)。私はより重要なオプションのいくつかをカバーするために上記を調整しました。 – Jeeped

+0

それはそうではありません。まず、私が述べたように、メソッドは正常に動作し、変数 "text_cell"もセルを格納していますが、 "Object required"エラーが発生します。第二に、Excelの全体が閉じられた後でも設定が記憶されない限り、それらはまったく問題ではない。 – mathgenius