Моя функция вставки не работает, и я не знаю почему - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь скопировать формы ввода, выбранные из основного списка, на другой лист. Идея состоит в том, что это сокращенный список имен без подробностей. Смотрит на то, что я выбрал. Копирует выбранную форму ввода и вставляет ее в новое место, чтобы создать список, содержащий только те формы ввода, которые мне нужны. Я не могу сказать, работает ли l oop правильно, потому что функция вставки в конце не работает.

   Sub BidList()


'Sets unique terms used throught this code
  Dim wQuick As Worksheet, wMaster As Worksheet
  Dim BlankFound As Boolean
  Dim x As Long, n As Long, y As Long
  Dim firstrow As Long, pasterow As Long, lastrow As Long, PasteCell As String, MyRange As String

 'Turns off Screen updating to save memory
  Application.ScreenUpdating = False


'Store an initial value for "x" effectively starting the macro at C4 after the +1 in the next step
   x = 3
   n = 0
   y = 0

  Set wQuick = ThisWorkbook.Sheets("Quick Reference")
  Set wMaster = ThisWorkbook.Sheets("MASTER")
  BlankFound = False

'Loop until x equals 600
  Do While BlankFound = False
    x = x + 1
    n = n + 1
    If Trim(wQuick.Cells(x, "B").Value) = "" Then Exit Do




'If there is a 1 in the Boolean column then ...
    If Trim(wQuick.Cells(x, "C").Value) = "1" Then

 'Move the y value so that the template is pasted in the appropriate place
    y = y + 1


'Copy the appropriate form from wMaster
    firstrow = (n * 9) + 18
    lastrow = (n * 9) + 27

    Let MyRange = "A" & firstrow & ":" & "K" & lastrow

    wMaster.Range(MyRange).Copy

'Select the next place for the form to be pasted on wQuick

    pasterow = (y * 9) - 5

     Let PasteCell = "F" & "," & pasterow
     wQuick.Cells(PasteCell).Paste


    End If



  Loop


  Application.ScreenUpdating = True
End Sub

1 Ответ

0 голосов
/ 26 февраля 2020

Пожалуйста, избегайте копирования-вставки в Excel, лучше используйте for-l oop, как показано ниже:

# keep track of MyRange.Row and MyRange.Column
For Each cell in wMaster.Range(MyRange):
  wQuick.Cells(<Starting point>).Offset(<take the cell coordinates, based on MyRange.Row and/or MyRange.Column>).Value = cell.Value
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...