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

Страницы: 1
Как создать изменяющуюся ссылку на книгу
 
Добрый день. Хочу написать формулу, которая будет возвращать цены, которые находятся в определенном файле. Ситуация такова, что файл с ценами пересохраняется каждую неделю, при этом у него меняется название на новую дату. Например, на прошлой неделе он назывался Book03112017.xls, на этой, соoтветственно, будет называться Book10112017.xls.
Я хотела бы, чтобы для книги Book03112017.xls формула брала дату из ячейки B1 и поставляла в название книги в формулах в ячейках B4:B8. Пыталась сцепить кусочки названий и переменных через &, но потом поняла, что так не будет работать. Подскажите, можно ли как-то реализовать данную идею через формулы. Макросы оставляю на крайний случай.
Прилагаю обе книги для примера, так как сейчас формула в Book03112017.xls ссылается на Book10112017.xls
Не отображаются подсказки.
 
Добрый день. помогите кто чем может)  
Есть некий код. Среди всего прочего в нем есть вот такой кусок, например.  
iLastClmn = Cells(1, Columns.Count).End(xlToLeft).Column  
но так как руки у меня кривые, а код - тем паче, мне бы хотелось поглядеть, какое же значение присвоилось переменной после выполнения данной строки. Раньше я просто наводила курсор и значение высвечивалось.  
А сейчас так не получается. Подскажите, что надо настроить, чтобы можно было сие увидеть?
как отключить диалогвоое окно о макросах
 
Добрый день. Каждый раз, когда сохраняю некий файл, выдается сообщение (см. аттач). Как бы его отключить? А то база обрабатывается парой десятков макросов, после выполнения каждого смотрю, что получилось и сохраняюсь. И, прямо скажем, надоело уже жать ОК на этом окне.
ОФФТОП. VBA для PowerPoint
 
Всем добрый день. Прошу прощения за оффтоп, но в самостоятельно в интернетах найти не смогла. Посдкажите, где можно почитать про создание макросов для PowerPoint? Там же некая иная модель, чем, скажем, в экселе?  
К сожалению, в 2007 PowerPoint отключена возможность записи макросов марорекордером, поэтому даже не могу посмотреть, как оно бывает.  
Спасибо.
как передать имя выбранной папки?
 
Добрый день.  
Запускаю вот такой вот макрос  
Dim Papka As String  
 
 
Set PapkaOpen = Application.FileDialog(msoFileDialogFolderPicker)  
With PapkaOpen  
.InitialFileName = "C:\Documents and Settings"  
.Show  
End With  
Как передать путь выбранной папки в переменную? PapkaOpen возвращает -1, поэтому не получается сделать вот так:  
Papka = Replace(PapkaOpen, Dir(PapkaOpen), "")
как проверить наличие картинок, указанных в файле
 
Добрый день. Подскажите, как реализовать следующую задачу. Есть некий файл, в котором в одном из столбцов указаны названия картинок (с расширением). Т.е. пользовать кладет некую картинку в некую папку и в файле указывает название этой картинки. Но человеческий фактор штука страшная. В название файла могут попать пробелы, может быть неверено указан регистр расширения (JPG всесто jpg), картинка просто может отсутствовать в папке. Подскажите, как можно сделать следующее:  
1. При запуске запрашивать адрес папки, в которой лежат картинки.  
2. Проверять по названию, есть ли картинка в папке.  
На всякий случай прикладываю файл, в котором указано, как вводятся названия картинок.  
 
Всякие циклы и способ вывода ошибок я сама сделаю))))  
Спасибо)))
ListBox, свойство ListFillRange
 
Подскажите, пожалуйста. Хочу создать файл с выпадающими списками в столбце В. Мне надо, чтобы в зависимости от значения ячейки в столбце А, для формирования списка применялся определенный именованный диапазон. И в зависимости от значений в ячейке А и В, в столбце С формировался выпадающий список на основе другого именованного диапазона. Волшебную формулу из примеров применить не могу по причине неуникальности имен. Поэтому буду делать ListBox  
Подскажите, как прописать в ListFillRange условия в стиле if a1="бублик" and b1="магазин" then использовать диапазон XXX  
Спасибо
Прерывать выполнение макроса при положительном ответе.
 
Добрый день. Был у меня работающий кусочек макроса, а теперь он не действует. А именно.  
Есть некий файл. Он обрабатывается макросом. Сделано так, что макрос обрабатывает период в 12 месяцев. Файл каждый месяц приходит новый. Но данные за предыдущие года нас не интересуют, поэтому перед запуском макроса мы их удаляем. Но человеческий фактор никто не отменял и мы можем забыть удалить эти года. Поэтому был приписан вот такой кусочек:  
vopr = MsgBox("Удалить старые года?", vbYesNo)  
If vopr = 6 Then Exit Sub  
Т.е., если пользователь отвечает, Да, я забыл удалить предыдущие года, макрос прерывается. Оно так раньше и работало. А сейчас, вне зависимости от ответа пользователя (да или нет), макрос отрабатывает полностью.  
К чему бы это?
как работает WorksheetFunction.Average
 
