Мой код работает неправильно. Код все еще нуждается в настройке, чтобы решить некоторые оставшиеся проблемы. Это медленно, и требуется 60 секунд, чтобы разморозить форму после запуска кода VBA ниже.
Если кто-то может помочь с этим кодом, пожалуйста, ответьте.
Sub Crunched(): Dim wb As Worksheet, we As Worksheet, wl As Worksheet, wh As Worksheet
Dim i As Long, j As Long, k As Long, p As Long, q As Long, r As Long, h As Integer
Dim Rooms As String, T As Single
Set wb = Sheets("Materials Budget"): Set we = Sheets("Materials Estimate")
Set wl = Sheets("Lowes Fax"): Set wl = Sheets("Home Depot Fax"): 'r = wb.UsedRange.Rows.Count
For i = 12 To wb.UsedRange.Rows.Count
If LCase(wb.Range("Q" & i)) = "y" Then
p = i: Do Until LCase(wb.Range("B" & p)) = "room": p = p - 1: Loop
If InStr(1, Rooms, wb.Range("B" & p + 1)) = 0 Then
If h Then
T = 0: r = q: Do Until Not IsNumeric(we.Range("I" & r))
T = T + we.Range("I" & r): r = r - 1: Loop
we.Range("H" & q + 1) = "Total": we.Range("I" & q + 1) = T
End If
Rooms = Rooms & " " & wb.Range("B" & p + 1): h = h + 1: q = 10 * h
wb.Range("B" & p & ":B" & p + 1).Copy we.Range("B" & q)
wb.Range("K" & p & ":L" & p + 1).Copy we.Range("C" & q)
wb.Range("O" & p & ":S" & p + 1).Copy we.Range("E" & q): q = q + 1
End If
q = q + 1
wb.Range("B" & i).Copy we.Range("B" & q)
wb.Range("K" & i & ":L" & i).Copy we.Range("C" & q)
wb.Range("O" & i & ":S" & i).Copy we.Range("E" & q)
End If
Next i
End Sub

17 декабря 2013 г.:
Спасибо за ваши ответы. Код книги — это помощь, которую я получил. Он работает неправильно, и ответы Stackoverflow подтвердили, что он написан неправильно. Я не был уверен, почему код, первоначально предоставленный мне вчера на другом справочном сайте, не использовал диапазоны. Или почему форме требуется 60 секунд, чтобы рабочая книга завершила процесс VBA и зависла.
Текущие проблемы заключаются в следующем: 1. Сметная таблица (лист2) получает информацию из бюджета материалов (лист1), и на комнату допускается только 10 строк. Строки должны автоматически заполняться до пробелов.
В оценочном листе информация о рядах комнат указана несколько раз ниже по листу. Так 14 комнат выросли до 48.
Листы факса (листы 3 и 4) не заполняются. Факс Lowes и факс Home Depot.
Чтобы помочь вам понять содержание рабочей книги: Бюджет материалов (Лист1) представляет собой построчный калькулятор и лист поиска продуктов, в котором используются столбцы A-T. Диапазон номеров указан ниже. Есть два дополнительных диапазона BUY_Order Approval (столбец Q), где для фактического заказа товара требуется ответ «Y», и строка «Промежуточные итоги» (столбец S).
Бюджет материалов (лист 1) имеет в общей сложности 14 отдельных «комнат», сгруппированных в 14 отдельных диапазонов, чтобы не возникало проблем с дифференциацией информации из одного диапазона в другой, который включает только описание продукта (столбец K), номер SKU (столбец L), стоимость (столбец O), количество (столбец P), продавец (столбец R) и баланс строки (столбец S). Соответственно КЛОПРС:
Диапазоны:
- Расходные материалы_Ванная1 (40 строк)
- Расходные материалы_Ванная2 (40 строк)
- Supplies_Bedroom1 (33 строки)
- Supplies_Bedroom2 (33 строки)
- Supplies_Bedroom3 (33 строки)
- Supplies_Bedroom4 (33 строки)
- Расходные материалы_Кухня (60 строк)
- Supplies_FrontPorch (33 строки)
- Расходные материалы_RearPorch
- Расходные материалы_Прихожая (25 рядов)
- Расходные материалы_Прачечная
- Принадлежности_Гараж
- Supplies_FloridaRoom
Эти строки копируются в Смету материалов (Лист2) только в том случае, если в столбце Q есть ответ «Y» (Купить товар), а также выбор строки в столбце A «x». Столбец A просто меняет цвета строк, чтобы пользователь не забыл о заполнении информации.
Два факсимильных листа заполняются, если в столбце Q (Товары для покупки) в бюджете материалов (Лист1) есть «Y», «X» в столбце A для выбранной строки и если в столбце R указано «Lowes» или «Home Depot». . Каждый из двух факсимильных листов разделяет товары розничного продавца; факс Lowes содержит только товары, которые можно приобрести у Lowes, а факс Home Depot содержит только товары, которые можно приобрести у HD. Материалы, перечисленные в факсе, расположены в порядке присвоенного номера в столбце T, в котором собраны все необходимые пиломатериалы, все гвозди и шурупы вместе и т. д., чтобы магазину было легче получать товары для заказа.
- Смета материалов (лист 2) и Бюджет материалов (лист 1) имеют потенциальную общую сумму от 1 до 500 строк, если проект представляет собой полный снос и замену или просто ремонт. Таким образом, Оценка материалов и Факсы должны выполняться в автоматическом цикле до тех пор, пока не будут скопированы все подходящие строки.
Любая помощь будет оценена по достоинству.
-- Сжато на время
p = i, почти непонятны. С точки зрения вашей проблемы, мне интересно, должна ли строкаIf h Thenиметь что-то большее, посколькуhявляется (унифицированным?)integer. - person Doug Glancy   schedule 17.12.2013