チェックボックスにマクロを登録したのですが、
チェックボックス17のはずが エラーになってしまいます。
おそらく定義をしなくちゃいけないんだろうと思うんですけど、
定義の仕方がわかりません。
ご存知の方、教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

If CheckBox17.Value = 1 Then を



If CheckBoxes("CheckBox17").Value = 1 Then

と変えてみてください。(これで動きました)私のExcelは2000ですが、チェックボックスを貼り付けると名前は『チェック 1』(VBA内ではCheck Box 1)とかになります。『CheckBox17』は後から付けた名前でしょうか。(Excel97はそうだったかもしれませんが)


別法として、チェックボックスを右クリック→コントロールの書式設定→コントロールタブで『リンクするセル』を登録します。これを例えばセルF5として、

If Range("F5") = True Then
(このコードはチェックボックスのあるシートのコードウインドウに書いた場合です)

としても同じ結果でしょう。これはチェックボックスの名前は関係なくなります。
リンクするセルについては、リンクするセルをチェックボックスが配置されているセルにして、チェックボックスを右クリック→コントロールの書式設定→色と線タブで塗りつぶしの色を自動にする方法もあります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/02/04 11:27

質問の内容がもう少し明確になれば考えることができますが・・・


(1)該当のソフトは何でしょうか(Excel?)
(2)そのソフトのバージョンは(97とか2000とか)
(3)チェックボックス17と書いてありますが、Excelだとすれば
   a.表示→ツールバー→フォームのチェックボックス
   b.表示→ツールバー→Visual Basicのコントロールツールボックスのチェックボックス
   のどちらでしょうか。
(4)『エラーになってしまいます』とありますが、
   a.マクロの登録がエラー
   b.登録後にマクロを実行したらエラー(マクロ内部でのエラー)
   のどちらでしょうか。
(5)上記(1)~(4)が明らかになっても、実際のマクロの内容が分からなければ
   答えようがないかもしれません。

間違いを承知で予測をすると、Excel97か2000あたりでフォームのチェックボックスを使っているのではないでしょうか。
これは数年前には使っていましたが、参照したりする時に面倒だった記憶があります。個人的にはフォームのコントロールは特別なことがなければ使わないようにしています。古いし、Helpでも調べにくいし解説書もあまりないように思います。
コントロールツールボックスの方が調べやすいし使用例もたくさん紹介されています。こちらなら質問のようなことは起きないかもしれません。

この回答への補足

状況としては、フォームのチェックボックスの戻り値が1の場合、あるシートを
表示するというマクロ(以下)
If CheckBox17.Value = 1 Then
Sheets("入力画面").Visible = True
Else
Sheets("入力画面").Visible = False
End If

エラー部は、CheckBox17.Valueです。
おそらくCheckBox17が悪いと思われます。
そのチェックボックスはCheckBox17であることは
違いないのですが、そのまま利用することはできない
ということでしょうか?

補足日時:2002/02/03 21:49
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルでチェックボックスをクリックしたらセルに数値を入力&消去

下記のような表を作成しています。
□はチェックボックス(コントロールツールボックスから作成したもの)で、
A1のチェックボックスにチェックするとD1とE1に○印が入り、
チェックを消すと○印も消えるようにしたいのです。
(B,Cのチェックボックスは違うセルに○印を入れるのですが、
他のチェックボックスと○を付ける項目が重複している所もあります)
 ABCDEFG
1□□□
2□□□

コードはこのようなものを書きました。
Private Sub CheckBox1_Click()
Dim teiban As Integer
teiban = ActiveSheet.CheckBox1.Value
Select Case teiban
Case True
Range("D1,E1").Value = "○"
Case False
Range("D1,E1").Value = ""
Case Else
Range("D1,E1").Value = ""
End Select
End Sub

同じ列にあるチェックボックスは違う行で同じ列に○印が入るのですが、
コードはいちいちチェックボックスごとに書かなければいけないでしょうか?

それと、行数を増やす場合があるのですが、1行目をコピーして3行目に
貼り付けてもチェックボックスはコピーされません。
何か方法がありますでしょうか?

