Я задал несколько вопросов в отношении меню макросов для проверки валидности данных. Я подошел очень близко, чтобы решить свои проблемы. Однако, когда я применяю свой код на листе, всегда печатайте содержимое моего последнего макроса. Мой код для листа, как показано ниже:Сбой проверки данных Вызов макросов
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$3" Then
On Error GoTo bm_Safe_Exit
Application.EnableEvents = False
Select Case Target.Value2
Case "ABCP"
Call Macro1
Case "Accounting Policy"
Call Macro2
Case "Audit Committee"
Call Macro3
Case "Auto"
Call Macro4
Case "Auto Issuer Floorplan"
Call Macro5
Case "Auto Issuers"
Call Macro6
Case "Board of Director"
Call Macro7
Case "Bondholder Communication WG"
Call Macro8
Case "Canada"
Call Macro9
Case "Canadian Market"
Call Macro10
Case Else
'Do Nothing
End Select
End If
bm_Safe_Exit: Application.EnableEvents = True End Sub
У меня есть десять макрокоманд, а содержание в значительной степени то же самое, только клеточные изменения. А вот код:
Sub Macro1()
Range("F2").Select
Selection.FormulaArray = _
"=IF(COUNTIF(Database!R2C35:R10000C35,Committees!R2C1)>=ROW(Committees!R2C:RC),INDEX(Database!R2C[-5]:R10000C[-5],SMALL(IF(Database!R2C35:R10000C35=Committees!R2C1,ROW(Database!R2C35:R10000C35)-ROW(Database!R2C35)+1),ROWS(Committees!R2C:RC))),"""")"
Selection.AutoFill Destination:=Range("F2:T2"), Type:=xlFillDefault
Range("F2:T2").Select
Selection.AutoFill Destination:=Range("F2:T5000")
Range("F2:T5000").Select
Sheets("Reports").Select
Range("F2").Select
Selection.FormulaArray = "=IF(ISERROR(Committees!RC),"""",Committees!RC)"
Selection.AutoFill Destination:=Range("F2:T2"), Type:=xlFillDefault
Range("F2:T2").Select
Selection.AutoFill Destination:=Range("F2:T5000")
Range("F2:T5000").Select
Range("E2").Select
End Sub
При запуске макроса в VBA, он также уведомляет меня о том, что автозаполнение Range не удалось.
Пожалуйста, помогите исправить код, спасибо!
Во-первых, я *** очень рекомендую изучить [Как избежать использования '.Activate \ .Select'] (http://stackoverflow.com/questions/10714251/how-to-avoid-using-select -in-excel-vba-macro), так как это может привести к головной боли, особенно при использовании нескольких рабочих листов. Кроме того, какой макрос бросает ошибку, событие Worksheet_Change или 'Macro 1'? Какая строка и какая ошибка происходит? – BruceWayne
Привет, Брюс, спасибо за рекомендацию. Это макрос, который бросает ошибку, четвертую строку с выбором. –
Хм, я попробовал это, и он заполнился для меня. У меня такое чувство, потому что вы используете '.Select'. Я добавлю ответ, который покажет вам ваш «Макро 1» без '.Select' и посмотрит, поможет ли это кому-либо. – BruceWayne