Excel VBA質問箱 IV

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

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


5027 / 76735 ←次へ | 前へ→

【77322】Re:実行時エラー91について
発言  ichinose  - 15/7/5(日) 22:31 -

引用なし
パスワード
   >でも、使った方が楽ということもありますので、ケースバイケース。
モジュールレベルの変数を否定している訳ではありません。
そんなこと言ったらクラスを否定しなければなりません。

標準モジュールのPublic変数を作らないほうが良い と言っています。


>
>こちらの xl2010,xl2013 で、ボタンクリックを、5回ずつ実行。
>1回あたり100個のチェックボックスを生成していて、だんだん遅くはなるんですが
>エラーにはならず、それぞれ、500個のチェックボックスが作られました。
>
これに関しては、私の認識不足がありました。作成するActiveXControlが
アクティブシートでなければ、変数が初期化されませんでした。


こんな手順で初期化が再現されました。


新規ブック(Sheet1 Sheet2 というシートが存在する)にて、
Sheet1にActiveXControlのコマンドボタンを二つ配置してください。
(CommandButton1 CommandButton2)。

標準モジュールに 私が否定しているPublic変数の宣言

Option Explicit
Public Wb As Workbook        'ワークブック
Public Ws1 As Worksheet       'ワークシート
Public Ws2 As Worksheet       'ワークシート


ThisworkBookのモジュールに

Option Explicit
Private Sub Workbook_Open()
  Set Wb = Me
  Set Ws1 = Wb.Worksheets("Sheet1")
  Set Ws2 = Wb.Worksheets("Sheet2")
End Sub


Sheet1のモジュールに


Option Explicit
Private Sub CommandButton1_Click()
  Dim x As Long
  Dim xx As Long
  xx = 5
  For x = 1 To xx
     'チェックボックスを作成する
    With Ws2.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, DisplayAsIcon:=False)
     End With
   Next x
End Sub
Private Sub CommandButton2_Click()
  Dim tctrl As Object
  For Each tctrl In Ws2.Shapes
    If Left(tctrl.Name, 8) = "CheckBox" Then
      Ws2.Shapes(tctrl.Name).Delete
    End If
  Next
End Sub

と殆ど ぴょんさんが提示されたコードと同じですが、同期がとれるように
再度、記述しておきます。

Sheet2のシートをアクティブにして セルA1を選択してください。
Sheet1のシートをアクティブにしてください。

これを 適当な場所に 変数初期化1.xlsm という名前で保存してください。


一度、このブックを閉じたのち、再度開いてください。


1 Commandbutton2をクリックしてください。
2 Commandbutton1をクリックしてください。
  Sheet2にチェックボックスが作成されます。

3 Sheet2をアクティブにしてください。
4 チェックボックスが作成されている事を確認し、この状態で上書き保存を行ってください。

5 保存後に Sheet1をアクティブにしてください。

この1〜5を繰り返してください。何度目かの2で
実行時エラー:91 オブジェクト変数またはWithブロック変数が設定されていません

が発生しました(殆ど2回目の2で発生します)。

1 hits

【77316】実行時エラー91について ぴょん 15/7/5(日) 17:27 質問[未読]
【77317】Re:実行時エラー91について β 15/7/5(日) 18:03 発言[未読]
【77318】Re:実行時エラー91について β 15/7/5(日) 19:26 発言[未読]
【77319】Re:実行時エラー91について ichinose 15/7/5(日) 19:51 発言[未読]
【77321】Re:実行時エラー91について ぴょん 15/7/5(日) 22:29 発言[未読]
【77325】Re:実行時エラー91について ichinose 15/7/5(日) 23:18 発言[未読]
【77320】Re:実行時エラー91について β 15/7/5(日) 20:56 発言[未読]
【77322】Re:実行時エラー91について ichinose 15/7/5(日) 22:31 発言[未読]
【77323】Re:実行時エラー91について ぴょん 15/7/5(日) 22:34 発言[未読]
【77324】Re:実行時エラー91について β 15/7/5(日) 23:18 発言[未読]
【77326】Re:実行時エラー91について β 15/7/5(日) 23:26 発言[未読]
【77327】Re:実行時エラー91について ぴょん 15/7/6(月) 20:29 質問[未読]

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