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

Страницы: 1 2 3 След.
Перенос даных из формы в следующую пустую строку
 
Чтобы созданный макрос сохранился в книге, необходимо сохранить файл в специальном формате .xlsm или .xlsb.
Особенности работы редактора Visual BaSic при создании пользовательской функции
 
Действительно - "Все гениальное просто, а все простое гениально!!!". Большое спасибо.
Особенности работы редактора Visual BaSic при создании пользовательской функции
 
Вы абсолютно правы. Можно ли как-нибудь не просто выводить код ошибки, а так, чтобы при желании был виден её характер?
Особенности работы редактора Visual BaSic при создании пользовательской функции
 
Огромное Всем спасибо. наконец-то понял. :)  
Изменено: chesas - 19.04.2019 17:01:04
Особенности работы редактора Visual BaSic при создании пользовательской функции
 
А можно чуть поподробнее, я так никогда не делал.

Цитата
Ігор Гончаренко написал: 2. выполнение этого кода должно в точности решать проблему,
  Проблема- то не в коде...
Особенности работы редактора Visual BaSic при создании пользовательской функции
 
   Большое спасибо Казанскому. Но полного удовлетворения нет - а как же мне быть? Подскажите пожалуйста.
Особенности работы редактора Visual BaSic при создании пользовательской функции
 
Цитата
Nordheim написал:
Мне кажется тут какой то троллинг, написать черте что, а потом спрашивать почему это черте  что не работает, или работает криво.  
Спасибо, так проще всего.
Особенности работы редактора Visual BaSic при создании пользовательской функции
 
Цитата
bedvit написал:
Потому и появляются.
А останов?
Особенности работы редактора Visual BaSic при создании пользовательской функции
 
Цитата
Nordheim написал:
Напишите п правилам и не будет ошибок. Прогоните функцию построчно, и посмотрите на каком этапе вылетает окно и по какому условию.
Что значит по правилам? Мне интересно до пошагового прогона - почему? Я то и хотел проганяь пошагово, но непонимаю откуда лишние сообщения.
Особенности работы редактора Visual BaSic при создании пользовательской функции
 
Функция на листе одна.
И подчёркиваю на первой строчке кода стоит останов. Как редактор минует его и почему?
Особенности работы редактора Visual BaSic при создании пользовательской функции
 
Это только у меня так или ещё у кого-нибудь есть такое же?
Особенности работы редактора Visual BaSic при создании пользовательской функции
 
Так вот ПОЧЕМУ ОНИ ПОЯВЛЯЮТСЯ? Или у меня какие-то настройки не те?
Особенности работы редактора Visual BaSic при создании пользовательской функции
 
Всё верно - только тут мы оказываемся после непонятно сколько раз появившихся окон с ошибкой!
Особенности работы редактора Visual BaSic при создании пользовательской функции
 
Вы хотите сказать что если установить точку останова на строке "варВведённое = варЗначение" вызвать функцию, ввести исходные с ошибкой, то после нажатия "OK" код программы останавливается на вышеоговоренной строчке?
Изменено: chesas - 19.04.2019 16:05:15
Особенности работы редактора Visual BaSic при создании пользовательской функции
 
Зачем копировать, функция просто "лежит" во всегда открытой книге макросов и всегда доступна.
Особенности работы редактора Visual BaSic при создании пользовательской функции
 
Да и дело принципа. Как ведёт себя редактор VB в вышеприведённом случае?
Особенности работы редактора Visual BaSic при создании пользовательской функции
 
Мне-то нужна именно функция, с возможностью копирования по листу и по книгам... Конечно же можно и процедуру, но зачем создавать окна приглашения как минимум для ввода исходных данных, справки... если в функции это уже предусмотрено?
Особенности работы редактора Visual BaSic при создании пользовательской функции
 
   Хочу создать функцию, которая могла бы выводить результат в виде "значение± погрешность" без лишних - не важных младших разрядов. Например 23,15± 0,02 по имеющимся исходным данным: значению - 23,15000236587 и погрешности - 0,0235987. В начале кода самой функции у меня есть проверка на правильность ввода исходных, чтобы не было потом недоразумений. И только после проверки - убедившись, что введённые два аргумента действительно числа(третий параметр нужен для вариации выводом) собрался писать саму обработку. Установил точку останова на первой строке кода, даже несколько точек. Столкнулся с тем, что если при вводе любого, одного из аргументов допущена ошибка, т.е. среди вводимого есть неподходящий символ - не цифра, не знак минус и не разделитель; то при нажатии "OK" выводится окно с предупреждением об ошибке, да ещё и неоднократно. Я не понимаю как и почему это происходит - ведь я только ввёл исходные данные и сразу же хочу остановить выполнение остановом. Упрощённый пример привожу ниже. В нём, при вводе первого символа - буквы в место ввода погрешности, получаю сообщение: "Введённое текст. Исправьте2.". Важно и то, что тип вводимых аргументов у меня Variant. И в чём тогда ошибка при вводе?
