2017-12-26 7 views
0

私はsheet1上にActiveXボタンを持っていますが、私の目標シーク式はsheet2上にあります。それを実行すると、sheet2の列Nのセルは変更されません。誰でも私のコードを修正できますか?は、別のシートにコマンドをリンクするExcelを受け取ります。

Private Sub CommandButton1_Click() 

With Worksheets("sheet2") 
For J = 23 To 26 
     Cells(J, "o").GoalSeek Goal:=0, ChangingCell:=Cells(J, "n") 
Next J 

End With 

End Sub 
+1

が、それは動作しませんどのように説明:あなたのWithオブジェクトは、あなたのCellsプロパティのそれぞれの修飾子です。 – Alan

+0

@Alan - ボタンが押されたときに「ActiveSheet」なので、コードが目標1を実行しているという事実ですが、目標シーク式がsheet2上にあるという質問は、「動作しません」という意味ですこの場合は「目標シークは実行されていません」を指します。 – YowE3K

答えて

2

あなたは、彼らが参照しているワークシートを使用してCellsの特性を修飾することはありませんので、彼らは(あなたのボタンが配置されているシートになる)ActiveSheetを参照するにデフォルト設定、およびので、あなたの現在のコードは同等です

Private Sub CommandButton1_Click() 
    Dim J As Variant 
    For J = 23 To 26 
     ActiveSheet.Cells(J, "o").GoalSeek Goal:=0, ChangingCell:=ActiveSheet.Cells(J, "n") 
    Next J 
End Sub 

はまた、あなたのコード内で With Worksheets("sheet2")ブロックが含まれているが、あなたはそれを利用することはありません。


あなたの問題を解決する最も簡単な方法は、あなただけのことを指定するには、.を追加することを意味することを、あなたはすでにあなたのコード内ですでにWith Worksheets("sheet2")ブロックを持っているので、参照してされているワークシートに修飾することを確実にするために、単純です

Private Sub CommandButton1_Click() 

With Worksheets("sheet2") 
For J = 23 To 26 
     .Cells(J, "o").GoalSeek Goal:=0, ChangingCell:=.Cells(J, "n") 
Next J 

End With 

End Sub 
+0

あなたの提案、YowE3Kに感謝します。追加後。エラーメッセージはもう表示されませんが、goalseekはまだsheet2で実行されていません。どんな考え? – peterjohn

+0

@peterjohn(a)どのようなエラーメッセージが表示されましたか?私はそれが単に動作していないと仮定し、さらにエラーがないという前提で質問を再開することに投票しました。あなたは自分自身で質問を編集し、「それはちょうどうまくいかない」ということを説明する方がよいということを意味します。 (b)編集したコードは私のために働いたが、それはSheet2!O23(等)をSheet2!N23(等)に基づいて計算しているsheet2にある数式に依存する。 – YowE3K

関連する問題