Подскажите, как быть, не совсем понимаю, в чём проблема. есть вот что:  
 
Set rngPeriod = Range(Cells(3, intX), Cells(3, intColumn.Column))  
 
MsgBox WorksheetFunction.Average(rngPeriod) 'так работает  
Set rngMiddle = WorksheetFunction.Average(rngPeriod) 'так не работает  
 
всё одинаково написано, но в мсджбоксе срабатывает, а при присвоении значения rngMiddle ругается на Average, что он object required
если а отличается от b на 10%
 
Добрый день.    
в ходе проверки базы данных мне надо сравнить значение А со значением В и, если А отличается от В более чем на 10%, то выдать ошибку.  
у меня получилось следующее  
If A>B*1.1 or A<B*0.9 then cells(1,1)="error"  
 
Подскажите, есть ли более элегантное решение?
Если значение даты между 1.01 и 31.01, то значение равно Январь
 
Добрый день. Имею столбец ячеек с датами в формате чч.мм.гг  
Задача такова, что в соседнем столбце надо написать (буквами) название месяца, которому соответствует эта дата.  
В голову приходит только  
If cell Like ".01." Then  
   cell.Offset(0, -2) = "Январь"  
Оно, естественно, не работает. Подскажите, как бытЬ?
Как исправить? Выделяются все ячейки до конца листа, а надо только заполненные
 
Добрый день. Имеем вложенный файл. В нем необходимо указать источник информации в столбце Н, например, "Дядя Вася".    
Как я пыталась решить этот вопрос: я считаю количество заполненных строк в третьем столбце (т.е. именно для этого количества строк мне нужно указать истоник информации) и пишу следующую процедуру  
 
Dim rngRow As Range  
Set rngRow = Range(Cells(1, 3), Cells(Cells.End(xlDown).Row, 3))  
Range(Cells(1, 8), Cells(rngRow.Row.Count, 8)).Value = "Дядя Вася"  
 
Так вот вторая строка берет весь третий столбец и возвращает значение 65536. Как указать, чтобы он считал только заполненные ячейки?  
Дело в том, что аналогичный способ я использовала в предшествующих процедурах и всё отлично работало, а тут непонятное...
Помогите присвоить значение переменной
 
Добрый день.  
Имеем вот такой кусок кода:  
Dim shtGP As Worksheet  
Dim intRow As Integer  
 
vopr = MsgBox("Удалить старые года?", vbYesNo)  
If vopr = 6 Then Exit Sub  
t = Timer  
 
 
Range("K202").EntireColumn.Insert  
 
Set shtGP = ThisWorkbook.Worksheets("RR")  
 
На последней строчке выдает ошибку subscript out of range error 9  
Название листа проверяла, копировала прямо с листа, но всё равно не работает. Подскажите, пожалуйста, в чем может быть ошибка? я только-только освоила объявление переменных, может что-то не так объявила?
Макрос ломается на большом количестве строк
 
Есть нехитрый макрос. Отлично работает, если в файле 5000 строк.  
При увеличении количество строк до 12000 ломается на простейшей операции вставки (специально проверяла пошагово). Ломается - это значит намертво вешает эксель и вба. перезагрузки и перезапуски эффекта не дают.  
К чему бы это и как это побороть не переписывая макрос полностью?  
 
Range("m2").Select  
Do Until IsEmpty(ActiveCell(0, -3))  
 
If ActiveCell(0, -3) <> "" Then ActiveCell.Formula = "=RC[-11]&RC[-10]&RC[-9]&RC[-8]&RC[-7]&RC[-6]&RC[-4]"
ActiveCell(2, 1).Select  
Loop  
 
 
Range(Cells.End(xlDown).Offset(0, 12), Cells(2, 13)).Copy  
Range("m2").PasteSpecial xlPasteValues  
 
er = ActiveSheet.UsedRange.Rows.Count  
 
 
Range("N2").Select  
Dim w As Integer  
For w = 1 To er - 2  
If ActiveCell(0, -4) <> "" Then ActiveCell.FormulaR1C1 = "=SUMIF(RC[-1]:R[" & er - 2 - w & "]C[-1],RC[-1],RC[-4]:R[" & er - 2 - w & "]C[-4])"
ActiveCell.Offset(1, 0).Select  
Next w  
 
