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

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

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

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

Код: 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
27.07.2010, 12:43
    #36761433
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при выполнение VBA макроса - Type mismatch
и на какой строчке этого кода у вас данная ошибка?

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

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

каким образом можно запустить обработчик ошибки ?
...
Рейтинг: 0 / 0
27.07.2010, 13:20
    #36761554
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при выполнение VBA макроса - Type mismatch
Код: 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
27.07.2010, 14:38
    #36761814
stavdius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при выполнение VBA макроса - Type mismatch
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
27.07.2010, 14:39
    #36761818
stavdius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при выполнение VBA макроса - Type mismatch
stavdius,

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

значение 14.5

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

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

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

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

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

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

Спасибо, за помощь. Изменил тип поля на числовой в таблице.
...
Рейтинг: 0 / 0
27.07.2010, 14:54
    #36761885
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при выполнение VBA макроса - Type mismatch
да, скорее всего числовые данные храняться в текстовом поле в базе (жуть).
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
13.07.2014, 14:12
    #38695315
maksdemon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при выполнение VBA макроса - Type mismatch
Доброе время суток.. При наладку 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
13.07.2014, 20:41
    #38695460
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при выполнение VBA макроса - Type mismatch
Модератор: 1) освойте тэги оформления кода - FAQ
2) создайте отдельный топик по своей проблеме
3) не забудьте указать-таки текст ошибки и строку, на которой она возникает
4) если есть проблема с копированием русского текста в ваш браузер - перед копированием переключите раскладку клавиатуры на русский
5) используйте предварительный просмотр перед публикацией сообщения
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ошибка при выполнение VBA макроса - Type mismatch / 25 сообщений из 25, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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