powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ошибка при выполнение VBA макроса - Type mismatch
25 сообщений из 25, страница 1 из 1
Ошибка при выполнение VBA макроса - Type mismatch
    #36761399
stavdius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Вопрос по макросу в Ecxel.
На одной машине макрос отрабатывает без ошибок, на второй, выдает ошибку
В чем может быть проблема ?

---------------------------
Microsoft Visual Basic for Applications
---------------------------
Run-time error '13':

Type mismatch
---------------------------
ОК Справка
---------------------------
...
Рейтинг: 0 / 0
Ошибка при выполнение VBA макроса - Type mismatch
    #36761415
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в коде
...
Рейтинг: 0 / 0
Ошибка при выполнение VBA макроса - Type mismatch
    #36761422
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stavdiusНа одной машине макрос отрабатывает без ошибок, на второй, выдает ошибку

В разных настройках Панель управления - Язык и стандарты - Числа
И некорректном преобразовании числовых типов в вашем коде.
...
Рейтинг: 0 / 0
Ошибка при выполнение VBA макроса - Type mismatch
    #36761423
stavdius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я просто подумал, может настройки какие, ведь на остальных работает...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
Public Sub AccountIncomeProduct()

    Dim cn As New ADODB.Connection
    Dim Sh As Worksheet
    Dim wb As Workbook
    Dim s As String
    Dim Count_Cell As Integer
    
    Count_Cell =  0 
    Set Sh = ActiveSheet
    
    cn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI; Persist Security Info=False;Initial Catalog=BPK_IncomeProduct;Data Source=B612-PC\MSSQLSERVER2008"
    'cn.ConnectionString = "Provider=SQLOLEDB.1;Password=pklbbm;Persist Security Info=True;User ID=Dimas;Initial Catalog=BPK_IncomeProduct;Data Source=B612-PC\MSSQLSERVER2008"

    cn.Open
    MsgBox ("Подключение к SQL Server выполнено! Выполняется расчет данных!")

    Dim strSQL As ADODB.Command
    Set strSQL = CreateObject("ADODB.Command")
    strSQL.ActiveConnection = cn
    strSQL.CommandType = adCmdText

    strSQL.CommandText = "SELECT " _
                            & "  [Процентная_ставка] " _
                            & " ,[Ставка_фондирования] " _
                            & " ,[Комиссия_за_выдачу] " _
                            & " ,[Ежемесячная_комиссия] " _
                            & " ,[Срок] " _
                            & " ,[Дисконт_RUR] " _
                            & " ,[Стоимость_PPI_RUR] " _
                            & " ,[Стоимость_АльфаХранителя_RUR] " _
                            & " ,[Доходность] " _
                            & " ,[Курс_USD] " _
                            & " ,[Продукт] " _
                            & " ,[Название_ТТ] " _
                            & " ,[Сумма_кредита_USD] " _
                            & " ,[Тип_ТТ] " _
                            & " ,[Область_Край] " _
                            & " ,[Сумма_кредита_RUR] " _
                            & " ,[Стоимость_PPI_RUR] " _
                            & " ,[Стоимость_АльфаХранителя_RUR] " _
                        & " FROM [BPK_IncomeProduct].[dbo].[IncomeProduct]" _
                        & " Where [Доходность] is Null " _
                        & "       and ([Ставка_фондирования] is not Null or [Процентная_ставка] is not Null " _
                        & "       or [Комиссия_за_выдачу] is not Null or [Ежемесячная_комиссия] is not Null)"


    Dim rs As New ADODB.Recordset
    Set rs.ActiveConnection = cn
    rs.CursorLocation = adUseClient
    rs.Open strSQL, , adOpenKeyset, adLockBatchOptimistic, adCmdText
    rs.MoveFirst
    
    
    '*********************************************************************************************

'MsgBox ("LabelAccounAllDB")
    Do Until rs.EOF
            
            If rs.Fields( 14 ) = "Москва" Then
                Cells( 6 ,  7 ) = "Москва"
            Else
                Cells( 6 ,  7 ) = "Регион"
            End If  'Область_Край
                       
            
            
            Cells( 12 ,  6 ) = rs.Fields( 12 )               'Сумма_кредита_USD
            Cells( 5 ,  7 ) = rs.Fields( 13 )                'Тип_ТТ
            Cells( 2 ,  2 ) = rs.Fields( 9 )                 'Курс_USD
            Cells( 9 ,  7 ) = rs.Fields( 10 )                'Продукт
            Cells( 45 ,  4 ) = rs.Fields( 11 )               'Название_ТТ
            
            
            Cells( 36 ,  4 ) = rs.Fields( 0 ) /  100           'Процентная_ставка
            Cells( 37 ,  4 ) = rs.Fields( 1 )                'Ставка_фондирования
            Cells( 39 ,  4 ) = rs.Fields( 2 )                'Комиссия_за_выдачу
            Cells( 40 ,  4 ) = rs.Fields( 3 ) /  100           'Ежемесячная_комиссия
            Cells( 41 ,  4 ) = rs.Fields( 4 )                'Срок
            Cells( 42 ,  4 ) = rs.Fields( 5 ) / rs.Fields( 15 ) 'Дисконт_RUR / Сумма кредита в руб.
            Cells( 43 ,  4 ) = rs.Fields( 16 )               'Стоимость_PPI_RUR
            Cells( 44 ,  4 ) = rs.Fields( 17 )               'Стоимость_АльфаХранителя_RUR
            
