当前位置: 代码迷 >> VB Dotnet >> 懂VB的进来帮忙看一段代码,小弟我不懂VB,公司有一段VB写的验证代码,大家帮忙看看验证规则是什么,THANKS
  详细解决方案

懂VB的进来帮忙看一段代码,小弟我不懂VB,公司有一段VB写的验证代码,大家帮忙看看验证规则是什么,THANKS

热度:94   发布时间:2016-04-25 02:04:36.0
懂VB的进来帮忙看一段代码,我不懂VB,公司有一段VB写的验证代码,大家帮忙看看验证规则是什么,THANKS
本帖最后由 u014490157 于 2015-03-02 10:18:01 编辑
Function GetEngName(ByVal argColumn As Integer) As String
    Dim strEngName As String
    Dim iNum, iMod As Integer
   
    iNum = argColumn \ 26
    iMod = argColumn Mod 26
    If (iMod = 0) Then
        If (iNum = 1) Then
            strEngName = Chr(90)
        Else
            strEngName = Chr(65 + iNum - 2) + Chr(90)
        End If
    Else
        If (iNum = 0) Then
            strEngName = Chr(65 + iMod - 1)
        Else
            strEngName = Chr(65 + iNum - 1) + Chr(65 + iMod - 1)
        End If
    End If
    GetEngName = strEngName
End Function

'isdate()
'IsNumeric
'trim(myrange)=""
'数据有效性--设置--允许--序列--在空白框中输入要选择的内容,用“,”隔开,半角模式下
'iRows = ActiveSheet.UsedRange.Rows.Count
'iColumns = ActiveSheet.UsedRange.Columns.Count




'Core Datasets
Function validateCoreDatasets() As Integer

'每次开始验证都将颜色设为无色
Sheet2.Range("A2:T65536").Interior.ColorIndex = xlNone

'统计出错的个数
Dim count As Integer
count = 0

Dim value As String
Dim field As String
Dim engName As String
Dim temp  As String
Dim columnCount As Long
columnCount = Sheet2.UsedRange.Columns.count

'循环各列
For columnNum = 1 To columnCount
    field = Sheet2.Cells(1, columnNum).value
    engName = GetEngName(columnNum)
    
    If Trim(field) = "Organism_Type" Then
        temp = "、Antibody、Archaea、Bacteria、Fungi、Microalgae、Phage、Virus、Yeast、"
        For i = 2 To Sheet2.Range(engName + "65536").End(xlUp).Row
            value = Sheet2.Cells(i, columnNum).value
            If Trim(value) <> "" Then
                If InStr(temp, "、" & value & "、") <= 0 Then
                    count = count + 1
                    Sheet2.Cells(i, columnNum).Interior.Color = vbRed
                End If
            End If
        Next
    ElseIf Trim(field) = "Status" Then
        temp = "、Type、No、"
        For i = 2 To Sheet2.Range(engName + "65536").End(xlUp).Row
            value = Sheet2.Cells(i, columnNum).value
            If Trim(value) <> "" Then
                If InStr(temp, "、" & value & "、") <= 0 Then
                    count = count + 1
                    Sheet2.Cells(i, columnNum).Interior.Color = vbRed
                End If
            End If
        Next
    End If
    
     If Trim(field) = "Bio hazard level" Then
        temp = "、1、2、3、4、"
        For i = 2 To Sheet2.Range(engName + "65536").End(xlUp).Row
            value = Sheet2.Cells(i, columnNum).value
            If Trim(value) <> "" Then
                If InStr(temp, "、" & value & "、") <= 0 Then
                    count = count + 1
                    Sheet2.Cells(i, columnNum).Interior.Color = vbRed
                End If
            End If
        Next
    End If
    
    
    If Trim(field) = "Date of Identification" Or Trim(field) = "Date of deposition" Then
        For i = 2 To Sheet2.Range(engName + "65536").End(xlUp).Row
            value = Sheet2.Cells(i, columnNum).value
            If Trim(value) <> "" Then
                If IsDate(value) = False Or InStr(value, "-") <= 0 Then
                    count = count + 1
                    Sheet2.Cells(i, columnNum).Interior.Color = vbRed
                End If
            End If
        Next
    End If
    
Next



validateCoreDatasets = count
End Function


------解决思路----------------------
第一段代码是根据列数(阿拉伯数字)取对应的ABCD,估计是Excel的宏吧。
比如1列对应A列,27列对应AA列,这样的

第二段太长,懒得看
  相关解决方案