2015-05-05 5 views
2

У меня есть сценарий excel vba (ниже), что у меня возникают проблемы с отображением «match». Я установил свой файл excel со следующей информацией. столбец A5 - A10 имеет даты в формате 3/1/2015, 3/2/2015 и т. д. (поэтому A5 = 3/1/2015, A6 = 3/2/2015 и т. д.)excel vba script не запускает предполагаемый msgbox?

My рабочий лист имеет 7 вкладок, первый (с кодом на нем) является листом по умолчанию1. с 2 по 7-ю вкладку обозначены как «1» для второй вкладки «2», «3» и т. д. до «7». На данный момент я просто тестировал A5 для сопоставления и отображения чего-либо, если он соответствует вкладке 2, но не работает. Прокомментированные (вне) msgboxes показывают, что значения должны совпадать, но когда я пытаюсь установить if (они равны), no bueno. это упрощенная версия, поэтому ответ вроде «почему бы вам просто не установить день, равный тому, который вы хотите» не будет работать. Благодаря!

Sub main() 

'MsgBox Day(Worksheets("sheet1").Range("a5").Value) 

'MsgBox Worksheets(2).Name 

If Day(Worksheets("sheet1").Range("a5").Value) = Worksheets(2).Name Then 

MsgBox "match" 

End If 

End Sub 

ответ

2

Day функция возвращает integer.

Worksheets(2).Name является собственностью string.

Чтобы сравнить эти значения, вам необходимо преобразовать их в тот же тип.

If CStr(Day(Worksheets("sheet1").Range("a5").Value)) = Worksheets(2).Name Then 

Вы можете прочитать больше о функциях преобразования типа here

+0

спасибо! вот что я думал, но я не был уверен. На самом деле, вчера я попытался преобразовать оба в int, но я думаю, что либо он не работал, либо я не сделал это правильно (или и то, и другое). Я использую «2» в листах (2) в счетчике. могу ли я сделать что-то вроде , если день (рабочие листы («лист1»). диапазон («a5»). значение)) = Int (рабочие листы (2) .name вместо? –

+0

@JohnDoe Да, вы также можете использовать версия, но моя версия более универсальна. Вы можете преобразовать любое целое число в строку, и ваш код будет вызывать ошибку «Тип несоответствия», если имя рабочего листа не может быть преобразовано в 'integer' (например,' "sheet1" ') – BrakNicku

+0

работает для меня! Большое спасибо, я застрял на этом несколько дней –

Смежные вопросы