Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Какое значения принимает optional аргумент range если не выбран? VBA
 
Спасибо большое! Извините за потраченное время, вместо "is" писал "=" "If Not BadValues = Nothing Then" Еще раз извините что я такой тупой)
Какое значения принимает optional аргумент range если не выбран? VBA
 
Добрый день есть вопрос. Вот такой код, но когда BadValues не задан не знаю какое у него значение. Заранее спасибо!
Код
Function KKK(myCell As Range, Substitute As String, Optional BadValues As Range)
Dim coincidence As Boolean

If BadValues.Count > 0 Then
    For Each BadValue In BadValues
        If myCell = BadValue.Value Then
        coincidence = True
        End If
    Next
Else
End If
VBA: Как сослаться в функции на лист в котором находится ячейка?
 
The_Prist, Казанский спасибо большое за разъяснения и код! Я уж хотел вместо аргумента листа подставлять функцию листа ячейки)
VBA: как сослаться на лист если имя листа является аргументом функции
 
Спасибо, Михайл. Побывал но почему то не получалось. Сейчас попробовал получилось.  
VBA: Как сослаться в функции на лист в котором находится ячейка?
 
Еще раз добрый день.
Собственно да вопрос такой: Как сослаться в функции на лист в котором находится ячейка?
Строки 9-12
Код
Function АДСС_ЯЧ_С_КОМ(ЗНАЧЕНИЕ_ИСКОМОГО_КОММЕНТАРИЯ As String, ИМЯ_ЛИСТА As String)
'ВОЗВРАЩАЕТ АДРЕС ЯЧЕЙКИ С ИСКОМЫМ КОММЕНТАРИЕМ НА НУЖНОМ ЛИСТЕ
'ЕСЛИ КОЛИЧЕСТВО ИСКОМЫХ КОММЕНТАРИЕВ НА ЛИСТЕ БОЛЬШЕ ЧЕМ 1 ТОГДА ПИШЕТ КОЛИЧЕСТВО КОММЕНТАРИЕВ НА ЛИСТЕ
Application.Volatile True 'АВТОМАТИЧЕСКОЕ ОБНОВЛЕНИЕ РЕЗУЛЬТАТОВ
Dim N As Integer
Dim ЛИСТ As Worksheet
Dim ЯЧЕЙКА_РАБОЧЕЙ_ОБЛАСТИ
Dim КОММЕНТАРИЙ As String
If ИМЯ_ЛИСТА = "*" Then Set ЛИСТ = АДСС_ЯЧ_С_КОМ1.Worksheet.Name
Else
Set ЛИСТ = Worksheets(ИМЯ_ЛИСТА)
End If
On Error Resume Next
For Each ЯЧЕЙКА_РАБОЧЕЙ_ОБЛАСТИ In Worksheets(ЛИСТ.Name).UsedRange
'ЦИКЛ ПРОВЕРКИ КОММЕНТАРИЯ КАЖДОЙ ЯЧЕЙКИ В РАБОЧЕЙ ОБЛАСТИ
КОММЕНТАРИЙ = ЯЧЕЙКА_РАБОЧЕЙ_ОБЛАСТИ.Comment.Text
If Err.Number = 0 Then
If КОММЕНТАРИЙ = ЗНАЧЕНИЕ_ИСКОМОГО_КОММЕНТАРИЯ Then АДСС_ЯЧ_С_КОМ = ЯЧЕЙКА_РАБОЧЕЙ_ОБЛАСТИ.Address
N = N + 1
Else
Err.Clear
End If
Next
If N = 1 Then
АДСС_ЯЧ_С_КОМ = ИМЯ_ЛИСТА & "!" & АДСС_ЯЧ_С_КОМ 'СОЗДАНИЕ АДРЕСА С ЛИСТОМ
Else
АДСС_ЯЧ_С_КОМ = "#" & N & "ОД.КОМ." 'ЕСЛИ СУЩЕСТВУЕТ НЕСКОЛЬКО ОДИНАКОВЫХ КОМЕНТАРИЕВ НА ЛИСТЕ
End If
End Function
VBA: Как реализовать сравнение текстовых значений (полное соответствие)
 
