Excel vba can';用户输入时找不到日期

Excel vba can';用户输入时找不到日期,excel,vba,date,find,inputbox,Excel,Vba,Date,Find,Inputbox,我对VBA还是有点陌生,我的代码在今天早些时候工作过,但现在由于某种原因,它停止在我选择的列中查找日期,即使它存在。 我正在阅读每一行并寻找两个标准(1.迁移日期,2.网络)。完成后,我将根据行的条件将行复制到单独的工作表中,并随后保存它们。我现在的问题是,尽管我输入了日期,但它再也找不到了——我确实确保以DD/MM/YYYY格式输入它,因为这是我的基本格式。不管我怎么说,这都会让我犯错误 以下是我正在处理的数据类型: 可乐PCname(即约翰的机器) ColB用户名(即John Doe) C

我对VBA还是有点陌生,我的代码在今天早些时候工作过,但现在由于某种原因,它停止在我选择的列中查找日期,即使它存在。 我正在阅读每一行并寻找两个标准(1.迁移日期,2.网络)。完成后,我将根据行的条件将行复制到单独的工作表中,并随后保存它们。我现在的问题是,尽管我输入了日期,但它再也找不到了——我确实确保以DD/MM/YYYY格式输入它,因为这是我的基本格式。不管我怎么说,这都会让我犯错误

以下是我正在处理的数据类型:

  • 可乐PCname(即约翰的机器)
  • ColB用户名(即John Doe)
  • ColC设备类型(即笔记本电脑)
  • 冷网络(即Jody的网络)
  • 科尔偏移波(即第1波)
  • ColF设备的顶级用户
  • 最后一个登录的人
  • ColH设备的位置
  • ColI迁移日期(在另一个工作簿中查找,所以仍然是公式)ColJ用户的电子邮件
  • 科尔克高级酒店#
  • ColL迁移日期(复制为值而不是公式)

如果您能帮我找出它为什么找不到日期,我们将不胜感激


错误处理程序不起作用,所以尽管我为输入输入了值(LSearchValue),我仍然得到消息,所有数据都已被复制。 除了纠正打字错误,我还稍微修改了代码,希望能让错误处理程序正常工作。有人能帮忙吗?有没有更好的方法来处理我的“L”列中找不到的值

Sub test()

Application.ScreenUpdating = False
Application.DisplayAlerts = False

Dim LSearchRow As Integer
Dim LCopyToRow1 As Integer
Dim LCopyToRow2 As Integer
Dim LSearchValue As String
Dim fname1 As String
Dim fname2 As String
Dim fpath As String
Dim Newbook1 As Workbook
Dim Newbook2 As Workbook

Sheets("Confirmed devices").Activate
Range("I2:I10000").Select
Selection.Copy
Range("L2:L10000").PasteSpecial xlPasteValues

On Error GoTo Err_Execute

LSearchValue = InputBox("Which migration date do you wish to prepare the files for?", "The format has to be DD/MM/YYYY.")
LSearchRow = 2
LCopyToRow1 = 1
LCopyToRow2 = 1
Sheets.Add.Name = "Jodi"
Sheets.Add.Name = "Jason"

 While Len(Range("A" & CStr(LSearchRow)).Value) > 0
 If Range("L" & CStr(LSearchRow)).Value = LSearchValue And Range("D" & CStr(LSearchRow)).Value = "Jodi’s Network” Then

 Rows(CStr(LSearchRow) & ":" & CStr(LSearchRow)).Select

 Selection.Copy

 Sheets("Jodi").Select

 Rows(CStr(LCopyToRow1) & ":" & CStr(LCopyToRow1)).Select

 Sheets("Jodi").Paste

 LCopyToRow1 = LCopyToRow1 + 1

 Sheets("Confirmed devices").Select

 ElseIf Range("L" & CStr(LSearchRow)).Value = LSearchValue And Range("D" & CStr(LSearchRow)).Value = "Jason’s Network" Then

 Rows(CStr(LSearchRow) & ":" & CStr(LSearchRow)).Select

 Selection.Copy

 Sheets("Jason").Select

 Rows(CStr(LCopyToRow2) & ":" & CStr(LCopyToRow2)).Select

 Sheets("Jason").Paste

 LCopyToRow2 = LCopyToRow2 + 1

 Sheets("Confirmed devices").Select

 End If
 LSearchRow = LSearchRow + 1

