just_oracle 2014-12-04 02:09 采纳率: 0%
浏览 5201

VBA中提示子程序或函数未定义?

Private Sub CommandButton1_Click()
Dim DoubleTemp As Double
Dim ll_Pos As Long
Dim PanelName() As String
Dim DexStr As String
Dim StringTemp As String
Dim Extract As New TBDex
Dim Extract_1 As New TBDex

Dim Val As Variant


DexStr = "hull.block(*).panel(*).name"
Extract.DoDataExtraction DexStr
I = 1
Val = Extract.GetValue

ReDim PanelName(1)
While TypeName(Val) = "String"
   PanelName(I) = Val
   I = I + 1
   Val = Extract.GetValue
   ReDim Preserve PanelName(UBound(PanelName) + 1)
Wend
    If I < 2 Then
    res = WarningMsg("PanelName not found!")
    Exit Sub
End If

DeleteWorkSheet ("板材加工信息")
Set NewSheet = Worksheets.Add
NewSheet.Name = "板材加工信息"
Worksheets("板材加工信息").Activate

NewSheet.Cells(1, 1) = "零件编号"
NewSheet.Cells(1, 2) = "单元批次"
NewSheet.Cells(1, 3) = "切割图号"
NewSheet.Cells(1, 4) = "单件重量"
NewSheet.Cells(1, 5) = "零件数量"
NewSheet.Cells(1, 6) = "零件面积"
NewSheet.Cells(1, 7) = "零件厚度"
NewSheet.Cells(1, 8) = "零件宽度"
NewSheet.Cells(1, 9) = "零件长度"

NewSheet.Columns("A:A").Select
Selection.ColumnWidth = 8.88
NewSheet.Columns("B:B").Select
Selection.ColumnWidth = 8.88
NewSheet.Columns("C:C").Select
Selection.ColumnWidth = 8.38
NewSheet.Columns("D:D").Select
Selection.ColumnWidth = 8.38
NewSheet.Columns("E:E").Select
Selection.ColumnWidth = 8.38
NewSheet.Columns("F:F").Select
Selection.ColumnWidth = 8.88
NewSheet.Columns("G:G").Select
Selection.ColumnWidth = 8.38
NewSheet.Columns("H:H").Select
Selection.ColumnWidth = 8.38
NewSheet.Columns("I:I").Select
Selection.ColumnWidth = 10.38

nrow = 1
For K = 1 To I - 1
    nrow = nrow + 1
    ll_Pos = InStr(PanelName(K), "-") '-在字符中第几个出现
    If ll_Pos > 0 Then
        NewSheet.Cells(nrow, 1) = Mid(PanelName(K), ll_Pos + 1) '从左边ll_Pos+1个字符开始取剩余全部
        NewSheet.Cells(nrow, 2) = Mid(PanelName(K), 1, ll_Pos - 1) '从左边第一个字符开始取ll_Pos-1个字符
    End If

    DexStr = "HULL.PANEL(" + Chr$(39) + PanelName(K) + Chr$(39) + ").WEIGHT"
    NewSheet.Cells(nrow, 4) = DexStr
    Extract.DoDataExtraction DexStr
    Val = Extract.GetValue
    DoubleTemp = 0
    If TypeName(Val) = "Double" Then
       DoubleTemp = Val
    End If
    NewSheet.Cells(nrow, 4) = DoubleTemp

    DexStr = "HULL.PANEL(" + Chr$(39) + PLATE(K) + Chr$(39) + ").AREA"
    Extract.DoDataExtraction DexStr
    Val = Extract.GetValue
    DoubleTemp = 0
    If TypeName(Val) = "Double" Then
       DoubleTemp = Val
    End If
    NewSheet.Cells(nrow, 6) = DoubleTemp

    DexStr = "HULL.PANEL(" + Chr$(39) + PLATE(K) + Chr$(39) + ").THICKNESS"
    Extract.DoDataExtraction DexStr
    Val = Extract.GetValue
    StringTemp = ""
    If TypeName(Val) = "String" Then
       StringTemp = Val
    End If
Next K
UserForm3.Hide

End Sub


  • 写回答

2条回答 默认 最新

  • 宋哥 2014-12-04 02:56
    关注

    出错后光标会指向错误处的函数或过程,看那个函数或过程是否存在?有没有写错?

    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序