Excelマクロに関しての質問です



◇-?Excel マクロに関しての質問です-けんけん-12/12-13:54(71)-No.313118
 ┗?!Re:Excel マクロに関しての質問...-白茶-12/12-18:20(66)-No.313178

▲このページのトップに戻る
313118Excel マクロに関しての質問ですけんけん 2005/12/12-13:54

メーカー名:富士通
OS名:WindowsXp
パソコン名:MG50J
--
sheet1にある各セルのTextをsheet("DATA")に上から順番に記録させたいのですが、

例)
  ("sheet1")シート
セル k5が1000
   D7が500 といったように沢山Textデーターがあるのですが、それを

    ↓
  ("DATA")シート
のA3のシートから順番に
A3 は 1000
B3 は 500

で、しかも次にこのマクロを使うときは最終行を取得して
  ("DATA")シート
A4 は 1000
B4 は 500

の様に記録して行きたいのですが、どうしたら良いでしょうか?

------
以前この掲示版でユーザーフォーム形式で教えて頂いたときは下記のような
プログラムを教えて頂いたのですが、今回のパターンはどうすればよいのでしょうか?

Option Explicit

Private wksList As Worksheet
Private vntPos As Variant
Private lngRow As Long

Private Sub UserForm_Initialize()

  vntPos = Array("K5", "D7", "F7", "F4", "H4", "F5",・・・・・・)  
 
  Set wksList = Workbooks("club ARK.xls").Worksheets("DATA")
  With wksList
    '伝票一覧の最終行を取得
    lngRow = .Range("A65536").End(xlUp).Row
    '最終行が3未満なら
    If lngRow < 3 Then
      lngRow = 3
    '最終行が3以上なら+1
    Else
      lngRow = lngRow + 1
    End If
  End With
  
End Sub

Private Sub UserForm_Terminate()

  Set wksList = Nothing
 
End Sub

Sub OkBtn()

  Dim i As Long
 
  With Sheet1
    'データ位置全てに就いて繰り返し
    For i = 0 To UBound(vntPos)
      'データ位置のデータを順番に転記
      wksList.Cells(lngRow, i + 1).Value = .Range(vntPos(i)).Value
    Next i
  End With
 
  '書き込み行を更新
  lngRow = lngRow + 1
  
  Workbooks("club ARK.xls").Save
 
End Sub
-------------
大変お手数をお掛けしますが、どなたか親切な方助けて下さい。宜しくお願い致します。


▲このページのトップに戻る
313178Re:Excel マクロに関しての質問です白茶 2005/12/12-18:20

記事番号313118へのコメント
けんけんさんは No.313118「Excel マクロに関しての質問です」で書きました。

こんにちは。

>sheet1にある各セルのTextを

って言われても、
sheet1の「何」がDATAシートのA列最終行に来て、
sheet1の「何」がDATAシートのB列最終行に来るのか、
その規則性を説明して頂かないと、
白茶には、何をどうしてよいものか判りません。

とりあえず、
以前のサンプルを拝見したところ、
今回のsheet1のデータに当たる部分を、
配列として最初に手で設定し、
それをそのまま順にDATAシートへの転記しているようですが、
今回もそれで宜しい訳では・・・ないのですよね?

例えば、
DATAシートのA列にはSheet1のK列の○〜○○を転記する
DATAシートのB列にはSheet1のD列の○〜○○を転記する
みたいな法則が欲しいのです。

それによっては、
白茶でもお役に立てるかもしれません。
(立てないかもしれません。)


以下、叩き台(かなり手抜きですが)
Option Base 1
Sub DATAシートへ転記()
 Dim 配列A, 配列B As Variant
 Dim V As Long
 配列A = Array(1000, 2000, 3000, 4000, 5000, 6000,・・・・)
 配列B = Array(500, 600, 700, 800, 900, 1000,・・・・)

 Worksheets("DATA").Select
 Range("A3").Select
 If Selection <> "" Then Selection.End(xlDown).Offset(1, 0).Select
 Do
  V = V + 1
  ActiveCell = 配列A(V)
  ActiveCell.Offset(0, 1) = 配列B(V)
  ActiveCell.Offset(1, 0).Select
 Loop Until V = UBound(配列A, 1)
End Sub

↑の場合、実際は上記の「配列A」「配列B」を
Sheet1からどの様に持ってくるか、
という作業が必要になります。

A1.本ページは参考になりましたか? 又はアドバイスがありますか?
解決 参考になった 参考にならなかった アドバイスする

A2.何度目の訪問ですか?
初めて来た   数度目(2〜4) 5回以上来ている   管理人:

A3.何か一言どうぞ(アドレスは書くことができません)

A4.アドレスがあればどうぞ(1つまで)


↑↑↑↑よろしければ押してください↑↑↑↑

何か一言(本ページで参考になったならないを含めて残してあります)
◎:解決 ○:参考になった ×:参考にならなかった !:アドバイスあり

参考回数投稿日時何か一言