Спасибо большое!
Код сработал с StrComp, и с "="
Код
Function АДСС_ЯЧ_С_КОМ_ВЕРСИЯ_ДЛЯ_ВОПРОСА2(ЗНАЧЕНИЕ_ИСКОМОГО_КОММЕНТАРИЯ As String, ИМЯ_ЛИСТА As String)
'ВОЗВРАЩАЕТ АДРЕС ЯЧЕЙКИ С ИСКОМЫМ КОММЕНТАРИЕМ НА НУЖНОМ ЛИСТЕ
Application.Volatile True 'АВТОМАТИЧЕСКОЕ ОБНОВЛЕНИЕ РЕЗУЛЬТАТОВ
Dim ЛИСТ As Worksheet
Dim ЯЧЕЙКА_РАБОЧЕЙ_ОБЛАСТИ
Dim КОММЕНТАРИЙ As String
Set ЛИСТ = Worksheets(ИМЯ_ЛИСТА)
On Error Resume Next
For Each ЯЧЕЙКА_РАБОЧЕЙ_ОБЛАСТИ In Worksheets(ЛИСТ.Name).UsedRange
'ЦИКЛ ПРОВЕРКИ КОММЕНТАРИЯ КАЖДОЙ ЯЧЕЙКИ В РАБОЧЕЙ ОБЛАСТИ
КОММЕНТАРИЙ = ЯЧЕЙКА_РАБОЧЕЙ_ОБЛАСТИ.Comment.Text
If Err.Number = 0 Then
If StrComp(КОММЕНТАРИЙ, ЗНАЧЕНИЕ_ИСКОМОГО_КОММЕНТАРИЯ) = 0 Then АДСС_ЯЧ_С_КОМ_ВЕРСИЯ_ДЛЯ_ВОПРОСА2 = ЯЧЕЙКА_РАБОЧЕЙ_ОБЛАСТИ.Address
Else
Err.Clear
End If
Next
End Function
и
Код
Function АДСС_ЯЧ_С_КОМ_ВЕРСИЯ_ДЛЯ_ВОПРОСА3(ЗНАЧЕНИЕ_ИСКОМОГО_КОММЕНТАРИЯ As String, ИМЯ_ЛИСТА As String)
'ВОЗВРАЩАЕТ АДРЕС ЯЧЕЙКИ С ИСКОМЫМ КОММЕНТАРИЕМ НА НУЖНОМ ЛИСТЕ
Application.Volatile True 'АВТОМАТИЧЕСКОЕ ОБНОВЛЕНИЕ РЕЗУЛЬТАТОВ
Dim ЛИСТ As Worksheet
Dim ЯЧЕЙКА_РАБОЧЕЙ_ОБЛАСТИ
Dim КОММЕНТАРИЙ As String
Set ЛИСТ = Worksheets(ИМЯ_ЛИСТА)
On Error Resume Next
For Each ЯЧЕЙКА_РАБОЧЕЙ_ОБЛАСТИ In Worksheets(ЛИСТ.Name).UsedRange
'ЦИКЛ ПРОВЕРКИ КОММЕНТАРИЯ КАЖДОЙ ЯЧЕЙКИ В РАБОЧЕЙ ОБЛАСТИ
КОММЕНТАРИЙ = ЯЧЕЙКА_РАБОЧЕЙ_ОБЛАСТИ.Comment.Text
If Err.Number = 0 Then
If КОММЕНТАРИЙ = ЗНАЧЕНИЕ_ИСКОМОГО_КОММЕНТАРИЯ Then АДСС_ЯЧ_С_КОМ_ВЕРСИЯ_ДЛЯ_ВОПРОСА3 = ЯЧЕЙКА_РАБОЧЕЙ_ОБЛАСТИ.Address
Else
Err.Clear
End If
Next
End Function
Просто значение комментария было с новой строкой, а в ячейке было только значение текста.
Изменено: Vadim_EC - 14.11.2015 13:34:40
VBA: Как реализовать сравнение текстовых значений (полное соответствие)
 
Доброго времени суток.
Прошу вас подсказать. Нужно сравнить две строки на условие полного соответствия.
Пробовал:
Код
If КОММЕНТАРИЙ=ЗНАЧЕНИЕ_ИСКОМОГО_КОММЕНТАРИЯ Then
не получилось.

