0 / 0 / 0
Регистрация: 17.03.2018
Сообщений: 5
1

VBA как получить Иванов И.И. или полностью

16.04.2019, 21:16. Показов 472. Ответов 12
Метки нет (Все метки)

как исправить ошибку 438? подскажите пожалуйста
MS ACCESS


Visual Basic
1
2
3
4
5
6
7
8
Option Compare Database
 
Function fio(f, i, o, x)
Select Case x
        Case 1: fio = f + " " + Left(i, 1) + "." + Left(o, 1) + "."
        Case 2: fio = f + " " + i + " " + o
    End Select
End Function
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.04.2019, 21:16
Ответы с готовыми решениями:

Разница в скорости vba word и vba access
Вопрос: из акса идет выгрузка данных в файл ворд, далее эти данные опять же из акса форматно...

Vba экспорт в excel по vba-фильтру
Работает VBA-фильтр, как сделать экспорт выбранных данных в Excel по средствам кнопки. Прошу о...

VBA запросы в excel vba
Здравствуйте, Есть два запроса на выборку. Необходимо сохранить запросы в excel: 1 запрос на 1...

Vba
помогите пожалуйста Рассчитать восход,заход,и кульминацию галактик......... просто незнаю даже с...

12
8377 / 4174 / 963
Регистрация: 05.10.2016
Сообщений: 11,513
Записей в блоге: 1
16.04.2019, 21:20 2
Николай ТАМАДА, а может так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Public Function GetFIO(vFamilia As Variant, vImja As Variant, vOtchestvo As Variant) As Variant
'es 17.04.2018
'Возвращает ФИО (Или ничего) по аргументам:
'   vFamilia   =  Фамилия
'   vImja      =  Имя
'   vOtchestvo =  Отчество
'--------------------------------------------------------------------------
On Error GoTo GetFIO_Err
    If Len(vFamilia & "") > 0 Then 'Фамилия указана
        GetFIO = vFamilia & " "
    Else
        Exit Function 'Фамилии нет - на выход!
    End If
 
    If Len(vImja & "") > 0 Then 'Имя указано
        GetFIO = GetFIO & " " & UCase(Mid(vImja, 1, 1)) & "."
    Else
        Exit Function
    End If
 
    If Len(vOtchestvo & "") > 0 Then 'Отчество указано
        GetFIO = GetFIO & UCase(Mid(vOtchestvo, 1, 1)) & "."
    End If
 
GetFIO_Bye:
    Exit Function
 
GetFIO_Err:
    Err.Clear
    Resume GetFIO_Bye
End Function
Более сложный вариант:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Public Function GetFIO(vFamilia As Variant, vImja As Variant, vOtchestvo As Variant, _
    Optional bInLongFormat As Boolean) As Variant
'es 19.04.2018
'Возвращает ФИО (Или ничего) по аргументам:
'   vFamilia      = Фамилия
'   vImja         = Имя
'   vOtchestvo    = Отчество
'   bInLongFormat = Краткий или длинный формат = По умолчанию краткий
'       Краткий формат = Пушкин А.С.
'       Длинный формат = Пушкин Александр Сергеевич
'--------------------------------------------------------------------------
On Error GoTo GetFIO_Err
    If Len(vFamilia & "") > 1 Then 'Фамилия указана
        'Простое составление с нормализацией строки
        GetFIO = UCase(Mid(vFamilia, 1, 1)) & LCase(Mid(vFamilia, 2))
    Else
        If bInLongFormat = False Then Exit Function 'Фамилии нет и формат краткий- на выход!
    End If
 
    If Len(vImja & "") > 1 Then 'Имя указано
        If bInLongFormat = False Then
            GetFIO = GetFIO & " " & UCase(Mid(vImja, 1, 1)) & "."
        Else
            'Простое составление с нормализацией строки
            GetFIO = GetFIO & " " & UCase(Mid(vImja, 1, 1)) & LCase(Mid(vImja, 2))
        End If
    Else
        If bInLongFormat = False Then Exit Function
    End If
 
    If Len(vOtchestvo & "") > 1 Then 'Отчество указано
        If bInLongFormat = False Then
            GetFIO = GetFIO & UCase(Mid(vOtchestvo, 1, 1)) & "."
        Else
            'Простое составление с нормализацией строки
            GetFIO = GetFIO & " " & UCase(Mid(vOtchestvo, 1, 1)) & LCase(Mid(vOtchestvo, 2))
 
        End If
    
    End If
 
GetFIO_Bye:
    Exit Function
 
GetFIO_Err:
    Err.Clear
    Resume GetFIO_Bye