'            MsgBox (" Процентная_ставка - " & rs.Fields(0) & vbclr _
'            & " Курс_USD - " & rs.Fields(9) _
'            & " Ставка_фондирования - " & rs.Fields(1) * 100 _
'            & " Комиссия_за_выдачу - " & rs.Fields(2) _
'            & " Ежемесячная_комиссия - " & rs.Fields(3) _
'            & " Срок - " & rs.Fields(4) _
'            & " Дисконт_RUR - " & rs.Fields(5))
       
            ' Update данные в SQL
 
            rs![Доходность] = Cells( 31 ,  6 )
            rs.UpdateBatch
'        Cells(61 + Count_Cell, 61) = rs.Fields(8)
        
        Count_Cell = Count_Cell +  1 
        Cells( 2 ,  12 ) = Count_Cell ' Вывод счетчика обработанных записей

    rs.MoveNext
    Loop
    
'************************************************************************

    
    cn.Close
    MsgBox ("Отключение от SQL Serverвыполнено! Расчет выполнен успешно!")


End Sub


...
Рейтинг: 0 / 0
Ошибка при выполнение VBA макроса - Type mismatch
    #36761433
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и на какой строчке этого кода у вас данная ошибка?

ps
видимо на операции деления
...
Рейтинг: 0 / 0
Ошибка при выполнение VBA макроса - Type mismatch
    #36761461
stavdius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One,

вот в том то и дело, он просто выдает сообщение, и не ругается на строчку.
...
Рейтинг: 0 / 0
Ошибка при выполнение VBA макроса - Type mismatch
    #36761467
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пройдитесь в отладке и посмотрите на какой строчке остановиться отладчик во время ошибки
...
Рейтинг: 0 / 0
Ошибка при выполнение VBA макроса - Type mismatch
    #36761469
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или сделайте обработчик ошибок, пронумеруйте все строчки кода и в обработчике выведите Erl
...
Рейтинг: 0 / 0
Ошибка при выполнение VBA макроса - Type mismatch
    #36761544
stavdius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One,

каким образом можно запустить обработчик ошибки ?
...
Рейтинг: 0 / 0
Ошибка при выполнение VBA макроса - Type mismatch
    #36761554
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Function ...
on error goto err_debug

'строки кода нумеруются
 101   
 102  
...
NNN
  
lb_exit:
     'здесь ваши открытые объекты уничтожить
     ...
     Exit Function

err_debug:
     MsgBox Err.Number & ": " & Err.Description & " on line " & Erl, vbError
     resume lb_exit
End Function
     
...
Рейтинг: 0 / 0
Ошибка при выполнение VBA макроса - Type mismatch
    #36761814
stavdius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One,
Вы правы, на ругается на строчку деления на сто

А что ему эта строчка так не нравится ?


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
 29             Cells( 36 ,  4 ) = rs.Fields( 0 ) /  100  
---------------------------
Microsoft Excel
---------------------------
 13 : Type mismatch on line  29 
---------------------------
ОК   
---------------------------

...
Рейтинг: 0 / 0
Ошибка при выполнение VBA макроса - Type mismatch
    #36761818
stavdius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stavdius,

значение 14.5
...
Рейтинг: 0 / 0
Ошибка при выполнение VBA макроса - Type mismatch
    #36761829
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
Cells( 36 ,  4 ) = CCur(rs.Fields( 0 )) /  100 . 0  
...
Рейтинг: 0 / 0
Ошибка при выполнение VBA макроса - Type mismatch
    #36761830
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stavdiusstavdius,

значение 14.5

Видимо rs.Fields(0) - это у вас ТЕКСТОВОЕ поле, а не числовое.
...
Рейтинг: 0 / 0
Ошибка при выполнение VBA макроса - Type mismatch
    #36761832
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может у вас там формат ячейки задан числовой? поставьте General
...
Рейтинг: 0 / 0
Ошибка при выполнение VBA макроса - Type mismatch
    #36761835
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One
Код: plaintext
Cells( 36 ,  4 ) = CCur(rs.Fields( 0 )) /  100 . 0  

