Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Помогите найти ошибку в проге Type mismatch Добавлено: 17.05.07 10:09  

Автор вопроса:  Alex
В конце проги ругается на эту строчку ,типа несовпадение типов. Очень Очень Прошу Помогите пожалуйста разрешить эту ситуацию, а то уже мозги набикрень.
itogi.Cells(n, 3) = itogi.Cells(n, 2) * ceni.Range(arow).Offset(0, 1) 'отпускные



Private Sub CommandButton7_Click()
' Windows("движение_п.xls").Activate
'Columns("h:h").Select
'Selection.Delete Shift:=xlToLeft
'Columns("E:F").Select
'Selection.Delete Shift:=xlToLeft
'Range("E15").Select
'очистка Книги1
Windows("Итоги.xls").Activate
Sheets("Лист1").Select
Cells.Select
Selection.Delete Shift:=xlUp

'копирование из файла "остатки_*.xls" заголовка
If OptionButton5.Value = True Then
Windows("движение_п.xls").Activate
Else
Windows("движение_т.xls").Activate
End If

Range("B2").Select
Selection.Copy
Windows("Итоги.xls").Activate
Range("A1").Select
ActiveSheet.Paste
With Selection
.HorizontalAlignment = xlLeft
.WrapText = False
End With

'копирование из файла "остатки_*.xls" номенклатуры и количества
If OptionButton5.Value = True Then
Set ostatki = Workbooks("движение_п.xls").Worksheets("Sheet1")
Else
Set ostatki = Workbooks("движение_т.xls").Worksheets("Sheet1")
End If
If OptionButton5.Value = True Then
Set ceni = Workbooks("цены_п.xls").Worksheets("Sheet1")
Else
Set ceni = Workbooks("цены_т.xls").Worksheets("Sheet1")
End If
Set itogi = Workbooks("Итоги.xls").Worksheets("Лист1")
i = ostatki.Cells(6, 2).CurrentRegion.Rows.Count



If OptionButton5.Value = True Then
Windows("движение_п.xls").Activate
Else
Windows("движение_т.xls").Activate
End If
ad = LTrim(Str(i + 4))
Range("B5:E" + ad).Select
Selection.Copy
Windows("Итоги.xls").Activate
Range("A3:A3").Select
ActiveSheet.Paste

'разбиение 1 и 2-ой колонок
ad = LTrim(Str(i + 2))
Range("A3:B" + ad).Select
Selection.UnMerge
Columns("A:A").EntireColumn.AutoFit

'удаление второй и третьей колонки
Columns("B:C").Select
Selection.Delete Shift:=xlToLeft

'копирование формата шапки на колонки с суммами
Columns("B:B").Select
Selection.Copy
Range("B:B,C:C").Select
Range("C1").Activate
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

'редактирование шапки
Range("C3").Select
With Selection
.WrapText = False
End With
ActiveCell.FormulaR1C1 = "отпускная"
Range("B3").Select
ActiveCell.FormulaR1C1 = "остатки_рас"

'замена "-" на нули
' Columns("B:B").Select
' Selection.Replace What:="-", Replacement:="0", LookAt:=xlPart, _
' SearchOrder:=xlByColumns, MatchCase:=False

'удаление "(шт)" в конце названия каждого изделия
Columns("A:A").Select
Selection.Replace What:=" (шт)", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False

'заполнение колонки "отпускная" '''''''''''''проблема тут''''''''''''''''
ks = ceni.Cells(9, 2).CurrentRegion.Rows.Count
ad = LTrim(Str(ks + 8))
For n = 4 To i + 1
nam = itogi.Cells(n, 1)
Set C = ceni.Range("C9:C" + ad).Find(nam, LookIn:=xlValues)
If Not C Is Nothing Then
arow = C.Address(RowAbsolute, ColumnAbsolute) 'номер первой найденной строки в файле цены.xls
If (ceni.Range(arow).Offset(0, 1) <> "-") Then
itogi.Cells(n, 3) = itogi.Cells(n, 2) * ceni.Range(arow).Offset(0, 1) 'отпускные
'itogi.Cells(n, 4) = itogi.Cells(n, 2) * ceni.Range(arow).Offset(0, 3) 'отпускные
Else
MsgBox ("нет цены на " + nam + " строка: " + Str(n))
End If
Else
MsgBox ("нет какой-то из цен на " + nam + " строка: " + Str(n))
End If
Next n


End Sub


Данные берутся из движение_п ,заливаются в итоги и там подбираются к названию продукции цены которые умножаются на кол. из итогов,а цены бирутся из цены_п
Всё работает нормально но как только доходит до какой то позиции и полный облом
если надо вышлю файлы.

Ответить

  Ответы Всего ответов: 2  

Номер ответа: 1
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #1 Добавлено: 17.05.07 10:55
1) При размещении кода на форуме используете плз тег
(кнопка справа возле окна для ввода текста). Без этого тега помочь кому-то довольно сложно...

2) Попробуйте вашу строчку написать так

[CODE]itogi.Cells(n, 3) = Val(itogi.Cells(n, 2)) * Val(ceni.Range(arow).Offset(0, 1)) 'отпускные


Ещё может быть проблема с числом с точкой, возможно программа ожидает точку, а не запятую в числе, или наоборот. На этот случай

Val(Replace(itogi.Cells(n, 2),",",".";))

Ответить

Номер ответа: 2
Автор ответа:
 Alex



Вопросов: 2
Ответов: 5
 Профиль | | #2 Добавлено: 17.05.07 12:35
ура заработало!!!!!!!!!!!!!!!!1

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам