У меня проблемы с проверкой данных Excel.На одном листе у меня есть список значений, который содержит список, который заполняет раскрывающийся список проверки, например:
A1 |1.) New Item
A2 |2.) Miscellaneous
A3 |3.) Change Order
A4 |4.) Choose the item being broken out:
A5 | Caulk NP-1
A6 | Safety signs
A7 | Warning lines
A8 | Snow fence
A9 | Drain Lead 4 lb 30"x30"
A10 | Cant Strip
A11 | Screws 1 5/8"
A12 | SS Sheet Metal 24 gauge
A13 | Sheet Metal Aluminum 040 mill finish
A14 | Sheet Metal Aluminum .050 mill finish
A15 | Termination Bar
A16 | Lead Boots 2"
A17 | Lead Boots 3"
A18 | Modified Bitumen Smooth APP
A19 | TREMCO ELS Mastic
A20 | TREMCO Polyroof SF
A21 | TREMCO Base sheet fasteners
A22 | TREMCO BURmastic Composite
A23 | TREMCO PowerPly Standard
A24 | TREMCO BURmastic SF
A25 | TREMCO PowerPly HD Base Sheet
A26 | TREMCO PowerPly Standard FR
A27 | TREMCO Burmesh 6"
A28 | TREMCO Site visits
A29 | TREMCO Reglet Sealant
A30 | TREMCO WB Primer
A31 | TREMCO Ice Coating
A32 | TREMCO Tremflash tape
A33 | TREMCO Warranty
A34 | 1/4" x 1 1/2" drive pins
A35 | SS Roof Nails 1 1/4"
A36 | Freight
A37 | Auto Fuel
A38 | PA Direct Labor Supervisor
A39 | PA Direct Labor Sheet Metal
A40 | PA Direct Labor Roof Coating
A41 | Equipment Crane 45 ton
A42 | Equipment Crane 70 ton
A43 | Platform Hoist R&G 400 28'
A44 | Sqeegies 24" Notched
A45 | Dumpsters
A46 | Porta John
A47 | Permit
A48 | Subcontractor RK Hydro Vac
A49 | Subcontractor Roofing ICG
A50 | Subcontractor Lightning Protection
A51 | Misc
A52 | Subtotal
Когда у меня есть другой лист, ссылающийся на этот список, проверка работает должным образом.Однако у меня есть макрос VBA, который в какой-то момент копирует этот другой лист в рабочую книгу для отправки по электронной почте.По этой и другим причинам мне нужно, чтобы раскрывающийся список проверки в этом столбце не зависел от другого листа, поэтому у меня есть макрос цикла по всем ячейкам, и я создаю строку проверки, которая выглядит следующим образом:
1.) New Item,2.) Miscellaneous,3.) Change Order,4.) Choose the item being broken<br> out:, Caulk NP-1 , Safety signs, Warning lines
Как видите, это точно такой же список, но это текстовая строка, каждый выбор которой разделен запятыми.Это работает почти так, как мне нужно, но есть проблема - 10 ведущих пробелов не работают так, как они должны работать во втором сценарии.У меня они есть там, чтобы эти выделения были выделены в выпадающем списке, чтобы сделать его более интуитивным.10 ведущих пробелов находятся в фактической «формуле списка проверки», но не отображаются, когда я щелкаю раскрывающийся список или делаю выбор!
Есть идеи?
РЕДАКТИРОВАТЬ: В соответствии с запросом, вот фактический код:
Range("A1").Value = "1.) New Item"
Range("A2").Value = "2.) Miscellaneous"
Range("A3").Value = "3.) Change Order"
Range("A4").Value = "4.) Choose the item being broken out:"
Range("A5:A350").Formula = "="" ""&INDIRECT(""'Buy Out'!B""&MATCH(""Description"",'Buy Out'!$B:$B,0)+ROW()-3)"
Application.Calculate
' build ValidationList string for later use (this will also have to happen when misc section isn't built, so this isn't the best place for it)
Range("A1").Select
ValidationList = ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Do Until ActiveCell.Row = 350
If ActiveCell.Value = " Subtotal" Or ActiveCell.Offset(3, 0).Value = " Subtotals" Then 'end of the loop
Exit Do
End If
If ActiveCell.Value <> "" Then
ValidationList = ValidationList & "," & vbTab & ActiveCell.Value
End If
ActiveCell.Offset(1, 0).Select
If ActiveCell.Row = 349 Then 'this shouldn't ever happen
ValidationListMessedUp = True
'MsgBox ("There appears to be a problem creating the drop-down list for the ""Addon Category/Item to Break Out"".")
End If
Loop
'back to buy out and populate validation as dynamic formula
Sheets("Buy Out").Select
Cells.Find(What:="Addon Category/Item to Break Out", after:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate '* EH and message? "Is this job on the most recent MBO template? It does not appear to have the words "Release #" anywhere on the Buy Out tab
With Range(ActiveCell.Offset(1, 0), ActiveCell.Offset(TotalRow - ActiveCell.Row - 2, 0)).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:= _
"=INDIRECT(""reference!$A$1:$A$""&IFERROR(MATCH("" Subtotal"",reference!$A:$A,0)-1,IFERROR(MATCH("" Grand Total"",reference!$A:$A,0)-1,MATCH("" Subtotals"",reference!$A:$A,0)-3)))"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
Таким образом, последний раздел этого кода, который заполняет проверку косвенной формулой, это тот, которыйработает правильно.Позже в коде я заполняю «статический» список проверки, используя строку.Вот еще одна часть:
With Range(ActiveCell.Offset(MiscStartRow - ActiveCell.Row + 1, 0), ActiveCell.Offset(TotalRow - ActiveCell.Row + 5, 0)).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=ValidationList
.IgnoreBlank = False
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
Большое спасибо за помощь.Это действительно расстраивает.