尽管没有在代码运行时删除字符更改

时间:2016-01-08 13:55:27

标签: excel excel-vba vba

当我使用[删除字符] [1]中的代码时,它正常工作吧Ascii45是一个破折号 - 。 Excel告诉我Ascii代码是45 (= Code(cellref))然而我发现数据从2016-01-31到2016年1月31日但是该列没有格式化。我是否必须重新格式化所有列之后或Excel显示错误的Ascii。

完整代码

Function AlphaNumericOnly(strSource As String) As String
    Dim i As Integer
    Dim strResult As String
    For i = 1 To Len(strSource)
        Select Case Asc(Mid(strSource, i, 1))
            Case 33, 35 To 38, 40 To 41, 43, 45 To 47, 48 To 57, 65 To 90, 92, 97 To 122, 123 To 126, 32: 'include 32 if you want to include space
                strResult = strResult & Mid(strSource, i, 1)
        End Select
    Next
    AlphaNumericOnly = strResult
End Function
Sub CleanAll()
    Dim rng As Range
    For Each rng In Sheets("uploadsheet").Range("A1:AY5").Cells 'adjust sheetname and range accordingly
        rng.Value = AlphaNumericOnly(rng.Value)
    Next

    'http://www.asciitable.com/
    'http://stackoverflow.com/questions/15723672/how-to-remove-all-non-alphanumeric-characters-from-a-string-except-period-and-sp?lq=1
End Sub
  [1]: http://stackoverflow.com/questions/15723672/how-to-remove-all-non-alphanumeric-characters-from-a-string-except-period-and-sp?lq=1

我目前在运行后添加了以下代码,但我想让它在一个代码中运行...

uploadsheet.Range("A2", "A50000").NumberFormat = "yyyy-mm-dd"

1 个答案:

答案 0 :(得分:1)

替换:

rng.Value = AlphaNumericOnly(rng.Value)

使用:

rng.Value = "'" & AlphaNumericOnly(rng.Value)