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

Страницы: 1
Версия 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), Не срабатывает обработка
 
Добрый день!

Необходимо построить обработку ошибок с двумя разными метками выхода (всё в цикле):
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
Пропорциональная амортизация (от оставшегося объёма), Написал слишком сложный и не гибкий алгоритм...
 
Добрый день!

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

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

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

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

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

Спасибо.
Не работает 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(x, y)}
Написана на листе екселя, не является формулой, а простой массив с данными.
Как-то давно я уже находил ответ, что же это за функция, но никак не могу вспомнить сейчас...

Подскажите, пожалуйста.
Заранее благодарю.
Сохранение данных Userform при закрытии книги
 
Добрый вечер.
Делаю книгу, на каждом листе которой будет распологаться форма с определенными checkbox.
Есть ли возможность сохранить данные формы при выходе?

Если нет простых способов, то я попытаюсь при каждом изменении чекбокса в ячейку A1 записывать данные, типа: 1,0,1,1,1,0,1 итд, где 1 - чекбокс true, 0 - false. И при открытии книги или активации листа будет считываться эта строка и выставлять нужные значения в чекбоксы.
Может есть более простой способ? Поделитесь, пожалуйста. Буду признателен.
Спасибо.
VBA: Узнать направление массива
 
Добрый вечер.

Есть выделенный диапазон. Как сделать так, чтобы если выделен диапазон в столбец (например, A1:A10), то x=1?

Спасибо.
Function с возможностью преобразования в значение
 
Доброе утро.

Есть функция:
Function ssval (x as Range, y as Byte)
...
ssval = z
End Function

Как сделать так, чтобы If y = 1 Then в ячейке сохранялось значение, а не формула?
Спасибо.
Function формула с другой книги, Как узнать положение диапазона?
 
Добрый день.

Написал фнукцию типа Function getit (x as Range).

Прекрасно работает на листе, где распаложены данные. А вот если с другого листа подтягивать, то 0 выходит...
Как можно узнать положение x (range): имя книги, имя листа?
Спасибо.
Listbox проверка выбора
 
Добрый день.  
Как сделать проверку, выбрано ли какое-либо значение из списка Listbox1?  
Если да Msgbox "Выбрано"  
Если нет Msgbox "Надо выбрать"  
 
Спасибо.
Как подождать полной загрузки файла?
 
Доброе утро.  
 
Возникла такая проблема: макрос открывает файл и грузит из него список листов, затем по этому списку листов грузит данные. Но список листов он грузить не успевает, т.к. файл, который открывает макрос очень большой (содержит кучу других макросов и графиков), поэтому он не может загрузить данные...  
Что можно сделать, чтобы файл сначала полностью грузился, а потом только макрос выполнялся?  
Либо возможно ли сделать так, чтобы без открытия файла собирались данные?  
 
Спасибо.
Макрос работает только в break mode
 
Здравствуйте. Подскажите, пожалуйста, почему макрос работает только через F8. Через F5 выходит ошибка: "Приложению Ms Excel не удается вставить данные".  
 
Sub macros_new()  
 
For i2 = 1 To 3  
For i = 1 To 72  
 
Worksheets("Start").Activate  
Cells(i + 34, 6).Copy  
Worksheets(chr34 & Cells(33, i2) & chr34).Select  
Cells(i, 1).Select  
ActiveSheet.Paste Link:=True  
 
 
 
Next i  
Next i2  
 
End Sub
Worksheet_SelectionChange не работает при объединении ячеек
 
Добрый день. Вопрос такого характера. Есть макрос:  
 
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)  
rRow = Cells(1000, 4).End(xlUp).Row  
If Target.Row >= 4 And Target.Row <= rRow And Target.Column = 2 Then  
If Target.Text = "Добавить файл" Then  
fName = Application.GetOpenFilename  
If fName <> "False" Then _  
ActiveSheet.Hyperlinks.Add Anchor:=Target, Address:=fName, TextToDisplay:=fName  
Else  
Exit Sub  
End If  
End If  
End Sub  
 
Он прекрасно работает во 2 столбце в любой ячейке указанного диапазона. Но если объединить строки (например две), то он уже не работает... Как это можно исправить?  
Спасибо.
Возможность гиперссылки
 