не поможет. Надо разделитель дробной части соответствующий панели управления.
...
Рейтинг: 0 / 0
Ошибка при выполнение VBA макроса - Type mismatch
    #36761841
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProKonst_One
Код: plaintext
Cells( 36 ,  4 ) = CCur(rs.Fields( 0 )) /  100 . 0  

не поможет. Надо разделитель дробной части соответствующий панели управления.

все нецелые числа в VB задаются с точкой в коде.
...
Рейтинг: 0 / 0
Ошибка при выполнение VBA макроса - Type mismatch
    #36761847
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneвсе нецелые числа в VB задаются с точкой в коде.
Что ты сегодня куришь?
попробуй
Код: plaintext
?ccur("5.6")
на машине с настроенной запятой
...
Рейтинг: 0 / 0
Ошибка при выполнение VBA макроса - Type mismatch
    #36761857
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProKonst_Oneвсе нецелые числа в VB задаются с точкой в коде.
Что ты сегодня куришь?
попробуй
Код: plaintext
?ccur("5.6")
на машине с настроенной запятой

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

ps
я не курю. я даю наводящие решения, которые помогут идентифицировать проблему. пусть ТС тоже думает
...
Рейтинг: 0 / 0
Ошибка при выполнение VBA макроса - Type mismatch
    #36761875
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneэто понятно, но у него же поле должно быть числовое
а вот это вряд ли, иначе не вижу причин для возникновения ошибки типа.
...
Рейтинг: 0 / 0
Ошибка при выполнение VBA макроса - Type mismatch
    #36761876
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneесли нет, то ccur() сразу ему выдаст ошибку и мы узнаем правду наконец
не узнаем
потому что он выдаст ту же самую ошибку, неважно, явное идет преобразование или неявное.
...
Рейтинг: 0 / 0
Ошибка при выполнение VBA макроса - Type mismatch
    #36761880
stavdius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One,

Спасибо, за помощь. Изменил тип поля на числовой в таблице.
...
Рейтинг: 0 / 0
Ошибка при выполнение VBA макроса - Type mismatch
    #36761885
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, скорее всего числовые данные храняться в текстовом поле в базе (жуть).
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Ошибка при выполнение VBA макроса - Type mismatch
    #38695315
maksdemon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе время суток.. При наладку 1с предприятия столкнулся с макросом который выводит бак код на весы.. В нем следуящая ошибка

Private Sub CommandButton1_Click()
Dim rc1 As Recordset
Dim db As Database


Dim PathBase As String: PathBase = "c:\torg_base_char"
Dim User As String: User = "Aaieieno?aoi?"
Dim Password As String: Password = "chok"
Dim v77 As Object, result As Variant
Set v77 = CreateObject("V77.Application")
result = v77.Initialize(v77.RMTrade, " /D" + PathBase + " /N" + User + " /P" + Password, "")
If result = 0 Then
Set v77 = Nothing
MsgBox "ia oaaeinu onoaiiaeou niaaeiaiea n 1N"
Exit Sub
End If
Set Towar = v77.EvalExpr("NicaaouIauaeo(""Ni?aai?iee.Oiaa?"")")
x = Towar.Aua?aouYeaiaiouIi?aeaeceoo("Aaniaie", 1, 0, 0)
Dim i: i = 0
Stri = ""

Set db = OpenDatabase("C:\Program Files\dhscale_En_56\DuoDianMing.mdb")
Set rs1 = db.OpenRecordset("Select * from PLU@")

rs1.MoveFirst

Do While Towar.Iieo?eouYeaiaio > 0
rs1.MoveFirst
Stri = Towar.Oo?eoEia
StrNew = ""
For q = 2 To 6
w = Mid(Stri, q, 1)
If w <> 0 Then
StrNew = Mid(Stri, q, 7 - q)
Exit For
End If
Next q
For e = 2 To StrNew
rs1.MoveNext
Next e
cen = Towar.OaiaCaAa.Iieo?eou(OaeouayAaoa)
cen = cen * 100

rs1.Edit
rs1("DAIMA") = LTrim(RTrim(Towar.Oo?eoEia))
rs1("PRICE") = cen
rs1("NAME") = Towar.Iaeiaiiaaiea
rs1.Update


Loop


v77.ExecuteBatch ("Caaa?oeou?aaiooNenoaiu((0);")
Set v77 = Nothing
MsgBox "END"

End Sub
Сам я в макросах не очень.. Подскажите в чем тут проблема
...
Рейтинг: 0 / 0
Ошибка при выполнение VBA макроса - Type mismatch
    #38695460
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: 1) освойте тэги оформления кода - FAQ
2) создайте отдельный топик по своей проблеме
3) не забудьте указать-таки текст ошибки и строку, на которой она возникает
4) если есть проблема с копированием русского текста в ваш браузер - перед копированием переключите раскладку клавиатуры на русский
5) используйте предварительный просмотр перед публикацией сообщения
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ошибка при выполнение VBA макроса - Type mismatch
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]