EXCEL vb代码提示"类型不匹配"

发布网友

我来回答

2个回答

热心网友

Do While NumberSalary(i) = "" Or NumberSalary(i) < 6


第一个判断条件等号左右两边类型不一致,左边是long型的,右边是string型的


代码修改如下:

Dim TotalH As Byte
Public Sub EnterHours()
Dim H As Byte
Dim i As Byte
TotalH = 0
For i = 1 To 5
H = InputBox("请输入周" & UCase(i) & "工作时间(单位:小时):")
TotalH = TotalH + H
Next
MsgBox "本周工作共计" & TotalH & "小时"
End Sub
'输入员工姓名即薪资,消息框显示每个员工的本周总工资
Public Sub Salary()
Dim Totalalary() As Long
Dim NumberSalary() As Long
Dim Number() As String
Dim i, j As Integer
Dim isp As Integer
isp = vbYes
Do While isp = vbYes
  i = i + 1
  ReDim Number(i) As String
  Number(i) = InputBox("请输入员工姓名")
 
  If Number(i) = "" Then
     isp = MsgBox("是否要继续输入员工姓名", vbYesNo)
   
     If isp = vbYes Then
       Number(i) = InputBox("请输入员工姓名")
     End If
  End If
  
  ReDim NumberSalary(i) As Long
  
  
  NumberSalary(i) = Val(InputBox("请输入" & Number(i) & "的时薪:"))
  '时薪最小值为6,空值或小于6则需要重新输入
  Do While NumberSalary(i) < 6
     NumberSalary(i) = Val(InputBox("时薪是小值为6,请重新输入" & Number(i) & "的时薪:"))
  Loop
  
  ReDim Totalalary(i) As Long
  Totalalary(i) = NumberSalary(i) * TotalH
  
Loop
For j = 1 To i - 1
MsgBox Number(j) & ":时薪" & NumberSalary(j) & ",本周总薪资" & Totalalary(j)
Next
End Sub

热心网友

因为NumberSalary的类型定义为了Long,就不能接受字符数据,也不能和字符数据进行比较(注意,空字串也是字符数据)
解决办法:
将 NumberSalary(i) = InputBox("请输入" & Number(i) & "的时薪:") 修改为:

NumberSalary(i) = Val(InputBox("请输入" & Number(i) & "的时薪:")) '强制转换为数值数据

将 Do While NumberSalary(i) = "" Or NumberSalary(i) < 6 修改为:

Do While NumberSalary(i) < 6

热心网友

Do While NumberSalary(i) = "" Or NumberSalary(i) < 6


第一个判断条件等号左右两边类型不一致,左边是long型的,右边是string型的


代码修改如下:

Dim TotalH As Byte
Public Sub EnterHours()
Dim H As Byte
Dim i As Byte
TotalH = 0
For i = 1 To 5
H = InputBox("请输入周" & UCase(i) & "工作时间(单位:小时):")
TotalH = TotalH + H
Next
MsgBox "本周工作共计" & TotalH & "小时"
End Sub
'输入员工姓名即薪资,消息框显示每个员工的本周总工资
Public Sub Salary()
Dim Totalalary() As Long
Dim NumberSalary() As Long
Dim Number() As String
Dim i, j As Integer
Dim isp As Integer
isp = vbYes
Do While isp = vbYes
  i = i + 1
  ReDim Number(i) As String
  Number(i) = InputBox("请输入员工姓名")
 
  If Number(i) = "" Then
     isp = MsgBox("是否要继续输入员工姓名", vbYesNo)
   
     If isp = vbYes Then
       Number(i) = InputBox("请输入员工姓名")
     End If
  End If
  
  ReDim NumberSalary(i) As Long
  
  
  NumberSalary(i) = Val(InputBox("请输入" & Number(i) & "的时薪:"))
  '时薪最小值为6,空值或小于6则需要重新输入
  Do While NumberSalary(i) < 6
     NumberSalary(i) = Val(InputBox("时薪是小值为6,请重新输入" & Number(i) & "的时薪:"))
  Loop
  
  ReDim Totalalary(i) As Long
  Totalalary(i) = NumberSalary(i) * TotalH
  
Loop
For j = 1 To i - 1
MsgBox Number(j) & ":时薪" & NumberSalary(j) & ",本周总薪资" & Totalalary(j)
Next
End Sub

热心网友

因为NumberSalary的类型定义为了Long,就不能接受字符数据,也不能和字符数据进行比较(注意,空字串也是字符数据)
解决办法:
将 NumberSalary(i) = InputBox("请输入" & Number(i) & "的时薪:") 修改为:

NumberSalary(i) = Val(InputBox("请输入" & Number(i) & "的时薪:")) '强制转换为数值数据

将 Do While NumberSalary(i) = "" Or NumberSalary(i) < 6 修改为:

Do While NumberSalary(i) < 6

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com