|
ご指導ありがとうござました。ちゃんと動作しました。
また何かありましたらご指導よろしくお願いします。
▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>>sheet1のA1にある数値を変更する前に、A1の値をB1にコピーして残したのですが、もしB1に値がすでにある場合はC1にB1にもC1にも値がある場合はD1に、D1にも値がある場合は、”コピーするセルはありません”とメッセージを出したと思います。途中までのマクロなのですが、隣のセルが空白でなくても上書きされてしまいます。どうしてでしょうか?
>
>ActiveCell.Offset(0, 1).Select
>の位置が違います。
>以下のようにすると、正しく動作すると思います。
>Sub Macro1()
> Cells(1, 1).Select
> Selection.Copy
>
> If ActiveCell.Offset(0, 1).Value = "" Then
> ActiveCell.Offset(0, 1).Select
> ActiveSheet.Paste
> Else
> If ActiveCell.Offset(0, 2).Value = "" Then
> ActiveCell.Offset(0, 2).Select
> ActiveSheet.Paste
> Else
> If ActiveCell.Offset(0, 3).Value = "" Then
> ActiveCell.Offset(0, 3).Select
> ActiveSheet.Paste
> Else
> MsgBox "コピーするセルはありません"
> End If
> End If
> End If
> Application.CutCopyMode = False
>End Sub
>
>上記のマクロをもう少しスマートにすると以下のようになります。
>Sub Macro2()
> Dim i As Integer
>
> Cells(1, 1).Select
> Selection.Copy
>
> For i = 1 To 3
> If ActiveCell.Offset(0, i).Value = "" Then
> ActiveCell.Offset(0, i).Select
> ActiveSheet.Paste
> Exit For
> End If
> Next
> Application.CutCopyMode = False
> If i = 4 Then
> MsgBox "コピーするセルはありません"
> End If
>End Sub
>
>Asakiさんのアイデアだと一番右の列が取得できますが、その列がD列より右かどうかを判定する必要があるかと思います。
|
|