Excel VBA質問箱 IV

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

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


2601 / 13645 ツリー ←次へ | 前へ→

【66945】Do Whileで止まった任意のセルを含めた行より下の表をコピーするには? モルト 10/10/19(火) 21:49 質問[未読]
【66946】Re:Do Whileで止まった任意のセルを含めた... Jaka 10/10/20(水) 11:26 発言[未読]
【66948】Re:Do Whileで止まった任意のセルを含めた... モルト 10/10/20(水) 15:32 質問[未読]
【66949】Re:Do Whileで止まった任意のセルを含めた... Jaka 10/10/20(水) 16:19 回答[未読]
【66950】Re:Do Whileで止まった任意のセルを含めた... モルト 10/10/20(水) 18:27 質問[未読]
【66953】Re:Do Whileで止まった任意のセルを含めた... Jaka 10/10/21(木) 9:25 発言[未読]
【66966】Re:Do Whileで止まった任意のセルを含めた... モルト 10/10/21(木) 18:24 お礼[未読]

【66945】Do Whileで止まった任意のセルを含めた行...
質問  モルト  - 10/10/19(火) 21:49 -

引用なし
パスワード
   初めて投稿させて頂きます。
初心者ですので、宜しくお願い致します。

表(8B:139P)があります。
その表に、下記で検索し止まった任意のセル(14列目(N列目))を
基準にその行より下(任意のセルを含めた表を)全てコピーしたいのです。
いろいろやってみたのですがどうにもうまくいきませんでした。
根本的に間違っているかもしれませんがよろしくお願い致します。

Sub zaicocopy()

  Dim zaicocopy As Worksheet
  Dim zaico As Variant

  Set zaicocopy = ThisWorkbook.Worksheets(3)

  With zaicocopy

    i = 139
    zaico = .Cells(i, 14)
   
  Do While zaico = " " Or zaico > 0
     zaico = .Cells(i, 14).Select
     
    i = i - 1
    zaico = .Cells(i, 14)
   Loop
   
 End With

End Sub

【66946】Re:Do Whileで止まった任意のセルを含め...
発言  Jaka  - 10/10/20(水) 11:26 -

引用なし
パスワード
   >下記で検索し
何を検索しているのかわかりませんでした。
>Do While zaico = " " Or zaico > 0
の条件もあまりわかりませんでした。
全体的に内容が解っていませんが、こういうことなのでしょうか?

with ThisWorkbook.Worksheets(3)
  i = 139

  '↓条件がわかってないのでそのまま使用
  Do While .Cells(i, 14).Value = " " Or .Cells(i, 14).Value > 0
    i = i + 1
  Loop
  .Range(.Cells(139, 14),.Cells(i, 14)).select 'copy
end with

【66948】Re:Do Whileで止まった任意のセルを含め...
質問  モルト  - 10/10/20(水) 15:32 -

引用なし
パスワード
   ▼Jaka さん:
>>下記で検索し
>何を検索しているのかわかりませんでした。
>>Do While zaico = " " Or zaico > 0
>の条件もあまりわかりませんでした。
>全体的に内容が解っていませんが、こういうことなのでしょうか?
>
>with ThisWorkbook.Worksheets(3)
>  i = 139
>
>  '↓条件がわかってないのでそのまま使用
>  Do While .Cells(i, 14).Value = " " Or .Cells(i, 14).Value > 0
>    i = i + 1
>  Loop
>  .Range(.Cells(139, 14),.Cells(i, 14)).select 'copy
>end with

返答ありがとうございます。
私の説明が足らなかったようですみません。

表の詳細を説明致します。
全ての項目を入れると入りきらないので簡略しています。

月末に翌月に繰り越される在庫を翌月シートにコピーしたいのです。
(在庫数のみに限らず各項目の検査日、ロット、生産枚数等も含め)

検査日 ロット 生産枚数 出荷先 出荷枚数 在庫数 出荷日
5/25  5-21-1s 4000   大阪   2000   5000  5/28 
             京都   3000   2000  5/28
             東京   2000     0  5/29
5/25  5-21-2s 3000   熊本   1000   2000  5/29
             大阪   2000     0  5/30
5/26  5-24-2s 2000   -    -    2000   -
5/27  5-25-1s 3000   -    -    5000   -
5/28  5-26-2s 4000   -    -    9000   -

