Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 След.
Версия 2023.1: зависает Excel, если открыть файл и сразу же закрыть его
 
Может кто-нибудь поделиться версией 2022.3?
Версия 2023.1: зависает Excel, если открыть файл и сразу же закрыть его
 
Добрый день.

В версии 2023.1 зависает Excel, если открыть файл и сразу же закрыть его. Долго думает и выдает: "Microsoft Excel is waiting for another application to complete an OLE action".
Офис 365. Проблема в PLEX, т.к. если его выключить, проблема отсутствует.

Где можно скачать версию 2022.3?
Изменено: Евгений - 06.10.2023 20:28:33
(VBA) Применение Interior.Color на диапазон ячеек массивом, Есть ли возможность в VBA вставить свойство на диапазон ячеек, не используя циклы
 
Добрый вечер, уважаемые знатоки!

Есть база данных в Access:
IDColorNameColor
1Чёрный0
2Жёлтый65535
3Красный5296274
4Зелёный255
5Синий12611584
И есть код VBA, где я в двухмерный массив загружаю название цвета и сам цвет:
Код
Sub GetAccessData()Application.ScreenUpdating = False

Dim RS As ADODB.Recordset
Dim CON As ADODB.Connection
Dim arr, i%
       
Set RS = New ADODB.Recordset
Set CON = New ADODB.Connection
CON.Open "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Access\test.accdb"
Set RS.ActiveConnection = CON
RS.CursorLocation = adUseClient
    
    'Очистка
    Cells.ClearContents
    
    'Основная часть
    RS.Open "SELECT ColorName, Color FROM tbl_test"
    arr = RS.GetRows(RS.RecordCount)
    [A1].Resize(UBound(arr, 2) + 1, 1) = Application.WorksheetFunction.Transpose(arr)
    '?????
    
RS.Close: CON.Close
Set RS = Nothing: Set CON = Nothing

Application.ScreenUpdating = True
End Sub
Вот там, где стоят 5 знаков вопроса, хотел вставить код, который будет из массива arr (1 to 5, 2) вставлять свойство Interior.Color в ячейки, начиная с [A1], равный значению каждого элемента из этого массива.

Есть ли такая возможность в VBA? Или нужно обязательно циклы использовать?
Обработка ошибок с двумя разными метками (VBA), Не срабатывает обработка
 
Спасибо за подробное объяснение, всё работает :)
А то у Уокенбаха такого не написано :)
Обработка ошибок с двумя разными метками (VBA), Не срабатывает обработка
 
Задам немного другой вопрос: как сделать так, что в момент возникновения ошибки в цикле For у меня останавливалось выполнение кода и переходило на Next?
Обработка ошибок с двумя разными метками (VBA), Не срабатывает обработка
 
1. Может я неправильно представлял работу обработчика, но зачем делать Resume, если есть GoTo?
2. Я для этого вставил условие If Err.Number > 0 Then ... End If
Обработка ошибок с двумя разными метками (VBA), Не срабатывает обработка
 
Т.е. выполняется условие, а только потом проверяется наличие ошибок, а не в момент её возникновения?
Так работает, спасибо! Только что делать, если будет так:
Код
Sub test()
    Dim i%, x#, j%
    [B:B].ClearContents
    On Error Resume Next
    For i = 1 To 10
        If Cells(i, 1).Value > 3 Then
            If Err Then Cells(i, 2).Value = Err.Description: Err.Clear: Exit Sub
            x = 1 / 0
            j = "test"
            If Err Then Cells(i, 2).Value = Err.Description: Err.Clear:
        End If
    Next
End Sub
Err.Description будет выдавать последнюю ошибку, а не первую.

А почему в моём варианте возникает ошибка? :(
Вроде всё верно написано, но обработка не срабатывает...
Обработка ошибок с двумя разными метками (VBA), Не срабатывает обработка
 
Добрый день!

Необходимо построить обработку ошибок с двумя разными метками выхода (всё в цикле):
1. Если возникает ошибка до условия If, то просто переходим на End Sub.
2. Если возникает ошибка в условии If, то переходим на Netx.

Прошу помочь разобраться почему на срабатывает макрос :). Спасибо.

Грузить файлы запрещено в организации, поэтому опишу пример.
Есть книга со значениями на Листе1 [A1:A5]={1;2;3;4;5} и макрос:
Код
Sub test()
Dim i%, x#

[B:B].ClearContents

For i = 1 To 10

    On Error GoTo errH1
        If Cells(i, 1).Value > 3 Then
            On Error GoTo errH2
            x = 1 / 0
        End If
    