もしチェックボックスではこのような事ができないのであれば
他にやり方などあれば教えていただけたらと思います。

使用しているのはWINDOWS98,EXCEL97です。
ご存知の方、よろしくお願いします。

下記のような表を作成しています。
□はチェックボックス(コントロールツールボックスから作成したもの)で、
A1のチェックボックスにチェックするとD1とE1に○印が入り、
チェックを消すと○印も消えるようにしたいのです。
(B,Cのチェックボックスは違うセルに○印を入れるのですが、
他のチェックボックスと○を付ける項目が重複している所もあります)
 ABCDEFG
1□□□
2□□□

コードはこのようなものを書きました。
Private Sub CheckBox1_Click()
Dim teiban As Integer
teiban = ActiveSh...続きを読む

Aベストアンサー

もう回答してもいいんでしょうか・・・?

コントロールツールボックスのチェックボックスはデザインモードならコピーできるはずです。
ただし、この場合は各チェックボックス毎にコードを書く必要があります。共通ルーチンを呼ぶようにできますが、イベントをまとめてつかまえられないので、コントロールの数分イベントを書く必要があるでしょう。VBAには、VBのようにコントロール配列がないからです。(ユーザーフォーム上ではコントロール配列風な書き方もできますが、シート上では行ったことがありません。余りその気ももおきませんが・・・)

フォームのチェックボックスを使えば、チェックボックスを貼り付けるだけで、コードを追加しなくても(1つのコードで)対応可能です。下はその例です。1つのマクロしかありませんが、理屈では何個のチェックボックスがあってももかまいません。必要な分だけチェックボックスをコピーしてください。(何個まで可能かは確認できていません)
フォームとコントロールツールボックスのコントロールの特性の違いを理解して使うべきでしょう。


作り方
0.下のコードを標準モジュールに貼り付けます。
   ※A、B、C列にチェックボックスがある例です。
   ※登録したマクロ内で、チェックボックスの位置を調べています。
   ※位置が決れば、チェックボックスの値で処理が決定できる理屈です。

1.フォームのチェックボックスを使い、セルA1に納まるように配置します。

2.セルA1のチェックボックスを右クリックし、下のマクロを登録します。

3.セルA1のチェックボックスをコピーして、B1、C1に貼り付けます。

4.1行目を選択して、3行目にコピーします。後は必要な回数繰り返します。
   ※下のコードのB、C列の処理は例です。実状にあうように修正して下さい。
      (Excel97 で確認)

ここから

Sub checkBox_MacroTest()
  Dim chkboxVal As Boolean  'チェックボックスの値
  Dim rw As Long       'チェックボックスのある行
  Dim col As Integer     'チェックボックスのある列

  'チェックボックスの値
  chkboxVal = (ActiveSheet.CheckBoxes(Application.Caller).Value = 1)

  'チェックボックスの位置を調べる
  ActiveSheet.CheckBoxes(Application.Caller).Select
    rw = Selection.TopLeftCell.Row
    col = Selection.TopLeftCell.Column
    Selection.TopLeftCell.Select

  '位置によって『○』を付ける位置を決定する。Falseなら消す。
  Select Case col
    Case 1   'A列のチェックボックス。D、E列を操作している
      Cells(rw, 4) = IIf(chkboxVal, "○", "")
      Cells(rw, 5) = IIf(chkboxVal, "○", "")
    Case 2   'B列のチェックボックス。F、G列を操作している(例)
      Cells(rw, 6) = IIf(chkboxVal, "○", "")
      Cells(rw, 7) = IIf(chkboxVal, "○", "")
    Case 3   'C列のチェックボックス。H、I列を操作している(例)
      Cells(rw, 8) = IIf(chkboxVal, "○", "")
      Cells(rw, 9) = IIf(chkboxVal, "○", "")
  End Select
End Sub

もう回答してもいいんでしょうか・・・?

