Excel VBA質問箱 IV

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

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


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

【6227】範囲の取得 キタ 03/6/19(木) 16:47 質問
【6230】Re:範囲の取得 ぴかる 03/6/19(木) 17:42 回答
【6252】Re:範囲の取得 キタ 03/6/20(金) 16:41 質問
【6253】Re:範囲の取得 ぴかる 03/6/20(金) 16:52 発言
【6255】Re:範囲の取得 キタ 03/6/20(金) 17:36 発言
【6260】Re:範囲の取得 ゆと 03/6/20(金) 19:50 回答
【6348】Re:範囲の取得 キタ 03/6/25(水) 16:04 お礼

【6227】範囲の取得
質問  キタ  - 03/6/19(木) 16:47 -

引用なし
パスワード
   こんにちは、初心者で初めて投稿します。
Win98でExcel2000を使用しています。

シートAからデータをシートCにコピーし、並べ替えを行い、
その後シートBのデータを同様にシートC(シートAのデータの後)にコピーし、
Cのデータだけで並べ替えをしたいのです。(K列を昇順で)
A、Bどちらもデータの件数は不特定なので範囲の特定の方法が分かりません。

分かりにくい質問かもしれませんがよろしくお願いします。

【6230】Re:範囲の取得
回答  ぴかる  - 03/6/19(木) 17:42 -

引用なし
パスワード
   キタさん、こんにちは。

ご要望にあっているかどうか分かりませんが、データベースをセレクトするんでしたら次の操作で容易に所得できます。
データベース内の1セルを選択して、[Shift][Ctrl][*]キーを同時に押せばOKです。そいつを記録したんが↓です。

  Selection.CurrentRegion.Select

【6252】Re:範囲の取得
質問  キタ  - 03/6/20(金) 16:41 -

引用なし
パスワード
   ぴかるさんありがとうございます。遅くなりましてすみません。

初心者なので質問の仕方もよく出来ていなくて・・・

現在このような状態です。

※Gyou,AACD,BBCDなどは変数で宣言しています。


Sheets("A").Select 
Do Until Gyou > AllRecCnt
    If Cells(Gyou, AACD).Value = 1 Then
      If Cells(Gyou, BBCD).Value = 2 Then
 
        Rows(Gyou).Select
        Selection.Copy
        Sheets("C").Select
        NewRecCnt = Range("A1").CurrentRegion.Rows.Count + 1
        Cells(NewRecCnt, 1).Select
        ActiveSheet.Paste      
  
     Sheets("A").Select
      
      End If
    End If
    Gyou = Gyou + 1  
    
  Loop
  Sheets("A").Select
  NewRecCnt = Range("A1").CurrentRegion.Rows.Count + 1

  [ここに並べ替えを入れたい!]

この後、同様にシートBからIf文で該当するデータをコピー・ペースト
しています。(データの数は決まっておりません)
シートAから該当データのコピーが終わった時点で並べ替えを行うのは
どうしたらいいのでしょうか?並べ替えをして見ましたが、シートBの
データも一緒に並べ替えられます。
範囲指定の方法が分かりません。

ご面倒掛けますがよろしくお願いします。

【6253】Re:範囲の取得
発言  ぴかる  - 03/6/20(金) 16:52 -

引用なし
パスワード
   キタさん、こんにちは。

実力不足と私用により、残念ながらお答えすることが出来ません。
どなた様かよろしくお願い申し上げます。

【6255】Re:範囲の取得
発言  キタ  - 03/6/20(金) 17:36 -

引用なし
パスワード
   ぴかるさんへ
いえいえ、こちらこそすみません。いろいろありがとうございます。


どなたかよろしくお願いします。

【6260】Re:範囲の取得
回答  ゆと E-MAIL  - 03/6/20(金) 19:50 -

引用なし
パスワード
   キタ さん,ぴかるさんこんばんは。
とりあえず、力不足かもしれませんが、なんとなくコードを書いてみました。
仮定に仮定を重ねた怪しげなものですが。

Sub Sample()
  Dim AACD&, BBCD&, NewRecCnt&
  Dim i&, ARecCnt&, BRecCnt&, TempRecCnt&
  'AACD、BBCDをきちんと設定しないと動きません。仮定で A列、B列をしておきます。
  AACD& = 1: BBCD = 2
  'シートCが空白だと仮定
  NewRecCnt& = 2
  
  Application.ScreenUpdating = False
  'A列最終行までデータが入っていると仮定
  ARecCnt& = Sheets("A").Cells(65536, 1).End(xlUp).Row
  BRecCnt& = Sheets("B").Cells(65536, 1).End(xlUp).Row
  
  '1行目はタイトル行と仮定。
  Sheets("A").Rows(1).Copy Destination:=Sheets("C").Rows(1)  'シートCにタイトル行を追加
  For i& = 2 To ARecCnt&
    With Sheets("A")
      If .Cells(i&, AACD).Value = 1 And .Cells(i&, BBCD).Value = 2 Then
        .Rows(i&).Copy Destination:=Sheets("C").Rows(NewRecCnt&)
        NewRecCnt = NewRecCnt + 1
      End If
    End With
  Next i&
  TempRecCnt = NewRecCnt
  On Error Resume Next  'ソートに関する細かい設定は 『Sort』でHELPをご参照ください。
    Sheets("C").Rows("2:" & TempRecCnt& - 1).Sort Key1:=Range("K2")
  On Error GoTo 0
  For i& = 2 To BRecCnt&
    With Sheets("B")
      If .Cells(i&, AACD).Value = 1 And .Cells(i&, BBCD).Value = 2 Then
        .Rows(i&).Copy Destination:=Sheets("C").Rows(NewRecCnt&)
        NewRecCnt& = NewRecCnt& + 1
      End If
    End With
  Next i&
  On Error Resume Next
    Sheets("C").Rows(TempRecCnt& & ":" & NewRecCnt& - 1).Sort Key1:=Range("K" & TempRecCnt&)
  On Error GoTo 0
  Application.ScreenUpdating = True
End Sub

【6348】Re:範囲の取得
お礼  キタ  - 03/6/25(水) 16:04 -

引用なし
パスワード
   ゆとさん返事が遅くなりましてすみません。

試行錯誤の結果何とか出来そうというところまで来ました。
ゆとさんから頂いたアドバイスのおかげです。

また何かありましたら、お力添えをお願いします。

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