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

Страницы: 1 2 3 4 5 6 7 8 9 10 След.
Вставка картинок из каталога. Есть две картинки с одинаковыми размерами. А вставляются с разными размерами.
 
Тоже верно. Для второй фотки. )
Вставка картинок из каталога. Есть две картинки с одинаковыми размерами. А вставляются с разными размерами.
 
Та да, фотки геометрических фигур не нашли бы такого живого отклика. )
Вставка картинок из каталога. Есть две картинки с одинаковыми размерами. А вставляются с разными размерами.
 
Спасибо за подсказку. Попробую найти это в пакетной обработке картинок.
Вставка картинок из каталога. Есть две картинки с одинаковыми размерами. А вставляются с разными размерами.
 
Андрей VG, не знаю. А как Экселю сказать это?
Да и по первой картинке ведь догадывается.
Изменено: maseur - 20.10.2019 17:08:46
Вставка картинок из каталога. Есть две картинки с одинаковыми размерами. А вставляются с разными размерами.
 
Причем это в ячейках достаточно больших, чтобы картинка полностью помещалась.
Вставка картинок из каталога. Есть две картинки с одинаковыми размерами. А вставляются с разными размерами.
 
Добрый день всем.
Настраиваю вставку картинок макросом. Все картинки должны вставляться ОДИНАКОВОЙ высоты (например 5,64 см). Для этого все картинки в каталоге я прогнал через пакетную обработку и у всех высоту задал 160 пикселей (а ширина пропорционально). А вставляются какие-то ошибочно слишком маленькими.
Проверял размеры картинок в файлах - высота у всех одинаковая, ширина пропорциональная.
Пробовал И РУКАМИ вставлять - аналогично: картинки, которые вставляются макросом маленькими, и при вставке руками также вставляются маленькими (в примерах это второй файл).
Макрос пробовал двух вариантов
Первый:          
Код
 Set p = ActiveSheet.Shapes.AddPicture(Puty, msoFalse, msoCTrue, Rng.Left, Rng.Top, -1, -1)
            ratio = Rng.Width / p.Width
            p.ScaleWidth ratio, msoFalse
            p.ScaleHeight ratio, msoFalse
и второй (из макрорекордера)
Код
     Pict.Select
        ActiveSheet.Pictures.Insert ( _
        Puty)
Здесь Puty - это полный путь к картинке в каталоге, а Rng - это ячейка, в которую вставляю.
Почему две картинки из примера вставляются разного размера (и макросами И РУКАМИ)? В примерах первая картинка (красное) вставляется нужного размера (высота 5,64 см), а вторая картинка (белое) ошибочно малая (высота 1,36 см).

Админу. Покажите, пожалуйста, где написано как теги вставлять (не нашел).
Изменено: maseur - 20.10.2019 23:50:34
Разрешить скрывать/отображать структуры на защищенном листе
 
Ок, Дмитрий. Спасибо большое.
Изменено: maseur - 16.10.2019 14:49:14
Разрешить скрывать/отображать структуры на защищенном листе
 
Ігор Гончаренко, спасибо.
Другой вариант:
Код
Private Sub Workbook_Open()
Sheets("Прайс1").Unprotect Password:="1" 'Снимаем защиту листа
Sheets("Прайс1").EnableOutlining = True '
Sheets("Прайс1").Protect Contents:=True, UserInterfaceOnly:=True

Sheets("Прайс2").Unprotect Password:="1" 'Снимаем защиту листа
Sheets("Прайс2").EnableOutlining = True '
Sheets("Прайс2").Protect Contents:=True, UserInterfaceOnly:=True
End Sub
Да, группировки заработают.
Но во всех вариантах (в том числе и других), которые я видел, с таких листов пользователь сможет снять защиту листа БЕЗ ВВОДА ПАРОЛЯ.
А есть варианты, при которых и кнопки группировок работали бы и при этом
1) при попытке пользователя снять защиту с листа сохранялась необходимость ввода пароля,
2) при открытии книги не нужно было бы вводить пароль защиты листа.
?
Изменено: maseur - 16.10.2019 11:55:45
Разрешить скрывать/отображать структуры на защищенном листе
 
Добрый день всем!
Знатоки, подскажите, пожалуйста, как должен выглядеть код от eeigor, с уже подставленной ссылкой на нужный лист? Например, если лист называется "Тест".
Нужно, чтобы при открытии книги можно было на защищенном листе сворачивать-разворачивать группировки.
Ошибочное назначение защиты множеству ячеек вместо назначенной небольшой группы (макросом), Описание как в названии
 
