Excel 后界函数的问题

Excel 后界函数的问题,excel,vba,late-binding,Excel,Vba,Late Binding,您好,我有以下代码: Private Sub makeNewReports() Dim wkSheet As Worksheet Set wkSheet = ActiveWorkbook.Worksheets("Grades") Dim i As Long Dim myMap As Dictionary Set myMap = New Dictionary For i = 4 To 6 'wkSheet.Range("a1").End(xlToRight).Column - 1

您好,我有以下代码:

Private Sub makeNewReports()


Dim wkSheet As Worksheet
Set wkSheet = ActiveWorkbook.Worksheets("Grades")

Dim i As Long

Dim myMap As Dictionary
Set myMap = New Dictionary


For i = 4 To 6 'wkSheet.Range("a1").End(xlToRight).Column - 1
    Dim myVals As dateValueItem
    myVals.total_value = wkSheet.Cells(2, i)
    myVals.items = wkSheet.Cells(1, i)
    myVals.student_value = wkSheet.Cells(4, i)
    myMap.Add wkSheet.Cells(3, i), myVals
Next i
End Sub
以及dateValueItem的以下代码

Option Explicit

Public Type dateValueItem
      total_value As Long
      items As String
      student_value As Long
End Type
Option Explicit

Public total_value As Long
Public items As String
Public student_value As Long
当我运行上面的代码时,我发现了这个问题

'编译错误:只能将公共对象模块中定义的用户定义类型强制到变量或从变量强制到变量或传递到后期绑定函数'


我试图将3个不同的值映射到一个特定的日期;日期在第三排。第2行和第4行具有数值,第1行具有字符串值。希望能够将所有这些组织在一起,以便最终将描述和值与日期联系起来。

这可能是最快的方法。创建一个类并将其命名为dateValueItem

Option Explicit

Public Type dateValueItem
      total_value As Long
      items As String
      student_value As Long
End Type
Option Explicit

Public total_value As Long
Public items As String
Public student_value As Long
并将代码更改为

Option Explicit

Private Sub makeNewReports()
Dim wkSheet As Worksheet
    Set wkSheet = ActiveWorkbook.Worksheets("Grades")

    Dim i As Long

    Dim myMap As Dictionary
    Set myMap = New Dictionary

    Dim myVals As dateValueItem
    For i = 4 To 6    'wkSheet.Range("a1").End(xlToRight).Column - 1
        Set myVals = New dateValueItem
        myVals.total_value = wkSheet.Cells(2, i)
        myVals.items = wkSheet.Cells(1, i)
        myVals.student_value = wkSheet.Cells(4, i)
        myMap.Add wkSheet.Cells(3, i), myVals
    Next i
End Sub

这可能是最快的方法。创建一个类并将其命名为dateValueItem

Option Explicit

Public Type dateValueItem
      total_value As Long
      items As String
      student_value As Long
End Type
Option Explicit

Public total_value As Long
Public items As String
Public student_value As Long
并将代码更改为

Option Explicit

Private Sub makeNewReports()
Dim wkSheet As Worksheet
    Set wkSheet = ActiveWorkbook.Worksheets("Grades")

    Dim i As Long

    Dim myMap As Dictionary
    Set myMap = New Dictionary

    Dim myVals As dateValueItem
    For i = 4 To 6    'wkSheet.Range("a1").End(xlToRight).Column - 1
        Set myVals = New dateValueItem
        myVals.total_value = wkSheet.Cells(2, i)
        myVals.items = wkSheet.Cells(1, i)
        myVals.student_value = wkSheet.Cells(4, i)
        myMap.Add wkSheet.Cells(3, i), myVals
    Next i
End Sub

必须创建类而不是用户定义的类型。必须创建类而不是用户定义的类型。