首页 > 解决方案 > 将数据上传到另一个excel工作表时,不会拾取excel中的日期和userform中的日期

问题描述

您好我正在尝试使用上传代码(下面提到)将数据从主 excel 工作簿上传到另一个数据库 excel 工作簿。显然,代码似乎无法选择 Cell.Value(即 Excel 表中的日期值 - 日期格式为 M/D/YYYY)和用户表单文本框日期值 - 日期格式(M/D/YYYY )。


Private Sub Upload()
Dim SourceWB As Workbook
Dim SourceWs As Worksheet

Dim DesWB As Workbook
Dim DesWs As Worksheet

Dim DateRange As Range
Dim DesDataRange As Range

Dim LastRowCount As Long                               'Upload Button Value
Dim DesLastRow As Long

Dim Ls As Long
Dim Y As Long
    
Set SourceWB = ThisWorkbook
'Debug.Print SourceWB
Set SourceWs = SourceWB.Worksheets("Database")
'Debug.Print SourceWs
'Debug.Print DesWB
Set DesWB = ActiveWorkbook
'Debug.Print DesWs
Set DesWs = DesWB.ActiveSheet

Workbooks(FileNameValue).Activate
ActiveWorkbook.Worksheets("Sheet1").Range("A2:T9999").ClearContents

LastRowCount = SourceWs.Range("D" & Rows.count).End(xlUp).Row
DesLastRow = DesWs.Range("D" & Rows.count).End(xlUp).Row

Set DateRange = SourceWs.Range("D2", "D" & LastRowCount)

Set DesDateRange = DesWs.Range("D2", "D" & DesLastRow)

'Paste Similar Date Values to destination file
For Each Cell In DateRange                   '(frmData.txtdate.value is the textbox value of the userform)
    If Cell.Value = frmData.txtdate.Value Then **'(It seems to have problem over here)**
    Debug.Print frmData.txtdate.Value
    Debug.Print Cell.Value
            'Y = Cell.Row            'Cells(y, 1), Cells(y, 20)
            SourceWs.Range("A" & 2, "T" & LastRowCount).Copy
            Workbooks(FileNameValue).Activate
            Ls = ActiveWorkbook.Worksheets("Sheet1").Range("A" & Rows.count).End(xlUp).Row
            ActiveWorkbook.Worksheets("Sheet1").Range("A" & Ls + 1).PasteSpecial Paste:=xlPasteValues    
Exit For
    End If
Next
    'My Routine:
            ActiveWorkbook.Save
            ActiveWorkbook.Close
            

        
End Sub

标签: excelvbadate

解决方案


CellDateRange 中包含什么?一个真实的日期(它是一个数字)还是一个看起来像日期的文本字符串?是Value文本字符串或基础日期数字的格式化表达式。如果您有一个真实的日期(一个数字)Value2,如果它是计算(公式)的结果,则会给出该数字,如果Formula在单元格中输入了日期并且 Excel 将其格式化为文本字符串,则会返回所需的数字。

TextBox.Value一个文本字符串。因此可以将其与单元格中的文本字符串进行比较。如果两个字符串不完全相同,它们将是不同的。因此,在单元格中有一个真实的日期并将 Tbx 中的字符串日期转换为一个真实的日期会更安全,然后可以与之进行比较Value2(对于输入或计算的真实日期的任一版本都是相同的)。


推荐阅读