buchlotnik, благодарю за подсказку. Это я тупанул, конечно.
Юрий М, я последний раз на форуме очень-очень давно был. Подзабылось многое. Простите, пожаалуйста.
Спасибо, что оформление кода исправили.
А теги это "как и где"?

Ошибочное назначение защиты множеству ячеек вместо назначенной небольшой группы (макросом), Описание как в названии
 
Добрый день, уважаемые форумчане.
Есть макрос, который копирует строки с листа "Данные" (выделяются данные от первой строки до первой пустой по столбу А). Затем снимает защиту с листа "Прайс бренды - виды товаров" (здесь пароль "1", т.е единичка, но защищенных ячеек нет), вставляет скопированное на этот лист. После этого обрабатывает вставленное. И потом защищает лист "Прайс бренды - виды товаров" эти же паролем.
Но перед защитой листа макрос должен назначить защиту ячеек ("H8:H9,I16:I21").
Я пытаюсь это сделать, но защита назначается НЕ ТОЛЬКО НА ЭТИ ячейки, а ошибочно НА ВСЕ ВСТАВЛЕННЫЕ ячейки.
Вот и прошу помочь в этом. В тестовом файле этот макрос запускается с кнопки на листе "Прайс бренды - виды товаров". Ячейки, которые должны оказаться защищенными на листе "Прайс бренды - виды товаров" выделил желтым.
Код
Sub Macros1()
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    ''''''''''''''''''''''''''''''
    Worksheets("Данные").Activate
    Dim MyValue1, PreMyValue2, MyValue2
    MyValue1 = Range("A2:A" & Rows.Count).Cells.SpecialCells(xlCellTypeBlanks).Row 'номер строки первой пустой ячейки в А
    
    Worksheets("Прайс бренды - виды товаров").Activate
    
    ActiveSheet.Unprotect Password:="1" 'Снимаем защиту листа
    ActiveSheet.Range("H8:H9,I16:I21").Locked = True
    
    Cells(1, 16).NumberFormat = "@" '"P1"
    Cells(1, 16) = CStr(MyValue1)
    Set MyValue1 = Worksheets("Прайс бренды - виды товаров").Range("P1")
    Sheets("Данные").Rows("1:" & MyValue1).Copy
    Worksheets("Прайс бренды - виды товаров").Activate
    Sheets("Прайс бренды - виды товаров").Rows("11:11").Select
    ActiveSheet.Paste
        
    'Зафиксируем область
    ActiveWindow.FreezePanes = False
    Range("A14").Select
    ActiveWindow.FreezePanes = True
        
    'Установим фильтры
    Range("D11:I13").Select
    Application.CutCopyMode = False
    Selection.AutoFilter
    
    'Установим форматы
        Range("F14:I20000").Select
    Selection.NumberFormat = "#,##0.00"
    
    'Протянем формулу стоимости
    Range("R1").Select
    ActiveCell.FormulaR1C1 = "=IF(R[15]C[-10]>0,R[15]C[-11]*R[15]C[-10],"""")"
    Range("I16").Select
    ActiveCell.FormulaR1C1 = "=IF(RC[-1]>0,RC[-2]*RC[-1],"""")"
    Range("I16").Select
    Selection.Copy
    Range("I17:I20000").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Range("A14:B14").Select 'это чтобы "промотать лист вверх".
        
    Range("P1:R1").Select
    Selection.Clear

    Range("A1").Select
    
    'ActiveSheet.Range("H8:H9,I16:I21").Locked = True
    ActiveSheet.Protect Password:="1" 'Ставим защиту листа
    
    '''''''''''''''''''''''''''''''''''''''''''
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    ActiveWorkbook.Save
End Sub
Изменено: maseur - 15.10.2019 23:24:16
К выделенным результатам фильтра добавить одну строку над ними.
 
