Excel 将vba链接到用户输入工作表 Sub-CleanData() Dim消息应答为VbMsgBoxResult 把每一个角落都调暗作为射程 作为变体的Dim TempArray 暗色如长 变暗rng As范围 将ws设置为工作表 uSheet=InputBox(“定义图纸名称”) 设置ws=工作表(uSheet)'定义工作表名称 保险=输入框(“定义范围”) 设置rng=范围(保险费) 对于rng.区域内的每个区域 TempArray=EachRange.Value2 如果是IsArray(TempArray),则 对于rw=LBound(TempArray,1)到UBound(TempArray,1) 对于col=LBound(TempArray,2)到UBound(TempArray,2) 如果Len(TempArray(rw,col)

Excel 将vba链接到用户输入工作表 Sub-CleanData() Dim消息应答为VbMsgBoxResult 把每一个角落都调暗作为射程 作为变体的Dim TempArray 暗色如长 变暗rng As范围 将ws设置为工作表 uSheet=InputBox(“定义图纸名称”) 设置ws=工作表(uSheet)'定义工作表名称 保险=输入框(“定义范围”) 设置rng=范围(保险费) 对于rng.区域内的每个区域 TempArray=EachRange.Value2 如果是IsArray(TempArray),则 对于rw=LBound(TempArray,1)到UBound(TempArray,1) 对于col=LBound(TempArray,2)到UBound(TempArray,2) 如果Len(TempArray(rw,col),excel,vba,Excel,Vba,我不知道如何将此链接到用户输入表。其他一切都很好。我这样做的原因是将此vba链接到其他工作表上的命令按钮。用户指定的范围工作正常,但我似乎不知道如何在代码中包含工作表。如果我理解,您可能需要将范围(uRange)连接到您期望的工作表,ws.range(uRange)?否则,rng将引用ActiveSheet上的范围,该范围不一定是用户所说的uSheet.yes。它工作得很好!有没有办法阻止日期的改变?日期当前以dd/mm/yyyy格式存储,但为一般格式。代码将其读取为数字,但我希望它忽略此格式尝

我不知道如何将此链接到用户输入表。其他一切都很好。我这样做的原因是将此vba链接到其他工作表上的命令按钮。用户指定的范围工作正常,但我似乎不知道如何在代码中包含工作表。

如果我理解,您可能需要将
范围(uRange)
连接到您期望的工作表,
ws.range(uRange)
?否则,
rng
将引用
ActiveSheet
上的范围,该范围不一定是用户所说的
uSheet
.yes。它工作得很好!有没有办法阻止日期的改变?日期当前以dd/mm/yyyy格式存储,但为一般格式。代码将其读取为数字,但我希望它忽略此格式尝试将其包装为
格式([date],“dd/mmyyyy”)
?相同的结果。到目前为止,只有当我将所有日期更改为文本时,它才起作用。如果我理解,您可能需要将
范围(uRange)
连接到您期望的工作表,
ws.Range(uRange)
?否则,
rng
将引用
ActiveSheet
上的范围,该范围不一定是用户所说的
uSheet
.yes。它工作得很好!有没有办法阻止日期的改变?日期当前以dd/mm/yyyy格式存储,但为一般格式。代码将其读取为数字,但我希望它忽略此格式尝试将其包装为
格式([date],“dd/mmyyyy”)
?相同的结果。到目前为止,只有当我把所有日期都改成文本时,它才起作用
Sub CleanData()

Dim MessageAnswer As VbMsgBoxResult
Dim EachRange As Range
Dim TempArray As Variant
Dim col As Long
Dim rng As Range
Dim ws As Worksheet


uSheet = InputBox("Define the sheet name")
Set ws = Worksheets(uSheet) 'Define the sheet name
uRange = InputBox("Define the range")
Set rng = Range(uRange)


For Each EachRange In rng.Areas
    TempArray = EachRange.Value2
        If IsArray(TempArray) Then
        For rw = LBound(TempArray, 1) To UBound(TempArray, 1)
            For col = LBound(TempArray, 2) To UBound(TempArray, 2)
                If Len(TempArray(rw, col) < 1) Then

                ElseIf IsNumeric(TempArray(rw, col)) Then
                    TempArray(rw, col) = CDbl(TempArray(rw, col))
                ElseIf Format(TempArray(rw, col) = "//") Then
                Else
                    TempArray(rw, col) = uRange.Trim(TempArray(rw, col))
                End If
            Next col
        Next rw
    Else
      End If

    EachRange.Value2 = TempArray

  Next EachRange


'Code Ran Succesfully!
  MsgBox "Your data cleanse was successful!", vbInformation, "All Done!"

End Sub