临时线显示类型不匹配错误

时间:2017-12-22 04:34:14

标签: excel vba

Sub assign_sr_no()

For Each sh In ThisWorkbook.Sheets
    If sh.Name = "master" Then GoTo gogo
    If sh.ProtectContents = False Then GoTo gogo

    Dim srno As String
    Dim temp As Integer
    temp = CInt(Right(Sheets("master").Range("A65536").End(xlUp).Text, 4))
    srno = "VE17" & "_" & Format(temp + 1, "0000")
    sh.Unprotect "VALUE"
    sh.Cells.Validation.Delete
    sh.Range("L1").Value = srno
    sh.Hyperlinks.Add Anchor:=sh.Range("A1"), SubAddress:="master!A1", Address:="", TextToDisplay:="Faridabad Plant"
    Call copy_from_ve(srno)

gogo:
    Next
End Sub

这段代码用于为工作表分配序列号,然后有另一个代码将数据从工作表复制到主工作表。 临时线显示

  

错误13,即类型不匹配错误。

1 个答案:

答案 0 :(得分:1)

  

整个Excel表格为空 我有25列[...]

您无法使用Integer功能将空字符串转换为CInt。此代码重现错误:

Debug.Print CInt("")

您可以使用Val功能为Double提供一个Integer,如果您绝对确定自己永远不需要,我可以将其转换为Long值大于32,767。否则,请使用temp = Val(Right(Sheets("master").Range("A65536").End(xlUp).Text, 4))

.Range("A" & [ActiveSheet.]Rows.Count)

你应该真的打破这个陈述,如果它在每次迭代时保持不变,就把它拉出循环体。

此外,Excel&gt; 2003在工作表上的方式超过65K可能的行;考虑使用Sheets("master")(或将With拉入自己的CodeName块变量,或者更好,请使用表单With MasterSheet ' assuming (Name) property was set to "MasterSheet" Dim lastValue As String lastValue = .Range("A" & .Rows.Count).End(xlUp).Text Dim temp As Long temp = Val(Right(lastValue, 4) Dim sh As Worksheet For Each sh In ThisWorkbook.Worksheets If sh.Name <> .Name Then ' no need for GoTo jumping here '... End If Next End With

<script type="text/javascript" src="../js/tester/moment.min.js"></script>