データ検証メニュー呼び出しマクロに関していくつか質問がありました。私は私の問題を解決するために非常に近くに来ました。ただし、ワークシートにコードを適用すると、最後のマクロの内容を常に印刷することができます。 ワークシートのための私のコードは以下の通りです:データ検証コールマクロが失敗しました
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の
は、私が10個のマクロを持っており、内容はほとんど同じ、唯一の細胞の変化です。
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でマクロを実行すると、それはまた、オートフィルレンジが失敗したことを私に通知: そしてここでは、コードです。
コードを修正してください、ありがとう!
まず、私は*** [非常に簡単に '.Activate \ .Select'を使用しないでください(http://stackoverflow.com/questions/10714251/how-to-avoid-using-select -in-excel-vba-macros)を使用すると、特に複数のワークシートを使用しているときに頭痛を引き起こす可能性があります。また、どのマクロがエラー、Worksheet_Changeイベント、または「マクロ1」をスローしていますか?どのラインで何が起こりますか? – BruceWayne
こんにちはブルース、お勧めします。それはエラーをスローしているマクロ、選択肢の4行目です。オートフィル。 –
うーん、私はそれを試み、それは私のために満たされた。あなたが '.Select'を使っているからです。私はあなたの 'Macro 1'を' .Select'なしで表示し、それが何かを助けるかどうかを見る答えを追加します。 – BruceWayne