|
はらへりおおかみ さん、こんばんわ。
>例えば、入力シート上に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文を正しく設定しないとけません。
|
|