excel - 继承时 VBA 类型不匹配(错误 13),用户来自
问题描述
环境 ・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
解决方案
在运行用户窗体时,当您单击“调试”时,突出显示的行不一定是发生错误的地方。
我怀疑If (transaction.CryptCurrency <= 0) Then
会导致错误,因为你在这里是一个带有整数的字符串。
transaction.CryptCurrency <> ""
改为使用
推荐阅读
- docker - 如何将 dataiku 作为 docker 容器运行?
- java - 如何读取新版本的 iwork 文件,如 .numbers、.key、.pages
- python - 在 python 中列出要组合的操作
- babeljs - babel v7 升级导致在相关路径和插件转换运行时导入的文件中出现意外的令牌导入
- c++ - 如何在 Arduino 中创建具有相同元素多次重复的数组?
- oauth - 已登录用户的 OAuth2 验证码
- node.js - 使用 React Native 和 Node.js 与用户实现评论
- oauth-2.0 - 提供 Content-Length 标头时需要错误
- wordpress - 如何为注册用户进行woocommerce支付
- nservicebus - NServiceBus:遇到异常时禁用重试