听说阁下的祖传VB技术已经炉火纯青,特来讨教一番!

  • s
    sign
    故事是这样的,工作对象会产生大量的数据,但是没有相应的汇总查询软件,于是花钱在咸鱼找了个学生做了个有查询汇总功能的表格,很好用。现在数据的项增多了,原功能无法导入新项,会中断,无法使用。

    其实不改进没什么实质性影响,但是对于一门全新没接触过的知识,我感觉能凭自己的猜测完成改进,是个挺有趣的事,于是研究了一段时间,解决了汇总的问题,现在汇总表格已经能正常读取新增项的数据并形成表格。但是另一个sheet的查询功能,响应的参数也跟着坐了修改,却无法正常运行查询,有报错。

    其实就是和原来的作者一个红包就能解决的事情,但刚才说了,主要是觉得这事有趣,所以想自己搞定。搜了一下vb代码,看了会觉得还是不要难为自己……当然,我发帖寻求帮助,如果解决了,也是凭本事靠自己问出来的,肯定也算是我“自己”搞定的

    下面是表格情况,走过路过的都来捧捧场,给点建议,不胜感激!我代表人类正义事业向各位表示感谢!


    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



    红框是每个样本编号,蓝色是每个样本的项,黄框是有新增项的样本增项数据

    过程谁这样的:
    机器会生成一个dat文件,将dat改为xls文件后形成excel文件。在“查询”标签中点击导入,可以将数据识别出来并汇总到“汇总”标签,形成有编号和数据的表格。
    在输入行填入数据后点击查询,会在“汇总”标签里寻找数据一致的编号,形成查询结果。




    现在点击“查询”按钮,弹窗报错。





    以下是全部代码:

    Public Sub 查询()

    Application.ScreenUpdating = False

    pp = Sheet2.Range("b6:ao6")
    m = Sheet1.Range("a" & Rows.Count).End(xlUp).Row
    Sheet2.Cells(2, 11) = ""

    For i = 2 To m
    For Each a In pp
    l = Sheet1.Range("b1:am1").Find(a).Column
    mb = Sheet2.Cells(7, Sheet2.Range("d6:aq6").Find(a).Column)
    ' If InStr(Sheet1.Cells(i, l), "/") = 0 Then
    If Sheet1.Cells(i, l) <> CStr(mb) Then
    GoTo TT
    End If
    ' Else
    ' n = Len(Sheet1.Cells(i, l))
    ' For j = n To 1 Step -1
    ' If Mid(Sheet1.Cells(i, l), j, 1) = "/" Then
    ' If Mid(Sheet1.Cells(i, l), j + 1, n) <> CStr(mb) Then
    ' If Mid(Sheet1.Cells(i, l), 1, j - 1) <> CStr(mb) Then
    ' GoTo TT
    ' Else
    ' GoTo HG
    ' End If
    ' Else
    ' GoTo HG
    ' End If
    ' End If
    ' Next j
    ' End If

    HG:



    Next a
    Sheet2.Cells(2, 11) = Sheet2.Cells(2, 11) & Sheet1.Cells(i, 1) & "-"

    TT:
    Next i

    MsgBox "查询成功"

    End Sub

    -------------------------------------------------------------------------------


    跪求高手指点哈!
  • 那一抹油彩云
    找不到这个表,感觉是路径的问题
  • j
    joy88
    想看你的文章但是眼神总是被你的头像所吸引过去
  • d
    d5izsp
    把excel文件的几个不同表格名字恢复成sheet1, sheet2
  • 疯狂豆丁
    还好我不写代码了,但是,任何语言goto都是反人类的存在,不接受反驳
  • s
    sign
    这个表格开始正常使用的时候就是改过名字的,不是我改的,所以不是这个问题哈!
  • t
    trashgod
    在前面加一些变量的定义看看,类型类似这个

    Dim sh As Worksheet
    Dim strFind As String
    Dim lngRow As Long


    Set sh = Sheets("Sheet2")

    ===========================
    参考搜索:

    If sh.Range("A1:A" & lngRow).Find(what:=strFind) Is Nothing Then
    sh.Range("A" & lngRow + 1).Value = strFind
    Else
    MsgBox "已存在相同数据"
    End If

    Set sh = Sheets("Sheet2")
  • 无心飞翔
    用python简单多了
  • l
    lalalaokla
    第三行:
    pp = Sheet2.Range("b6:ao6")
    改成
    pp = Sheet2.Range("d6:aq6")
  • w
    wengpin2
    VBS啊,看到那个MsgBox就是那么的亲切.当年做asp的时候非常熟啊,到后来玩游戏用到按键游侠之类的.现在问我的话,哈哈,都忘了.