Выберите регистр оператора в течение For L oop? - PullRequest
0 голосов
/ 24 февраля 2020

Я использую Outlook VBA для l oop через разные ячейки в файле Excel, а затем оператор Select Case оценивает, равно ли каждое значение ячейки другому значению.

Приведенный ниже код должен выполняться для дайте мне семь окон сообщения: - первые два, являющиеся значением PreferredDate (получены из двух разных электронных таблиц), - третье чтение «Это сработало! 3», указывающее, что на A3 таблицы было найдено правильное значение, - остальные чтение «Значение не найдено», потому что для остальной части For L oop значения ячеек не соответствуют значению PreferredDate.

Однако, когда я запускаю его, я получаю первые два значения (" Значение равно X "," PreferredDate is X ") и пять окон сообщения" Значение не найдено ".

Я пробовал несколько вариантов обозначения TempValueDate как xlShtTemp.Range (" A "& i) .Value или xlShtTemp .Range ("A" & i) .Text, а также делать то же самое с PreferredDate, но это либо сломало его полностью, либо привело к получению пяти "Это сработало!" окна сообщений (что также неверно ... поскольку оно должно проходить по каждой ячейке и сообщать мне, соответствует ли это значение, а не сообщать, есть ли совпадение где-либо на листе).

Еще одна вещь, о которой я подумал, это то, что это может быть из-за того, что типы данных разные (возможно, один был строкой, а другой, например, другим). Они оба выглядят как «2/11/2020», но могут храниться по-разному. Чтобы решить эту проблему, я создал переменную TempValueDate и определил ее как объект, чтобы он соответствовал PreferredDate, определяемому как объект. Они оба взяты из значений листа Excel. Это не помогло, поэтому я думаю, что это не проблема.

Заранее благодарим за помощь!

 Dim PreferredDate As Object
 Set PreferredDate = xlSheet.Range("S" & rCount) ' This is taking the preferred appointment date from Spreadsheet 1

' Create temporary variable to represent each cell value
 Dim TempValueDate As Object

 ' Open spreadsheet with available appointments from Spreadsheet 2
 Dim xlAppTemp As Object
 Dim xlBookTemp As Object
 Dim xlShtTemp As Object
 Dim sPathTemp As String
 Dim objTemp As Object

'the path of the workbook under the windows user account
sPathTemp = enviro & "\\file_location.xlsx"
'   // Excel
    Set xlAppTemp = CreateObject("Excel.Application")
'   // Workbook
     Set xlBookTemp = xlAppTemp.Workbooks.Open(sPathTemp)
'   // Sheet
     Set xlShtTemp = xlBookTemp.Sheets("Sheet1")

' For loop to check if value exists in column
Dim i As Integer
MsgBox "PreferredDate is " & PreferredDate ' This demonstrates that PreferredDate is present in xlShtTemp at A3, and they look the same
MsgBox "Value is " & xlShtTemp.Range("A3")
For i = 1 To 5
    Set TempValueDate = xlShtTemp.Range("A" & i)
    Select Case PreferredDate
    Case TempValueDate
        MsgBox "It worked! " & i ' Just a test for now...it doesn't work though
    Case Else
        MsgBox "Value not found"
    End Select
Next i```
...