Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1239 / 13645 ツリー ←次へ | 前へ→

【75502】チェックボックスをすべてオフに 初心者毛 14/4/24(木) 20:01 質問[未読]
【75503】Re:チェックボックスをすべてオフに γ 14/4/24(木) 22:13 発言[未読]
【75505】Re:チェックボックスをすべてオフに 初心者毛 14/4/24(木) 23:08 発言[未読]
【75506】Re:チェックボックスをすべてオフに γ 14/4/25(金) 7:42 発言[未読]
【75508】Re:チェックボックスをすべてオフに 初心者毛 14/4/25(金) 19:36 質問[未読]

【75502】チェックボックスをすべてオフに
質問  初心者毛  - 14/4/24(木) 20:01 -

引用なし
パスワード
   よろしくお願いします。

明日までにあるファイルの入力部分をマクロで
空白にするマクロを作っております。
これ自体は簡単にマクロ記録で作れましたが
チェックボックスを空白状態にしようとした所
一つのシートだけ・・・のコントロールはまだ作成されておりません
というメッセージが出てきて私には対処できませんでした。

その為いったんチェックボックスを全て破棄して

開発ー挿入ーフォームコントロールでチェックボックスを全部
作り直しました。

ところが今度は

アプリケーション定義またはオブジェクト定義エラー
のメッセージ違反が出てどうしたらいいかわからなくなりました。

使用OSはWIN7 オフィス7を使っております。
が、これは職場の各部署に配るのでXPや2003の環境もあるかもしれません。

使用したコードはネットで拾ったもので


Dim o As Object
  For Each o In ActiveSheet.OLEObjects
  If TypeOf o.Object Is MSForms.CheckBox Then
    o.Object.Value = False
  End If
  Next o
End Sub

ともうひとつ

ActiveSheet.CheckBoxes.Value = xlOff


を自作クリアマクロに加えています。

なにとぞアドバイスお願いします

【75503】Re:チェックボックスをすべてオフに
発言  γ  - 14/4/24(木) 22:13 -

引用なし
パスワード
   # 回答者毛 です。

ActiveSheet.OLEObjects を使ったものは、ActiveXコントロール用です。

ActiveSheet.CheckBoxes.Value = xlOff
だけで良いはずです。

【75505】Re:チェックボックスをすべてオフに
発言  初心者毛  - 14/4/24(木) 23:08 -

引用なし
パスワード
   ご回答ありがとうございます。

>ActiveSheet.CheckBoxes.Value = xlOff

を試してみましたが
やはり定義エラーのメッセージが出てきてしまいます。

【75506】Re:チェックボックスをすべてオフに
発言  γ  - 14/4/25(金) 7:42 -

引用なし
パスワード
   >>ActiveSheet.CheckBoxes.Value = xlOff
>を試してみましたが
>やはり定義エラーのメッセージが出てきてしまいます。

それ以外のコードでエラーになっている可能性はありませんか?
ActiveSheet.CheckBoxes.Value = xlOff
の行だけからなるプロシージャで試してください。

また、エラーメッセージは省略せずに、正確にすべてを示してください。
皆さんから指摘がいただけるはずです。

なお、特定のシートだけで発生するなら、その特徴を調べるか、
場合によっては、新規シートに再作成することも有効かもしれません。

【75508】Re:チェックボックスをすべてオフに
質問  初心者毛  - 14/4/25(金) 19:36 -

引用なし
パスワード
   アドバイスありがとうございます。
使っているシートを壊れシートと呼ぶことにします。

壊れシートに
>ActiveSheet.CheckBoxes.Value = xlOffだけを試してもエラー57121が出ます。
<アプリケーション定義、又はオブジェクト定義のエラーです>と書かれています。

新シートを挿入し壊れシートの表をコピペしたところ、元の半分自作コードも問題なく動きました。

  Range( _
    "C3:L5,N4:P5,T4:Y5,R4:S5,AA4:AB5,AE4:AK5,B6:C7,G6:I7,G8:I9,O6:AA7,O8
:AA9,AG6:AK7,AG8:AK9,J12:N12,H13:AK14,Z12:AK12,H15:O16,R15:S16,AB15:AK15
,H17:AK18,H19:T20,H21:O22,R21:S22,H23:AK24,H25:T26,Y25:AK26,H27:O28,R27:
S28,H29:AK30,H31:T32,A35:Z52,AB37:AK45" _
    ).Select

  Selection.ClearContents
ActiveSheet.CheckBoxes.Value = False


なのでコピペシートを調整していけば解決となりますが。

もし壊れシート上になんらかの見えないバグオブジェクトのような
ものが残っているとすると、そういうものを消すコードを
7〜8年前にここで見かけたことがあるのですが
誰かご存知ないでしょうか?

1239 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free