И снова доброго времени суток. Точно сегодня не мой день. Итак, есть база, я пишу код, который должен скопировать результат фильтра в новое место через xlFilterCopy. Операции идут с датами, мне нужно сортировать таблицу по двум критериям, например, >01.10.2012 и <01.02.2013. Как записать условие. Вот мой код [vba]
Код
With Workbooks("ччч.xlsm").Worksheets("111") .Range(.Cells(intStartRow, intTempStartCol), .Cells.SpecialCells(xlLastCell)).Clear 'очищаем место .Cells(intStartRow, intTempStartCol + 20).Formula = ">" & Workbooks("ччч.xlsm").Worksheets("222").Range("A4").Value 'тут первый критерий, НО не работает даже он один .Columns("A:Z").AdvancedFilter xlFilterCopy, .Range(.Cells(intStartRow - 1, intTempStartCol), .Cells(intStartRow, intTempStartCol + 25)), .Cells(intTempStartRow, intTempStartCol), True 'собственно куда копируем End With
[/vba]
Где ошибка??? С числами и текстом проблем нет!
[admin]Оформляйте коды тегами![/admin]
И снова доброго времени суток. Точно сегодня не мой день. Итак, есть база, я пишу код, который должен скопировать результат фильтра в новое место через xlFilterCopy. Операции идут с датами, мне нужно сортировать таблицу по двум критериям, например, >01.10.2012 и <01.02.2013. Как записать условие. Вот мой код [vba]
Код
With Workbooks("ччч.xlsm").Worksheets("111") .Range(.Cells(intStartRow, intTempStartCol), .Cells.SpecialCells(xlLastCell)).Clear 'очищаем место .Cells(intStartRow, intTempStartCol + 20).Formula = ">" & Workbooks("ччч.xlsm").Worksheets("222").Range("A4").Value 'тут первый критерий, НО не работает даже он один .Columns("A:Z").AdvancedFilter xlFilterCopy, .Range(.Cells(intStartRow - 1, intTempStartCol), .Cells(intStartRow, intTempStartCol + 25)), .Cells(intTempStartRow, intTempStartCol), True 'собственно куда копируем End With
тааак, есть над чем подумать... А нельзя сделать условие в одной ячейки с оператором AND? Например, >=01.01.2012 AND <=01.01.2013 или это уже анриал?
тааак, есть над чем подумать... А нельзя сделать условие в одной ячейки с оператором AND? Например, >=01.01.2012 AND <=01.01.2013 или это уже анриал?Niff-Nif
Niff-Nif, общий смысл в том, что, как учит ikki, при построении условия надо переходить от дат к целым числам. Собственно, и переходить-то особо не надо - они таковыми и являются в своей внутренней ипостаси. Иначе будете "под чужую песню и смеюсь, и плачу" - танцы под чужестранный американский бубен.
Niff-Nif, общий смысл в том, что, как учит ikki, при построении условия надо переходить от дат к целым числам. Собственно, и переходить-то особо не надо - они таковыми и являются в своей внутренней ипостаси. Иначе будете "под чужую песню и смеюсь, и плачу" - танцы под чужестранный американский бубен.Gustav
исправляя ваши ошибки, совершенные по методике "вроде" я, честно говоря, со счету сбился.
"найдите 10 отличий" сами.
у меня в 2002-м Excel вот такой код отработал правильно:
[vba]
Код
Private Sub CommandButton1_Click() If Not Worksheets("Выборка").Range("B4").Value = "" And Not Worksheets("Выборка").Range("C4").Value = "" Then With Worksheets("Список") .Range(.Cells(intStartRow, intTempStartCol), .Cells.SpecialCells(xlLastCell)).Clear .Range("AF2").Formula = "=and(U2>=" & CLng(ThisWorkbook.Worksheets("Выборка").Range("B4").Value) _ & ", U2<=" & CLng(ThisWorkbook.Worksheets("Выборка").Range("c4").Value) & ")" .Range("A1:Z76").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=.Range( _ "AF1:AF2"), CopyToRange:=.Range("AN1:BM1"), Unique:=False End With End If End Sub
[/vba]
пс. на будущее -"конвертируя" файл в xls, заодно уж конвертируйте и код, раз вы в нем указываете имя файла с расширением.
Цитата (Niff-Nif)
вроде, все сделал как учите
исправляя ваши ошибки, совершенные по методике "вроде" я, честно говоря, со счету сбился.
"найдите 10 отличий" сами.
у меня в 2002-м Excel вот такой код отработал правильно:
[vba]
Код
Private Sub CommandButton1_Click() If Not Worksheets("Выборка").Range("B4").Value = "" And Not Worksheets("Выборка").Range("C4").Value = "" Then With Worksheets("Список") .Range(.Cells(intStartRow, intTempStartCol), .Cells.SpecialCells(xlLastCell)).Clear .Range("AF2").Formula = "=and(U2>=" & CLng(ThisWorkbook.Worksheets("Выборка").Range("B4").Value) _ & ", U2<=" & CLng(ThisWorkbook.Worksheets("Выборка").Range("c4").Value) & ")" .Range("A1:Z76").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=.Range( _ "AF1:AF2"), CopyToRange:=.Range("AN1:BM1"), Unique:=False End With End If End Sub
[/vba]
пс. на будущее -"конвертируя" файл в xls, заодно уж конвертируйте и код, раз вы в нем указываете имя файла с расширением.ikki
помощь по Excel и VBA ikki@fxmail.ru, icq 592842413, skype alex.ikki
пс. на будущее -"конвертируя" файл в xls, заодно уж конвертируйте и код, раз вы в нем указываете имя файла с расширением.
Согласен, понадеялся на то что там само по велению щучьему все произойдет...
Теперь о смешном, в 2003 у меня тоже все работает, а вот в 2007 тот же код не хочет работать, при том что критерий отображается так же как и в 2003. Вот код 2007 [vba]
Код
Private Sub CommandButton1_Click() If Not Workbooks("Список.xlsm").Worksheets("Выборка").Range("B4").Value = "" And Not Workbooks("Список.xlsm").Worksheets("Выборка").Range("C4").Value = "" Then With Workbooks("Список.xlsm").Worksheets("Список") .Range(.Cells(intStartRow, intTempStartCol), .Cells.SpecialCells(xlLastCell)).Clear .Range("AF2").Formula = "=and(U2>=" & CLng(Workbooks("Список.xlsm").Worksheets("Выборка").Range("B4").Value) _ & ", U2<=" & CLng(Workbooks("Список.xlsm").Worksheets("Выборка").Range("C4").Value) & ")" .Range("A:Z").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _ "AF1:AF2"), CopyToRange:=.Range("AN1:BM1"), Unique:=False End With End If End Sub
[/vba] и в 2003 и в 2007 критерий отображается как
Код
=И(U2>=41192; U2<=41275)
но в 2003 работает, а в 2007 нет
P.S. Надеюсь теперь у Serg_007 нет притензий к оформлению. [admin]К оформлению - нет. А вот к соблюдениям правил - есть[/admin]
Цитата (ikki)
пс. на будущее -"конвертируя" файл в xls, заодно уж конвертируйте и код, раз вы в нем указываете имя файла с расширением.
Согласен, понадеялся на то что там само по велению щучьему все произойдет...
Теперь о смешном, в 2003 у меня тоже все работает, а вот в 2007 тот же код не хочет работать, при том что критерий отображается так же как и в 2003. Вот код 2007 [vba]
Код
Private Sub CommandButton1_Click() If Not Workbooks("Список.xlsm").Worksheets("Выборка").Range("B4").Value = "" And Not Workbooks("Список.xlsm").Worksheets("Выборка").Range("C4").Value = "" Then With Workbooks("Список.xlsm").Worksheets("Список") .Range(.Cells(intStartRow, intTempStartCol), .Cells.SpecialCells(xlLastCell)).Clear .Range("AF2").Formula = "=and(U2>=" & CLng(Workbooks("Список.xlsm").Worksheets("Выборка").Range("B4").Value) _ & ", U2<=" & CLng(Workbooks("Список.xlsm").Worksheets("Выборка").Range("C4").Value) & ")" .Range("A:Z").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _ "AF1:AF2"), CopyToRange:=.Range("AN1:BM1"), Unique:=False End With End If End Sub
[/vba] и в 2003 и в 2007 критерий отображается как
Код
=И(U2>=41192; U2<=41275)
но в 2003 работает, а в 2007 нет
P.S. Надеюсь теперь у Serg_007 нет притензий к оформлению. [admin]К оформлению - нет. А вот к соблюдениям правил - есть[/admin]Niff-Nif
Niff-Nif, сравните коды, поищите отсутствующую точку в своём коде и добавьте её. может, и заработает... но гарантировать не могу - нет у меня подопытного 2007-го под рукой.
Niff-Nif, сравните коды, поищите отсутствующую точку в своём коде и добавьте её. может, и заработает... но гарантировать не могу - нет у меня подопытного 2007-го под рукой.ikki
помощь по Excel и VBA ikki@fxmail.ru, icq 592842413, skype alex.ikki
Niff-Nif, сравните коды, поищите отсутствующую точку в своём коде и добавьте её. может, и заработает... но гарантировать не могу - нет у меня подопытного 2007-го под рукой.
Ну вот ведь зараза... одна маленькая точка а убила половину дня Еще раз спасибо. Как только смогу плюсовать, ткну в плюс.
Цитата (ikki)
Niff-Nif, сравните коды, поищите отсутствующую точку в своём коде и добавьте её. может, и заработает... но гарантировать не могу - нет у меня подопытного 2007-го под рукой.
Ну вот ведь зараза... одна маленькая точка а убила половину дня Еще раз спасибо. Как только смогу плюсовать, ткну в плюс.Niff-Nif