Range(Cells.End(xlDown).Offset(0, 13), Cells(2, 14)).Copy  
Range("N2").PasteSpecial xlPasteValues     ВОТ ТУТ ЛОМАЕТСЯ  
Stop  
ActiveSheet.UsedRange.RemoveDuplicates Columns:=13, Header:=xlNo  
Stop  
Range(Cells.End(xlDown).Offset(0, 13), Cells(2, 14)).Copy  
Range("J2").PasteSpecial xlPasteValues  
 
Columns("M:N").Delete
помогите ускорить выполнение цикла
 
Добрый день, имею кусок макроса:  
 
Dim i As Long, nul As Long  
i = Cells(Rows.Count, 5).End(xlUp).Row  
For nul = i To 1 Step -1  
Cells(nul, 5).Select  
If Cells(nul, 5).Value = 0 Then Cells(nul, 5).EntireRow.Delete  
Next nul  
 
Цель его, как мы видим, удалить строки с нулевыми значениями.  
Макрос работает отлично, да вот одна беда, переменная i может принимать значения до 10000, а в этом случае макрос выполняется чудовищно медленно (минут 10, но это не точно). Подскажите, как ускорить процесс?  Запрет обновления экрана уже стоит.
замена значений
 
Добрый день. Имеем конструкцию вида:  
With ActiveSheet.Range(ActiveSheet.[d1], ActiveSheet.Range("d" & Rows.Count).End(xlUp))
.Replace what:="КОЛОБОК И ЛИСА", Replacement:="Сказка Колобок", LookAt:=xlPart  
.Replace what:="КОЛОБОК", Replacement:="Игрушка Колобок", LookAt:=xlPart  
End With  
Проблема, в том, что происходи первая замена, а когда по этому же ячейке проходится вторая замена, она переделывает значение "Сказка Колобок" на "Сказка Игрушка Колобок".  
Вижу два вариант - через условие, if A1 = Kolobok then A1 = Skzka, но в данном случае это не совсем подхогдит.  
Второй - учиытвать регистр букс, так как первоначальные названия все пишутся капсом, а исправленные - прописью. Но как сделать, чтобы учитывался регистр букв?
Оптимизация макроса поиска решения
 
Никак не дается мне поиск решения, помогите оптимизировать макрос.  
Имеем такой вот код:  
   Range("BR5").Select  
   SolverOk SetCell:="$BR$5", MaxMinVal:=3, ValueOf:="0", ByChange:="$AF$5:$AS$5"  
   SolverAdd CellRef:="$AF$5:$AS$5", Relation:=3, FormulaText:="0"  
   SolverOk SetCell:="$BR$5", MaxMinVal:=3, ValueOf:="0", ByChange:="$AF$5:$AS$5"  
   SolverAdd CellRef:="$BI$5:$BT$5", Relation:=2, FormulaText:="0"  
   SolverOk SetCell:="$BR$5", MaxMinVal:=3, ValueOf:="0", ByChange:="$AF$5:$AS$5"  
   SolverSolve UserFinish:=True  
 
   Range("BR6").Select  
   SolverOk SetCell:="$BR$6", MaxMinVal:=3, ValueOf:="0", ByChange:="$AF$6:$AS$6"  
   SolverAdd CellRef:="$AF$6:$AS$6", Relation:=3, FormulaText:="0"  
   SolverOk SetCell:="$BR$6", MaxMinVal:=3, ValueOf:="0", ByChange:="$AF$6:$AS$6"  
   SolverAdd CellRef:="$BI$6:$BT$6", Relation:=2, FormulaText:="0"  
   SolverOk SetCell:="$BR$6", MaxMinVal:=3, ValueOf:="0", ByChange:="$AF$6:$AS$6"  
   SolverSolve UserFinish:=True  
 
Суть в том, что в столбце BR есть ячейка, значение которой считается по формуле на основании значений из той же строки, что и ячейка.  
Проблема в том, что таких ячеек 74 и написать 74 таких блока - это как-то неправильно. Все ячейки идут друг за другом, вниз.  
 
Второй момент, столбце ежемесячно меняется. Диапазон от BI до BT/    
Подскажите, как можно это хоть как-нибудь оптимизировать?:
.Select выдает ошибку
 
Подскажите, почему если я пишу строку    
Sheets("Лист2").Range("a1").End(xlDown).Offset(1, 0).Select  
выдает ошибку, а если пишу  
Sheets("Лист2").Select  
Range("a1").End(xlDown).Offset(1, 0).Select  
то всё нормально.  
при запуске команды активным является лист1
Как связать Excel и POwer point
 
на слайде Pоwer point есть, скажем, пять прямоугольников, в которые надо вставить числа.  
На отдельно взятом листе Excel есть столбец из тех самых пяти чисел, которые надо вставить. Но числа ежемесячно меняются.  
Возможно ли связать лист и слайд так, чтобы числа автоматом подтягивались на слайд в нужное место?  
Если такая возможность имеется, готова предоставить файлы для примера.
Страницы: 1
Наверх