Добрый день, уважаемые форумчане.
Прошу помощи в следующем вопросе.
Выделил я нужные мне строки (например, 5--21).
Запускаю макрос, который должен строки с одним критерием для фильтра (7,9,12,20) скопировать в один лист, а с другим (5-6, 8, 10-11,13-19, 21)--в другой, после этого выделенные строки (5--21) удалить.
Макрос фильтром выделил записи в соответствии с заданными критериями (например, строки 7,9,12,20).
При этом строки 5-6, 8, 10-11,13-19, 21 остались не видны на мониторе. На мониторе, как бы за 4-й идёт 7 строка и т.д.
Мне надо, чтобы в диапазон для копирования попала ещё и строка 4 (которая расположена сразу над строками, которые фильтровались. Т.е. чтобы при дальнейшем копировании на один лист скопировались строки 4, 7, 9, 12, 20, а на другой 4, 5-6, 8, 10-11,13-19, 21.

Соответственно, если бы для фильтра я выделил строки 10-19, то на один лист попали бы строки 9, 12, 20, а на другой 9, 10-11,13-19.

PS. Команда
Selection.Offset(-1, -0).Resize(Selection.Rows.Count + 1, _
Selection.Columns.Count + 0).Select
не сработает для одного листа (хотя сработает для другого).

Такая вот проблема у меня.
Как задать условие для ЕСЛИ
 
Прекрасная формула получилась.

Цитата
Пс у Вас пример не совпадает с условиями, пичалька...
Да, в край запутался уже.

Спасибо Вам большое за помощь.
Как задать условие для ЕСЛИ
 
Здравствуйте, уважаемые форумчане.
Помогите, пожалуйста, составить условие для формулы ЕСЛИ.
В прикреплении описал само условие (как коротко его описать здесь не знаю).
Как запретить макросу выполняться, если кроме одной, открыты ещё книги?
 
Появилась проблема.
http://planetaexcel.ru/forum/?PAGE_NAME=message&FID=1&TID=46873&MID=389735&result=new#message389735
Снятие защиты диапазонов макросом (по всей книге, выборочное и обратимое).
 
Тишина...
Надо понимать, что это высокая честь--задать вопрос, на который ни у кого не нашлось ответа.
Жаль.
Макрос не выделяет именованный диапазон.
 
Спасибо.
Раньше думал, что именованные диапазоны и диапазоны во вкладке Рецензирование совпадают...
Спасибо.
Макрос не выделяет именованный диапазон.
 
Здравствуйте, форумчане.
Подскажите, пожалуйста, почему макрос не выделяет именованный диапазон.
Спасибо.
Снятие защиты диапазонов макросом (по всей книге, выборочное и обратимое).
 
Эх, неужели никто не поможет?
Снятие защиты диапазонов макросом (по всей книге, выборочное и обратимое).
 
Вот, простите, пожалуйста. Думал описания достаточно будет.
Изменено: maseur - 06.02.2013 23:44:44
Снятие защиты диапазонов макросом (по всей книге, выборочное и обратимое).
 
Добрый вечер, форумчане.
Подскажите, пожалуйста, как решить такой вопрос.
Есть книга с множеством "клонированных" листов, в каждом по пять диапазонов. На всех листах у диапазона "1" пароль "1", у "2"--"2", у "3"--"3", у "4"--"4", у "5"--"5".
Вопрос: можно ли макросом одним махом снять защиту со всех диапазонов по всей книге для пользователя (можно и для макроса).
Но чтобы при этом на каждом листе осталась защита самого листа и диапазона "5" на каждом листе.
Снятие защиты должно быть "обратимым", т.е. чтобы после повторного открытия книги защита функционировала, как обычно, до нового запуска макроса. Т.е. просто удаление диапазонов не подходит.
Изменено: maseur - 06.02.2013 23:32:37
Как запретить макросу выполняться, если кроме одной, открыты ещё книги?
 
ZVI, большое вам спасибо за помощь.
Про функцию дошло.
Как запретить макросу выполняться, если кроме одной, открыты ещё книги?
 
Спасибо за помощь.
Что делать с макросом, понятно.
А куда Function "привинтить"?
Как запретить макросу выполняться, если кроме одной, открыты ещё книги?
 
Доброй ночи, форум.
Помогите, пожалуйста, в следующем вопросе.
Есть макросы, которые нормально работают, только если открыта только одна книга (собственно рабочая).
Подскажите, пожалуйста, как запретить макросу выполняться, если кроме одной, открыты ещё книги?

Sub probaOpenBook()
'
   
'If 'открыта только одна книга Эксель Then
           MsgBox "OK, основной КОД"
Else
MsgBox "Пожалуйста, закройте другие книги."
End If
End Sub
Макрос переноса строк с постановкой "латки" на место удалённых строк.
 
SkyShark, спасибо большое за помощь.
Самый неизвестный участок остался безответным.
Попробую переделать форму листа и макросов, что с ним работают, чтобы появилась возможность удалять строки без "латки".
Макрос переноса строк с постановкой "латки" на место удалённых строк.
 
Доброго дня всем.
Подскажите, пожалуйста, как справится со следующей задачей.
Есть база с множеством стандартных однотипных листов. Есть регистратор, который запросто может перепутать листы и в лист В, например, внести несколько записей (например, с 10 по 17), которые должен был внести в  лист Т, например.
Задача следующая: если подобный косяк замечен, то
1) как поудобнее для регистратора организовать перенос ячеек в выделенных вручную строках с 10 по 17 в примере (именно строки выделяются) с данными с ошибочного листа (В) в первую пустую в столбце D верного листа (Т);
2) как на место перенесенных строк в В вставить "латку" с теми  же строками ( с 10 по 17) из листа ШАБЛОН.
"Латка" нужна потому, что при введении данных в листе В, регистратор при необходимости "забивает" не актуальные формулы. А в новых строках эти формулы должны быть. В  ШАБЛОНе они есть.