Код
Option Explicit
'1. Предусмотреть три варианта ввода: рукописный - с клавиатуры; вставка из буфера и указание ячейки Эксель.
'2. Однотипное поведение функции в каждом из этих трёх вариантов.
'3. При вводе не числа выдавать вразумительное сообщение непрерываясь.
'4. При перепутывании разделителя целой и дробной частей молча исправлять ошибку, также не прерываясь(возможны два варианта).
'5. При отсутствии в числе меньшем единицы впереди разделителя нуля, молча исправляет - добавляет перед разделителем ноль.

Public Function Округлить(ByVal варЗначение As Variant, ByVal варПогрешность As Variant, Optional ByVal стрПараметрВывода As String) As String
    Dim варВведённое As Variant
    Dim стрЧтоВведено As String
    
    варВведённое = варЗначение
    стрЧтоВведено = "Значение"
    Call ПроверкаПравильностиВвода(варВведённое, стрЧтоВведено)
    варВведённое = варПогрешность
    стрЧтоВведено = "Погрешность"
    Call ПроверкаПравильностиВвода(варВведённое, стрЧтоВведено)
    '...
    Округлить = " ± "
End Function

Private Sub ПроверкаПравильностиВвода(ByVal варВведённое As Variant, ByVal стрЧтоВведено As String)
    Dim стрТипВведённого As String
    Dim стрВведённое As String
    Dim цезПозицияТочки As Integer
    Dim стрВведённоеБезРазделителя As String
    Dim стрСообщение As String
    Dim целВсегоСимволовВоВведённом As Integer
    ' Пока написал лишь с предположением, что разделитель запятая - доработать и на точку! Недописано для ячейки!
    стрТипВведённого = TypeName(варВведённое) 'Первые четыре типа переменной варВведённое могут быть внесены вручную. _
                                                При вводе с таблицы, получаем тип - "Range".
    Select Case стрТипВведённого
    Case "String" 'Проверить, может перепутан лишь разделитель дробной части - вместо точки введена запятая.
        If InStr(стрВведённое, ".") <> 0 Then 'Определяем есть ли во введённом символ "точка" - "неправильный" разделитель целой и дробной частей.
            цезПозицияТочки = InStr(стрВведённое, ".") 'Определяем позицию разделителя.
            стрВведённоеБезРазделителя = Mid(стрВведённое, 1, цезПозицияТочки - 1) & Mid(стрВведённое, цезПозицияТочки + 1)
            If InStr(стрВведённоеБезРазделителя, ",") <> 0 Then 'Проверка на наличие второго разделителя.
                стрСообщение = "Во введённом - " & стрВведённое & ", как минимум, два разделителя: запятая и точка. Исправьте."
                MsgBox (стрСообщение)
            Else
                If IsNumeric(стрВведённоеБезРазделителя) Then 'Замена разделителя на правильный.
                    стрВведённое = Mid(стрВведённое, 1, цезПозицияТочки - 1) & "," & Mid(стрВведённое, цезПозицияТочки + 1)
                    варВведённое = CDbl(стрВведённое)
                 Else
                    стрСообщение = "Введённое - " & стрВведённое & " не число. Исправьте1."
                    MsgBox (стрСообщение)
                    End
                End If
            End If
         Else ' Во введённом нет точки.
            If Not (IsNumeric(стрВведённое)) Then
                стрСообщение = "Введённое - " & стрВведённое & " текст. Исправьте2."
                MsgBox (стрСообщение)
                End
            End If
        End If
    Case "Integer", "Long"
        ' Ничего не делаю.
    Case "Double"
    
    End Select
End Sub

 
Изменено: chesas - 19.04.2019 14:32:37
Особенности работы редактора Visual BaSic при создании пользовательской функции
 
Смотрите мой код - #1, Вы видимо проверяете с исправлением от Казанского #7. Сейчас выложу всё по подробнее.
Особенности работы редактора Visual BaSic при создании пользовательской функции
 
   Ещё раз повторяю, что функция НЕ ВАЖНА, вопрос по работе самого редактора VB. Я не могу, понять почему редактор показывает моё же сообщение, но раньше чем я предполагал - ещё при вводе исходных данных. Такое впечатление, что по ходу ввода, он уже "пробегает" мой код и делает самостоятельно то, что я хотел бы сделать потом - по ходу выполнения функции.
  Ваш вариант хорош #7, но хотелось бы всё таки сообщение. А почему нежелательно использование MsgBox в функциях - то, что происходит с моим кодом это из-за него?
