code = Split(str, ",")
With Workbooks(Filename).Sheets("Остатки товаров")
sum = 0
For i1 = 0 To UBound(code)
Set c = .Range("A:X").Find(code(i1), LookIn:=xlValues)
If Not c Is Nothing Then
sum = sum + ActiveCell.Offset(0, -3).Value
Debug.Print sum
Else: GoTo errormsg
End If
Next i1
End With
Несколько вопросов для прайса
Возникла необходимость решения задачки на vba. есть два файла, один с прайсом, второй с остатками на складе. сделать надо так, чтоб макрос перебирал коды товаров (брал их из прайса и сравнивал с остатком), если есть то судя по колличеству заносил цену. Еще такой нюанс во всем это, товар из прайса разбит по карточкам, т.е. одному и томуже товару моугт соответствовать разные коды. Подскажите как лучще сделать. я подумал что можно создать коллонку в прайсе с кодами и для одного вида товара заносит коды через точку с запятой, а потом как-то разделять эти коды и просматривать в остатках.
Цитата:
Sub Price()
Application.Workbooks.Item("050407Ïðàéñû Excel.xls").Worksheets("Ïðàéñ").Activate
Dim code As String
For i = 28 To 270
DoEvents
Application.Workbooks.Item("050407Ïðàéñû Excel.xls").Worksheets("Ïðàéñ").Activate
Range("P" & i).Select
'r = ActiveCell.Cells.Address 'ïåðåäà÷à â ïåðåìåííóþ r àäðåñà ÿ÷åéêè äëÿ äàëüíåéøåé çàïèñè
code = ActiveCell.Cells.Value
Application.Workbooks.Item("Îñòàòîê íà 090407_091858.xls").Worksheets("Îñòàòêè òîâàðîâ").Activate
Debug.Print code
Next i
End Sub
Application.Workbooks.Item("050407Ïðàéñû Excel.xls").Worksheets("Ïðàéñ").Activate
Dim code As String
For i = 28 To 270
DoEvents
Application.Workbooks.Item("050407Ïðàéñû Excel.xls").Worksheets("Ïðàéñ").Activate
Range("P" & i).Select
'r = ActiveCell.Cells.Address 'ïåðåäà÷à â ïåðåìåííóþ r àäðåñà ÿ÷åéêè äëÿ äàëüíåéøåé çàïèñè
code = ActiveCell.Cells.Value
Application.Workbooks.Item("Îñòàòîê íà 090407_091858.xls").Worksheets("Îñòàòêè òîâàðîâ").Activate
Debug.Print code
Next i
End Sub
может просто подскажите как по пунктам
1) как мне сделать поиск по переменной code в файле остатков ячейку?
2) как из одной ячейки с значением "121212;222222;3232323" передать в массив отдельно каждый код товара (смотрел комманду split, но не разобрал ее синтаксис)?
Спасибо.
With Workbooks(" ").Sheets(" ")
Set c = .Range("A:X").Find(code, LookIn:=xlValues)
If NOT c Is Nothing Then
.... используй данные ячейки c ....
End If
End With
2) проверил, split работает, создает массив x
x=split("121212;222222;3232323",";")
а лучше выложи файлы, будет всем проще
вот кусок кода
Код:
вот здесь надо исправить, надо не только поиск, но и сделать найденную ячейку активной, чтоб можно было взять значение 3-мя столбцами левее. может конечно есть и другие варианты кроме ActiveCell.Offset(0, -3).Value
еще вопрос, я из макроса вызываю форму, как сделать кнопку "Cancel" при нажатии которой завершался макрос???