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