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

Страницы: 1
Не могу создать гиперссылку на другой лист книги с помощью ИНДЕКС+ПОИСКПОЗ
 

Здравствуйте!

Не получается сделать правильную гиперссылку на соседний лист, в нужную ячейку.

Надо, чтобы при нажатии на гиперссылку в ячейке столбца «А» листа «Ма-лы» программа переключалась бы на лист «СП» в нужную ячейку столбца «В», в которой забито точное наименование, точь-в-точь как и на ячейке с гиперссылкой.

Для примера, как должно работать, сделал гиперссылку в ячейках D1 и D2, указав в формуле конкретную ячейку переключения. А вот заменить в гиперссылке эту конкретную ячейку на ИНДЕКС+ПОИСКПОЗ не получается: выскакивает та или иная шибка, в зависимости от изменений в формуле. Для проверки функций ПОИСКПОЗ я выполнил в ячейках Н1 и Н2, а ИНДЕКС – в ячейках G1 и G2.

А в ячейке D5 – формула, с которой я мучаюсь, точнее, один из вариантов, которые я испробовал.

Прошу помощи.

Как остановить макрос по условию
 
Код
            aDate = CDate("01.01.2023")
            zDate = CDate("31.12.2024")
            
For i = lLastRow To 8 Step -1
        If Not IsEmpty(Cells(i, Beg)) Then

                If Cells(i, Beg) < aDate Then Cells(i, Beg).Interior.ColorIndex = 6
                If Cells(i, Beg) > zDate Then Cells(i, Beg).Interior.ColorIndex = 3

        End If

Next i
Здравствуйте!
Представлен фрагмент кода, проверяющий, входят ли введённые пользователем даты в диапазон дат aDate-zDate.
Если остановить макрос (Exit Sub) где-то внутри кода, то он останавливается после нахождения первой же неправильной даты. А мне надо проверить весь столбец, прежде, чем продолжить выполнение макроса.
Вопрос: как остановить макрос после проверки всего столбца, чтобы цветом выделились все неправильные даты?
Спасибо.
NumberFormat = ?, Как записать формат значений, чтобы после разделительной точки шёл отсчёт больше 9-ти?
 
Код
Cells(i, NumPP).NumberFormat = "0.0"
Здравствуйте! При такой записи формата цикл идёт так:
1.1, 1.2, ... 1.9, 2.0, 2.1...
А мне нужно получить так:
1.1, 1.2, ...1.9, 1.10, 1.11, 1.12 ...1.99, 2.0, 2.1
Как записать формат, чтобы счёт после разделительной точки шёл более девяти?
Спасибо.
p.s. Добавление второго нуля в код не даёт нужного результата
Изменено: MrBrown - 15.03.2023 18:14:53
Ищу программу "Text_Excel_ACad"
 
Здравствуйте!
Решая свою задачу (простановка в модели AutoCAD точек/блоков по координатам из Excel) длительным поиском по разным сайтам нашёл тему https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=8&TID=12330
Увы, ссылка на программу "Text_Excel_ACad" уже не работает.
Прошу помощи: у кого есть, выложите программу или подскажите рабочую ссылку.
Пятой точкой чувствую: это именно то, или близко к тому, что мне нужно.
Спасибо.
Как макросом отследить выделение несмежных ячеек мышкой?
 
Здравствуйте!
Помогите поправить коротенький макрос.
При выделении несмежных ячеек в столбце он всё равно выдаёт содержание смежных.
Как прописать условие "если ячейка выделена, то показать её содержание в форме msgbox, в противном случае - пропустить и продолжить цикл".
Спасибо.
Игнорировать текст и пробелы в формуле
 
