Excelマクロに関しての質問です
◇-?Excel マクロに関しての質問です-けんけん-12/12-13:54(71)-No.313118 ┗?!Re:Excel マクロに関しての質問...-白茶-12/12-18:20(66)-No.313178
▲このページのトップに戻る
▲このページのトップに戻る
313118 | Excel マクロに関しての質問です | けんけん | 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 ------------- 大変お手数をお掛けしますが、どなたか親切な方助けて下さい。宜しくお願い致します。 |
▲このページのトップに戻る
313178 | Re: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からどの様に持ってくるか、 という作業が必要になります。 |
何か一言(本ページで参考になったならないを含めて残してあります)
◎:解決 ○:参考になった ×:参考にならなかった !:アドバイスあり
参考 | 回数 | 投稿日時 | 何か一言 |
---|