2017-07-14 7 views
0
Sub Consume_RoundedRectangle111_Click() 
Dim i As Long, lastrow As Long, n As Long 
Dim vResult() 
Dim myWs As Worksheet 

Set myWs = ThisWorkbook.Sheets(Range("B9").Text) 

If ActiveSheet.Range("b4") = "" Or ActiveSheet.Range("b5") = "" Or ActiveSheet.Range("b6") = "" Or ActiveSheet.Range("b7") = "" Or ActiveSheet.Range("b8") = "" Or ActiveSheet.Range("b9") = "" Or ActiveSheet.Range("d4") = "" Or ActiveSheet.Range("d6") = "" Or ActiveSheet.Range("d7") = "" Or ActiveSheet.Range("d8") = "" Then 
    MsgBox "Please complete all fields!" 
Exit Sub 
End If 

'lastrow = Sheets("database").Cells(Cells.Rows.Count, 2).End(xlUp).Row + 1 
i = 10 
Do While Cells(i, 3) <> "" And i < 30 
    n = n + 1 
    ReDim Preserve vResult(1 To 9, 1 To n) 
    vResult(1, n) = ActiveSheet.Range("E7") ' Consumer 
    vResult(2, n) = ActiveSheet.Range("B4") ' Date 
    vResult(3, n) = ActiveSheet.Range("E4") ' Ref 
    vResult(4, n) = ActiveSheet.Range("B5") ' Code 
    vResult(5, n) = ActiveSheet.Range("B6") ' Description 
    vResult(6, n) = ActiveSheet.Range("E6") ' U/M 
    vResult(7, n) = ActiveSheet.Range("B7") ' Qty 
    vResult(8, n) = ActiveSheet.Range("B8") ' Price 
    vResult(9, n) = ActiveSheet.Range("E8") ' Transaction 
    i = i + 1 

Loop 

myWs.Range("a" & Rows.Count).End(xlUp)(2).Resize(n, 9) = WorksheetFunction.Transpose(vResult) 

MsgBox "Saved Succesfully!" 
ThisWorkbook.Save 
End Sub 

これは私が知っているコードです。データは1枚のシートから別のシートのデータベースにコピーされます。しかし、今私が望むのは、セルによって決定されたシートにデータを転送またはコピーすることです。たとえば、別のシートにコピーするデータがあり、セルA5に "NBB"が含まれているとします。マクロを実行すると、データは "NBB"という名前のシートにコピーされます。申し訳ありませんが、私は英語でこれを説明するのが苦労しています...VBAを使用してシートにデータを転送する

+0

どのようなエラーが表示され、どの行に表示されますか? – braX

+1

あなたの質問に詳しいことがありますか?あなたのタイトルは非常に不誠実で、より説明的でなければなりません。あなたの質問と同じです。あなたは、あなたが達成しようとしていることを正確に尋ねていません。 [How to Ask Questions](https://stackoverflow.com/help/how-to-ask)と[最小限の完全かつ検証可能なサンプルを作成する方法](https://stackoverflow.com/help/)をお読みください。 mcve)を使用して、正解で有益な回答を得るための適切な変更を行った質問を適切に行う方法についてのヒントを提供します。あなたの問題に関する詳細な情報がなければ、ここに誰も本当にあなたを助けることができません。 – Busse

+0

私はそれを編集しました、混乱のために申し訳ありません。 –

答えて

0

私が提供しようとしている以上のものを求めているように感じます。私の答えを更新します。

セルA5に移動するシート名がある場合は、そのシートにデータをコピーするだけで十分です。同じような何かを実行します。Range("A5").Textから引き出された。これは、あなたが作業しているあなたのActiveSheetを取る範囲A1:A20を取り、シート名にA1:A20をレンジにそれらをコピーして貼り付けます

ThisWorkbook.ActiveSheet.Range("A1:A20").Copy Destination:=Worksheets(Range("A5").Text).Range("A1:A20") 

を。私は、このデータの一部を編集して、必要な範囲(データを取り出そうとしている範囲)から目的の範囲に貼り付ける必要があると考えています。

Range.Copyで作業する場合のヒントや有用な情報が含まれている可能性があるので、詳しくはMSDN Range.Copy Methodを参照してください。これはまた、データを貼り付けるシートと範囲を表示するために使用したものですが、Destinationパラメータがどのように機能するかを示しています。

これが役立つかどうか教えてください。

+0

悲しいことに、うまくいけない、私は上記のコードを更新していると、 "ループ"の直後の行に "無効なプロシージャコールまたは引数" –

関連する問題