Возможно ли в ячейку, например, А3 вставить гиперссылку с именем "Открыть файл" на условие Application.GetOpenFilename, а при выборе файла данная гиперссылка заменялась бы на нормальную?  
Или может есть другой способ? Без применения кнопок?
Выход из процедуры
 
Добрый день. Подскажите, пожалуйста, как можно сделать выход из процедуры, если файл не выбран. Вот мой нерабочий вариант:  
 
Sub load_file()  
Dim fRow, getF  
getF = Application.GetOpenFilename  
fRow = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row  
Set FSO = CreateObject("Scripting.FileSystemObject")  
Set File = FSO.GetFile(getF)  
If getF = "" Then Exit Sub ------ Тут не работает... ((  
       Cells(fRow, 5) = File.Name  
       Cells(fRow, 6) = File.DateCreated  
Exit Sub  
 
 
Спасибо.
Свойства файла (макрос)
 
Пытаюсь написать макрос для извлечения свойств файла. Получилось так:  
 
Sub load_file()  
Set FSO = CreateObject("Scripting.FileSystemObject")  
Set File = FSO.GetFile(Application.GetOpenFilename)  
Cells(4, 4) = File.Name  
Cells(4, 5) = File.DateCreated  
Cells(4, 6) = File. --- тут не могу сделать автора файла  
Cells(4, 7) = File.DateLastModified  
Cells(4, 8) = File. --- тут не могу сделать кто последний раз менял файл  
Cells(4, 9) = File  
End Sub
Полный путь до файла
 
Здравствуйте. Подскажите, пожалуйста, как вывести полный путь до файла в ячейку A5, например,при условии:  
1. Создал макрос:  
file = Application.GetOpenFilename(MultiSelect:=True)  
2. Сделал кнопку на макрос.  
 
Т.е. при выборе файла в ячейке A5 должен прописываться полный путь до него. Файл также может лежать на сетевом диске V:\Цены\price.xls (но чтобы не было: \\company-01\Mark\Цены\price.xls).  
Спасибо.
Сумма макросом
 
Добрый день. Подскажите, пожалуйста, как макросом сложить текущую ячейку с предыдущей в диапазоне, например A5:A40?  
Спасибо.
Смещение ряда в диаграмме
 
Здравствуйте. Как можно поместить Ряд4 между двумя столбцами? Спасибо.
Сложить 2 ссылки в одной строке
 
Здравствуйте.  
Имеется диапазон от A до Z в "Книга1" с сылками на "Книга2" в строке 1.  
Имеется диапазон от A до Z в "Книга1" с сылками на "Книга3" в строке 2.  
Как можно в строке 3 быстро сложить эти 2 диапазона также ссылками, а не формулами (типа =A1+A2). А именно:  
A1: ='c:\[Книга1.xls]Лист1'!G$94
A2: ='c:\[Книга2.xls]Лист1'!F$4
В A3 должно быть: ='c:\[Книга1.xls]Лист1'!G$94+'c:\[Книга2.xls]Лист1'!F$4.
 
В ссылках выделение я делал по видимым ячейкам, так что просто сложить 1 столбец и протянуть не получится. Прошу помощи.  
Спасибо.
Закраска столбцов диаграммы в зависимости от условия
 
Здравствуйте. Помогите, пожалуйста, написать макрос, где бы при изменении данных менялись цвета столбцов.  
 
Примерный макрос:  
Const rAd = "C7:C18"  
Sub colour()  
For Each ... In Range(rAd)  
Если C7<0 значит красный  
Если C7>0 значит зеленый  
Если C7=0 значит пропускать  
Next  
End Sub  
 
Дело в том, что один столбец может состоять из нескольких столбиков. Их все нужно закрасить в соответствующий данным цвет.  
 
Спасибо.
Интересный знак
 
Что за знак "&"  и зачем его применяют в формулах?  
По поиску не нашел ничего...
Автоматическое распределение сумм
 
Здравствуйте. Подскажите, пожалуйста, как в приведенном примере сделать автоматическое распределение сумм? Даны числа 10, 15, 25. Сумма по-горизонтали и вертикали равны, но заполнять приходится вручную. Есть какая-нибудь формула, которая автоматически будет распределять данные суммы по-вертикали, в соответствии с числами 10, 15, 25?  
 
Наверно непонятно написал). В примере более доступно нарисовано)
Страницы: 1
Loading...