• 締切済み

エクセルVBAにてプログラムされているシートに別のシートからマクロのモジュールにて貼り付けるとエラーになります。

エクセルVBAにてプログラムされているシートに別のシートからマクロのモジュールにて普通のデータを貼り付けるとエラーになります。 何卒エラーの解除方法を教えて下さい。 また、合わせて下記プログラムは四角形等のオートシェイプの書式に対応していますが、 同じシート上に写真等の図の書式があるとエラーになります。 お手数ですが、解決方法を教えて下さい。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim C As Variant Dim i As Integer Dim Rng As Range For Each Rng In Target If Not Intersect(Range("e36:i40"), Rng) Is Nothing Then Select Case Rng.Row Case 36 C = Split("3 0 0 0 0") Case 37 C = Split("0 3 0 0 0") Case 38 C = Split("0 0 3 0 0") Case 39 C = Split("0 0 0 3 0") Case 40 C = Split("0 0 0 0 3") End Select Else C = Split("0 0 0 0 0") End If For i = 0 To 4 ActiveSheet.Shapes(i + 1).Select Selection.Font.ColorIndex = C(i) Next i Next Rng Target.Select End Sub

みんなの回答

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.1

続きの質問の場合は、関係する質問のリンクを貼った方が良いと思います 他の回答者さんが分らないと思うので エクセルの指定セルにある時だけ、指定オブジェクトの色が変化する方法を教えて下さい。 http://okwave.jp/qa5312762.html エクセルVBAにて指定範囲以外処理時複数セルの場合エラーになる。 http://okwave.jp/qa5444196.html >別のシートからマクロのモジュールにて普通のデータを貼り付けるとエラーになります。 どのようなマクロを使用しているのか分らないと 回答が出来ません マクロを提示していただくか エラーの内容を補足してください >同じシート上に写真等の図の書式があるとエラーになります。 これは、最初の質問 http://okwave.jp/qa5312762.html の#3の最後の方にも書きましたが シートへのオブジェクト(前回はtextboxとしていましたが、他にも 図やボタン、グラフなどセル以外のものすべてと考えてもよいと思います) の配置(挿入)の順番しか見ていないので、先に図などのオブジェクトを配置してしまうとエラーとなります 簡単な例を示しますと 例 シートに下記の条件で各シートのセルA1に数字を入力したい 条件 Sheet1=1、Sheet2=2、Sheet3=3としたい 新しいファイルを用意して下記のマクロを実行してみてください '------------------------------------- Sub test1() Dim i As Integer For i = 1 To 3 Sheets(i).Range("a1").Value = i Next i End Sub '------------------------------------- うまく行ったと思います 次にシートの順番を入れ替えたり、新しいシートを挿入してから実行してみてください さらに、グラフやマクロなどのシートも挿入して実行してみてください シートの並び方によってはエラーまで出るようになったと思います これが、質問者さんの今の状態に近いのではと思います 解決策はキッチリシートの名前を指定して処理を実行する 先ほどのファイルでこちらのマクロを実行してみてください '------------------------------------- Sub test2() Dim i As Integer Dim シート名 As Variant '変数シート名に配列でシート名と処理の順番を設定しています シート名 = Array("Sheet1", "Sheet2", "Sheet3") For i = 1 To 3 Worksheets(シート名(i - 1)).Range("a1").Value = i Next i End Sub '------------------------------------- イメージは掴んでいただけたでしょうか? この様に今の処理はsub test1のような処理になっていますので シートでは左から順に、オブジェクトはシートに配置(挿入)した順に 処理されるようになっています したがって、オブジェクトを一度すべて削除して 処理に必要なオブジェクトとから配置しなおすか sub test2を参考にマクロを変更するしかないと思います 以上参考まで