>>186,187
Range("a1:c1").Valueは配列。配列をString型に入れようとすればエラーだわな

セル範囲の値を変数に入れるには Dim str As Variant
コピーなら同じ範囲を指定して Sheets(X).Range("a1:c1").Value = str として
もよいが、それなら >> 187 で十分。
セル範囲をVariant変数に入れる本来の目的は str(1, 1) が a1 , str(1, 3) が
c1 の値 といった配列で扱えることにある。
そしてこれはExcelVBAでは非常に有効なテクニックでもある。