Excel VBA質問箱 IV

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

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


10433 / 13644 ツリー ←次へ | 前へ→

【21853】貼り付けるrangeに値がすでにあれば・・・ しん 05/2/2(水) 11:34 質問[未読]
【21856】Re:貼り付けるrangeに値がすでにあれば・・... IROC 05/2/2(水) 11:54 回答[未読]
【21860】Re:貼り付けるrangeに値がすでにあれば・・... へるぴー 05/2/2(水) 14:15 質問[未読]
【21865】Re:貼り付けるrangeに値がすでにあれば・・... IROC 05/2/2(水) 15:05 回答[未読]
【21870】Re:貼り付けるrangeに値がすでにあれば・・... G-Luck 05/2/2(水) 15:42 回答[未読]
【21872】G−luckさんありがとう! へるぴー 05/2/2(水) 15:48 質問[未読]
【21874】釘 G-Luck 05/2/2(水) 15:53 発言[未読]

【21853】貼り付けるrangeに値がすでにあれば・・・
質問  しん  - 05/2/2(水) 11:34 -

引用なし
パスワード
   こんにちわ。

.paste で 指定先のrangeにすでに値が存在する場合に
pasteするrangeを自動的に一つ下の「行」にうつすにはどうしたらいいでしょうか?

よろしくお願いします。

【21856】Re:貼り付けるrangeに値がすでにあれば・...
回答  IROC  - 05/2/2(水) 11:54 -

引用なし
パスワード
   A1をB列の最下行にコピー

Range("A1").Copy Destination:=Range("B65536").End(xlup).Offset(1)

【21860】Re:貼り付けるrangeに値がすでにあれば・...
質問  へるぴー  - 05/2/2(水) 14:15 -

引用なし
パスワード
   できませんよ。
もしよろしければ、空白になっている部分を選択する。でもいいです。
お助け下さい。

▼IROC さん:
>A1をB列の最下行にコピー
>
>Range("A1").Copy Destination:=Range("B65536").End(xlup).Offset(1)

【21865】Re:貼り付けるrangeに値がすでにあれば・...
回答  IROC  - 05/2/2(水) 15:05 -

引用なし
パスワード
   A1に値を入れて、このマクロを繰り返し実行してみて下さい。
B列にデータが追加されていきます。

【21870】Re:貼り付けるrangeに値がすでにあれば・...
回答  G-Luck  - 05/2/2(水) 15:42 -

引用なし
パスワード
   条件を下記として、コードを書いてみました
 コピー元をA1
 貼り付け位置を B1とし、同じシート上にある。
 対象シートを、現在表示している。
 数式が入力されていてもコピーしない。(=""が入力されていてもコピーしない)

Option Explicit

Private Sub myCopy()
  
  Dim mySheet As Worksheet
  '対象セルを含むシート、
  ’ただし、コピー元と貼り付け先が同じシートに含まれる。
  Dim buf As Variant     '一時保持 貼り付け先の値
  Dim i As Long        '繰り返し用
  
  '現在のシートを取得する
  Set mySheet = ActiveSheet
  
  'コピー元のデータを取得する
  mySheet.Range("A1").Copy
  
  'コピー先を選択する。
  mySheet.Range("B1").Select
  
  '繰り返しによって、空白セルを探す
  For i = 1 To 100
  '無限ループ回避のため、forを用いています。Doを利用してもいいです。
    buf = Selection.Value            '値の取得
    If TypeName(buf) = "Empty" Then       '空白かの確認
      mySheet.Paste Destination:=Selection  '貼り付け
      Exit For                'ループを抜ける
    End If
    Selection.Offset(1, 0).Select
    '空白の場合、ひとつ下を選択する
  Next i

End Sub

【21872】G−luckさんありがとう!
質問  へるぴー  - 05/2/2(水) 15:48 -

引用なし
パスワード
   ありがとうございます!G-Luck さん
ものすごく勉強になります!
でもできればコピー先が別のシートとかだったらどうなりますかね?
ご返答ください。


>条件を下記として、コードを書いてみました
> コピー元をA1
> 貼り付け位置を B1とし、同じシート上にある。
> 対象シートを、現在表示している。
> 数式が入力されていてもコピーしない。(=""が入力されていてもコピーしない)
>
>Option Explicit
>
>Private Sub myCopy()
>  
>  Dim mySheet As Worksheet
>  '対象セルを含むシート、
>  ’ただし、コピー元と貼り付け先が同じシートに含まれる。
>  Dim buf As Variant     '一時保持 貼り付け先の値
>  Dim i As Long        '繰り返し用
>  
>  '現在のシートを取得する
>  Set mySheet = ActiveSheet
>  
>  'コピー元のデータを取得する
>  mySheet.Range("A1").Copy
>  
>  'コピー先を選択する。
>  mySheet.Range("B1").Select
>  
>  '繰り返しによって、空白セルを探す
>  For i = 1 To 100
>  '無限ループ回避のため、forを用いています。Doを利用してもいいです。
>    buf = Selection.Value            '値の取得
>    If TypeName(buf) = "Empty" Then       '空白かの確認
>      mySheet.Paste Destination:=Selection  '貼り付け
>      Exit For                'ループを抜ける
>    End If
>    Selection.Offset(1, 0).Select
>    '空白の場合、ひとつ下を選択する
>  Next i
>
>End Sub

【21874】釘
発言  G-Luck  - 05/2/2(水) 15:53 -

引用なし
パスワード
   シートの選択法はわかりますか?

詳細な条件が指定されていない現在は、
IROCさんの方法も適切だと思いますよ。

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