注册 登录
编程论坛 VB.NET论坛

请问如何将vba语言转换成vb.net语言

wuou725 发布于 2016-05-29 21:59, 4278 次点击
我曾经用电子表格做了一个根据组别序号个数,自动分组,现在想用狐表(编程语言是用的)实现自动分组。如组别相同序号个数小于16,不分组,大于等于16,小于30分两组,分别在组别名称后加1小组,2小组;大于等于31,小于等于45分3个小组,以此类推。
只有本站会员才能查看附件,请 登录

vba语言
Sub lqxs()
Dim arr, i&, aa, j&, n&, m&
Dim d, k, t
Set d = CreateObject("Scripting.Dictionary")
Sheet1.Activate
[I2:I2001].ClearContents
arr = [a1].CurrentRegion
For i = 1 To UBound(arr)
    d(arr(i, 1)) = d(arr(i, 1)) & i & ","
Next
k = d.keys: t = d.items
For i = 0 To UBound(k)
    t(i) = Left(t(i), Len(t(i)) - 1)
    If InStr(t(i), ",") Then
        aa = Split(t(i), ",")
        n = UBound(aa) + 1
        If n >= 16 And n <= 30 Then
            For j = 0 To UBound(aa)
                m = m + 1
                If m > 2 Then
                    m = 1
                End If
                If m = 1 Then
                zz = "1组"
                ElseIf m = 2 Then: zz = "2组"
                End If
                Cells(aa(j), 10) = arr(aa(j), 6) & zz
            Next
        ElseIf n >= 31 And n <= 45 Then
            For j = 0 To UBound(aa)
                m = m + 1
                If m > 3 Then
                    m = 1
                End If
                If m = 1 Then
                zz = "1组"
                ElseIf m = 2 Then: zz = "2组"
                ElseIf m = 3 Then: zz = "3组"
                End If
                Cells(aa(j), 10) = arr(aa(j), 6) & zz
           Next
        ElseIf n >= 46 And n <= 60 Then
            For j = 0 To UBound(aa)
                m = m + 1
                If m > 4 Then
                    m = 1
                End If
                If m = 1 Then
                zz = "1组"
                ElseIf m = 2 Then: zz = "2组"
                ElseIf m = 3 Then: zz = "3组"
                ElseIf m = 4 Then: zz = "4组"
                End If
                Cells(aa(j), 10) = arr(aa(j), 6) & zz
            Next
。。。。。。
 请人用狐表编写始终有问题,请楼主帮一下忙,能给一个正确完整的语言,谢谢!始终提示GetValues不是DataTables成员
Dim xuhao As List(Of String) = DataTables("D报名表").GetValues("序号")
For Each s As String In xuhao
    Dim drs As List(Of DataRow) = DataTables("D报名表").Select("序号 = '" & s &"'","[_Identify]")
    If drs.Count < 16 Then Continue For
    Dim count = math.Ceiling(drs.Count / 15)
    For i As Integer = 0 To  drs.Count -1
        drs(i)("分组") = drs(i)("组别") & (i Mod count + 1)
    Next
Next

非常感谢!
 


2 回复
#2
不说也罢2016-05-30 10:30
DataTables是什么?是狐表自定义的对象吧?非.net成员。
#3
xiangyue05102016-05-31 09:34
VBA都有代码了,如果是自己编的,一点点改成不会很困难的。
如果是别人写的,先看懂了再改。
1