Здравствуйте! Ребята, вопрос чисто теоретический без примера. Может ли данная конструкция поиска после выполнения его в коде [vba]
Код
Find("Поиск1", , xlValues, xlPart)
[/vba] влиять на выполнение другого кода где прописана иная конструкция поиска [vba]
Код
Find("Поиск2", LookAt:=xlWhole)
[/vba] с учетом того что данные коды не пересекаются и выполняются на разных листах. В моем случае если вначале выполнить код с Поиском1, то Поиск2 перестает искать в скрытом столбце, поиск осуществляется только в открытых столбцах, в тоже время если Поиске1 выполнять без константы xlValues, то Поиск2 осуществляет поиск как в открытом так и в скрытом столбце.
Здравствуйте! Ребята, вопрос чисто теоретический без примера. Может ли данная конструкция поиска после выполнения его в коде [vba]
Код
Find("Поиск1", , xlValues, xlPart)
[/vba] влиять на выполнение другого кода где прописана иная конструкция поиска [vba]
Код
Find("Поиск2", LookAt:=xlWhole)
[/vba] с учетом того что данные коды не пересекаются и выполняются на разных листах. В моем случае если вначале выполнить код с Поиском1, то Поиск2 перестает искать в скрытом столбце, поиск осуществляется только в открытых столбцах, в тоже время если Поиске1 выполнять без константы xlValues, то Поиск2 осуществляет поиск как в открытом так и в скрытом столбце.Сергей13
Сообщение отредактировал Сергей13 - Воскресенье, 24.11.2019, 02:12
Может влиять. Find запоминает параметры предыдущего вызова и поэтому могут быть неожиданности а случае разных списков явно указываемых параметров. Поэтому лучше указывать всё что возможно в явном виде при каждом вызове, не полагаясь на умолчания.
Может влиять. Find запоминает параметры предыдущего вызова и поэтому могут быть неожиданности а случае разных списков явно указываемых параметров. Поэтому лучше указывать всё что возможно в явном виде при каждом вызове, не полагаясь на умолчания.Gustav
Gustav, что конкретно подразумевается в сказанном «указывать всё что возможно в явном виде при каждом вызове», если указан и лист и колонка листа. [vba]
Код
Dim InvoiceSheet As Worksheet Dim myF As Range Set InvoiceSheet = ThisWorkbook.Worksheets("invoice") 'Лист invoice Set myF = InvoiceSheet.Columns(2).Find("Поиск1", , xlValues, xlPart)
[/vba] [vba]
Код
Dim OstatSheet As Worksheet Dim osT As Range Set OstatSheet = ThisWorkbook.Worksheets("ostat") 'Лист ostat Set osT = OstatSheet.Columns(13).Find("Поиск2", LookAt:=xlWhole)
[/vba]
Gustav, что конкретно подразумевается в сказанном «указывать всё что возможно в явном виде при каждом вызове», если указан и лист и колонка листа. [vba]
Код
Dim InvoiceSheet As Worksheet Dim myF As Range Set InvoiceSheet = ThisWorkbook.Worksheets("invoice") 'Лист invoice Set myF = InvoiceSheet.Columns(2).Find("Поиск1", , xlValues, xlPart)
[/vba] [vba]
Код
Dim OstatSheet As Worksheet Dim osT As Range Set OstatSheet = ThisWorkbook.Worksheets("ostat") 'Лист ostat Set osT = OstatSheet.Columns(13).Find("Поиск2", LookAt:=xlWhole)
Я говорю о параметрах. Параметры - это то, что в скобках после Find.
Цитата
Синтаксис выражение.Find (What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat) выражение: переменная, представляющая объект Range. Параметры для аргументов LookIn, LookAt, SearchOrder и MatchByte сохраняются при каждом использовании этого метода. Если вы не укажете значения этих аргументов при следующем вызове метода, будут использоваться сохраненные значения. Установка этих аргументов изменяет параметры в диалоговом окне Найти, а изменение параметров в диалоговом окне Найти приводит к изменению сохраненных значений, которые используются, если опустить аргументы. Чтобы избежать проблем, устанавливайте эти аргументы явным образом при каждом использовании этого метода.
Я говорю о параметрах. Параметры - это то, что в скобках после Find.
Цитата
Синтаксис выражение.Find (What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat) выражение: переменная, представляющая объект Range. Параметры для аргументов LookIn, LookAt, SearchOrder и MatchByte сохраняются при каждом использовании этого метода. Если вы не укажете значения этих аргументов при следующем вызове метода, будут использоваться сохраненные значения. Установка этих аргументов изменяет параметры в диалоговом окне Найти, а изменение параметров в диалоговом окне Найти приводит к изменению сохраненных значений, которые используются, если опустить аргументы. Чтобы избежать проблем, устанавливайте эти аргументы явным образом при каждом использовании этого метода.
Здравствуйте! Ребята с учетом данной темы понял это так - метод поиска на основании совокупности данных для выбранного диапазон ячеек, где некоторые аргументы (в моем случаи это LookAt) сохраняются при каждом выполнении этого метода, и если не указать дополнительные параметры аргументу, то при следующем вызове метода может быть использован сохраненный аргумент и параметры иного ранее произведенного метода, в результате текущий метод (в данном конкретном случае Поиск2 после Поиска1) будет выполняться не корректно. Если правильно определил, то какие необходимо дополнительные параметры методу Поиск2 потому как именно он срабатывает не корректно перед изначально выполненным методом Поиск1, сам же Поиск1 не подвержен стороннему влиянию? Или надо как-то дополнительно сбрасывать сохраненные значения параметров после выполнения методов?
Здравствуйте! Ребята с учетом данной темы понял это так - метод поиска на основании совокупности данных для выбранного диапазон ячеек, где некоторые аргументы (в моем случаи это LookAt) сохраняются при каждом выполнении этого метода, и если не указать дополнительные параметры аргументу, то при следующем вызове метода может быть использован сохраненный аргумент и параметры иного ранее произведенного метода, в результате текущий метод (в данном конкретном случае Поиск2 после Поиска1) будет выполняться не корректно. Если правильно определил, то какие необходимо дополнительные параметры методу Поиск2 потому как именно он срабатывает не корректно перед изначально выполненным методом Поиск1, сам же Поиск1 не подвержен стороннему влиянию? Или надо как-то дополнительно сбрасывать сохраненные значения параметров после выполнения методов?Сергей13
Сообщение отредактировал Сергей13 - Воскресенье, 24.11.2019, 13:28
Pelena, Тогда вместо параметров в Поиске1 , , xlValues, xlPart Лучше поставить как в Поиске2 , LookAt:=xlWhole Вроде как бы работает и то и это. А если в Поиске1 просто убрать , xlValues то уже не ищет, или не работает…
Короче изначально уловил воздействие параметра xlValues который в пояснении от Gustav не значится как параметр с сохраняемыми значениями после выполнения метода, но он почему-то влияет…
Pelena, Тогда вместо параметров в Поиске1 , , xlValues, xlPart Лучше поставить как в Поиске2 , LookAt:=xlWhole Вроде как бы работает и то и это. А если в Поиске1 просто убрать , xlValues то уже не ищет, или не работает…
Короче изначально уловил воздействие параметра xlValues который в пояснении от Gustav не значится как параметр с сохраняемыми значениями после выполнения метода, но он почему-то влияет…Сергей13
Сообщение отредактировал Сергей13 - Воскресенье, 24.11.2019, 14:49
уловил воздействие параметра xlValues который в пояснении от Gustav не значится как параметр с сохраняемыми значениями после выполнения метода
Господи-и-и-и... xlValues это НЕ ПАРАМЕТР метода, а КОНСТАНТА - одно из возможных в этом месте значений параметра LookIn, о котором в моем "пояснении" еще как говорится!
уловил воздействие параметра xlValues который в пояснении от Gustav не значится как параметр с сохраняемыми значениями после выполнения метода
Господи-и-и-и... xlValues это НЕ ПАРАМЕТР метода, а КОНСТАНТА - одно из возможных в этом месте значений параметра LookIn, о котором в моем "пояснении" еще как говорится!
Gustav, Немного разобрался, также увидел то, что при выполнении метода .Find("Поиск1", , xlValues, xlPart) сохраненные значения изменяют область поиска диалогового окна установленного по умолчанию с формулы на значение, что и приводит к сбою для выполнения второго метода. Непонимание еще было и в том - почему знающий человек применил данный метод для поиска одного всего лишь текстового данного через значение а не через формулу, поэтому я пытался подогнать под него натыкаясь на баги, а надо было для обоих методов не мудрить а просто , LookAt:=xlWhole или как у Вас LookIn:=xlFormulas, LookAt:=xlWhole Благодарю за пояснения!
Gustav, Немного разобрался, также увидел то, что при выполнении метода .Find("Поиск1", , xlValues, xlPart) сохраненные значения изменяют область поиска диалогового окна установленного по умолчанию с формулы на значение, что и приводит к сбою для выполнения второго метода. Непонимание еще было и в том - почему знающий человек применил данный метод для поиска одного всего лишь текстового данного через значение а не через формулу, поэтому я пытался подогнать под него натыкаясь на баги, а надо было для обоих методов не мудрить а просто , LookAt:=xlWhole или как у Вас LookIn:=xlFormulas, LookAt:=xlWhole Благодарю за пояснения!Сергей13
Сообщение отредактировал Сергей13 - Воскресенье, 24.11.2019, 17:38