Хотелось бы на выходе работать по такому алгоритму: вручную выделил строки на ошибочном листе, клацнул макрос, вручную открыл верный лист, msgBox "Вы открыли лист. Продолжить перенос на него?", код вставляет строки под последней не пустой в D, вставляет "латку" из таких-же строк ШАБЛОНа в ошибочный лист.
MsgBox, "запрещающий" создание макросом нового листа под названием имеющегося.
 
Постараюсь еще кроме MsgBox "Такой уже есть" добавить код, таки присваивающий "старому" ВРЕМЕННОМу новое постоянное название по сумме ячеек.
MsgBox, "запрещающий" создание макросом нового листа под названием имеющегося.
 
Sergei_A, большое и Вам спасибо за внимание, но от Вашего кода я воздержался, поскольку, он для моих целей является слишком "навороченным".
У моих листов названия задаются следующим макросом, в названии листа суммирующим "дата"+"адрес" из фиксированных ячеек. Задача регистратора просто "не прощелкать" вовремя клацнуть этот макрос присваивающий ВРЕМЕННому постоянное название ("сумму").
Поэтому предоставление возможности пройти по всем Боксам, выбора, как назвать и т.д. излишне.
Регистратор просто ставится перед фактом, что имеющемуся ВРЕМЕННому таки надо присвоить постоянное название.
В любом случае, большое Вам спасибо за беспокойство.
MsgBox, "запрещающий" создание макросом нового листа под названием имеющегося.
 
Юрий М, если бы не Вы, я сам еще не скоро догадался бы, что просто после Then надо с абзаца дальше писать. Вот ведь, блинская "мелочь".
В итоге полнучился вот такой код.
Dim wsSh As Worksheet
   On Error Resume Next
   Set wsSh = Sheets("ВРЕМЕННЫЙ")
   
   If wsSh Is Nothing Then
 
    Sheets("ШАБЛОН").Visible = True
   Sheets("ШАБЛОН").Select
    Sheets("ШАБЛОН").Copy Before:=Sheets(3)
     With ActiveSheet
       .Name = "ВРЕМЕННЫЙ"
       
   End With
    Sheets("ШАБЛОН").Visible = False
    Worksheets("ВРЕМЕННЫЙ").Protect Password:="0662142087", AllowFiltering:=True, UserInterfaceOnly:=True
   Application.CommandBars("Selection and Visibility").Visible = False
       For Each x In ActiveSheet.Shapes
           x.Visible = Not x.Visible
       Next
       
    Range("B1002").Select

Else
   MsgBox "Такой уже есть"
End If
   
End Sub
MsgBox, "запрещающий" создание макросом нового листа под названием имеющегося.
 
Спасибо, я побывал на ссылках.
Почему не работает такая конструкция? Что не в порядке с  Else?
Dim wsSh As Worksheet
   On Error Resume Next
   Set wsSh = Sheets("ВРЕМЕННЫЙ")
   If wsSh Is Nothing Then Sheets.Add(, Sheets(Sheets.Count)).Name = "ВРЕМЕННЫЙ"
 
   wsSh.Activate
Else
MsgBox "Такой уже есть"
End If
End Sub
Страницы: 1 2 3 4 5 6 7 8 9 10 След.
Наверх