コントロールツールボックスのチェックボックスはデザインモードならコピーできるはずです。
ただし、この場合は各チェックボックス毎にコードを書く必要があります。共通ルーチンを呼ぶようにできますが、イベントをまとめてつかまえられないので、コントロールの数分イベントを書く必要があるでしょう。VBAには、VBのようにコントロール配列がないからです。(ユーザーフォーム上ではコントロール配列風な書き方もできますが、シート上では行ったことがありません。...続きを読む

QExcel2007 でのチェックボックスの名称

Excel2007 でフォームコントロールのチェックボックスのオブジェクト名のつけ方を教えてください。

普通にチェックボックスをつくって、プロパティを表示してもオブジェクト名をつけれるところがありません。

ActiveXのチェックボックスだと該当するものがでてきます。

やり方を教えて頂ければ助かります。

Aベストアンサー

ぁ、失礼。
[オブジェクトの選択]は2007では[ホーム]タブの[編集]-[検索と選択]にあります。
さらにその下の[オブジェクトの選択と表示]メニューを使うと、
このメニューからでもオブジェクト名を変更する事ができます。

ついでにVBAで名前を設定する例。
'選択して
If TypeName(Selection) = "CheckBox" Then
  Selection.Name = "Check_1"
End If

'あるいはインデックス順にLoopして連番、またはTopLeftCell情報の利用、など
Dim cb As CheckBox
Dim i As Long
For Each cb In ActiveSheet.CheckBoxes
  i = i + 1
  cb.Name = "Check_" & i
  'cb.Name = "Check_" & cb.TopLeftCell.Address(0, 0)
Next

QExcelでチェックボックスを使った列のコピー方法

案件進捗表を作成しています。
進捗に応じて右へ右へとチェックボックスにチェックを入れていく形にしていて、
チェックボックスのとなりのセルに真偽の値を入れるように反映させています。
案件が増えるごとに、1,2,3行と・・とデータを増やしていきたいのですが、
1行目に作成した形式を下にコピーするとチェックボックスが全データ同じ動きをしてしまいます。
となりのセルに「TRUE」などを返すように反映させているチェックボックスはコピーできませんか?
教えてください。よろしくお願いします。

Aベストアンサー

エクセルでは、「フォーム」のチェックボックスと「ActiveXコントロール(コントロールツールボックス)」のチェックボックスの、2種類のチェックボックスが利用できます。
ご相談ではいったいどっちを使って作成したのか、しっかり情報提供してください。

#余談ですがご利用のエクセルのバージョンについても、必ず明記する事を憶えて下さい。


ただまぁ、どちらを使っても「下にコピーしただけで隣に結果が返る」ようにする方法は、残念ですがありません。



というワケで出来る方法:
1.今まで作成したチェックボックスはすべて消去する
2.「フォーム」のチェックボックスをシートに配置する
  その際、必ず「セルの中に納まる」ようにセルの大きさも含めて調整する
3.コントロールの書式設定は「設定しない」でおく
4.右クリックして「マクロの登録」を開始する
5.新規作成を選択、現れた画面で

Sub チェック1_Click()
with activesheet.shapes(application.caller).topleftcell.offset(0, 1)
.value = not .value
end with
End Sub

のように記入作成する

6.ファイルメニューから終了してエクセルに戻る
7.マクロを登録したチェックボックス「が載っているセル」をコピーし、必要なセルに貼り付ける
8.チェックを入れたり外すと、右隣のセルに-1と0が交互に現れる



#おまけ
-1と0のセルにセルの書式設定の表示形式のユーザー定義で
0;"TRUE";"FALSE"
と設定しておくと、TRUEとFALSEの表示になります。「見た目」が重要な時は適宜利用してください。

エクセルでは、「フォーム」のチェックボックスと「ActiveXコントロール(コントロールツールボックス)」のチェックボックスの、2種類のチェックボックスが利用できます。
ご相談ではいったいどっちを使って作成したのか、しっかり情報提供してください。

#余談ですがご利用のエクセルのバージョンについても、必ず明記する事を憶えて下さい。


ただまぁ、どちらを使っても「下にコピーしただけで隣に結果が返る」ようにする方法は、残念ですがありません。



というワケで出来る方法:
1.今まで作成した...続きを読む

QExcelのVBA・チェックボックスの操作を教えて下さい。

ExcelのVBAで、チェックボックス(ActiveXコントロール)を使用し、各セル毎に設定する方法を教えてください。

はじめまして、VBA初心者です。
下記のように、各セルにチェックボックスを設け、VBA(セル内を値のみにする<Selection.Value = Selection.Value>)で各セル毎にチェックボックスが機能するようにしたいのですが、どのようにすれば宜しいでしょうか?

現状下記のようにチェックボックスを配置しております。
・A列には各番号が振ってあります。
・B列にチェックボックスを配置。
・C列に関数<=Today()>を使用して、設定してあります。
A B C
1 □ 2/23
2 □ 2/23
3 □ 2/23
4 □ 2/23
5 □ 2/23

VBA内での指示は以下になります。
Selection.Value = Selection.Value

ひとつのチェックボックスにはVBAを設定することはできたのですが、各チェックボックス(B2-B5以下)への設定が難航している状態です。

ちなみに下記VBAを設定しました。

Sub 関数値変換()

Range("c7").Select

Selection.Value = Selection.Value

End Sub

※また可能であれば、VBAと関数にて(もしくはいずれかで)、チェックボックスを使用時、TRUEであれば→selection.value、FALSEであれば元の関数に戻す、が行える方法を教えていただけますか。

大変申し訳ございませんが、皆様のお力添えのほどよろしくお願いします。

ExcelのVBAで、チェックボックス(ActiveXコントロール)を使用し、各セル毎に設定する方法を教えてください。

はじめまして、VBA初心者です。
下記のように、各セルにチェックボックスを設け、VBA(セル内を値のみにする<Selection.Value = Selection.Value>)で各セル毎にチェックボックスが機能するようにしたいのですが、どのようにすれば宜しいでしょうか?

現状下記のようにチェックボックスを配置しております。
・A列には各番号が振ってあります。
・B列にチェックボックスを配置。
・C列に関数...続きを読む

Aベストアンサー

こんにちは。

> ExcelのVBAで、チェックボックス(ActiveXコントロール)を使用し、各セル毎に設定する方法を教えてください。

「初心者」となると、
ActiveXコントロールの扱いはまともにやるとなると結構難しいです。
易しい方法もありますが手数が掛かります。
もしもフォームコントロールのチェックボックスでも良ければ、
(ActiveXコントロールに比べてデザイン性・機能性は落ちますが)
かなり簡単に出来ます。
なので、
◆易しいけど手数が掛かる◆ActiveXコントロールを使用する例◆初級向き◆
◆簡単な◆フォームコントロールを使用する例◆初心者向き◆
◆少し難しい◆ActiveXコントロール+クラスを使用する例◆初中級向き◆
の3例挙げておきます。
どれを奨めるでもないので、自分に合ったやり方を見つけてみてください。

その前に、処理内容に関する共通したポイントについて。
まず、チェックボックスをセルに貼り付けるような手順等で
正しい位置(コントロールの左上がセルから食み出さない位置)
に配置してあるならば、
チェックボックスを配したセルのひとつ右のセルへの参照として
 checkbox.TopLeftCell.Offset(, 1) ...のように
一様な多数のチェックボックスに共通した記述が可能になります。
つまりこれは、チェックボックス毎ひとつひとつに
セル範囲を指定する必要はない、ということです。
次に、現在の日付を定数値で設定するだけなら
VBAにはDate()関数があるので
 checkbox.TopLeftCell.Offset(, 1).Value = Date
のような記述が可能です。
> Selection.Value = Selection.Value
> TRUEであれば→selection.value、FALSEであれば元の関数に戻す、が行える方法
Trueであれば現在の日付を定数値で、FalseであればExcel関数"=TODAY()"、
チェックボックスが押されて値が変わったタイミングで
チェックボックスが配されたセルのひとつ右のセルに対して処理をする。
という記述は、条件判別さえ出来れば、さほど難しいものではないです。

問題は、多数あるチェックボックスと
一様な(隣のセルを操作するだけの)処理とを
どのように連動させるか、という点に集約されます。

◆易しいけど手数が掛かる◆ActiveXコントロールを使用する例◆初級向き◆
配置済みのActiveX.チェックボックスはそのままで。
チェックボックス毎にひとつずつプロシージャを書きます。
◆以下、チェックボックスを配置したシートの[シートモジュール]
' ' ==================
Private Sub CheckBox1_Change()
  関数値変換 CheckBox1
End Sub
Private Sub CheckBox2_Change()
  関数値変換 CheckBox2
End Sub
Private Sub CheckBox3_Change()
  関数値変換 CheckBox3
End Sub
' ' … CheckBoxの名前2ヶ所違うだけの同じ記述の繰り返し …
Private Sub CheckBox99_Change()
  関数値変換 CheckBox99
End Sub
' ' ----------------------------------------
Private Sub 関数値変換(oCx As MSForms.CheckBox)
  With oCx
    If .Value = True Then
      .TopLeftCell.Offset(, 1).Value = Date
    Else
      .TopLeftCell.Offset(, 1).Formula = "=today()"
    End If
  End With
End Sub
' ' ==================
プロシージャをコピーして複製を必要な数作り
チェックボックスの名前を慎重に正確に書換えていく
作業が必要です。◆◆

◆簡単な◆フォームコントロールを使用する例◆初心者向き◆
配置済みのActiveX.チェックボックスはすべて破棄します。
◆まず、[標準モジュール]に以下の記述をコピペしてシート名を正しく指定します。
' ' ==================
Sub CheckBoxes_Change()
  With Sheets("Sheet1").Shapes(Application.Caller) ' ★シート名を正しく指定!!
    If .DrawingObject.Value = 1 Then
      .TopLeftCell.Offset(, 1).Value = Date
    Else
      .TopLeftCell.Offset(, 1).Formula = "=today()"
    End If
  End With
End Sub
' ' ==================
◆次に、B1セルにフォームコントロールのチェックボックスを挿入し
右クリックで[マクロの登録]
→表示されたリストから"CheckBoxes_Change"をクリックして選択
→[OK]ボタン
必要なら、位置やサイズの微調整やキャプションや書式の変更を加える。
出来上がったチェックボックスをコピーし
B2、B3、、、と順番に
<次のセルを選択(クリック)して→貼付け>を繰り返して
必要な数のチェックボックスを配置する。これだけでOKです。◆◆

◆少し難しい◆ActiveXコントロール+クラスを使用する例◆初中級向き◆
配置済みのActiveX.チェックボックスはそのままで。
◆まず、[ThisWorkbookモジュール]に以下の記述をコピペしてシート名を正しく指定します。
次回からブックを開いた時に自動で(または直接手動で)
Workbook_Open イベントプロシージャを実行することで
チェックボックスと一様な(隣のセルを操作するだけの)処理とを
連動させるようにVBAが設定してくれます。
(デザインモード移行やエラー終了の場合は
 再度、Workbook_Openを実行して復旧する必要があります)
' ' ==================
Private cClass As Collection
' ' ----------------------------------------
Private Sub Workbook_Open()
Dim o As OLEObject
  Set cClass = New Collection
  For Each o In Sheets("Sheet1").OLEObjects ' ★シート名を正しく指定!!
    If TypeName(o.Object) = "CheckBox" Then
      If o.TopLeftCell.Column = 2 Then ' ★チェックボックスの列位置を正しく指定!!
        cClass.Add New Class1, o.Name
        Call cClass(o.Name).SetEv(o.Object)
      End If
    End If
  Next
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim i As Long
  If cClass Is Nothing Then Exit Sub
  For i = 1 To cClass.Count
    Call cClass(1).CancelEv
    cClass.Remove 1
  Next i
  Set cClass = Nothing
End Sub
' ' ==================

◆次に、
VBE(VBA編集画面)で、
メニュー[挿入][クラスモジュール]→新しく[Class1モジュール]が挿入される
[Class1モジュール]に以下の記述をコピペします。
' ' ==================
Private WithEvents myCx As MSForms.CheckBox
' ' ----------------------------------------
Private Sub myCx_Change()
  With myCx
    If .Value = True Then
      .TopLeftCell.Offset(, 1).Value = Date
    Else
      .TopLeftCell.Offset(, 1).Formula = "=today()"
    End If
  End With
End Sub
Sub SetEv(o As MSForms.CheckBox)
  Set myCx = o
End Sub
Sub CancelEv()
  Set myCx = Nothing
End Sub
' ' ==================
多数のコントロールに同じ処理を実行させるには
このようにクラスモジュールを用いるのが有効です。◆◆
以上です。

こんにちは。

> ExcelのVBAで、チェックボックス(ActiveXコントロール)を使用し、各セル毎に設定する方法を教えてください。

「初心者」となると、
ActiveXコントロールの扱いはまともにやるとなると結構難しいです。
易しい方法もありますが手数が掛かります。
もしもフォームコントロールのチェックボックスでも良ければ、
(ActiveXコントロールに比べてデザイン性・機能性は落ちますが)
かなり簡単に出来ます。
なので、
◆易しいけど手数が掛かる◆ActiveXコントロールを使用する例◆初級向き◆
◆...続きを読む

Qチェックボックスに登録したマクロがダブルクリックだと実行できるので出来なくしたい

Excel 2013のシート上に、フォームコントロールのチェックボックスが配置してあり、
そのチェックボックスにマクロが登録されていますが、一時的にマクロを実行したくない場合、
VBAで Shapes("Check Box 1").ControlFormat.Enabled = False とすると、
チェック出来なくなり、マクロも実行出来なくなっていいのですが、
チェックボックスをダブルクリックすると登録したマクロが実行出来てしまいます。

これを実行出来なくする方法を、お判りの方・いいアイデアのある方がいらしたら教えて下さい。

こうゆう仕様なのでしょうか?........ 図形でも同じ動きでした。
ActiveXのチェックボックスだと出来そうなのは分るのですが、
フォームコントロールのチェックボックスで制御できないものでしょうか?

宜しくお願いします。

Aベストアンサー

こんにちは。

フォームコントロールで、起動を止める方法は、今のところ2つ浮かびます。

1.一般的な方法
CheckBox に取り付けているマクロはどのようなものにしても、以下のように、フラグを付けて、離脱するか決めさせます。

Private Const flg As Boolean = True '←このようにして、マクロの実行を止めます
Sub チェック1_Click()
If flg Then Exit Sub  'Trueの場合はマクロを実行しない
Range("A1").Value = Range("A1").Value + 1
End Sub

2. このようにして、マクロの登録を回避させ空白にして、「代替えテキスト」に移してしまいます。
タブルクリックしても、メッセージなども出てきません。戻す時は、逆の方法を取ります。

Sub Macro1()
Dim bln As Boolean
Dim chkb As Object
For Each chkb In ActiveSheet.CheckBoxes
 chkb.ShapeRange.AlternativeText = chkb.OnAction  'マクロの命令を退避させる
 chkb.OnAction = ""
Next
End Sub

chb.OnAction の部分にダミーマクロを入れてあげても可能ですが、元のマクロコードに戻すためには、どこかにコードは置いておかなくてはなりません。また、chb.OnAction = "+" & chb.OnAction でもよいのですが、ダブルクリツクすると、「マクロが見つからない」というエラー表示をします。

こんにちは。

フォームコントロールで、起動を止める方法は、今のところ2つ浮かびます。

1.一般的な方法
CheckBox に取り付けているマクロはどのようなものにしても、以下のように、フラグを付けて、離脱するか決めさせます。

Private Const flg As Boolean = True '←このようにして、マクロの実行を止めます
Sub チェック1_Click()
If flg Then Exit Sub  'Trueの場合はマクロを実行しない
Range("A1").Value = Range("A1").Value + 1
End Sub

2. このようにして、マクロの登録を回避させ空白にして...続きを読む

Qチェックボックスの箱のサイズとフォントサイズは変更できるの?

こんにちわ。

エクセル2000でチェックボックスを作成したのですが、
やや、小さいのでサイズを大きくしたいのです。
ボックスサイズ、ボックスの横に入れる文字の
フォントサイズは大きくできるのでしょうか?
もし、できるのなら方法を教えてください。

よろしくおねがいします。

Aベストアンサー

コントロールツールボックスのチェックボックスならプロパティにFontがあるので変更できます。

フォームのチェックボックスやオプションボタンのフォントサイズは変更できなかったと思いますが、変更したように見せかけはできます。使用上、特に問題はないと思います。(だからダイアログにフォントがない?)

チェックボックスの位置によって、
(1)チェックボックス(四角)がセルの中央にある場合
 チェックボックスのテキストを必要な長さの空白にしてしまいます。
 チェックボックス(四角)の右横のセルにチェックボックスの説明のテキストを入れます。
 セルの書式設定でフォントが変更できます。
(2)チェックボックス(四角)をセルの境目などにセットする場合
 チェックボックスのテキストを必要な長さの空白にしてしまいます。
 図形描写からテキストボックスを選択し、チェックボックスの説明のテキストを入れます。
 テキストボックスは『線なし』にしておきます。2行で表示したりもできます。
 チェックボックスとテキストボックスを重ねて、見た目を調節します。
 テキストボックスを選択し、右クリック→順序→最背面へ移動 とします。

ご参考に。

コントロールツールボックスのチェックボックスならプロパティにFontがあるので変更できます。

フォームのチェックボックスやオプションボタンのフォントサイズは変更できなかったと思いますが、変更したように見せかけはできます。使用上、特に問題はないと思います。(だからダイアログにフォントがない?)

チェックボックスの位置によって、
(1)チェックボックス(四角)がセルの中央にある場合
 チェックボックスのテキストを必要な長さの空白にしてしまいます。
 チェックボックス(四角)の右横のセ...続きを読む

QExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。

以下のようなプログラムをVBAで作成したいと考えています。

A1のセルに値があれば、その値をB1に返す。
次にA2のセルに値があれば、その値をB2に返す。
A行に値がある一番下のセルまで同じようなことをさせたいと考えています。

VBAは初心者です。
どなかた宜しくお願い致します。

Aベストアンサー

#2さんと似たものですが・・・・参考にしてください。

Sub test001()
Dim i As Long
i = 1
Do While Cells(i, 1) <> ""
Cells(i, 2) = Cells(i, 1)
i = i + 1
Loop
End Sub

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

Qエクセルマクロでチェックボックスを作成する方法

下記の方法でExcel起動時にE1~E50にチェックボックスを
作成しています。
(F列にはチェックの結果を表示させています)

Sub Auto_open()
Dim i As Integer
Dim cbx As CheckBox
With Selection.Parent
For i = 1 To 50
Set cbx = .CheckBoxes.Add(Left:=Cells(i, 5).Left, _
Top:=Cells(i, 5).Top, _
Height:=Cells(i, 5).Height, _
Width:=Cells(i, 5).Width)
cbx.Text = ""
cbx.LinkedCell = "F" & i
cbx.Display3DShading = True
Next i
End With
Set cbx = Nothing
End Sub

チェックボックスにチェックされたら
チェックされた行のA~Dの色を変更したいのですが、
どのようにやるのか分からなく困っています。
(チェックボックスのクリックイベントを50個つくるわけにも
いかないですし・・・)

何か少しでもアイデア等ございましたら
ご教授お願いします。

下記の方法でExcel起動時にE1~E50にチェックボックスを
作成しています。
(F列にはチェックの結果を表示させています)

Sub Auto_open()
Dim i As Integer
Dim cbx As CheckBox
With Selection.Parent
For i = 1 To 50
Set cbx = .CheckBoxes.Add(Left:=Cells(i, 5).Left, _
Top:=Cells(i, 5).Top, _
Height:=Cells(i, 5).Height, _
Width:=Cells(i, 5).Width)
cbx.Text = ""
...続きを読む

Aベストアンサー

方法1:
Sub Macro1()
 Dim cbx As CheckBox

 Set cbx = ActiveSheet.CheckBoxes.Add( _
  Top:=Range("E1").Top, _
  Left:=Range("E1").Left, _
  Width:=Range("E1").Width, _
  Height:=Range("E1").Height)
 cbx.Text = ""
 cbx.Display3DShading = True
 cbx.OnAction = "チェック1_Click"

 Range("E1:E50").FillDown
End Sub

Sub チェック1_Click()
 With ActiveSheet.Shapes(Application.Caller)
 .TopLeftCell.Offset(0, -4).Resize(1, 4).Interior.ColorIndex = _
 IIf(.ControlFormat.Value = 1, 4, xlNone)
End With
End Sub
とかなんとか。


方法2:
>F列にはチェックの結果を表示させています
これを拾って反応する条件付き書式をA:D列に施しておくのでも。

方法1:
Sub Macro1()
 Dim cbx As CheckBox

 Set cbx = ActiveSheet.CheckBoxes.Add( _
  Top:=Range("E1").Top, _
  Left:=Range("E1").Left, _
  Width:=Range("E1").Width, _
  Height:=Range("E1").Height)
 cbx.Text = ""
 cbx.Display3DShading = True
 cbx.OnAction = "チェック1_Click"

 Range("E1:E50").FillDown
End Sub

Sub チェック1_Click()
 With ActiveSheet.Shapes(Application.Caller)
 .TopLeftCell.Offset(0, -4).Resize(1, 4).Interior.ColorIndex = ...続きを読む

Qチェックボックスの択一選択方法教えてください。

osはwindows98 officeはxpです。
ワード文書内にチェックボックスが3つあるとします。
今は、3つ全部にチェックを入れる事ができてしまいます。。。。3つのチェックボックスのうち一つしかチェックが入らないようにするにはどうしたら良いのでしょうか?(例えば、1にチェックが入っていて、2にチェックを入れると、1のチェックが消え、2だけにチェックがはいるようにしたいのです)どなたかご存知の方、ぜひ教えてください。お願いします。

Aベストアンサー

こんにちは、s_yoshi_6です。先ほどはどうも。

もしも、ラジオボタン(丸いボタン。Wordではオプションボタンと言ってます)でよければ、「フォーム」ツールバーではなくて、「コントロールツールボックス」ツールバーの中にあります。

挿入したい所にカーソルを置いて、「オプションボタン」のボタンをクリックすると挿入されます。
ただそのままだと、挿入したオプションボタン全てで択一になりますので、もし例えば三択が複数ある場合などは、挿入したボタンを右クリック→プロパティのGroupNameのところに適当なグループ名を記入します。このGroupNameが同じものの中で択一になります。なおボタン名は、ボタンを右クリック→オプションボタンオブジェクト→編集で変更できますので、不要であればそこで削除して下さい。

編集が終わったら最後に「コントロールツールボックス」ツールバー(または外に1つ小さくパレットが出ていると思いますが)の「デザインモードの終了」ボタン(三角定規に鉛筆)をクリックして下さい。

このボタンには色々機能を持たせることができるのですが、そのへんになるとちょっと分かりません。もしチェックをつけるだけでよければ、ちょっと試してみて下さい。

こんにちは、s_yoshi_6です。先ほどはどうも。

もしも、ラジオボタン(丸いボタン。Wordではオプションボタンと言ってます)でよければ、「フォーム」ツールバーではなくて、「コントロールツールボックス」ツールバーの中にあります。

挿入したい所にカーソルを置いて、「オプションボタン」のボタンをクリックすると挿入されます。
ただそのままだと、挿入したオプションボタン全てで択一になりますので、もし例えば三択が複数ある場合などは、挿入したボタンを右クリック→プロパティのGroupNameのところ...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報