'Если ошибка в условии цикла, значит Netx
errH2:
If Err.Number > 0 Then
    Cells(i, 2).Value = "Ошибка 2"
    Err.Clear
End If

Next

'Если ошибка перед условием цикла, значит End
errH1:
If Err.Number > 0 Then
    Cells(i, 2).Value = "Ошибка 1"
End If


End Sub
Не удаляются стили, В названии есть, а стилей нет
 
Добрый вечер.

После очистки от ненужных стилей в книге остались стили, которые не удаляются (даже вручную). При попытке их применить выскакивает сообщение "Стиль '1' не найден". Есть ли возможность просто удалить их из списка, не прибегая к удалению styles.xml?

И еще один вопрос: почему после прогонки макросом по удалению неиспользуемых стилей слетели некоторые ячейки с процентным форматом? Пользовался PLEX.
Изменено: Евгений - 16.02.2016 23:21:01
Пропорциональная амортизация (от оставшегося объёма), Написал слишком сложный и не гибкий алгоритм...
 
Долгосрочной планирование... От бухгалтеров перейдет к плановикам :)

Да, действительно, усложнил немного. Переписал на :
Код
=СЧЁТЕСЛИМН($G$3:$P$3;">"&C7;$G$4:$P$4;">0")+1

Спасибо.
Пропорциональная амортизация (от оставшегося объёма), Написал слишком сложный и не гибкий алгоритм...
 
Думаю это будет в рамках погрешности :)

Поставил формулу в столбец со сроком:
Код
=СУММ(($G$3:$P$3>$C7)*($G$4:$P$4>0))+1
Пропорциональная амортизация (от оставшегося объёма), Написал слишком сложный и не гибкий алгоритм...
 
Спасибо, это немного облегчит формат :)

Пока оставлю так, т.к. это лучше моего решения. Но если вдруг найду способ уместить всё в одну строку с возможностью добавляения ОС в любой год без добавления строки, то отпишусь :)
Пропорциональная амортизация (от оставшегося объёма), Написал слишком сложный и не гибкий алгоритм...
 
Кнопка цитирования не для ответа

Вчера я пытался спросить на формуе про часть формулы, чтобы мне намекнули и я дальше всё сам придумал: http://planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=74569&TITLE_SEO=74569-dobavlenie-diapazona-summirovaniya-s-opredelyennogo-mesta
Мне намекнули, но я так и не смогу написать формулу, где бы не была задейстована предыдушая ячейка...

В моём примере как раз 3 ОС с разным периодом амортизации. ОС1 с 2017 по 2025г. (объём 27566) итд.

Тут главный вопрос скорее не в количестве строк (хотя их тоже хотелось бы оптимизировать), а в возможности добавлять ОС. Т.е. если я введу еще одно ОС, то мне нужно будет добавлять блок из 3х строк, а это неудобно. А что если у меня будет не 3 ОС, а 20...  8-0
Пропорциональная амортизация (от оставшегося объёма), Написал слишком сложный и не гибкий алгоритм...
 
Цитата
vikttur написал:
А для примера стоило показать, на какой период считать амортизацию. Если еще и для каждого ОС свой срок, то не ищите сложностей.
Период может быть различный, всё зависит от типа плана предприятия. Может быть 2016-2022, а может 2016-2036. В люблм случае он будет варьироваться от года ввода ОС до последнего года с числом>0 по объёму.
Изменено: Евгений - 14.02.2016 16:58:13
Пропорциональная амортизация (от оставшегося объёма), Написал слишком сложный и не гибкий алгоритм...
 
В макрос не хотелось бы... Думаю, что функцию не проблема будет написать, только вот у пользователей не у всех будет по умолчанию включены макросы. Да бухгалтера некоторые вряд ли поймут, как их включить...
Цитата
vikttur написал: Почему амортизация считается только 2025 года? Дальше - катаклизм?
Это пример :)
Пропорциональная амортизация (от оставшегося объёма), Написал слишком сложный и не гибкий алгоритм...
 
Это не совсем то. Если протянуть эту формулу дальше она не будет работать, т.к. "объём" и "база" ссылаются на предыдущее своё значение (а эти значения совсем разные). Поэтому мне пришлось разделить на 2 строки их...
Пропорциональная амортизация (от оставшегося объёма), Написал слишком сложный и не гибкий алгоритм...
 
Добрый день!

