- ベストアンサー
全く作動しないです。(転記しないです。)
Private Sub CommandButton1_Click() If CheckBox1 = xlOn Then Worksheets("sheet1").Range("A" & Rows.Count).End(xlUp).Offset(1) .Value = "新規" ElseIf CheckBox1 = xlOff Then Worksheets("sheet1").Range("A" & Rows.Count).End(xlUp).Offset(1) .Value = "リピート" End If End Sub 上記のようなコードですが、まったく作動しないです。 どこが間違っているのでしょうか。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
CheckBoxのValue値はBooleanなので、xlOn や xlOff の判定ではダメなのでは? Private Sub CommandButton1_Click() If CheckBox1.Value = True Then Worksheets("sheet1").Range("A" & Rows.Count).End(xlUp).Offset(1).Value = "新規" Else Worksheets("sheet1").Range("A" & Rows.Count).End(xlUp).Offset(1).Value = "リピート" End If End Sub
その他の回答 (3)
- zap35
- ベストアンサー率44% (1383/3079)
動かない理由は#02さんの回答通りだと思います。 それ以外に気になった点を一つ。 Rows.Count これはオブジェクトが明示されていませんね。するとActivesheetが対象になります。Worksheets("sheet1")が常にアクティブなら意図しない動作はしないかもしれませんが、やはり明示する方が良いでしょう Private Sub CommandButton1_Click() With Worksheets("sheet1") If CheckBox1 = True Then .Range("A" & .Rows.Count).End(xlUp).Offset(1).Value = "新規" Else .Range("A" & .Rows.Count).End(xlUp).Offset(1).Value = "リピート" End If End With End Sub もっともRows.CountはOffice2003までは65536で固定値なので .Range("A65536") と書いてしまっても同じことですが…
- imogasi
- ベストアンサー率27% (4737/17069)
2点 (1)xlOnで聞くのか チェックボックスを1つ張り付け クリックイベントに Private Sub CheckBox1_Click() MsgBox CheckBox1.Value End Sub をいれて、チェックボックスを、クリックすればわかる。 ーー Sub test01() a = 4 If a = 2 Then MsgBox a ElseIf a = 1 Then MsgBox a End If End Sub で aを1,2、3・に変えて実行してみると、正常に動いた。 ーー ただし 普通は 2区分で聞くときは Sub test02() a = 1 If a = 1 Then MsgBox "1" Else MsgBox "1以外" End If End Sub とElseでよいと思う。
- x0000x
- ベストアンサー率52% (67/127)
CheckBox1は「True」「False」の値を保持するので以下で判断できます。 Private Sub CommandButton1_Click() If CheckBox1 Then Worksheets("sheet1").Range("A" & Rows.Count).End(xlUp).Offset(1).Value = "新規" ElseIf Not CheckBox1 Then Worksheets("sheet1").Range("A" & Rows.Count).End(xlUp).Offset(1).Value = "リピート" End If End Sub
補足
ご意見有難うございます。 動作はするのですが、両方ともチェックが入ってしまいます。