Здравствуйте!
В приложенном файле (фрагмент дефектной ведомости) значения в ячейках столбца "J" являются результатом вычислений в ячейках столбца "K".
Вопрос: возможно ли получить тот же результат автоматически, вычисляя данные из ячеек столбца "G" (объединённых ячеек столбцов "G", "H", "I")?
Пытаюсь на упрощённом примере, в ячейке "L4" получить желаемое, используя необходимые функции. Здесь нужно игнорировать букву "м" и точку.
И даже такой простой пример не выходит. А хочется, чтобы формула решала и такие, как в "G5" и "G6".
Необходимо, чтобы итоговая формула игнорировала все знаки, включая пробелы, кроме цифр от нуля до девяти, четыре арифметических знака действия ("+", "-", "*", "/"), открывающей и закрывающей скобок, десятичной точки, десятичной запятой. Причём именно десятичной, игнорируя точку в конце текстов типа "шт."
Хотелось бы решить задачу формулой, не прибегая к надстройкам (встречал такие в инете). Ну, крайний случай - VBA.
Заранее благодарю всех откликнувшихся.
Изменено: MrBrown - 21.03.2021 03:31:07
Скрыть и показать строки по условию
 
Здравствуйте!
В моей диаграмме Ганта хочу сворачивать и разворачивать разделы, т.е. хочу сделать так, чтобы при активации одной и той же ячейки соответствующие строки то скрывались, то показывались, а в самой ячейке попеременно появлялся значок такой "[-]" или такой "[+]".
С одной строкой, как частный случай, у меня получилось ( файл "проба-01"). А вот в цикле - никак не могу сообразить (файл "Проба-02).
При активации ячейки "В7" должны скрываться (или появляться) все строки работ, по всей таблице.
А при активации, например, ячейки "В13" должны скрываться/показываться работы, относящиеся только к разделу "Проектные работы".
Прошу помощи, сам разобраться не могу уже почти сутки (с перерывом на обед и ужин).
:)
Заполнить ячейки датами с первого по последнее число
 
Здравствуйте!

Мой макрос строит график Ганта.

