Excel VBA質問箱 IV

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

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


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

【40080】シートの貼り付け方方法 質問(初心者A氏) 06/7/6(木) 18:58 質問[未読]
【40082】Re:シートの貼り付け方方法 Statis 06/7/6(木) 19:29 発言[未読]
【40118】Re:シートの貼り付け方方法 質問(初心者A氏) 06/7/7(金) 9:16 質問[未読]
【40120】Re:シートの貼り付け方方法 ひげくま 06/7/7(金) 10:06 回答[未読]
【40129】Re:シートの貼り付け方方法 質問(初心者A氏) 06/7/7(金) 11:39 質問[未読]
【40131】Re:シートの貼り付け方方法 ひげくま 06/7/7(金) 11:44 発言[未読]
【40134】Re:シートの貼り付け方方法 質問(初心者A氏) 06/7/7(金) 13:21 質問[未読]
【40135】Re:シートの貼り付け方方法 ひげくま 06/7/7(金) 13:41 発言[未読]
【40138】Re:シートの貼り付け方方法 質問(初心者A氏) 06/7/7(金) 13:55 質問[未読]
【40139】Re:シートの貼り付け方方法 ひげくま 06/7/7(金) 14:02 発言[未読]
【40142】Re:シートの貼り付け方方法 質問(初心者A氏) 06/7/7(金) 14:48 質問[未読]
【40144】Re:シートの貼り付け方方法 ひげくま 06/7/7(金) 14:59 回答[未読]
【40145】Re:シートの貼り付け方方法 ひげくま 06/7/7(金) 15:04 発言[未読]
【40148】Re:シートの貼り付け方方法 質問(初心者A氏) 06/7/7(金) 15:35 お礼[未読]

【40080】シートの貼り付け方方法
質問  質問(初心者A氏)  - 06/7/6(木) 18:58 -

引用なし
パスワード
   いつも利用させてもらい大変助かっています。

1点教えて下さい。

 1.ファイルを開く
 2.不要データを削除してデータを並び替える。
 
 迄の処理はうまく行きました。

 しかし、この先にある項目がある条件に一致した場合
 そのデータを場合別シートに横の項目1〜10迄を貼り付けたいの
 ですがうまく行かないので教えて下さい。

 条件判定は、IF文で行い判定はcells(i,1).valueで判定しています。

 このif文条件に一致したら、判定したデータ(横列1〜15個)を
 場合別シートに横の項目1〜10(横1、横3、横4とか項目10個を
 )迄を貼り付けたいのですがうまく行かないので教えて下さい。

 宜しくお願いします。

【40082】Re:シートの貼り付け方方法
発言  Statis  - 06/7/6(木) 19:29 -

引用なし
パスワード
   こんにちは
コードをUpしてみて下さい。
そしてどのように上手く行かないのか説明願います。

【40118】Re:シートの貼り付け方方法
質問  質問(初心者A氏)  - 06/7/7(金) 9:16 -

引用なし
パスワード
   3行目の項目24番目が0502
で項目5番目がN265L009-1なら 
その行の1〜23番目の項目を
作業2のシートの3行目に貼り付けたい場合の処理で
 Range(cells(i,1):cells(i,23)).Selectに記述していいのか
 教えて下さい。
 お願いします。
  

i = 3
   
   Do While Cells(i, 24) <> "0502"
  
   If CStr(Cells(i, 5).Value) = "N265L009-1" Then
   
   '
   Range(cells(i,1):cells(i,23)).Select
  Selection.Copy
  Sheets("作業2").Select
  cells(i,1).select
  'Range("A2").Select
  ActiveSheet.Paste
   
   Else
    Exit Do
   
   End If
  
  
  i = i + 1
  
  Loop
  

【40120】Re:シートの貼り付け方方法
回答  ひげくま  - 06/7/7(金) 10:06 -

引用なし
パスワード
   ▼質問(初心者A氏) さん:
こんにちは。

> 3行目の項目24番目が0502
> で項目5番目がN265L009-1なら 

ということですが、

> i = 3
>   Do While Cells(i, 24) <> "0502"
>   If CStr(Cells(i, 5).Value) = "N265L009-1" Then

これだと、
Doループの時点で、対象外としてはじかれてしまいますよ。

> 3行目の項目24番目が0502
> で項目5番目がN265L009-1なら 
> その行の1〜23番目の項目を
> 作業2のシートの3行目に貼り付けたい場合の処理で

これをそのまま記述すると

If Cells(3, 24).Value = "0502" And Cells(3, 5).Value = "N265L009-1" Then
  Range(Cells(3, 1), Cells(3, 23)).Copy Destination:=Sheets("Sheet2").Cells(3, 1)
End If

となりますね。

【40129】Re:シートの貼り付け方方法
質問  質問(初心者A氏)  - 06/7/7(金) 11:39 -

引用なし
パスワード
   連絡ありがとうございました。
下のように記述してみましたが、
作業2のシートには何も記載されませんでした。
また教えて下さい。


