• ベストアンサー

チェックボックスの値をTRUE/FALSE以外にするには?

ユーザーフォームに入力した内容をワークシートに転記するマクロを組んでるのですが、チェックボックスの場合、値がTRUE/FALSEになります。 これを、TRUE=1、FALSE=空白にする方法はないでしょうか? ちなみに、マクロには下記のように書いて転記しています。 .Cells(I, 3).Value = Me.chkbox1.Value

質問者が選んだベストアンサー

  • ベストアンサー
  • taocat
  • ベストアンサー率61% (191/310)
回答No.2

おはようございます。 回答は出てますがこんなのもあるよ、ということで。 CheckBoxの値を数値で評価すると  TRUE=-1  FALSE=0 ですから、それを利用して -----------------------------------------------  Cells(I, 3).Value = Choose(Me.CheckBox1.Value + 2, "1", "") ------------------------------------------------- 質問の、chkbox1はデフォルトのCheckBox1にしてあります。 Choose関数はそうそう使うものではありませんが意外と便利な関数ですから覚えておいても損はないでしょう。 以上です。  

oaji009
質問者

お礼

ありがとうございました。 おかげさまで思っていたとおりのことができました。 本当に助かりました。ありがとうございます。

その他の回答 (1)

  • shiotan99
  • ベストアンサー率68% (140/203)
回答No.1

こんにちは~ If Me.ChkBox1.Value Then Cells(I, 3).Value = 1 Else Cells(I, 3).Value = "" End If これでどうでしょうか?

oaji009
質問者

お礼

ありがとうございます。 早速やってみます。

