過去ログ

                                Page     826
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼指定された列を別シートに貼付する時にエラー...  minime 03/3/5(水) 13:48
   ┗Re:指定された列を別シートに貼付する時にエ...  パピー 03/3/5(水) 14:15
      ┣Re:指定された列を別シートに貼付する時にエ...  Jaka 03/3/5(水) 14:46
      ┃  ┣Re:指定された列を別シートに貼付する時にエ...  Jaka 03/3/5(水) 15:02
      ┃  ┗Re:指定された列を別シートに貼付する時にエ...  minime 03/3/5(水) 15:04
      ┗Re:指定された列を別シートに貼付する時にエ...  minime 03/3/5(水) 14:56

 ───────────────────────────────────────
 ■題名 : 指定された列を別シートに貼付する時にエラー...
 ■名前 : minime
 ■日付 : 03/3/5(水) 13:48
 -------------------------------------------------------------------------
   今回投稿するのは2回目です。少しだけ長い文章ですがよろしくお願いします。

・左から順にsheet1,sheet2,sheet3,sheet4,sheet5のシートがあり、sheet5に下記の
値が入力されています。

|A    B    C    D    E
-|----------------------------------------------
1|         X
|
2|あ    い    う    え    お
|        
3| 0     E     0     0     0
|
4| 0     A     0     0     0
|
5| 0     B     0     0     0
|
6| 0     C     0     0     0
|
7| 0     D     0     0     0
|

・sheet5以外は下記の内容が入力されています。

|A    B    C    D    E
-|----------------------------------------------
1|         X
|
2|あ    い    う    え    お
|

・この状態で、下記のマクロを実行したのですが、----? のところで「実行時エラー'1004'
 アプリケーション定義またはオブジェクト定義のエラーです。」というエラーメッセージが出てしまいま  す。コード自体は間違ってないように思うのですが、どうしてもわかりません。
 レスいただければ、幸いです。

//------------------------------------------------------------------

Dim 最終行, 最終行2, 最終行3, 最終行4, 最終行5 As Integer
  Dim i As Integer  
  
  Sheets("sheet5").Select
  Selection.CurrentRegion.Select  
  最終行 = Selection.Rows.Count 
   
  For i = 3 To 最終行
    If cells(i, 2).Value <> "A" Then
     
      If cells(i, 2).Value <> "B" Then
      
        If cells(i, 2).Value <> "C" Then
      
          If cells(i, 2).Value <> "D" Then
            Rows(i).Select
            Selection.Copy
            Sheets("sheet1").Select
            Range("A1").Select
            Selection.CurrentRegion.Select
            最終行5 = Selection.Rows.Select
            cells(最終行5 + 1, 1).Select '----------?
            ActiveSheet.Paste
            Sheets("sheet5").Select
          Else
            Rows(i).Select
            Selection.Copy
            Sheets("sheet2").Select
            Range("A1").Select
            Selection.CurrentRegion.Select
            最終行4 = Selection.Rows.Select
            cells(最終行4 + 1, 1).Select
            ActiveSheet.Paste
            Sheets("sheet5").Select
          End If
        Else
          Rows(i).Select
          Selection.Copy
          Sheets("sheet3").Select
          Range("A1").Select
          Selection.CurrentRegion.Select
          最終行3 = Selection.Rows.Count
          cells(最終行3 + 1, 1).Select
          ActiveSheet.Paste
          Sheets("sheet5").Select
        End If
      Else
        Rows(i).Select
        Selection.Copy
        Sheets("sheet4").Select
        Range("A1").Select
        Selection.CurrentRegion.Select
        最終行2 = Selection.Rows.Count
        cells(最終行2 + 1, 1).Select
        ActiveSheet.Paste
        Sheets("sheet5").Select
      End If
    End If
  Next
//-------------------------------------------------------------------
 ───────────────────────────────────────  ■題名 : Re:指定された列を別シートに貼付する時にエ...  ■名前 : パピー  ■日付 : 03/3/5(水) 14:15  -------------------------------------------------------------------------
   ▼minime さん:こんにちは。

>     最終行5 = Selection.Rows.Select
>     cells(最終行5 + 1, 1).Select '----------?

最終行5の値はいくつになっているでしょうか?
マイナス(−)になったりしているのでは?

上の2行の間に
 debug.print 最終行5
を挿入して実行してみて下さい。
結果がVBEのイミディエイトウィンドウに表示されます。
確認してみて下さい。

外していたら、ごめんなさい。
 ───────────────────────────────────────  ■題名 : Re:指定された列を別シートに貼付する時にエ...  ■名前 : Jaka  ■日付 : 03/3/5(水) 14:46  -------------------------------------------------------------------------
   こんにちは。
>cells(最終行5 + 1, 1).Select
↑これよりも

>最終行5 = Selection.Rows.Select
こっちの方がおかしくないですか?
このせいで、変数「最終行5」に値が入っていません。Trueがはいっていました。


Range("A1").Select
Selection.CurrentRegion.Select
最終行5 = Selection.Rows.Select

   ↓

Range("A1").CurrentRegion.Select  1つのコードに出来ます。
最終行5 = Selection.Rows.Count

全部合わせて、これでも良いです。

With Range("A1").CurrentRegion
  最終行5 = .Cells(.Count).Row
End With
 ───────────────────────────────────────  ■題名 : Re:指定された列を別シートに貼付する時にエ...  ■名前 : Jaka  ■日付 : 03/3/5(水) 15:02  -------------------------------------------------------------------------
   >With Range("A1").CurrentRegion
>  最終行5 = .Cells(.Count).Row
>End With

A1と1行目基準だったんで、これで十分でした」。
MsgBox Range("A1").CurrentRegion.Rows.Count
 ───────────────────────────────────────  ■題名 : Re:指定された列を別シートに貼付する時にエ...  ■名前 : minime  ■日付 : 03/3/5(水) 15:04  -------------------------------------------------------------------------
   ▼Jaka さん:
>こんにちは。
>>cells(最終行5 + 1, 1).Select
>↑これよりも
>
>>最終行5 = Selection.Rows.Select
>こっちの方がおかしくないですか?
>このせいで、変数「最終行5」に値が入っていません。Trueがはいっていました。
>
>
>Range("A1").Select
>Selection.CurrentRegion.Select
>最終行5 = Selection.Rows.Select
>
>   ↓
>
>Range("A1").CurrentRegion.Select  1つのコードに出来ます。
>最終行5 = Selection.Rows.Count
>
>全部合わせて、これでも良いです。
>
>With Range("A1").CurrentRegion
>  最終行5 = .Cells(.Count).Row
>End With

まったくその通りです。わたしの単純なミスでした。(はずかし〜 ^_^;)
また、プラスアルファのご教示もいただき、ありがとうございました。
 ───────────────────────────────────────  ■題名 : Re:指定された列を別シートに貼付する時にエ...  ■名前 : minime  ■日付 : 03/3/5(水) 14:56  -------------------------------------------------------------------------
   ▼パピー さん:
>▼minime さん:こんにちは。
>
>>     最終行5 = Selection.Rows.Select
>>     cells(最終行5 + 1, 1).Select '----------?
>
>最終行5の値はいくつになっているでしょうか?
>マイナス(−)になったりしているのでは?
>
>上の2行の間に
> debug.print 最終行5
>を挿入して実行してみて下さい。
>結果がVBEのイミディエイトウィンドウに表示されます。
>確認してみて下さい。
>
>外していたら、ごめんなさい。

ヒントをありがとうございました。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 826