End Function
Судя по вопросу : вам второй вариант ...
1
0 / 0 / 0
Регистрация: 17.03.2018
Сообщений: 5
16.04.2019, 21:34  [ТС] 3
вариант отличный , просто я только начал изучать, и вот нашел видео , по нему старался сделать аналогию , но почемуто на видео работает а у меня - нет , мне нужно более короткий вариант , так как я студент и только легко касаюсь темы VBA, если можете помочь именно с похожим кодом как на видео , я был бы очень благодарен ( простите за грамматику , я плохо знаю русский) https://www.youtube.com/watch?... b&index=31
0
Модератор
Эксперт MS Access
10304 / 4211 / 684
Регистрация: 07.08.2010
Сообщений: 11,904
Записей в блоге: 4
16.04.2019, 21:38 4
попробуйте так
Visual Basic
1
2
3
4
5
6
7
8
Option Compare Database
 
Function fio(f, i, o, x)
Select Case x
        Case 1: fio = f & (" " + Left(i, 1) + ".") &  (Left(o, 1) + ".")
        Case 2: fio = f  & " " &  i  & " " &  o
    End Select
End Function
0
0 / 0 / 0
Регистрация: 17.03.2018
Сообщений: 5
16.04.2019, 21:45  [ТС] 5
Та же ошибка , к сожалению (((( не знаю что делать , думал сделать через if...then..else но почему то работает только на 1ий вариант записи ФИО((
0
8377 / 4174 / 963
Регистрация: 05.10.2016
Сообщений: 11,513
Записей в блоге: 1
16.04.2019, 21:56 6
Цитата Сообщение от Николай ТАМАДА Посмотреть сообщение
мне нужно более короткий вариант
Далеко не всегда "короткий" вариант быстрее "длинного"
... чем смог...
Удачи!

Добавлено через 11 минут
Цитата Сообщение от Николай ТАМАДА Посмотреть сообщение
мне нужно более короткий вариант
Далеко не всегда "короткий" вариант быстрее "длинного"
... чем смог...
Цитата Сообщение от Николай ТАМАДА Посмотреть сообщение
думал сделать через if...then..else но почему то работает только на 1ий вариант записи ФИО
Тут без примера не обойтись ...
0
0 / 0 / 0
Регистрация: 17.03.2018
Сообщений: 5
16.04.2019, 22:07  [ТС] 7
ну как я говорил , мне нужен тот же функционал как на видео, но у меня выдает 438 ерор( единственный пример который есть у меня

 Комментарий модератора 
удаление рекламы
0
8377 / 4174 / 963
Регистрация: 05.10.2016
Сообщений: 11,513
Записей в блоге: 1
16.04.2019, 22:12 8
Цитата Сообщение от Николай ТАМАДА Посмотреть сообщение
единственный пример который есть у меня
Вы зачем на форум пришли и задали вопрос?
а ... по ссылке видео не достойное внимания .... (и таких довольно много, к сожалению)
0
0 / 0 / 0
Регистрация: 17.03.2018
Сообщений: 5
16.04.2019, 22:49  [ТС] 9
Искал помощи, нашел, просто так, как для меня VBA - новизна , а времени обрез , не могу приделить очень много времени для того, чтобы закрыть одну лабораторную роботу, поетому и скинул видео - думал что есть вариант сделать вот так коротко ибо преподователь поймет что робота не моя . Если я Вас затруднил ,извините. Спасибо за помощь !
0
8377 / 4174 / 963
Регистрация: 05.10.2016
Сообщений: 11,513
Записей в блоге: 1
16.04.2019, 22:56 10
Цитата Сообщение от Николай ТАМАДА Посмотреть сообщение
Если я Вас затруднил ,извините. Спасибо за помощь !
Не горячитесь!
Хотите покажу?
Опубликуйте свою табличку с ФИО - и будет вам.
0
8377 / 4174 / 963
Регистрация: 05.10.2016
Сообщений: 11,513
Записей в блоге: 1
16.04.2019, 23:05 11
Николай ТАМАДА, итак:
Миниатюры
VBA  как получить Иванов И.И. или полностью   VBA  как получить Иванов И.И. или полностью  
0
8377 / 4174 / 963
Регистрация: 05.10.2016
Сообщений: 11,513
Записей в блоге: 1
16.04.2019, 23:16 12
Николай ТАМАДА, и что-то мне расхотелось вам в дальнейшем помогаьть ..
не знаю почему ...
0
Модератор
Эксперт MS Access
3616 / 2067 / 509
Регистрация: 12.06.2016
Сообщений: 5,286
16.04.2019, 23:34 13
Николай ТАМАДА,

А как Вы функцию вызываете? Как аргументы передаете?
Покажите команду.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.04.2019, 23:34

VBA
Экзаменационное задание по VBA. 1. Распределение дополнительных обязанностей. Описание...

VBA
Всем привет! Проблема такая. В таблице Заказ, строка Сумма_заказа должна быть вычисляемой. Через...

Сложение в VBA
Привет всем добрым людям кто сможет помочь не как не могу добиться что бы подсчитала программа...

VBA в Access
У меня возникла проблема,мне надо преобразовать Access из 97 в 2003,но там ещё нужно изменить код...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.