Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.09.2017, 11:29   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

подтверждаю. Это всё из-за того, что Вы используете устаревший тип полей.
проблема возникает c Function GetCurrentFF() As Word.FormField:

попробуйте заменить код на такой:
Код:
Option Explicit

Sub WriteToTextFF(fieldName, writeText)
    With GetCurrentFF(fieldName)
        If .Type = wdFieldFormTextInput Then
            .Result = writeText
        End If
    End With
lbl_Exit:
    Exit Sub
End Sub
 
Private Function GetCurrentFF(fieldName) As Word.FormField
    Dim rngFF, fldFF
    Set rngFF = Selection.Range
    rngFF.Expand wdParagraph
    For Each fldFF In rngFF.FormFields
        Set GetCurrentFF = fldFF
        If GetCurrentFF.Name = fieldName Then
          Exit For
        End If
    Next fldFF
lbl_Exit:
    Exit Function
End Function


Sub setPropis()
    Dim bm As Bookmark
    Dim sText As String, textPropis As String
    
    Set bm = ActiveDocument.Bookmarks("chislo")
    sText = Trim(bm.Range.text)
    
    If InStr(sText, "FORMTEXT") > 0 Then
      sText = Trim(Mid(sText, 9))
    End If
    
    textPropis = ""
    ' Если в поле не число, то просто копирование данных из первого поля во второе.
    If IsNumeric(sText) = False Then
        textPropis = sText
    ' Если в поле число, то превращение числа в пропись.
    Else
        textPropis = "(" & mod_Propis.Main(CDbl(sText)) & ")."
    End If
    
    ' запись результатов в поля
    ActiveDocument.Bookmarks("propis").Select
    Call WriteToTextFF("propis", textPropis)
    
    ActiveDocument.Bookmarks("propis1").Select
    Call WriteToTextFF("propis1", textPropis)
    
    ActiveDocument.Bookmarks("chislo1").Select
    Call WriteToTextFF("chislo1", sText)
    
End Sub
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.09.2017, 12:18   #12
irina181
Пользователь
 
Регистрация: 07.09.2017
Сообщений: 44
По умолчанию

Всё решилось. Несколько другой вариант. Может кому-то пригодится. Файл во вложении. Всем спасибо.
Вложения
Тип файла: rar Договор последний.rar (30.3 Кб, 5 просмотров)

Последний раз редактировалось irina181; 15.09.2017 в 12:20.
irina181 вне форума Ответить с цитированием
Старый 15.09.2017, 14:19   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от irina181 Посмотреть сообщение
Несколько другой вариант.
красиво.

Цитата:
Код:
Private Function GetFormfield(bm As Bookmark) As FormField
    For Each GetFormfield In bm.Range.FormFields
        Exit Function
    Next GetFormfield
End Function
я вот, например, даже не понимаю, как работает функция, если в ней не прописано возвращаемое значение! Может быть, мне кто-то объяснит, как это работает?
Какой-то хитрый "хак" VBA используется, по всей видимости...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.09.2017, 15:37   #14
irina181
Пользователь
 
Регистрация: 07.09.2017
Сообщений: 44
По умолчанию

Ответ можно получить тут https://forumvba.ru/index.php?board=4.0
irina181 вне форума Ответить с цитированием
Старый 15.09.2017, 16:33   #15
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от irina181 Посмотреть сообщение
Ответ можно получить тут
спасибо за ссылку.
Но, вряд ли я пойду регистрироваться на другом форуме, чтобы получить объяснение.
Может быть, мне кто-то здесь ответит.
А если не ответит, значит, не судьба мне узнать, как работает функция в VBA без return...

добавлено

всё. я понял.
вот здесь ключ:
Цитата:
Код:
Private Function GetFormfield(bm As Bookmark) As FormField
    For Each GetFormfield In bm.Range.FormFields
        Exit Function
    Next GetFormfield
End Function
цикл For Each и присваивает значение функции.

Последний раз редактировалось Serge_Bliznykov; 15.09.2017 в 16:38.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.09.2017, 17:48   #16
irina181
Пользователь
 
Регистрация: 07.09.2017
Сообщений: 44
По умолчанию

Думаю тему можно закрыть. Спасибо за помощь.
irina181 вне форума Ответить с цитированием
Старый 15.09.2017, 17:54   #17
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Всегда пожалуйста!

p.s. А тему пока я закрывать не буду. может быть, позже кому-то ещё пригодится...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сумма Прописью ins813 Общие вопросы Delphi 6 04.10.2012 21:47
Сумма прописью Averess Microsoft Office Excel 1 13.02.2009 11:13
Сумма прописью LX Da Mad Microsoft Office Excel 5 27.06.2008 01:54
Сумма прописью в 1С Aleksandr Свободное общение 2 27.08.2007 15:59
Сумма прописью Fainder Microsoft Office Excel 6 17.03.2007 10:43