环境 ・Excel 2016 ・Windows10
问题・类型不匹配
我在做VBA练习,任务是制作UserForm,输入会显示在工作表上。
照片1,单击“投资组合”-> 显示用户表单(照片2),然后选择货币并选择数量、汇率、买入/卖出,然后单击“添加交易”
↓</p>
然后,显示错误是类型不匹配 13。当我单击“调试”时,问题是黄线,但我不知道如何解决它。
输入应显示在 Photo3 上(从日期到速率的内部工作表(“TransactionHistory”))
↓用户表单代码
Private Sub btnAddtransaction_Click()
Dim newTransaction As New transaction
newTransaction.TransactionDate = Now()
If (optCredit) Then
newTransaction.transactionType = Credit
End If
If (optDebit) Then
newTransaction.transactionType = Debit
End If
save newTransaction
newTransaction.CryptCurrency = cmBoxCurrency.Value
newTransaction.Quantity = txtboxQuantity.Value
newTransaction.ExchangeRate = txtboxExchangerate.Value
End Sub
Public Sub save(transaction As transaction)
Dim validator As New TransactionValidator
If (validator.isValid(transaction)) Then
Worksheets("TransactionHistory").Rows(2).Insert Shift:=xlDown
Sheets("TransactionHistory").Range("A2") = transaction.TransactionDate
If (transaction.transactionType = Credit) Then
Sheets("TransactionHistory").Range("B2") = "Credit"
Else
Sheets("TransactionHistory").Range("B2") = "Debit"
End If
Sheets("TransactionHistory").Range("C2") = transaction.CryptCurrency
Sheets("TransactionHistory").Range("D2") = transaction.Quantity
Sheets("TransactionHistory").Range("E2") = transaction.ExchangeRate
End If
End Sub
Private Sub btnOk_Click()
↓交易
Public CryptCurrency As String
Public ExchangeRate As Double
Public Quantity As Double
Public TransactionDate As Date
Public transactionType As transactionType
Public Function tostring() As String
tostring = CryptCurrency & " " & transcriptionType & " " & "quantity: " & Quantity & "rate: " & ExchangeRate
End Function
Public Function isValid(transaction As transaction) As Boolean
If (transaction Is Nothing) Then
isValid = False
End If
If (transaction.CryptCurrency <= 0) Then
isValid = False
End If
If (transaction.Quantity < 0) Then
isValid = False
End If
If (transaction.ExchangeRate < 0) Then
isValid = False
End If
End Function
↓交易验证器
Public Function isValid(transaction As transaction) As Boolean
If (transaction Is Nothing) Then
isValid = False
End If
If (transaction.CryptCurrency <= 0) Then
isValid = False
End If
If (transaction.Quantity < 0) Then
isValid = False
End If
If (transaction.ExchangeRate < 0) Then
isValid = False
End If
End Function