В нём:
начальная дата - dtmin (допустим, 16.4.2020)
конечная дата - dtmax (допустим, 20.8.2020
разница между ними - dtDiff

Нижеприведённый код заполняет ячейки от dtmin до dtmax (со сдвигом на 10 ячеек, но это не суть важно):
Код
    Plus = dtmin
    For k = 10 To dtDiff + 10
        With Cells(1, k)
            .Value = Plus
            .NumberFormat = "m/d/yyyy"
        End With
    Plus = Plus + 1
    Next
Как получить заполнение ячеек:
не от 16.4.2020 до 20.8.2020,
а от 01.4.2020 до 31.8.2020, т.е. от начала начального месяца до конца конечного?
Чувствую, что нужно задействовать функцию определения месяца month(dtmin) и month(dtmax) и использовать её при заполнении ячеек с первого числа апреля до конечного числа августа. Как конкретно - ума не приложу. Прошу помощи.
Спасибо.
[ Закрыто] Макрос выполнять на листе, соответствующем нажатой кнопке
 
Здравствуйте!
Помогите, пожалуйста, с "грамматикой" кода.
Ваяю примерно так:
Код
Sub Start()

    Dim i As Integer, j As Integer, a As Long, x As New Collection, y As Range, N As Long
    N = CommandButton.Application.Caller
    
    With Sheets(N)
...
нужно, чтобы макрос выполнялся  на листе, одноимённом с названием кнопки CommandButton ActiveX (свойство "Caption").
Прошу помочь с определением переменной "N".
Спасибо.
Об уведомлениях о новых ответах на посты
 
Здравствуйте!
Пожалуйста, покажите, где ковырнуть в настройках, чтобы на мою почту приходили уведомления о новых ответах на посты, в которых я принимал участие.

Пока приходится ежедневно открывать форум и отслеживать "ручками".
И есть ли функция "отписки" от конкретных постов, которые для меня уже утратили актуальность.
Спасибо.
Изменено: MrBrown - 04.06.2019 09:45:49
Найти крайнюю ячейку относительно границы рамки
 
Здравствуйте!
Как найти последнюю заполненную ячейку - есть много постов.
А мне нужно найти адрес правой нижней ячейки диапазона, ограниченного рамкой.
К примеру, рамка охватывает диапазон A1:G18.
Макрос должен найти ячейку G18 или, лучше, первую ячейку вне диапазона - H19.
(независимо, заполнена ячейка или пустая)
Подскажите, пожалуйста, какие команды можно использовать, чтобы макрос опирался на расположение рамки.
Спасибо.
p.s. Если на листе несколько рамок, то ищется самая крайняя ячейка (пересечение - крайний правый столбец, имеющий хотя бы единственную обрамлённую ячейку, и такая же крайняя нижняя строка).
p.p.s Догадываюсь, что нужно использовать слово "Borders", а как именно - ума не приложу.
Изменено: MrBrown - 03.06.2019 16:48:26
Макрос печати по условию
 
Здравствуйте!
Строка из цикла по листам книги:
Если первая ячейка на очередном листе Ws поименована как "first", то - печатать.
Почему не работает?
Код
Dim Ws As Worksheet
.... 
If Ws.Cells(1, 1).Name = "first" Then Ws.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
Изменено: MrBrown - 19.04.2019 09:50:45
Увеличить область печати на один столбец вправо и на пару строк вниз
 
Здравствуйте!
Есть пара поименованных ячеек:
Левая верхняя - "first", правая нижняя - "end".
Такой код :
Код
ActiveSheet.PageSetup.PrintArea = Range("first", "end").Address
прекрасно работал бы, если бы ячейка "end" была простой, а она в действительности состоит из объединённых ячеек.
Ну и получается вот такая область печати, как на приложенной картинке. Угловой штамп не входит полностью в область печати.
Попытался сделать что-то вроде:
Код
ActiveSheet.PageSetup.PrintArea = Range("first", Cells(Cells.Name = "end").Offset(1, 2)).Address
Ан не получилось. Другие танцы с бубном - тоже.
Как изменить строчку кода, чтобы область печати увеличилась на столбец вправо и на пару строк вниз?
Догадываюсь, что нужно использовать MergeArea, но как - ума не приложу.
Спасибо.
_______________________________
Сам нашёл:
Код
Set Ma = Range("end").MergeArea
'MsgBox Ma.Address
Set rngEnd = Ma.Cells(Ma.Rows.Count, Ma.Columns.Count)
'MsgBox rngEnd.Address
ActiveSheet.PageSetup.PrintArea = Range("first", rngEnd).Address
Изменено: MrBrown - 27.03.2019 12:59:03
Скомбинировать накопительную диаграмму с графиком
 
Линейчатая с накоплением, и линейный график с узлами.
Вот, которая "с накоплением", не получается, как отдельно расположенная правая диаграмма (или здесь: тынц )
Прошу помощи.
_______________________
Добавляю: в идеале должно получаться, как Вар1 или Вар2
(отрисовал в автокаде, без цвета, но это не важно)
Изменено: MrBrown - 11.01.2019 11:43:57
Возможно ли повернуть диаграмму по оси Z?
 
Здравствуйте!
Возникла необходимость в Excel автоматизировать отображение стены здания в разрезе с указанием слоёв:
штукатурка-кирпич-утеплитель-кирпич-штукатурка.
Это как один вариант из множества.
Необходимо, чтобы диаграмма располагалась, с вертикальными слоями (вложение "Диагр1")
А она работает только как ("Диагр2").
Есть ли варианты поворота картинки как надо? Пусть даже неправильным, "кривым", способом.
Работа в фотошопе исключается, так как диаграмма должна динамически меняться при изменении толщины/добавлении/убавлении количества слоёв.
А, может быть, существует какой-нибудь макрос по моей теме? Подкиньте ссылку, пожалуйста.
Спасибо.
p.s. Office 2016.
p.p.s в последующем на этот "пирог" будут накладываться линейные диаграммы распределения температуры по слоям для определения местонахождения точки росы (последнее написал для понимания тем, кто разбирается в теплотехнических расчётах зданий).
И ещё: не обязательно диаграмма должна быть объёмной. Можно и 2D.
--------------------------------------------
Только что пришла мысль: может быть, возможно не поворачивать диаграмму, а изменить толщину столбцов согласно данным, при одинаковой их высоте.
Изменено: MrBrown - 11.01.2019 09:18:25
Как найти верхнюю правую ячейку в обрамлённом рамкой диапазоне?
 
Здравствуйте!
Дан прямоугольный диапазон ячеек, ограниченный рамкой, допустим, синего цвета (простыми словами - "форматка А4").
Точнее, их таких - несколько на листе. Расположены беспорядочно по всему листу.
Число строк и столбцов в каждой форматке в ходе работы пользователь может менять - удалять и вставлять дополнительные.
Как сделать, чтобы при запуске макроса, в верхнюю правую ячейку каждой форматки автоматически вставлялись номера страниц?
Спасибо.
p.s. точнее, я бы и сам разобрался со вставкой страниц (возможно), да только ума не приложу: как найти эту верхнюю правую ячейку циклом в каждой форматке.
(а также: как объединить все ячейки верхней строки кроме правой ячейки).
Как заставить программу определить границы всех форматок на листе?
p.p.s так как кроме общей границы, в каждой форматке есть ещё линии углового штампа, то я специально выделил нужные (внешние) границы синим.
Автоматическая простановка страниц и формирование оглавления
 
Здравствуйте!
Всех с наступающим Новым годом! Пусть новогодний поросёнок (как-никак, год свиньи) обернётся для каждого полной копилкой в новом году!
__________________________
Прошу помощи у знатоков уделить моей проблеме часть своего досуга.
Есть прекрасный макрос, автоматом формирующий оглавление с нумерацией страниц очередного раздела (листа).
Исходный файл с макросом взят отсюда
В приложенном файле - мои "хотелки", а тут - вопросы, а именно:
1. Для чего нужен макрос Sub Printed_Pages_Count()? Я его удалял, и без него второй макрос прекрасно формирует оглавление.
2. Как отвязать наименование листа на его закладке от оглавления? Ну, чтобы наименования разделов в оглавлении брались из верхней левой ячейки каждого листа. В приложенном файле я организовал это формулой, но это не то, нужен именно макрос.
3. Как автоматом (макросом) проставить номера страниц в верхних правых ячейках каждой страницы (номера страниц  показаны в листах красным в жёлтых ячейках)? Причём, при изменении ширины/высоты столбцов/строк, а также при их удалении/добавлении, - номера страниц также перемещались бы в новую правую верхнюю ячейку относительно границ печатной области каждой страницы.
Я так думаю, нужно в макросе задействовать понятие границ страницы (или печатной области страницы), только вот не знаю, откуда это взять и как применить. Прошу помощи. Может у кого-то уже есть подобное. Или подкиньте ссылочку про это.
Спасибо.
p.s. При новом открытии файла границы печатной области страниц пропали, но, надеюсь, там всё понятно.
p.p.s Забыл: существующий макрос добавляет страницы, с которыми соприкасаются ячейки с нумерацией. Как этого избежать?
Изменено: MrBrown - 26.12.2018 12:31:41
Какой формулой правильно вставить нумерацию страниц в одной из ячеек?
 
 Появилась необходимость вставить нумерацию не колонтитулом, а непосредственно в ячейке каждого листа, и надо сделать так, чтобы при копировании предыдущего листа, в той же ячейке листа последующего номер увеличивался бы на единицу.
И вторым способом - чтобы номер страницы совпадал бы с названием данного листа.
В приложенном файле ячейка с номером страницы закрашена розовым.
Спасибо.
p.s. а, может быть, у кого-то уже есть более удобные наработки по моему вопросу?
Буду рад поучиться.
Изменено: MrBrown - 13.11.2018 14:57:36
Конвертирование BMP в Excel, ускорить работу маскроса
 
Здравствуйте!
Взят готовый макрос (точнее, несколько) и почти заточен "под себя".
Пиксели выбранной картинки раскладывает по ячейкам в виде кода RGB.
Прикручен стандартный статус-бар (внизу слева).
Прошу помочь ускорить работу, возможно организовав как-то массив, так как моя цель - конвертировать "тяжёлые" файлы изображений, например 6000x4000 пикселей.
Пока терпения хватает на небольшие картинки (примерно 800х500).
И ещё: если картинка не квадратная, а прямоугольная, конвертирование происходит неполное и с выводом ошибки. Почему?
Спасибо.
Сам файл прикрутить не могу: он почему-то весит порядка трёх МБ, хотя по количеству кода видно, что должен весить где-то 20-30 кБ.
Вот код:
Код
Option Explicit

Public Sub AAA()
    Dim pIF As New WIA.ImageFile
    Dim pV As WIA.Vector
    Dim IP As New WIA.ImageProcess
    Dim last As Long
    Dim iRow, iCol As Long
    Dim h As Single, w As Single
    Dim FileName As String
    Dim c As Range, i&
    Dim lr As Long
    Dim lAllCnt As Long 'количество итераций
    Const lMaxQuad As Long = 20 'длина статус-бара
    
FileName = Application.GetOpenFilename _
    ("Рисунки bmp,*.bmp,Файлы Excel,*.xls*,Текстовые файлы txt,*.txt,Рисунки jpg,*.jpg", , "Выбор файла")
    pIF.LoadFile FileName
    
    'pIF.LoadFile "c:\кекс.jpg"
    Application.ScreenUpdating = False

    Dim sh As Worksheet: Set sh = ActiveSheet
    sh.UsedRange.Interior.ColorIndex = 0

    IP.Filters.Add IP.FilterInfos("Scale").FilterID
    IP.Filters(1).Properties("MaximumWidth") = CLng(pIF.Width)
    IP.Filters(1).Properties("MaximumHeight") = CLng(pIF.Height)
    
    'last = CLng(pIF.Width# * CDbl(pIF.Height) / CDbl(pIF.Width))
    
    Set pIF = IP.Apply(pIF)
    Set pV = pIF.ARGBData
    'Stop
    
    For iRow = 1 To pIF.Height
    For iCol = 1 To pIF.Width
        
            'Cells(iRow, iCol).Interior.Color = GetColor(pV, pIF.Width, iCol, iRow)
        i = GetColor(pV, pIF.Width, iCol, iRow)
 
            Cells(iRow, iCol).Value = Format$(i Mod 256, "000\,") & Format$((i Mod 65536) \ 256, "000\,") & Format$(i \ 65536, "000")     
            
    Next iCol
   
Application.StatusBar = "Выполнено: " & Int(100 * iRow / iCol) & "%" & String(CLng(lMaxQuad * iRow / iCol), ChrW(9724)) & String(lMaxQuad - CLng(lMaxQuad * iRow / iCol), ChrW(9723))
    
    Next iRow

    'Очищаем статус-бар от значений после выполнения
    Application.StatusBar = False
    Application.ScreenUpdating = True
End Sub

Public Function GetColor(ByVal inVector As WIA.Vector, ByVal imgWidth As Long, ByVal xPixelID As Long, ByVal yPixelID As Long) As Long
    Dim ToHex As String, vCount As Long
    ToHex = VBA.Hex$(inVector(xPixelID + (yPixelID - 1&) * imgWidth))
    vCount = VBA.Len(ToHex)
    If vCount < 8 Then ToHex = VBA.String$(8 - vCount, "0") & ToHex
    GetColor = VBA.RGB(CInt("&H" & VBA.Mid$(ToHex, 3, 2)), CInt("&H" & VBA.Mid$(ToHex, 5, 2)), CInt("&H" & VBA.Mid$(ToHex, 7, 2)))
End Function

Function GetFilePath(Optional ByVal Title As String = "Выберите файл для обработки", _
                     Optional ByVal InitialPath As String = "c:\", _
                     Optional ByVal FilterDescription As String = "Книги Excel", _
                     Optional ByVal FilterExtention As String = "*.xls*") As String

    On Error Resume Next
    With Application.FileDialog(msoFileDialogOpen)
        .ButtonName = "Выбрать": .Title = Title: .InitialFileName = InitialPath
        .Filters.Clear: .Filters.Add FilterDescription, FilterExtention
        If .Show <> -1 Then Exit Function
        GetFilePath = .SelectedItems(1): PS = Application.PathSeparator
    End With
End Function
Как в макросе конвертирования увеличить размеры картинки?
 
Здравствуйте! Есть программа конвертирования картинок в ячейки Excel попиксельно.
Вот она: https://excelvba.ru/code/Bitmap2Sheet
Во вложении (чуть ниже кодинга) можно скачать саму программу.
Но максимальный размер картинки не превышает 200 пикс.
Как увеличить размер картинок?

Просмотрел все строки макросов, не нашёл, за что зацепиться.
Подозреваю, что здесь скрыт ещё один макрос, ограничивающий размер картинок.
Или нет?
Помогите, кто в теме.
Спасибо.
Изменено: MrBrown - 26.07.2018 12:18:00
Перевести картинку на лист excel цветовым кодом. И - обратно.
 
Здравствуйте!
Есть картинка расширением bmp.
Подскажите, как сделать, чтобы на листе Excel в каждой ячейке каждый пиксел картинки был обозначен RGB-кодом, например вот так:
123, 022, 003.
И обратно, чтобы, имея такую матрицу с RGB кодом, можно было создать картинку bmp.
Я нашёл в интернете только конверторы, которые заливают ячейки таблицы тем же цветом, что и пикселы картинки.
А мне нужно, чтобы в таблице была кодировка.
Подскажите код VBA или дайте ссылку по теме.

Спасибо.
Изменено: MrBrown - 25.07.2018 12:59:35
Копирование - вставка из Word в Excel нескольких несвязанных текстов "пакетом"
 
Здравствуйте!
Появилась необходимость скопировать определенные несвязанные строки из документа Word и вставить их в документ Excel, в разные ячейки.

В приложении:
1. файл Word - акт ОСР (освидетельствования скрытых работ), в котором красным выделено то, что я по очереди копирую "ручками".
2. файл Excel - реестр передачи актов, в котором красным выделено то, что я вставляю по очереди, тоже "ручками".

Бесит смена документов для копирования - вставки: Word-копирование, Excel-вставка...
Можно ли как-то сделать, чтобы в Вордовском документе скопировать по очереди все тексты , а потом в реестре автоматом вставить в нужные ячейки?
Важно:
1. шрифт в документе Excel иной, нежели в документе Word, поэтому приходится вставлять не в ячейке, а в строке формул.
2. Даты в реестре - в ином формате, нежели в Ворде.

Нашел вот такой макрос, но не могу приспособить "под себя", не хватает знаний по макросам Word.
http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=87580&...

Предполагаю, что надо как-то сформировать несколько буферов обмена по количеству копируемых текстов, чтобы потом вставить их содержимое в ячейки Excel.

Прошу помощи.
p.s. У меня проблемы не было бы, формируй мы акты ОСР в Excel, но увы, никто из коллег не желает менять уже привычный Word на Excel.
p.p.s Во время работы никакие иные документы, кроме этих двух, не открыты, поэтому в макросе можно не указывать конкретную директорию и название файла.
Изменено: MrBrown - 13.06.2017 11:26:39
Про повторяющуюся часть кода в нескольких макросах
 
Здравствуйте!
В нескольких макросах одной книги (и даже одного листа) есть довольно большая неизменяемая часть кода.
Как оформить её (эту часть кода) отдельной функцией, чтобы в макросах просто одной строкой указать название функции внутри макроса, и макрос нормально работал?
Такая фишка есть в веб-программировании - include.
А в excel?
Спасибо.
Изменено: MrBrown - 05.05.2017 15:22:20
Шаблон графика производства работ
 
Представляю готовый шаблон для создания различных календарных графиков производства работ по модели Ганта, отдалённо напоминающий графики, выполняемые в MsProject, который есть не на каждом компьютере.
Идея - моя, однако хочу подчеркнуть, что это - плод коллективного творчества форумчан, которые мне помогали, которым я благодарен и которые упомянуты в комментариях макросов.
Разобраться несложно, а я ещё и подскажу. Итак:

Перед пользователем - записи, которые он вправе редактировать. Если какая-то работа занимает несколько строк и не помещается в ячейке - не беда, макрос автоматически увеличит высоту строки. Пользователь указывает длительность работы в днях (сутках), дату её начала и, если необходимо, процент выполнения (линия процента выполнения - зелёная, под голубой линией графика). И жмёт главную кнопку.
Главная кнопка - центральная, с кружочком - "Обновить". Появляется готовый график с указанием месяцев в "шапке", дат и процентов выполнения в начале и конце каждой линии графика.
Правая кнопка с крестиком - очистить график. Очищать график перед каждым обновлением не обязательно, достаточно просто обновлять.
Левая кнопка с тремя горизонтальными штрихами - включение-выключение "зебры" для лучшей читабельности графика.
Остальные четыре кнопки со стрелками - для расширения-сужения графика перед печатью, чтобы график хорошо "сел" на лист. Работа этих четырёх кнопок иногда визуально "заедает", но не из-за кривизны макроса, а из-за работы видеокарты компьютера. Иногда, чтобы увидеть движение строк или столбцов, нужно нажать соответствующую кнопку дважды или трижды.
Все кнопки - не печатаемые, то есть ваш логотип (для примера - розовый прямоугольник с надписью "LOGO") будет хорошо виден.
После всех действий с кнопками пользователь вправе нарисовать границы такие и так, как ему заблагорассудится.
Важные правила:
1. Не редактировать скрытую первую строку - в её ячейках хранятся данные для работы макросов.
2. Макросы осуществляют циклы по строкам, начиная с 10-строки, поэтому нельзя удалять предыдущие строки, лучше аккуратно скрыть, переместив затем кнопки управления в удобное место.
3. Нельзя удалять или вставлять столбцы в диапазоне с первого по девятый. Для этой цели есть запрещающий макрос, но я его закомментировал. Кому нужно - включайте.
4. Между блоками (блоком я называю набор строк с содержанием "Объект №" и относящимися к нему работами) должна быть хотя бы одна пустая строка. Можно вставлять больше.

Всё. Пользуйтесь на здоровье! Код открытый, подстраивайте под себя!
Критика - приветствуется, но не пустая, а с предложениями, добавлениями, усовершенствованиями, которые устранили бы эти четыре правила и добавили новые удобства.
p.s. прошу модераторов рассмотреть мою просьбу о размещении этого шаблона в "Копилке идей". Надеюсь на положительное решение.
Изменено: MrBrown - 01.05.2017 13:40:28
Макрос увеличения-уменьшения высоты определённых строк, не затрагивающие остальные строки.
 
Здравствуйте! В файле (см. приложение) - график работ.

Правой кнопкой с крестиком можно очистить график (макрос Clean).
Центральной кнопкой с кружочком - обновить (макрос Update).
Самой левой кнопкой - включить-выключить "зебру" (макрос Zebra).
Кнопками со стрелками - увеличиваем-уменьшаем строки и столбцы для нормальной печати

Теперь вопросы:
1. Работа номер 3 (ячейка D14) - её название значительно увеличивает высоту строки.
Как изменить макрос Update, чтобы строки высотой, большей, чем остальные, увеличили свою высоту на нужное значение. Другими словами, как применить Autofit только для таких строк? Остальные строки не трогать?

2. Как изменить макросы HeightMore и HeightLess, чтобы они своей работой не затрагивали эти чрезмерно высокие строки?
Напомню, что высота строк в макросе напрямую зависит от значения ячейки B1 (Cells(1,2)).
Спасибо.
Изменено: MrBrown - 29.04.2017 14:26:55
Макрос "зебры", ссылающийся на изменяющуюся залитую ячейку
 
Здравствуйте!
Посадил на кнопку макрос, включающий-выключающий "зебру".
Но он (макрос) работает, ссылаясь на конкретную ячейку.
Подскажите, пожалуйста, как сделать, чтобы макрос, сканируя по столбцу, найдя первую же залитую ячейку, выключал "зебру".
А ещё лучше, - просто включал и выключал при каждом нажатии.
Спасибо.
Код
Sub Zebra()


Application.ScreenUpdating = False
On Error Resume Next
With ActiveSheet


lc = Cells.SpecialCells(xlLastCell).Column
lr = Cells(Rows.Count, 1).End(xlUp).Row


'For f = 10 To lr
    If Cells(12, 1).Interior.Pattern = xlSolid Then
            Cells.Select
                With Selection.Interior
                 .Pattern = xlNone
                    .TintAndShade = 0
                    .PatternTintAndShade = 0
                 End With
    Else

            For I = 10 To lr Step 2
                If Not IsEmpty(Cells(I, 6)) Then
                    With Range(Cells(I, 1), Cells(I, lc))
                        .Interior.ThemeColor = xlThemeColorAccent1
                        .Interior.TintAndShade = 0.799981688894314
                    End With
                End If
            Next I

    End If
'f=f+1
'Next f

End With
 Range("C1").Select
Application.ScreenUpdating = True
End Sub
Изменено: MrBrown - 28.04.2017 15:41:24
Макросом объединить ячейки (merge) по условию месяца и года
 
Здравствуйте!
В первой строке графика записаны последовательно даты.
Как устроить цикл, по которому макрос сравнивает эти даты, находит ячейки с одинаковым месяцем-годом и объединяет соответствующие ячейки в седьмой строке, как показано на примере?
Важно! даты не закреплены за ячейками, они меняются. Но всегда расположены в строгой календарной последовательности.
Прошу помощи, у кого найдётся время.
Спасибо.
p.s. На всякий случай, для разноязычных компьютеров, я буду использовать массив с месяцами на русском языке:
a = Array("январь", "февраль", "март", "апрель", "май", "июнь", "июль", "август", "сентябрь", "октябрь", "ноябрь", "декабрь")
Изменено: MrBrown - 25.04.2017 15:49:04
Помогите организовать цикл в цикле, найти мин. и макс. значения по частям таблицы
 
Здравствуйте!
В приложении - шаблон графика строительных работ. Почти готовый и отдалённо похожий на графики, выполненные в MsProject (для того и делается, чтоб быть похожим, чтобы делать графики в Excel при отсутствии MsProject).
Пользователь заполняет ячейки, которые остаются после нажатия кнопки "Очистить". Она, в принципе, не нужна, так как кнопка "Обновить" делает то же самое перед основной работой макроса.
Мне необходимо вычислить минимальную и максимальную даты для каждого раздела в отдельности и вставить в соответствующие ячейки (выделил жёлтым), чтобы черные линии графика начинались с минимальной даты и заканчивались на максимальной. Подчёркиваю - по разделам.
Для этой цели основной цикл перебора строк организован с конца таблицы. Если это неправильно с точки зрения "красоты кода" или чего-то иного - подскажите.
Сам код с комментариями находится по (Alt+F11), на листе1. Проблемный блок кода выделен пунктирными границами.
Прошу помощи: уже несколько вечеров мучаюсь. Пробовал Do-While-Loop, тоже не получилось, где-то "не догоняю". Возможно ли как-то задействовать Array, если это будет проще? Я сам не пробовал - "тёмный лес".
И ещё: подскажите, как вставить SpinButton на лист таким образом, чтобы стрелки были развёрнуты влево-вправо, а не вверх-вниз?
Благодарю всех откликнувшихся за участие в моей проблеме.
Как макросом осуществить показ даты, не объединяя узкие ячейки?
 
Здравствуйте!
Прилагаю пока незаконченный график строительства. Здесь в пустых строчках (со второй по восьмую) будет "Шапка". Первая строка - будет скрыта.
Сваял соответствующий макрос. Работает правильно, за исключением показа даты окончания работы правее каждой стрелки.
Дата показывается решеткой. Я пробовал представить дату в строку (CStr), но не получилось.А объединять ячейки по длине даты нельзя.
Прошу помощи:
1. какую запись и где вставить в макрос, чтобы дата окончания работ показывалась у острия стрелки с выравниванием слева.
2. какую запись и где вставить в макрос, чтобы дата начала работ показывалась у кружочка стрелки, с выравниванием справа.
Спасибо.
p.s. может ещё, кроме этого, посоветуете, как усовершенствовать, сократить макрос или, наоборот, что-нибудь добавить для его надёжной работы.
Как в ячейке получить результат действий в другой ячейке?
 
Здравствуйте! Существует ли такая функция:
В ячейке А1 пишу только действия над числами, например, следующее (без знака =):
(45-16)*2,1/(2,1+3,5)
В ячейке В1 должен появиться результат: 10,875
Другими словами, мне нужно, чтобы в ячейке А1 были видны все действия над числами, а в ячейке В1 - только результат этих действий.
Какую функцию (несколько функций) вписать в ячейку В1?
Спасибо.

p.s. Excel-2003
Изменено: MrBrown - 30.10.2013 22:44:53 (добавление)
Страницы: 1
Наверх