У меня есть книга Excel, по многим причинам я использую sql в Excel для циклического прохождения полей, книга содержит значения о сотрудниках.
Я создал набор записей из листа, над которым я работаю, с этим запросом:
Set rst = OpenRecordset("SELECT * FROM [Feuil1$]")
это загрузит мой лист в набор записей.
все былоуспевал, пока я не передал свой Excel другу, и он скопировал вставленные данные из другого листа в мой Excel и запустил мой макрос, и здесь я обнаружил ошибку.
Когда я достигаю столбца «G» Client, номер строки13, и попытаться присвоить ее переменной, я получаю сообщение об ошибке
У меня есть переменная с именем Client, в которой я заполняю значениеполе client
Dim rst As Object
Dim Client As Variant
Set rst = OpenRecordset("SELECT * FROM [Feuil1$]")
While Not rst.EOF
...
Client = rst.Fields("Client").Value
..
rst.movenext
Wend
Set rst = Nothing
строка кода, вызывающая ошибку:
Client = rst.Fields("Client").Value
Я получаю сообщение об ошибке -2147217887 (80040e21)
"Вы не можете записывать измененияпоскольку введенное вами значение нарушает настройки, заданные для этой таблицы или списка (например, значение меньше минимального или больше максимального). исправьте ошибку и повторите попытку "
Извините за сообщениев снимке экрана на французском языке, потому что рабочая книга, над которой я работаю, французская, но вот перевод на английский
Это заставило меня попытаться понять, в чем конкретно заключается строка 13 в столбце "G "
Прежде всего, я вижу, что эта проблема появляется в первой строке, заполненной данными (ATS) в том столбце, который является строкой 13. предыдущие ячейки в предыдущих строках были пустыми, и код былработает нормально до строки 13.
Client = rst.Fields("Client").Value
На моем оригинальном листе ошибки нет, ошибка возникла сразу после того, как мой друг скопировал / вставил свои собственные значения в лист, и после тщательного изучения язаметил, что после того, как он скопировал / вставил данные, формат ячеек в столбце G изменился на цифры (двойные), как показано на этом рисунке
Но моя переменная является вариантом, поэтому она должна принимать любые данные (пустые или нет, двойные или нет), поэтому я не могу понять, почему это вызывает эту проблему?
Я сказал, может быть, Excelне загружает в запись, устанавливает значение ATS, может быть, он загружает внутри Rs своего рода особую ошибку или что-то в этом роде, так что переменная варианта не может содержать ее и выдавать эту ошибку, я действительно не знаю, почемуЯ спрашиваю, есть ли у вас какая-либо подсказка об этой ошибке и о том, как решить ее с помощью кода, потому что я просто могу решить ее вручную, вернув обратно к тому, что был формат моих ячеек до того, как мой друг вставил свои данные, так что, если я изменю форматв Normal вместо десятичных в ячейках Excel проблема решена, но я хочу знать, почему я должен понять, почему эта ошибка и как ее устранить с помощью CODE внутри vba не в Excel листе и почему переменная варианта не принимает строковое значение(ATS), даже если формат в Excel является десятичным?
И последнее, я попытался сделать что-то вроде следующего, но все еще получаю ту же ошибку
If Not IsError(rst.Fields("Client").Value) Then Client = rst.Fields("Client").Value Else Client= vbNullString
Кроме того, если я добавлюшпион на линии, вызывающей проблему, я нахожу внутри значения, то же сообщение об ошибке, показанное в моем vba msgbox, здесь яsa printscreen
: "
" вы не можете записывать изменения, поскольку введенное вами значение нарушает настройки, определенные для этой таблицы или списка (например,, значение равно
, заранее спасибо всем, у кого будет конструктивный и полезный ответ.