Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


64048 / 76733 ←次へ | 前へ→

【17268】Re:値のコピー
お礼  MIKA E-MAIL  - 04/8/26(木) 12:16 -

引用なし
パスワード
   ご指導ありがとうござました。ちゃんと動作しました。
また何かありましたらご指導よろしくお願いします。

▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>>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列より右かどうかを判定する必要があるかと思います。

3 hits

【17258】値のコピー MIKA 04/8/25(水) 22:49 質問
【17259】Re:値のコピー Asaki 04/8/25(水) 22:58 回答
【17260】Re:値のコピー かみちゃん 04/8/25(水) 23:18 回答
【17268】Re:値のコピー MIKA 04/8/26(木) 12:16 お礼

64048 / 76733 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free