Доброго дня, Форум. Это практически первая программа, которая написана мною самостоятельно от начала и до конца, поэтому прошу не судить строго. Действие этой функции аналогично стандартной функции ВПР Excel. Итак. Возникает ошибка при вызове функции "склад". Материнская функция "магазин", расположенная в ячейке на листе 2, копирует необходимый аргумент из ячейки "Н8" на листе 2 и вызывает дочернюю функцию "склад". Дочерняя функция "склад", с помощью цикла перебирает все элементы первого столбца на листе 1, копирует из найденной строчки необходимый элемент и возвращает его материнской функции. Материнская функция вставляет переданное дочерней функцией значение в ячейку "J8". Так должно быть. Но... ---------------------------------------------- P. S. Прошу не не менять структуру программы и не оптимизировать. Просьба только устранить ошибки синтаксиса. Спасибо_____________- Юрий.
Доброго дня, Форум. Это практически первая программа, которая написана мною самостоятельно от начала и до конца, поэтому прошу не судить строго. Действие этой функции аналогично стандартной функции ВПР Excel. Итак. Возникает ошибка при вызове функции "склад". Материнская функция "магазин", расположенная в ячейке на листе 2, копирует необходимый аргумент из ячейки "Н8" на листе 2 и вызывает дочернюю функцию "склад". Дочерняя функция "склад", с помощью цикла перебирает все элементы первого столбца на листе 1, копирует из найденной строчки необходимый элемент и возвращает его материнской функции. Материнская функция вставляет переданное дочерней функцией значение в ячейку "J8". Так должно быть. Но... ---------------------------------------------- P. S. Прошу не не менять структуру программы и не оптимизировать. Просьба только устранить ошибки синтаксиса. Спасибо_____________- Юрий.Юрий_Нд
Юрий_Нд, привет если ничего нельзя менять, то вот [vba]
Код
Function магазин(m As String) As String Dim c As String, s As String 'With Sheets(2) c = m s = склад(c) магазин = s 'End With End Function
Function склад(ByVal c As String) Dim name As String Dim i As Long With Sheets(1) For i = 6 To 11 ' If .Cells(i, 3) = c Then name = .Cells(i, 4) 'kd -> c, точки перед Cells Next i склад = name End With End Function
[/vba] upd name - зарезервированное слово, замените на что-то другое
Юрий_Нд, привет если ничего нельзя менять, то вот [vba]
Код
Function магазин(m As String) As String Dim c As String, s As String 'With Sheets(2) c = m s = склад(c) магазин = s 'End With End Function
Function склад(ByVal c As String) Dim name As String Dim i As Long With Sheets(1) For i = 6 To 11 ' If .Cells(i, 3) = c Then name = .Cells(i, 4) 'kd -> c, точки перед Cells Next i склад = name End With End Function
[/vba] upd name - зарезервированное слово, замените на что-то другоеnilem
Яндекс.Деньги 4100159601573
Сообщение отредактировал nilem - Пятница, 22.09.2017, 11:30
Function магазин(m As String) Dim c$, s$ With Sheets(2) c = m s = склад(c) магазин = s End With End Function
Function склад(c As String) Dim name As String Dim i As Long With Sheets(1) For i = 6 To 11 If .Cells(i, 3) = c Then name = .Cells(i, 4) Next i склад = name End With End Function
[/vba]
Здравствуйте, так нужно? [vba]
Код
Function магазин(m As String) Dim c$, s$ With Sheets(2) c = m s = склад(c) магазин = s End With End Function
Function склад(c As String) Dim name As String Dim i As Long With Sheets(1) For i = 6 To 11 If .Cells(i, 3) = c Then name = .Cells(i, 4) Next i склад = name End With End Function
Отлично, всем спасибо. buchlotnik, Спасибо за вчерашнюю подсказку с функцией Find. Но, "... не в коня корм...". Пока мне еще рано разбираться в этом направлении. Если на досуге найдете возможность разобраться с этой функцией и "кинуть", например сюда конкретный примерчик, буду очень признателен.
Отлично, всем спасибо. buchlotnik, Спасибо за вчерашнюю подсказку с функцией Find. Но, "... не в коня корм...". Пока мне еще рано разбираться в этом направлении. Если на досуге найдете возможность разобраться с этой функцией и "кинуть", например сюда конкретный примерчик, буду очень признателен.Юрий_Нд
Сообщение отредактировал Юрий_Нд - Пятница, 22.09.2017, 11:43
У меня этот файл дважды Excel вырубал в момент, когда ставил точку перед Cells [vba]
Код
Function магазин(m As String) Dim c As String, s As String c = m s = склад(c) магазин = s End Function
Function склад(c As String) Dim name_ As String Dim i As Long With Sheets(1) For i = 6 To 11 ' If .Cells(i, 3) = c Then name_ = .Cells(i, 4) ' Next i склад= name_ End With End Function
[/vba] В VBA есть куча слов, которые уже как бы заняты. Конечно же, никто их все помнить не призывает. Но переменные нужно обзывать как-то так, чтобы точно не вляпаться в такое уже занятое слово. Я, например, последним символом ставлю нижнее подчеркивание.
У меня этот файл дважды Excel вырубал в момент, когда ставил точку перед Cells [vba]
Код
Function магазин(m As String) Dim c As String, s As String c = m s = склад(c) магазин = s End Function
Function склад(c As String) Dim name_ As String Dim i As Long With Sheets(1) For i = 6 To 11 ' If .Cells(i, 3) = c Then name_ = .Cells(i, 4) ' Next i склад= name_ End With End Function
[/vba] В VBA есть куча слов, которые уже как бы заняты. Конечно же, никто их все помнить не призывает. Но переменные нужно обзывать как-то так, чтобы точно не вляпаться в такое уже занятое слово. Я, например, последним символом ставлю нижнее подчеркивание._Boroda_
buchlotnik, Спасибо за вчерашнюю подсказку с функцией Find. Но, "... не в коня корм...". Пока мне еще рано разбираться в этом направлении. Если кто-нибудь, на досуге, найдет возможность разобраться с этой функцией и "кинуть", например сюда конкретный примерчик, буду очень признателен.
buchlotnik, Спасибо за вчерашнюю подсказку с функцией Find. Но, "... не в коня корм...". Пока мне еще рано разбираться в этом направлении. Если кто-нибудь, на досуге, найдет возможность разобраться с этой функцией и "кинуть", например сюда конкретный примерчик, буду очень признателен.Юрий_Нд
ну... он не нужен, поскольку вы его никак не используете. Этот оператор используется для сокращённой записи, дабы по сто раз не переписывать название объекта, а вы его фактически написали просто так
Цитата
Прошу пояснить ...
ну... он не нужен, поскольку вы его никак не используете. Этот оператор используется для сокращённой записи, дабы по сто раз не переписывать название объекта, а вы его фактически написали просто такbuchlotnik