Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ячейки = empty / 17 сообщений из 17, страница 1 из 1
12.08.2008, 06:50
    #35482245
Nomad87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ячейки = empty
народ, утро видимо - самое трудное время дня ...
уже час бьюсь с тем чтобы выделить столбец G и убрать 0 ... (тобишь помоему присвоить ячейкам значение empty) подмогните плиз)
...
Рейтинг: 0 / 0
12.08.2008, 07:22
    #35482261
Nomad87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ячейки = empty
понимаю что скорее всего это безграмотно абсолютно .... но ничего другого в голову не идет :((
Код: plaintext
1.
2.
3.
4.
5.
6.
Cells.Range("A1", "H100").Select
With Selection
If .Value = "0" Then
Cells.Value.Empty
End If
End With

как правильно?
...
Рейтинг: 0 / 0
12.08.2008, 08:28
    #35482288
birk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ячейки = empty
Код: plaintext
1.
2.
For i =  1  To Range("G65536").End(xlUp).Row
If Cells(i,  7 ) =  0  Then Cells(i,  7 ) = Empty
Next i
...
Рейтинг: 0 / 0
12.08.2008, 08:47
    #35482301
Nomad87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ячейки = empty
странно .... но 0 почему то в столбце G остаются :((
...
Рейтинг: 0 / 0
12.08.2008, 08:53
    #35482307
birk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ячейки = empty
мб так?

Код: plaintext
1.
2.
For i =  1  To Range("G65536").End(xlUp).Row
If Range("G" & i) =  0  Then Range("G" & i).Clear
Next i
...
Рейтинг: 0 / 0
12.08.2008, 09:03
    #35482322
Nomad87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ячейки = empty
неа :( там у меня просто одна ячейка объединенная
G(i+11 ) и он говорит что не может изменить значение объединенной ячейки
...
Рейтинг: 0 / 0
12.08.2008, 09:08
    #35482327
Nomad87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ячейки = empty
получается забавно на самом деле , он вроде когда формирует страницы - он 0 убирает, а когда смотрю сохраненный документ - нули опять появляются :((
...
Рейтинг: 0 / 0
12.08.2008, 09:31
    #35482354
Nomad87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ячейки = empty
кстати этот косяк получается со всем , после того как я формирую свою книгу, и вношу изменения (банально если в конце перед закрытием и сохранением меняю цвет ячейки) после открытия сохраненного документа - изменения не сохраняются :((
...
Рейтинг: 0 / 0
12.08.2008, 09:41
    #35482366
birk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ячейки = empty
скинь пример
...
Рейтинг: 0 / 0
12.08.2008, 09:49
    #35482380
Nomad87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ячейки = empty
ну сам пример - длинный оч , я скину концовку, где собственно все и происходит:
Код: 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.
'---  подсчет итоговых значений
With ActiveWorkbook
   For i = LBound(arMonth,  1 ) To UBound(arMonth,  1 )
        For j =  0  To count -  1 
            With Sheets(i).Range("G" & CStr(j *  11  +  3 ))
                .FormulaR1C1 = "=RC[-2]-RC[-1]"
                .AutoFill Destination:=.Resize( 7 ,  1 ) _
                    , Type:=xlFillCopy 
            End With
            With Sheets(i).Range("E" & CStr(j *  11  +  9 ))
                .FormulaR1C1 = "=SUM(R[-6]C:R[-1]C)"
                .AutoFill Destination:=.Resize( 1 ,  2 ) _
                    , Type:=xlFillCopy
            End With
For b =  1  To Range("G65536").End(xlUp).Row
If Range("G" & b) =  0  Then Range("G" & b) = Empty
Next b
Range("G" & CStr(j *  11  +  9 )).Select
    With Selection.Interior
        .ColorIndex =  46 
        .Pattern = xlSolid
    End With
   Next
   Next
End With
Application.DisplayAlerts = False
    wbNew.Worksheets("MustRemoved").Delete
    Application.ScreenUpdating = True
    ActiveWorkbook.Close savechanges:=True, Filename:=nameOut  ' присваивается ранее, при формировании, для того чтобы его использовать в теле проги
    
    Application.DisplayAlerts = True
    
    ThisWorkbook.Activate
  MsgBox "формирование завершено", vbOKOnly + vbInformation, "Сообщение"
Код: plaintext

и вопрос ещё такой, почему то когда выполняется формула (самая первая (вычитание)) то происходит замена не только значений ячеек, но и их цвета (они у меня были выделены, для отчета)
...
Рейтинг: 0 / 0
12.08.2008, 10:14
    #35482431
ДмиДми
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ячейки = empty
Nomad87
Код: plaintext
1.
2.
3.
4.
5.
6.
Cells.Range("A1", "H100").Select
With Selection
If .Value = "0" Then
Cells.Value.Empty
End If
End With

Nomad87там у меня просто одна ячейка объединенная
Возможно (лень проверять) сработает
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Sub ClearZeroes()
    Dim c As Range

    For Each c In Range("A1", "H100").Cells
        If c.Formula = "0" Then
            If c.MergeCells Then
                If c.MergeArea.Cells( 1 ).Address = c.Address _
                Then c.ClearContents
            Else
                c.ClearContents
            End If
        End If
    Next
End Sub
...
Рейтинг: 0 / 0
12.08.2008, 10:21
    #35482450
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ячейки = empty
> Автор: Nomad87

По поводу нулей в книге, есть настройка в Екселе - показывать нулевые значения
ActiveWindow.DisplayZeros = False
??

> и вопрос ещё такой, почему то когда выполняется формула (самая первая (вычитание))
> то происходит замена не только значений ячеек, но и их цвета (они у меня были выделены,
> для отчета)

Потому что указан параметр полного копирования:
Type:=xlFillCopy


--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
12.08.2008, 11:29
    #35482578
Nomad87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ячейки = empty
ДмиДми, оно работает но тока естественно на одной странице, попытался воткнуть Sheets(i), проигнорило меня ...
Код: 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.
With ActiveWorkbook
   For i = LBound(arMonth,  1 ) To UBound(arMonth,  1 )
        For j =  0  To count -  1 
            With Sheets(i).Range("G" & CStr(j *  11  +  3 ))
                .FormulaR1C1 = "=RC[-2]-RC[-1]"
                .AutoFill Destination:=.Resize( 7 ,  1 ) _
                , Type:=xlFillCopy 
            End With
            With Sheets(i).Range("E" & CStr(j *  11  +  9 ))
                .FormulaR1C1 = "=SUM(R[-6]C:R[-1]C)"
                .AutoFill Destination:=.Resize( 1 ,  2 ) _
                   , Type:=xlFillCopy
                   
            End With
For b =  1  To Range("G65536").End(xlUp).Row
If Range("G" & b) =  0  Then Range("G" & b) = Empty
Next b
Range("G" & CStr(j *  11  +  9 )).Select
    With Selection.Interior
        .ColorIndex =  46 
        .Pattern = xlSolid
    End With
Dim c As Range
    For Each c In Sheets(i).Range("A1", "H100").Cells
        If c.Formula = "0" Then
            If c.MergeCells Then
                If c.MergeArea.Cells( 1 ).Address = c.Address _
                Then c.ClearContents
            Else
                c.ClearContents
            End If
        End If
    Next
    
    
   Next
   Next
End With
Игорь Горбонос - а как это поправить, как скопировать, чтобы не менял цвет ?
...
Рейтинг: 0 / 0
12.08.2008, 11:37
    #35482602
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ячейки = empty
> Автор: Nomad87
> Игорь Горбонос - а как это поправить, как скопировать, чтобы не менял цвет ?


Посмотреть справку по AutoFill и внимательно изучить enum XlAutoFillType ;)

--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
12.08.2008, 19:20
    #35483956
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ячейки = empty
With ActiveWorkbook
For i = LBound(arMonth, 1) To UBound(arMonth, 1)
For j = 0 To count - 1
With Sheets(i). Range("G" & CStr(j * 11 + 3))
.FormulaR1C1 = "=RC[-2]-RC[-1]"
.AutoFill Destination:=.Resize(7, 1) _
, Type:=xlFillCopy
End With
With Sheets(i). Range("E" & CStr(j * 11 + 9))
.FormulaR1C1 = "=SUM(R[-6]C:R[-1]C)"
.AutoFill Destination:=.Resize(1, 2) _
, Type:=xlFillCopy

End With
For b = 1 To Range("G65536").End(xlUp).Row
If Range("G" & b) = 0 Then Range("G" & b) = Empty
Next b

Обращаю ваше внимание на выделенные жирным участки. Если вы вставляете конструкцию With, то используйте же ее. Посмотрите: ваши все Range, Sheets сами по себе, а With само по себе.

Кроме этого, зачем вы в цикле "For b" 65536 раз вычисляете вашу последнюю Row? Смысл? Вы так уверены, что VBA вам это оптимизирует?

Далее, вот это: Range("G" & b) = 0 лучше написать так: Range("G" & b).Value = 0. Иногда это может играть роль.

Далее, если вы начали использовать CStr: CStr(j * 11 + 3), то так и продолжайте: Range("G" & b) замените наRange("G" & CStr(b))


Успехов

Влад
...
Рейтинг: 0 / 0
12.08.2008, 19:23
    #35483959
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ячейки = empty
.... Кроме этого, зачем вы в цикле "For b" 65536 раз ....

Там, конечно, не 65536 раз, но все равно, вычислите вашу строку 1 раз, и все.

Успехов.
...
Рейтинг: 0 / 0
13.08.2008, 06:15
    #35484283
Nomad87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ячейки = empty
благодарю, обязательно поправлю так как вы сказали, просто недавно совсем познакомился с вба .. поэтому такие косяячки небольшие ...
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ячейки = empty / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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