ロット(5-21-1sは5月21日の昼勤)の早い順に出荷します。
その為、在庫数を最初の行より検索をした場合、0と0以上の数が
混在する為、検索が困難でした。
そこで、在庫数の最終行(空白セルも含め)より、上に向って検索を
はじめれば在庫数0の手前で止まり、その止まったセルを基準に
その行より下をコピーしようと考えました。
上記表の場合、5-24-2sの行より下をコピーすることになります。

表現力が乏しいので、わかって頂けたか解りませんがよろしくお願い
致します。

【66949】Re:Do Whileで止まった任意のセルを含め...
回答  Jaka  - 10/10/20(水) 16:19 -

引用なし
パスワード
   こういうのでいいのかな?
(Whileは、普段使わないので解りづらいから変えました。)

With ThisWorkbook.Worksheets(3)
  i = 139
  Do Until .Cells(i, 14).Value = 0
    i = i - 1
  Loop
  .Range(.Cells(i + 1, 14), .Cells(139, 14)).copy
End With

【66950】Re:Do Whileで止まった任意のセルを含め...
質問  モルト  - 10/10/20(水) 18:27 -

引用なし
パスワード
   ▼Jaka さん:
>こういうのでいいのかな?
>(Whileは、普段使わないので解りづらいから変えました。)
>
>With ThisWorkbook.Worksheets(3)
>  i = 139
>  Do Until .Cells(i, 14).Value = 0
>    i = i - 1
>  Loop
>  .Range(.Cells(i + 1, 14), .Cells(139, 14)).copy
>End With

返答ありがとうございます。
すみません、後もう少しだと思います。

検査日 ロット 生産枚数 出荷先 出荷枚数 在庫数 出荷日
5/25  5-21-1s 4000   大阪   2000   5000  5/28 
             京都   3000   2000  5/28
             東京   2000     0  5/29
5/25  5-21-2s 3000   熊本   1000   2000  5/29
             大阪   2000     0  5/30
5/26  5-24-2s 2000   -    -    2000   -
5/27  5-25-1s 3000   -    -    5000   -
5/28  5-26-2s 4000   -    -    9000   -

書いて頂いたプログラムですが上記表の部位ですと
在庫数の2000、5000、9000とそれより下の空白セルの
コピー状態となりますが、そこ以外の列も選択したいのです。

下記部位全てです。
5/26  5-24-2s 2000   -    -    2000   -
5/27  5-25-1s 3000   -    -    5000   -
5/28  5-26-2s 4000   -    -    9000   -

お手数おかけしますが、よろしくお願いします。

【66953】Re:Do Whileで止まった任意のセルを含め...
発言  Jaka  - 10/10/21(木) 9:25 -

引用なし
パスワード
   >>  .Range(.Cells(i + 1, 14), .Cells(139, 14)).copy
   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ↑ コピーする範囲

上は、セルのアドレスで言うと、
14列(N列)、i + 1行のセルから、14列(N列)、139行のセル範囲をコピー。
と言うことになるから、1列目からコピーしたい場合は、
セル範囲、始点か終点の列の部分を変えればいいのです。

つまり、
.Range(.Cells(i + 1, 1), .Cells(139, 14))

.Range(.Cells(i + 1, 14), .Cells(139, 1))
にするだけ。

【66966】Re:Do Whileで止まった任意のセルを含め...
お礼  モルト  - 10/10/21(木) 18:24 -

引用なし
パスワード
   ▼Jaka さん:
>>>  .Range(.Cells(i + 1, 14), .Cells(139, 14)).copy
>   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>    ↑ コピーする範囲
>
>上は、セルのアドレスで言うと、
>14列(N列)、i + 1行のセルから、14列(N列)、139行のセル範囲をコピー。
>と言うことになるから、1列目からコピーしたい場合は、
>セル範囲、始点か終点の列の部分を変えればいいのです。
>
>つまり、
>.Range(.Cells(i + 1, 1), .Cells(139, 14))
>か
>.Range(.Cells(i + 1, 14), .Cells(139, 1))
>にするだけ。

返信遅くなり、すみませんでした。
そんな単純なこととは知らず申し訳無かったです。
こんな私に付き合って頂き本当にありがとうございました。
これからもっと勉強します。
では失礼します。

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