Excel VBA質問箱 IV

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

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


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

【26445】1行だけでもEndプロパティを使いたい k 05/7/5(火) 20:00 質問[未読]
【26447】Re:1行だけでもEndプロパティを使いたい ichinose 05/7/5(火) 20:10 発言[未読]
【26448】Re:1行だけでもEndプロパティを使いたい かみちゃん 05/7/5(火) 20:24 発言[未読]
【26452】Re:1行だけでもEndプロパティを使いたい Hirofumi 05/7/5(火) 21:11 回答[未読]
【26592】Re:1行だけでもEndプロパティを使いたい k 05/7/11(月) 16:07 お礼[未読]

【26445】1行だけでもEndプロパティを使いたい
質問  k  - 05/7/5(火) 20:00 -

引用なし
パスワード
   A列の、データの入っているセルだけを別のシートにコピーしようとしています。

Set mycell = Worksheets("E").Range("A3")

If mycell.Value = "" Then Exit Sub
Range(mycell, mycell.End(xlDown)).Copy

とすると1行しかデータが入っていない場合にはEシートの最終行までコピーされてしまいます。
1行しかデータが入っていない場合にも、適切に1行だけコピーするうまい方法はないでしょうか。

【26447】Re:1行だけでもEndプロパティを使いた...
発言  ichinose  - 05/7/5(火) 20:10 -

引用なし
パスワード
   ▼k さん:
こんばんは。

>A列の、データの入っているセルだけを別のシートにコピーしようとしています。
>
>Set mycell = Worksheets("E").Range("A3")
>
>If mycell.Value = "" Then Exit Sub
>Range(mycell, mycell.End(xlDown)).Copy
>
>とすると1行しかデータが入っていない場合にはEシートの最終行までコピーされてしまいます。
>1行しかデータが入っていない場合にも、適切に1行だけコピーするうまい方法はないでしょうか。
最下行から上にEndプロパティを使うとよいですよ!!
'==================================================
Sub main()
  Dim rng As Range
  With Worksheets("E")
   Set rng = .Range("a3", .Cells(.Rows.Count, 1).End(xlUp))
   If rng.Row >= .Range("a3").Row Then
     rng.Copy
     End If
   End With
End Sub

【26448】Re:1行だけでもEndプロパティを使いた...
発言  かみちゃん  - 05/7/5(火) 20:24 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>1行しかデータが入っていない場合にも、適切に1行だけコピーするうまい方法はないでしょうか。

すでにコメントがついていますが、せっかく書いたので・・・

 Set mycell = Worksheets("E").Range("A3")
 If mycell.Value = "" Then Exit Sub
 '一行下(Down)の値がない場合は、そのセルのみ処理する。
 If mycell.Offset(1, 0).Value = "" Then
  mycell.Copy
 Else
  '一行下(Down)の値がある場合は、最下端までのセルを処理する。
  Range(mycell, mycell.End(xlDown)).Copy
 End If

【26452】Re:1行だけでもEndプロパティを使いた...
回答  Hirofumi  - 05/7/5(火) 21:11 -

引用なし
パスワード
   こんなのは、如何かな?

Option Explicit

Public Sub Sample()

  Dim lngRows As Long
  Dim strProm As String
  
  With Worksheets("E").Range("A3")
    lngRows = .Offset(65536 - .Row).End(xlUp).Row - .Row + 1
    If lngRows <= 0 Then
      strProm = "データが有りません"
      GoTo Wayout
    End If
    .Resize(lngRows).Copy
  End With
  
  strProm = "処理が完了しました"
      
Wayout:

  Beep
  MsgBox strProm

End Sub

【26592】Re:1行だけでもEndプロパティを使いた...
お礼  k  - 05/7/11(月) 16:07 -

引用なし
パスワード
   お答えありがとうございました。

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