Excel VBA質問箱 IV

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

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


75936 / 76738 ←次へ | 前へ→

【5233】Re:シート上に配置しているのですが
回答  りん E-MAIL  - 03/4/29(火) 20:23 -

引用なし
パスワード
   はらへりおおかみ さん、こんばんわ。

>例えば、入力シート上にOLEオブジェクトを置いて、記録用シートに転送する場合、
>For J = 1 To 60
>     'チェックボックスがシート上の場合
>     With ActiveSheet.OLEObjects("CheckBox" & J).Object
>      Select Case .Value
>        Case True: .Cells(I, 8 + J).Value = "レ"
>        Case Else: .Cells(I, 8 + J).Value = ""
>      End Select

>のWith ActiveSheet.OLEObjects("CheckBox" & J).ObjectをWith WORKSEETS("入力シート").OLEObjects("CheckBox" & J).Objectに変更、Case True: WORKSEETS("記録シート").Cells(I, 8 + J).Value = "レ"に変更したのですが上手く動かないようです。実行時エラー'438'が出てくるのですが、何が原因なのでしょうか?

With文でのオブジェクト指定が間違えてます。

With ActiveSheet.OLEObjects("CheckBox" & J).Object 
///略
  Case True: .Cells(I, 8 + J).Value = "レ"

これだと、
ActiveSheet.OLEObjects("CheckBox" & J).Object.Cells(I, 8 + J).Value = "レ"
としていることになり、
.Cellsは ActiveSheet.OLEObjects("CheckBox" & J).Objectの子オブジェクトではないのでエラーになります。

この分岐の部分を直接指定
>Case True: WorkSheets("記録用").Cells(I, 8 + J).Value = "レ"
>Case Else: WorkSheets("記録用").Cells(I, 8 + J).Value = ""

または、オブジェクト変数で指定する
>For J = 1 To 60
  Set r1 = WorkSheets("記録用").Cells(I, 8 + J)
////略
  Case True: r1.Value = "レ"
  Case Else: r1.Value = ""
////略

なとどして、With文を正しく設定しないとけません。
6 hits

【4909】チェックボックスのマクロを簡単に書くには? はらへりおおかみ 03/4/13(日) 18:30 質問
【4911】Re:チェックボックスのマクロを簡単に書くに... Hirofumi 03/4/13(日) 19:05 回答
【5060】Re:チェックボックスのマクロを簡単に書くに... りん 03/4/20(日) 10:30 回答
【5119】Re:チェックボックスのマクロを簡単に書くに... はらへりおおかみ 03/4/22(火) 22:31 お礼
【5232】シート上に配置しているのですが はらへりおおかみ 03/4/29(火) 20:09 質問
【5233】Re:シート上に配置しているのですが りん 03/4/29(火) 20:23 回答
【5357】Re:シート上に配置しているのですが はらへりおおかみ 03/5/7(水) 22:08 お礼

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