2016-11-08 5 views
0

В настоящее время я использую ADODB-соединение для обновления некоторых ячеек. Обновление работает отлично (обновляет соответствующие строки). Однако, когда он вставляет значения, он добавляет апостроф (т. Е. «5 вместо 5»), что означает, что он не может быть отформатирован или добавлен правильно. Я пробовал использовать замену, но он не может найти апостроф, и я попытался использовать val(), но пока не повезло.Excel VBA с подключением ADODB создает текст вместо значений

Код (упрощенный) выглядит следующим образом: все переменные (sheet, tableAddressB и т. Д.) Работают нормально, а просто «5» в этом случае не обновляется как число.

Dim cn As New ADODB.Connection 
    Dim strSQL As String 
    Dim tableAddressB As String 

    Set cn = New ADODB.Connection 
    cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ActiveWorkbook.Path & Application.PathSeparator & ActiveWorkbook.Name & ";Extended Properties=""Excel 8.0;HDR=No;"";" 
    cn.Open 

    tableAddressB = Sheet & "$" & Range(Sheet & "Details").Address(False, False) 
    strSQL = "Update [" & tableAddressB & "] Set [" & tableAddressB & "].F5 = 5 " & _ 
      "Where [" & tableAddressB & "].F3 between #1/1/2016# and #3/1/2016#" 

    cn.Execute strSQL 
    cn.Close 

Благодарим за помощь!

+0

Тип данных столбцов определяется из рабочей книги, прежде чем выполнять какое-либо обновление. Есть ли что-нибудь в 'F5' перед обновлением? Есть ли что-нибудь в столбце «F» в целом, это не число? Сначала попробуйте помещать манекен. –

+0

Я думаю, вы можете просто форматировать ячейки (я)? Если он имеет это «впереди», он форматируется как текст. http://www.excelhowto.com/macros/formatting-a-range-of-cells-in-excel-vba/ – Niclas

+0

Спасибо, оба отлично! –

ответ

0

Благодаря Иеруэну и Никласу. Помещение Range.NumberFormat и настройка соответственно (Range.Numberformat = "0.00") отлично работает.

Спасибо и за вашу помощь!

Смежные вопросы