Wend
 MsgBox "All matching data has been copied."

 Exit Sub
 Err_Execute: MsgBox "There are no migrations for this date"

End Sub

在你的第一个While语句中,
LSearhRow
只是这个网站上的一个打字错误吗?还有,你做过调试吗?注释掉on error语句并查看错误实际发生的位置(让整个代码块被错误处理程序包围可能不是一个好主意,您如何知道是否有其他错误?)。还可以查看VBA的调试功能。您可以设置断点并查看VBA在任何给定时间的变量实际值。您是否尝试基于用户名或网络创建一系列工作表。你的硬编码和修订的变量很难看出重点。@mock_blatt:是的,它在第一个While语句中是一个输入错误。我将在星期一回去工作时试用调试器。如果我想在循环中移动错误处理程序,我可以简单地移动行吗?就这么简单吗?@Jeeped:我需要为每个网络创建一个工作表,而不是用户。也许周一再看一眼,我就能发现问题所在。当我取得进展时,我会更新帖子。我能够找到我找到的链接,并根据我的目的进行了调整()。错误处理对我不起作用。我也在查看这篇文章(),看看我是否能找到解决问题的方法。在你的第一个While语句中,
LSearhRow
只是这个网站上的一个打字错误吗?还有,你做过调试吗?注释掉on error语句并查看错误实际发生的位置(让整个代码块被错误处理程序包围可能不是一个好主意,您如何知道是否有其他错误?)。还可以查看VBA的调试功能。您可以设置断点并查看VBA在任何给定时间的变量实际值。您是否尝试基于用户名或网络创建一系列工作表。你的硬编码和修订的变量很难看出重点。@mock_blatt:是的,它在第一个While语句中是一个输入错误。我将在星期一回去工作时试用调试器。如果我想在循环中移动错误处理程序,我可以简单地移动行吗?就这么简单吗?@Jeeped:我需要为每个网络创建一个工作表,而不是用户。也许周一再看一眼,我就能发现问题所在。当我取得进展时,我会更新帖子。我能够找到我找到的链接,并根据我的目的进行了调整()。错误处理对我不起作用。我也在查看这篇文章(),看看是否能找到解决问题的方法。
Sub test()

Application.ScreenUpdating = False
Application.DisplayAlerts = False

Dim LSearchRow As Integer
Dim LCopyToRow1 As Integer
Dim LCopyToRow2 As Integer
Dim LSearchValue As String
Dim fname1 As String
Dim fname2 As String
Dim fpath As String
Dim Newbook1 As Workbook
Dim Newbook2 As Workbook

Sheets("Confirmed devices").Activate
Range("I2:I10000").Select
Selection.Copy
Range("L2:L10000").PasteSpecial xlPasteValues

On Error GoTo Err_Execute

LSearchValue = InputBox("Which migration date do you wish to prepare the files for?", "The format has to be DD/MM/YYYY.")
LSearchRow = 2
LCopyToRow1 = 1
LCopyToRow2 = 1
Sheets.Add.Name = "Jodi"
Sheets.Add.Name = "Jason"

 While Len(Range("A" & CStr(LSearchRow)).Value) > 0
 If Range("L" & CStr(LSearchRow)).Value = LSearchValue And Range("D" & CStr(LSearchRow)).Value = "Jodi’s Network” Then

 Rows(CStr(LSearchRow) & ":" & CStr(LSearchRow)).Select

 Selection.Copy

 Sheets("Jodi").Select

 Rows(CStr(LCopyToRow1) & ":" & CStr(LCopyToRow1)).Select

 Sheets("Jodi").Paste

 LCopyToRow1 = LCopyToRow1 + 1

 Sheets("Confirmed devices").Select

 ElseIf Range("L" & CStr(LSearchRow)).Value = LSearchValue And Range("D" & CStr(LSearchRow)).Value = "Jason’s Network" Then

 Rows(CStr(LSearchRow) & ":" & CStr(LSearchRow)).Select

 Selection.Copy

 Sheets("Jason").Select

 Rows(CStr(LCopyToRow2) & ":" & CStr(LCopyToRow2)).Select

 Sheets("Jason").Paste

 LCopyToRow2 = LCopyToRow2 + 1

 Sheets("Confirmed devices").Select

 End If
 LSearchRow = LSearchRow + 1

Wend
 MsgBox "All matching data has been copied."

 Exit Sub
 Err_Execute: MsgBox "There are no migrations for this date"

End Sub