私は同じ部品を含む一意のID番号を持つ数百のジャンクションボックスを持っています。各ID番号の下に部品のリストを表示するリストを作成する必要があります。セルの範囲をコピーして複数回挿入する
私は今朝VBAを使い始めました。そして、ビットとピースからマクロをまとめました。
マクロでは次の処理が行われます。 コピーするセルの範囲(変数cell_rng)を選択するようユーザーに求めます。 は、セルを選択して、コピーしたセルを挿入するプロセス(変数start_cell)を開始するように指示します。 コピー範囲を入力する必要がある回数を入力するようにユーザーに求めます。変数j)(合計数 JB)。 コピーするセル範囲(変数k)に含まれる行数を入力するようにユーザーに求めます。
マクロは、元のリストのすべての行(ジャンクションボックスID)の間にcell_rngを挿入する必要があります。 start_cellの下にcell_rngを挿入し、cell_rng k個の行を挿入する必要があります(kはコピーされた行の数であり、したがってリストの次のジャンクションボックスIDの下のセルの新しい位置です)。 start_cellの下の行x 1、start_cellの下のk行x 2、などとなり、番号jに達するまで続きます。
しかしマクロが何最初cell_rng挿入の下** START_CELL以下cell_rngを挿入しcell_rngをK + 1行を挿入です。 したがって、k = 5でstart_cell = 1の場合、マクロはセル2から始まるcell_rngを挿入し、セル7から11は挿入されず、セル9でプロセスが再び開始されます。 それから、私はそれが必要な場所にcell_rngを挿入して動作させたいと思っています。
元のリストのすべての行の後にcell_rngを挿入するマクロを手に入れることができる人はいますか? 謝罪説明が難しい場合は、マクロを実行したいものを書き留めるのは簡単ではありません!
マクロのコードは次のとおりです。
Sub Insert_Copied_Cells()
'
'Insert_Copied_Cells
'This Macro copies a range of cells and inserts x number of times below a
specified cell.
'The offset can be altered so that a copied range can be inserterd on
multiple lines without changed data already present.
'
'This marco misses the first 6 row for some reason, this needs to be
corrected somehow..........
'
Dim i As Variant, j As Variant, k As Variant, l As Variant, cell_rng As
Range, start_cell As Range
'i = number of repeated entries required
'j = number of repeated entries required
'k = number of rows in the range of cells to be copied
'l = number of repeated entries required
'cell_rng = range of cells to be copied
'start_cell = the cell below which the copied range should be inserted, this
'is the reference cell for all the repetition of the range insertion
Set cell_rng = Application.InputBox("Select Range to be Copied", "Obtain
Range", Type:=8)
'promts user to select a range to be copied
Set start_cell = Application.InputBox("Select the First Cell Below Which
Copied Range will be Entered", "Obtain Starting Cell", Type:=8)
'promts user to select a cell to start the process
j = InputBox("Input Number of Entry Repetitions Required")
'prompts user to enter number of repeated entries required
k = InputBox("Number of rows to be Copied")
'prompts user to enter number of rows the selected range contains
l = k + 1
'adds one onto number of rows to be copied to allow for next entry
For i = 0 To j
'run through the code below from i= 0 increasing by 1 until number j is reached, then stop.
cell_rng.Select
'defines the range to select (range defined above at prompt)
Selection.Copy
'copies the range of cells
start_cell.Offset((l * i), 0).Select
'selects starting cell to paste range into
Selection.Insert Shift:=xlDown
'inserts the selected range below the starting cell
Next i
End Sub