関連するQ&A

  • ExcelVBA チェックボックスの値

    エクセル マクロ ユーザーフォーム 2つの間で、チェックボックスの状態をループを使って 取得するがわかりません? ユーザーフォーム1にチェックボックスを50個用意し、 ユーザーフォーム2にて各50個の値がtrue or falseを取得したいと考えています。 又、50個を取得する時にループを用いて、記載を短くする方法についても教えてください。 現在は、ユーザーフォーム1に下記のように指定して処理をしていますが、 varCheck1をユーザーフォーム2で、For Nextを用いて一度に処理する方法が分かりません。 Private Sub CommandButton1_Click() Dim varCheck(1 To 50) As Variant varCheck1 = ユーザーフォーム1.CHECKBOX1.Value varCheck2 = ユーザーフォーム1.CHECKBOX2.Value varCheck3 = ユーザーフォーム1.CHECKBOX3.Value ・             ・ varCheck50 = ユーザーフォーム1.CHECKBOX50.Value ・ Unload ユーザーフォーム1 End Sub 標準モジュールに PUBLICvarCheck1から50まで記載して ユーザーフォーム間を使用できるようにしています。

  • DataGridView上のチェックボックスが、TrueかFalseか

    DataGridView上のチェックボックスが、TrueかFalseか判定する際にエラーが出て困っています。 DataGridViewにチェックボックスのカラムを設定し、そのチェックボックスがTrueがFalseかを判断したいと思っています。 以下のコードではエラーになるのですが、何が原因でしょうか。 前提条件 ・環境:VS.NET(VB) ・DataGridView名:dgv ・チェックボックスのカラム名:cCheck For Each dgr As DataGridViewRow In dgv.Rows If CType(dgr.Cells("cCheck").Value, Boolean) Then '処理 End If Next デバッグをしていると、 上記の「 If CType(dgr.Cells("cCheck").Value, Boolean) Then」 でエラーが発生します。 エラー内容は「string型からBoolean型への変換は無効です。」です。 お分かりの方がおりましたら、ご回答頂ければ幸いでございます。 よろしくお願い致します。

  • チェックボックスについて

    こんにちは。 フォームで「個人別状態」が「成約済み」の時に チェックボックスにチェックがつくようにしたいのですが、 動作しません。 どこが間違っているのでしょうか。。。 Private Sub チェック31_Click() If Me.個人別状態 = "成約済み" Then Me.チェック31.Value = False Else Me.チェック31.Value = True End If End Sub

  • VBAでのチェックボックスの自動作成

    今、ワークシートに入れてあるリストを、インプットボックスでワークシートで指定して読み込ませて処理しています。 今後、複数のリスト(ワークシート)を指定する為、ワークシートの数(ワークシート名も入力して)だけユーザーフォームに自動でチェックボックスを作成するマクロを作りたいと考えています。 ワークシートの数の取得、ワークシート名の取得方法、チェックボックスの値の取得方法はわかりましたが、ワークシートの数だけ、チェックボックスを適当なサイズで自動生成する方法がわからず困っています。 長いコードになると思いますが、よろしければコードも含めて教えてください、よろしくお願いします。

  • IF関数で違う値もTRUEになる

    0502501G1、502500の二つの値を、=exact(A1,B1)で比べた結果がなぜかTrueになります。 関数が入ったセルをF2で開き、変更をせずにEnterを押すとFalseになります。 この現象について、3つ質問があります。 1.マクロでの比較でも方法によっては同じ現象がおきるでしょうか? 例えば if cells(1,1).value= cells(1,2).value thenや、 A1 = cells(1,1).value B1 = cells(1,2).value IF A1= B1 then など、比較方法は色々有ると思います。 2.このバグを直す方法ありますか? 3.このバグの原因はなんでしょうか? 非常に困っていますし、もし同一の原因でマクロなどでも似たような現象、あるいは全く異なるバグがおきるかもしれないと考えたら、ひじょうに不安です。

  • エクセル マクロ フォームのチェックボックス

    エクセルのフォームのチェックボックスで【On】にした際に 「コントロールの書式設定」にある「リンクするセル」のロックをしたいのですが マクロで実現する際、どのようなにできるのでしょうか? また、フォームのチェックボックスで【Off】にした際に、「リンクするセル」のロックの解除のしたいです。 初心者で下記を記述しましたが、チェックボックスが多いため、すべてのチェックボックスに登録するのが時間がかかるのあで、教授お願いします。 Cells.Locked = False ActiveSheet.Protect userinterfaceonly:=True ActiveSheet.Range("AY29").Locked = True

  • AccessVBAのチェックボックスの使い方

    お世話になります。 フォーム上に、印刷sw(チェックボックス)と印刷範囲(テキストボックス)を定義して、次のようにコーディングしました。 If 印刷SW = False Then 印刷SW.Value = True 印刷範囲 = "全て印刷" Else 印刷SW.Value = False 印刷範囲 = "指定印刷" End If これを実行すると 「指定した式には値がありません」 となり、 また 先頭に 印刷SW = True を加えると 「このオブジェクトに値は代入することは出来ません」 となります。 だいぶ舌足らずのところがあると思いますがうまく表現出来ません。宜しくお願いします

  • エクセルのフォームのチェックボックスについて

    エクセルのフォームのチェックボックスについて あるセルにフォームのチェックボックスを付け、 そのセルに、true・falseの条件設定をしました。 その設定を利用して、条件式書式の設定で、 trueの時にとなりのセルを赤にするようにしました。 以上のような行が1500行あります。 1つ1つ設定するのが困難のため、 マクロが使えるフォームのチェックボックスを使用しようと試みております。 しかし、マクロ内のVBAの記述方法が解りません。(1行だけなら解ります) ご存知の方がおられましたら教えてください。 よろしくお願いいたします。

  • エクセルVBA コンボボックスの値の転記

    エクセルVBAの質問です。 ユーザーフォームを表示し 年を選択するコンボボックス1 月を選択するコンボボックス2 を入力してもらい ユーザーフォームを閉じるときに sheet1のワークシートのC2セルに 「コンボボックス1の値」+「年」+と「コンボボックス2の値」+「月」をつなげて 入力できるというようなマクロを考えています。 下記の様に考えてみたのですが、 うまく入力できませんでした。 Private Sub UserForm_Initialize() With ComboBox1 .AddItem "2021" .AddItem "2022" .AddItem "2023" .AddItem "2024" End With With ComboBox2 .AddItem "1" .AddItem "2" .AddItem "3" .AddItem "4" .AddItem "5" .AddItem "6" .AddItem "7" .AddItem "8" .AddItem "9" .AddItem "10" .AddItem "11" .AddItem "12" End With Private Sub CommandButton1_Click() 'ユーザーフォームを閉じる Unload UserForm1 'ユーザーフォームの値をセルC2に入力 With Worksheets("sheet1") .Cells(2, 3).Value = "ComboBox1.Text" & "月" & "ComboBox2.Text" & "日" End With End Sub どのように修正すればいいでしょうか? よろしくお願いします。

  • Excelで、checkboxがtrueならlabelを太字、任意のセルに1を入力したい。

    質問させて頂きます。 ユーザーフォーム上にあるチェックボックスにチェックを 入れると、同じユーザーフォーム上にあるラベルの値を太字 にして、さらに特定のシートのセルに1を入力。 同じくチェックボックスのチェックを外すとラベルの値を 標準(太字でなくす)にし、特定のセルに入力された1を 消去する。 というようなことがやりたいのですが、可能でしょうか。 全てuserform1にある 1,checkbox1にチェック有り(true)のとき、   →label1の表示(値)を太字   →worksheet1のA1セルに1を入力 2,checkbox1にチェックなし(false)のとき、   →label1の表示(値)を標準文字   →worksheet1のA1セルを空白 ということを、全てチェックボックスのチェック動作 に関連させて行いたいのです。(チェックに連動させたい) おそらくVBAでの作業になるのだと思われますが あまり詳しくないのでよろしくお願いします。

専門家に質問してみよう