Цитата
Какой именно функции? В #1 функция объявлена как Пример, в #8 функция объявлена как Пример1 (а значение присваивается переменной Пример).
Приложите уже файл в соотв. с Правилами.
  Извиняюсь, конечно же ошибся - Пример1. И да - в этом случае ничего ненормального не происходит, но и нет сообщения...
Код
Public Function Пример1(ByVal варЗначение As Variant, ByVal варПогрешность As Variant, Optional ByVal стрПараметрВывода As String)
    Dim стрЗаголовок As String
    Dim стрСообщение As String
    Dim стрОтклик As String
    
    стрЗаголовок = "Функция Пример"
    стрСообщение = "Вместо числа введено непонятно что. Исправьте."
    If Not IsNumeric(варПогрешность) Then
      Пример1 = CVErr(xlErrValue) '#ЗНАЧ!
    End If
End Function
Особенности работы редактора Visual BaSic при создании пользовательской функции
 
Прошу прощения. Должен ненадолго отлучиться.
Особенности работы редактора Visual BaSic при создании пользовательской функции
 
   Может быть, особенности работы редактора Visual BaSic при создании пользовательской функции?
Изменено: chesas - 18.04.2019 18:40:46
Особенности работы редактора Visual BaSic при создании пользовательской функции
 
   В самом первом сообщении я написал, что она должна делать. Вопрос больше касается моего непонимания отладки создания пользовательской функции - всё равно какой. До неё даже ещё не дошло дело.
Изменено: chesas - 18.04.2019 18:33:53
Особенности работы редактора Visual BaSic при создании пользовательской функции
 
И при вызове функции получил сообщение, что у данной функции нет аргументов.
Особенности работы редактора Visual BaSic при создании пользовательской функции
 
Исправил на
Код
Public Function Пример1(ByVal варЗначение As Variant, ByVal варПогрешность As Variant, Optional ByVal стрПараметрВывода As String)
    Dim стрЗаголовок As String
    Dim стрСообщение As String
    Dim стрОтклик As String
    
    стрЗаголовок = "Функция Пример"
    стрСообщение = "Вместо числа введено непонятно что. Исправьте."
    If Not IsNumeric(варПогрешность) Then
      Пример = CVErr(xlErrValue) '#ЗНАЧ!
    End If
End Function
Особенности работы редактора Visual BaSic при создании пользовательской функции
 
Может какие-то настройки самого редактора?
Особенности работы редактора Visual BaSic при создании пользовательской функции
 
Какая ячейка? Я ввожу данные в окно для ввода исходных данных функции. Если та, где вводится функция, то это и есть мой вопрос - я ввожу данные и сразу же получаю сообщение, почему?
Изменено: chesas - 18.04.2019 18:10:35
Особенности работы редактора Visual BaSic при создании пользовательской функции
 
Не совсем понял, что значит "не функционирует" - не запускается, что ли? Я её вызываю из книги, т.е. ввожу "=" нахожу в пользовательских и далее вставляю исходные данные.  
Особенности работы редактора Visual BaSic при создании пользовательской функции
 
   Здравствуйте.
  Пытаюсь создать свою функцию, которая могла бы выводить результат какого-нибудь вычисления в виде "результат± погрешность" без лишних - не важных младших разрядов. Например 23,15± 0.02 вместо значение 23,15000236587 и погрешность 0,0235987. Столкнулся с проблемой, когда ещё при вводе исходных данных редактор САМ "пробегает " мой код и выводит сообщение, которое находится уже в самом коде функции. Причём это происходит даже если я ставлю точки останова - он на них не реагирует. Упрощённый пример привожу ниже. В нём, ещё при вводе буквы вместо погрешности, сразу же получаю сообщение: "Вместо числа введено непонятно что. Исправьте.", да ещё и не один раз. Дальше происходит совсем непонятное повторение этих же сообщений при моей реакции.
Код
Public Function Пример(ByVal варЗначение As Variant, ByVal варПогрешность As Variant, Optional ByVal стрПараметрВывода As String)
    Dim стрЗаголовок As String
    Dim стрСообщение As String
    Dim стрОтклик As String
    
    стрЗаголовок = "Функция Пример"
    стрСообщение = "Вместо числа введено непонятно что. Исправьте."
    If Not IsNumeric(варПогрешность) Then
        стрОтклик = MsgBox(стрСообщение, vbOKOnly, стрЗаголовок)
        End
    End If
End Function
Просмотр данных в реальном времени
 
Добрый день.
Подскажите, нет ли в "Экселе" функции, которая позволяла бы просматривать данные из файла, который в это же время и пишется. Файл может быть с расширением .txt или .csv. Ежесекундно в файл добавляются новые записи, характер изменения которых собственно, сразу же и хотелось бы видеть с помощью графика. Спасибо.
Страницы: 1 2 3 След.
Наверх