Код VBA 13-я строка:
Код
Function АДСС_ЯЧ_С_КОМ_ВЕРСИЯ_ДЛЯ_ВОПРОСА(ЗНАЧЕНИЕ_ИСКОМОГО_КОММЕНТАРИЯ As String, ИМЯ_ЛИСТА As String)
'ВОЗВРАЩАЕТ АДРЕС ЯЧЕЙКИ С ИСКОМЫМ КОММЕНТАРИЕМ НА НУЖНОМ ЛИСТЕ
Application.Volatile True 'АВТОМАТИЧЕСКОЕ ОБНОВЛЕНИЕ РЕЗУЛЬТАТОВ
Dim ЛИСТ As Worksheet
Dim ЯЧЕЙКА_РАБОЧЕЙ_ОБЛАСТИ
Dim КОММЕНТАРИЙ As String
Set ЛИСТ = Worksheets(ИМЯ_ЛИСТА)
On Error Resume Next
For Each ЯЧЕЙКА_РАБОЧЕЙ_ОБЛАСТИ In Worksheets(ЛИСТ.Name).UsedRange
'ЦИКЛ ПРОВЕРКИ КОММЕНТАРИЯ КАЖДОЙ ЯЧЕЙКИ В РАБОЧЕЙ ОБЛАСТИ
КОММЕНТАРИЙ = ЯЧЕЙКА_РАБОЧЕЙ_ОБЛАСТИ.Comment.Text
If Err.Number = 0 Then
If InStr(1, КОММЕНТАРИЙ, ЗНАЧЕНИЕ_ИСКОМОГО_КОММЕНТАРИЯ, vbTextCompare) <> 0 Then АДСС_ЯЧ_С_КОМ_ВЕРСИЯ_ДЛЯ_ВОПРОСА = ЯЧЕЙКА_РАБОЧЕЙ_ОБЛАСТИ.Address
Else
Err.Clear
End If
Next
End Function
Изменено: Vadim_EC - 14.11.2015 12:53:02
VBA: как сослаться на лист если имя листа является аргументом функции
 
Спасибо большое!
VBA: как сослаться на лист если имя листа является аргументом функции
 
Доброго времени суток.
Прошу вас подсказать.
Есть пользовательская функция и в качестве аргумента должно быть имя листа, но при подстановки имя листа в Worksheets().
Там на сколько я понимаю должны быть кавычки ("лист1"), пробывал формулу
k=chr(34)&Лист&chr(34)
Worksheets(k)
(получалось только тогда кода лист текст, но когда он являлся аргументом функции не получалось)

Код VBA:
Код
Function АДСС_ЯЧ_С_КОМ_ВЕРСИЯ_ДЛЯ_ВОПРОСА(ЗНАЧЕНИЕ_ИСКОМОГО_КОММЕНТАРИЯ As String, ИМЯ_ЛИСТА As String)
'ВОЗВРАЩАЕТ АДРЕС ЯЧЕЙКИ С ИСКОМЫМ КОММЕНТАРИЕМ НА НУЖНОМ ЛИСТЕ
Application.Volatile True 'АВТОМАТИЧЕСКОЕ ОБНОВЛЕНИЕ РЕЗУЛЬТАТОВ
Dim ЛИСТ As Worksheet
Dim ЯЧЕЙКА_РАБОЧЕЙ_ОБЛАСТИ
Dim КОММЕНТАРИЙ As String
ЛИСТ.Name = ИМЯ_ЛИСТА
On Error Resume Next
For Each ЯЧЕЙКА_РАБОЧЕЙ_ОБЛАСТИ In Worksheets(ЛИСТ.Name).UsedRange
'ЦИКЛ ПРОВЕРКИ КОММЕНТАРИЯ КАЖДОЙ ЯЧЕЙКИ В РАБОЧЕЙ ОБЛАСТИ
КОММЕНТАРИЙ = ЯЧЕЙКА_РАБОЧЕЙ_ОБЛАСТИ.Comment.Text
If Err.Number = 0 Then
If InStr(1, КОММЕНТАРИЙ, ЗНАЧЕНИЕ_ИСКОМОГО_КОММЕНТАРИЯ, vbTextCompare) <> 0 Then АДСС_ЯЧ_С_КОМ_ВЕРСИЯ_ДЛЯ_ВОПРОСА = ЯЧЕЙКА_РАБОЧЕЙ_ОБЛАСТИ.Address
Else
Err.Clear
End If
Next
End Function
Изменено: Vadim_EC - 14.11.2015 12:42:00
Страницы: 1
Наверх