'-------------------------------------
  
   i = 3
   
   Do While Cells(i, 24).Value <> "0502"
  
   If Cells(i, 24).Value = "0502" And Cells(i, 5).Value = "N265L009-1" Then
    Range(Cells(i, 1), Cells(i, 23)).Copy Destination:=Sheets("作業2").Cells(i, 1)
   
   End If
  
   i = i + 1
  
   Loop

【40131】Re:シートの貼り付け方方法
発言  ひげくま  - 06/7/7(金) 11:44 -

引用なし
パスワード
   ▼質問(初心者A氏) さん:
>   i = 3
>   Do While Cells(i, 24).Value <> "0502"

どのような意味合いで、これを使っているのでしょうか?

【40134】Re:シートの貼り付け方方法
質問  質問(初心者A氏)  - 06/7/7(金) 13:21 -

引用なし
パスワード
   もともとif文を減らしたかったので
記載をしていました。

ソートで、並び替えて処理しているのでこのデータが必要
かと思ったのですが・・・


▼ひげくま さん:
>▼質問(初心者A氏) さん:
>>   i = 3
>>   Do While Cells(i, 24).Value <> "0502"
>
>どのような意味合いで、これを使っているのでしょうか?

【40135】Re:シートの貼り付け方方法
発言  ひげくま  - 06/7/7(金) 13:41 -

引用なし
パスワード
   改めて質問します。

>   Do While Cells(i, 24).Value <> "0502"

これをなぜ使っているのか、ではなく、これはどういう意味なのか、を聞かせてください。
どれくらい理解できているのかを知りたいので。


▼質問(初心者A氏) さん:
>もともとif文を減らしたかったので
>記載をしていました。
>
>ソートで、並び替えて処理しているのでこのデータが必要
>かと思ったのですが・・・
>
>
>▼ひげくま さん:
>>▼質問(初心者A氏) さん:
>>>   i = 3
>>>   Do While Cells(i, 24).Value <> "0502"
>>
>>どのような意味合いで、これを使っているのでしょうか?

【40138】Re:シートの貼り付け方方法
質問  質問(初心者A氏)  - 06/7/7(金) 13:55 -

引用なし
パスワード
   処理をする際に、判断して処理をするかしないかの判定をする為にこの記述を入れています。
無駄な処理をしないためです。

【40139】Re:シートの貼り付け方方法
発言  ひげくま  - 06/7/7(金) 14:02 -

引用なし
パスワード
   ▼質問(初心者A氏) さん:
>処理をする際に、判断して処理をするかしないかの判定をする為にこの記述を入れています。
>無駄な処理をしないためです。

そういうことを聞いているのではありません。

>   Do While Cells(i, 24).Value <> "0502"

これを日本語の文章に翻訳するとどうなるのか、を聞いています。

【40142】Re:シートの貼り付け方方法
質問  質問(初心者A氏)  - 06/7/7(金) 14:48 -

引用なし
パスワード
   >>   Do While Cells(i, 24).Value <> "0502"

 ↑横列i行目の列24番目の項目が0502で無くなるまで処理しなさい。
  と書いています。


▼ひげくま さん:
>▼質問(初心者A氏) さん:
>>処理をする際に、判断して処理をするかしないかの判定をする為にこの記述を入れています。
>>無駄な処理をしないためです。
>
>そういうことを聞いているのではありません。
>
>>   Do While Cells(i, 24).Value <> "0502"
>
>これを日本語の文章に翻訳するとどうなるのか、を聞いています。

【40144】Re:シートの貼り付け方方法
回答  ひげくま  - 06/7/7(金) 14:59 -

引用なし
パスワード
   ▼質問(初心者A氏) さん:
>>>   Do While Cells(i, 24).Value <> "0502"
>
> ↑横列i行目の列24番目の項目が0502で無くなるまで処理しなさい。
>  と書いています。

残念ですが、間違っていますよ。

Do While 条件
  処理
Loop

は、条件が真である間だけ処理しなさい、という命令です。
なので、
「横列i行目の列24番目の項目が0502で無い間は処理しなさい。(そして、0502だったら、ループを終わらせて抜けなさい)」
になります。

なので、0502になった時点でループ内の処理をせずに、終わってしまったので、コピーされなかったのでしょう。

「横列i行目の列24番目の項目が0502で無くなるまで処理しなさい。」
の場合は、
Do Until Cells(i, 24).Value <> "0502"
となります。

ただ、この場合、一度でも"0502"で無い場合があれば、そこでループを抜けてしまいますが、それでも良いのでしょうか?

【40145】Re:シートの貼り付け方方法
発言  ひげくま  - 06/7/7(金) 15:04 -

引用なし
パスワード
   >「横列i行目の列24番目の項目が0502で無くなるまで処理しなさい。」
>の場合は、
>Do Until Cells(i, 24).Value <> "0502"
>となります。

もしくは、
Do While Cells(i, 24).Value = "0502"
ですね。

【40148】Re:シートの貼り付け方方法
お礼  質問(初心者A氏)  - 06/7/7(金) 15:35 -

引用なし
パスワード
   助かりました。
その項目を1番目のソートとして処理しているので大丈夫だと思います。

記述が誤っていたとは

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