2016-09-09 7 views
0

私は少しVBAのヘルプが必要です。私はオプションのyes、n/a、noと入力するコマンドボタンを持つカスタムユーザーフォームを作成しました。今私は論理を追加したい、それは表示された行だけをフィルタリングする必要があります。私の最初のif行(checkbox1.enabledの場合)で常にエラーを返します。 checkbox1.valueがTrueの場合は既に試してみましたが、まだ動作していません。何か案は?ありがとう!あなたの最初のIfで問題を解決するにはVBA Excelチェックボックス付きカスタムユーザーフォーム、マクロコードで動作しない

Private Sub CommandButton1_Click() 

    Dim runner As Variant, row As Variant 
    row = 9 

    If CheckBox1.Enabled Is True Then 
     For Each runner In row 
      If Not runner.Hidden Then 
       If cell(row, 10).Value Is Empty Then 
        runner.Hide 
       End If 
      End If 

     Next runner 
    End If 


End Sub 

答えて

1

、あなたはこの値がVBAでTrueであるかどうかを確認するための正しい構文です

If CheckBox1.Enabled = True Then 

にそれを変更する必要があります。次も許容構文は次のとおりです。何も、このような検証に提供されていない

If CheckBox1.Enabled Then 

場合、値はデフォルトではTrueであれば、VBAがチェックされます。

If CheckBox1.Enabled = False Then 

、あるいはまた

If Not CheckBox1.Enabled Then 

を使用すると、現在の問題を解決したら、あなたは次の行に別の問題があります:

If cell(row, 10).Value Is Empty Then 
値が Falseあなたができることであれば同様に、チェックします

セルが空であるかどうかを確認するには、正しい構文が

If IsEmpty(Cells(row, 10).Value) Then 
になるようにします。

で、cellではないことにご注意ください。さらに、これは、アクティブワークシート内のセルを検索するセルのグローバル参照をチェックします。 Sheet1のセルをチェックするとしますが、ユーザーフォームを使用中にSheet2をアクティブにすると、代わりにSheet2のセルがチェックされます。これを避けるために、あなたは以下のように、セルへの適切な参照を作ることをお勧めです:

If IsEmpty(ThisWorkbook.Worksheets("YourSheetName").Cells(row, 10).Value) Then 

あなたが投稿してあなたのコードが正確であれば、あなたのForループ内でいくつかの問題は、もあります。それはおそらく動作しませんが、私はあなたを支援するためにそこに起こっていることをよりよく理解する必要があります。

こちらがお役に立てば幸いです。

関連する問題