Появилась необходимость рассчитать амортизацю пропорционально объёму текущего года на остаток всего объёма (пример во вложении).
Например, вводится в 2017г. основное средство (ОС) на сумму 500 т.р. Оставшийся объём для этого ОС считается как сумма 2017-2025гг (27566). Далее, ежегодно считается пропорция: 500т.р./27566*объём текущего года.
Я написал алгоритм и кажется всё работает. Но у него есть 2 больших минуса: он поддеживает только 3 ввода ОС, для расчёта амортизации одного ОС нужно аж 3 строки в Excel.

Хотел бы спросить: существует ли способы упрощения данного алгоритма?

Заранее благодарю за помощь.
Добавление диапазона суммирования с определённого места, Не получается написать формулу так, чтобы её можно было протянуть на все ячейки
 
Еще небольшой вопрос: есть ли возможность получить результат без использования ссылки на предыдущий год в формуле и без доп.строк?
Добавление диапазона суммирования с определённого места, Не получается написать формулу так, чтобы её можно было протянуть на все ячейки
 
Да, имеено то. Формула оказалась простой, жаль, что не сообразил сам :)
Всем спасибо!
Добавление диапазона суммирования с определённого места, Не получается написать формулу так, чтобы её можно было протянуть на все ячейки
 
Добрый день.

Помогите, пожалуйста, сообразить как можно написать формулу (не VBA).
Во вложении пример.

Суть в том, что есть объём продукции по годам. Есть флаг, который увеличивает норму до конца периода. Когда вводится флаг, в формулу СУММ добавляется еще одно значение диапазона с момента ввода до конца периода. И так каждый раз.

Спасибо.
Не работает Replace
 
Спасибо, этот вариант короче :)
Не работает Replace
 
Решил так:


Код
Sub asd()
Dim Cell As Range
Application.ScreenUpdating = False
    Selection.SpecialCells(xlCellTypeConstants, 23).Select
    For Each Cell In Selection.Cells
     Cell.Activate
     ActiveCell.FormulaLocal = Replace(ActiveCell, "ё", "=")
    Next
Application.ScreenUpdating = True
End Sub
Изменено: Евгений - 12.12.2013 18:12:33
Не работает Replace
 
Спасибо.

Для одиночно ячейки работает. Но формула для всего листа стирает все формулы и значения :)
Не работает Replace
 
Если я делаю так, то не работает:
Код
Sub TestReplace()
    x = Replace(ActiveCell, "ё", "="  
End Sub
Изменено: Евгений - 27.12.2013 20:05:38
Не работает Replace
 
Добрый день.

Есть такая строка:
ёЕСЛИ(K$2<ё($D16+$D17-1);ЕСЛИ(СУММ($I9:K9)+$D22<ё$D18;K9;ЕСЛИ(СУММ($I9:K9)+$D22<ё$D18;$D18-СУММ($I9:K9)+$D22;0));0)*ЕСЛИ(ВПР($B13;Fil!$C$12:$F$28;3)ёВПР($B13;Fil!$C$12:$F$28;4);ЕСЛИ($D21<ё0,05;1  ;)  ;1)*ЕСЛИ(K$2<$D15+$D17;1  ;)

Пытаюсь заменить "ё" на "="  методом cells.replace, но не получается  :(  
Подскажите, пожалуйста, где я ошибся? Даже макрорекордер не может повторить такое... И ошибок нет.

Спасибо.
Изменено: Евгений - 12.12.2013 16:59:26
Не могу найти {=TABLE()}
 
Да, спасибо. Я уже утром тоже нашел :)
Хотел отписать, но Вы опередили меня :)
Не могу найти {=TABLE()}
 
Книгу отправить, к сожалению, не могу, т.к. блокируется исходящий траффик.
Нет, имя там примерно такое: {=TABLE(U6, D 8)  }. x и y я для примера вставил.
В диспетчере имен нет ничего такого.
Изменено: Евгений - 06.11.2013 20:28:20
Не могу найти {=TABLE()}
 
Нет. Макросов не нашел.
Не могу найти {=TABLE()}
 
Нет.
Это какая-то стандартная функция экселя. В надстройках ничего лишнего не стоит...
Не могу найти {=TABLE()}
 
Добрый день.
Столкнулся с такой функцией: {=TABLE(x, y)}
Написана на листе екселя, не является формулой, а простой массив с данными.
Как-то давно я уже находил ответ, что же это за функция, но никак не могу вспомнить сейчас...

Подскажите, пожалуйста.
Заранее благодарю.
Страницы: 1 2 3 4 След.
Наверх