我尝试使用下面通过值A栏命名为“报告”工作表中运行,并创建一个名为“Holidays_Requested”表这些范围,但每次我把它与VBA宏命名范围
弹出对象所需的运行时错误424
谁能帮助或知道的创建使用VBA命名范围的另一种方式。
Sub TransposeRange_new_code()
Dim OutRange As Range
Dim x As Long, y As Long
Dim sKey As String
Dim maxCount As Long
Dim data, dic, keys, items, dataout()
Application.ScreenUpdating = False
data = Sheets("Report").Range("A2:E" & Report.Cells(Report.Rows.Count, "A").End(xlUp).Row).Value2
Set dic = CreateObject("scripting.dictionary")
Set OutRange = Sheets("Holidays_Requested").Range("B2")
For x = 1 To UBound(data, 1)
If Trim$(data(x, 1)) <> "_" Then
sKey = Trim$(data(x, 1)) & Chr(0) & Trim$(data(x, 2))
If Not dic.exists(sKey) Then dic.Add sKey, CreateObject("Scripting.Dictionary")
dic(sKey).Add x, Array(data(x, 4), data(x, 5))
If dic(sKey).Count > maxCount Then maxCount = dic(sKey).Count
End If
Next
ReDim dataout(1 To maxCount + 1, 1 To dic.Count * 3)
keys = dic.keys
items = dic.items
For x = LBound(keys) To UBound(keys)
dataout(1, x * 3 + 1) = Split(keys(x), Chr(0))(0)
dataout(1, x * 3 + 2) = Split(keys(x), Chr(0))(1)
For y = 1 To items(x).Count
dataout(1 + y, x * 3 + 1) = items(x).items()(y - 1)(0)
dataout(1 + y, x * 3 + 2) = items(x).items()(y - 1)(1)
Next y
Next
OutRange.Resize(UBound(dataout, 1), UBound(dataout, 2)).Value2 = dataout
For x = 1 To UBound(keys)
OutRange.Offset(0, (x - 1) * 3).Resize(maxCount, 2).Name = "" & validName(Split(keys(x - 1), Chr(0))(0))
With OutRange.Offset(0, (x - 1) * 3 + 1)
.Hyperlinks.Add anchor:=.Cells(1), Address:="mailto://" & .Value2, TextToDisplay:=.Value2
End With
Next
End Sub
你在哪里试图设置'命名范围'?什么线?你打算为'Named Range'使用哪个变量? –
我相信它是Application.ScreenUpdating = False data = Sheets(“Report”)。Range(“A2:E”&Report.Cells(Report.Rows.Count,“A”)。End(xlUp).Row) .Value2 Set dic = CreateObject(“scripting.dictionary”) – bloodmilksky
具体哪行?你已经给了*三条*线,但错误只能在其中一条线上提出。我怀疑这是对'Report.Rows'的调用,除非'Report'对象是全局范围的并且在另一个例程中实例化。请参阅下面的答案。 –