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