Невозможно присвоить значение из набора записей переменной vba (ошибка -2147217887 (80040e21)) - PullRequest
0 голосов
/ 27 ноября 2018

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

Я создал набор записей из листа, над которым я работаю, с этим запросом:

 Set rst = OpenRecordset("SELECT * FROM [Feuil1$]")

это загрузит мой лист в набор записей.

все былоуспевал, пока я не передал свой Excel другу, и он скопировал вставленные данные из другого листа в мой Excel и запустил мой макрос, и здесь я обнаружил ошибку.

Когда я достигаю столбца «G» Client, номер строки13, и попытаться присвоить ее переменной, я получаю сообщение об ошибке

enter image description here

У меня есть переменная с именем 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)

"Вы не можете записывать измененияпоскольку введенное вами значение нарушает настройки, заданные для этой таблицы или списка (например, значение меньше минимального или больше максимального). исправьте ошибку и повторите попытку "

enter image description here

Извините за сообщениев снимке экрана на французском языке, потому что рабочая книга, над которой я работаю, французская, но вот перевод на английский

Это заставило меня попытаться понять, в чем конкретно заключается строка 13 в столбце "G "

Прежде всего, я вижу, что эта проблема появляется в первой строке, заполненной данными (ATS) в том столбце, который является строкой 13. предыдущие ячейки в предыдущих строках были пустыми, и код былработает нормально до строки 13.

Client = rst.Fields("Client").Value

На моем оригинальном листе ошибки нет, ошибка возникла сразу после того, как мой друг скопировал / вставил свои собственные значения в лист, и после тщательного изучения язаметил, что после того, как он скопировал / вставил данные, формат ячеек в столбце G изменился на цифры (двойные), как показано на этом рисунке

enter image description here

Но моя переменная является вариантом, поэтому она должна принимать любые данные (пустые или нет, двойные или нет), поэтому я не могу понять, почему это вызывает эту проблему?

Я сказал, может быть, 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

enter image description here

: "

" вы не можете записывать изменения, поскольку введенное вами значение нарушает настройки, определенные для этой таблицы или списка (например,, значение равно

, заранее спасибо всем, у кого будет конструктивный и полезный ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...