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

Страницы: 1
При замене символа в ячейке "слетает" оформление, При замене символов в ячейке все оформление по шрифтам сбрасывается
 
Добрый день всем.
Суть задачи: выгружается список категорий и подкатегорий в одну ячейку. Нужно Категории выделить жирным шрифтом, подкатегории обычным. Пример:

Категория 1
подкатегория 1
подкатегория 2
подкатегория 3

Категория 2
подкатегория 1
подкатегория 2
подкатегория 3

Сами данный выгружаются в таком же виде, только без выделения. Были добавлены символы табуляции вокруг Категорий для облегчения написания макроса. Макрос срабатывает каждый раз, когда мы переключаемся на страницу, когда активизируем.

Текст макроса:
Код
Public Sub boldFontTargets()
    Dim actSheet As Worksheet
    Dim startPos, endPos, countSymbol As Integer
    Dim flag, flagBold As Boolean
    Dim searchStr, newValue As String
        
    Set actSheet = ThisWorkbook.ActiveSheet
    flag = True
    endPos = 0
    startPos = 0
    flagBold = True
    searchStr = vbTab
    
    While flag
        If (startPos = 0) Then
            startPos = InStr(1, actSheet.Cells(5, 3), searchStr)
        End If
        endPos = InStr(startPos + 1, actSheet.Cells(5, 3), searchStr)
        
        If (endPos = 0) Then
            countSymbol = Len(actSheet.Cells(5, 3)) - startPos
        Else
            countSymbol = endPos - startPos
        End If
        
        If (IsNumeric(startPos) And IsNumeric(endPos) And startPos > 0 And endPos > 0) Then
            With actSheet.Cells(5, 3).Characters(startPos, countSymbol).Font
                .Bold = flagBold
            End With
            startPos = endPos
            flagBold = Not flagBold
        Else
            flag = False
        End If
    Wend
  
End Sub

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

Заранее благодарен
Отформатировать данные для дальнейшей печати (автоматизация вычисления области печати), Необходимо сформировать таблицу с шапкой и подписями для печати на нескольких страницах
 
Добрый день всем.
Проблема в следующем:
Имеется таблица с 100 строками. У таблицы есть название и наименование столбцов. А также под таблицей пишется номер страницы и логотип фирмы.

Я могу установить сквозные строки для страниц и на печать будет выводиться и шапка, и "подвал".
Но нужно сформировать эти данные на самом листе, так как пользователи копируют эту информацию в какие-то отчеты.

На листе "Как есть" - отображена информация, которая сейчас выгружается из системы в таком виде.
На листе "Как должно быть" - показано как она должна быть сформирована на самом листе и выводиться на печать, соответственно.
Область печати задается, так чтобы все столбцы влезли. Вся проблема со строками.
Наведите на мысль, как это можно сделать: как вычислить последнюю строку на первой странице, подсчитать сколько строк выводится на печать и прочее.
Подсчитать количество выводимых на печать страниц в исходном варианте я могу, что сделать дальше нужно, чтобы информация вмешалась на лист.
Группировка: как узнать, что данная строка является "родителем" группы?
 
Добрый день всем.

Есть такая задача: есть лист Excel, где сгруппированны строки до максимального уровня. Причем у некоторых позиций уровень вложенности меньше. Каким образом мне узнать, что данная строка является "родителем" группы, чтобы обработать нужные строки?

Пример файла прикладываю.
Заранее благодарен за ответы.
Передача в качестве параметра элемента TextBox
 
Здравствуйте.
Подскажите, как осуществить следующее:
1. на форме есть первая группа OptionButtion и связанный с ними TextBox1. При выборе первой радиокнопки и двойном клике на TextBox1 я получаю форму открытия файла, при выборе второй радиокнопки и двойном клике в TextBox1 я получаю форму выбора директории.
2. Затем есть 2 группа радиокнопок и свой TextBox2. При выборе 1 радиокнопки TextBox2 скрывается (будет происходить перезапись файлов), при выборе второй радиокнопки появляется TextBox2 и при двойном клике в нем вызывается окно выбора каталога (сохранения в другую директорию файлов).
3. Написана процедура, по выбору каталога
Код
Private Sub ChoiceCatalog()
    Dim oDir As FileDialog
    Dim DirCatalog, SaveFileName
    
    Set oDir = Application.FileDialog(msoFileDialogFolderPicker)
        With oDir
            .Title = "Выбрать каталог"
            .ButtonName = "выбрать каталог"
            .Filters.Clear
            .InitialView = msoFileDialogViewLargeIcons
            
            If oDir.Show = 0 Then Exit Sub
            DirCatalog = .SelectedItems(1)
            fMain.tbPath.Value = DirCatalog
        End With
    
End Sub
Я хочу использовать ее для двух TextBox. Но в значения этих TextBox должны попадать свои пути.

Как передать в качестве параметра саму форму или элемент, который вызвал эту процедуру, чтобы уже в этот элемент и записать значение? В коде это строчка перед End With
Код
fMain.tbPath.Value = DirCatalog
Обновление данных в ComboBox на листе
 
На листе программно, по нажатию кнопки добавляются ComboBox. При открытии книги все ComboBox присваиваются классу (у которого прописано одно событие Change), и во всех них обновляются списки данных:
Код
Public aoCmbBxes As clsmCmbBxes
Public clCmBxes As New Collection

For Each sh_tmp In ThisWorkbook.Worksheets
  For Each elem In sh_tmp.OLEObjects
    Set cb = elem.Object
    If TypeName(cb) = "ComboBox" Then
      Set aoCmbBxes = New clsmCmbBxes
      Set aoCmbBxes.oCmbBx = cb
      clCmBxes.Add aoCmbBxes
    End If
  Next elem

Next sh_tmp

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

1.добавление нового элемента класса и присваивание ему нового CB
Код
Set aoCmbBxes = New clsmCmbBxes
Set aoCmbBxes.oCmbBx = list.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, _
      DisplayAsIcon:=False, Left:=lCB, Top:=tCB, Width:=wCB, _
      Height:=hCB).Name = sName

2.Добавление CB на лист, и обновление всех CB на листах, как в процедуре выше
Код
list.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, _
      DisplayAsIcon:=False, Left:=lCB, Top:=tCB, Width:=wCB, _
      Height:=hCB).Name = sName

Call UpdateCB

Но этот новосозданный комбобокс никак не хочет попадать в класс ((( и соответственно не отрабатывает событие. Только после перезапуска книги. Продебагить по шагам не могу, так как в этот момент видимо включается Конструктор где-то и выскакивает сообщение " can't break mode at this time"

Помогите )
Изменено: _andrew_ - 23.03.2016 12:43:23
Получение имени элемента из процедуры, как получить имя элемента...
 
Здравствуйте.
Проблема следующая:
на листе есть элементы (на данный момент это ComboBox из Active). Есть кнопка, которая копирует некоторый диапазон и расширяет лист для заполнения данными. Так вот, по нажатию этой кнопки создаются также новые элементы ComboBox, на которые вешаются макросы OnChange. Так вот, скажите как из процедуры (функции), которая закреплена ха этим элементом получит имя этого самого элемента?
Пример кода:
Код
Private Sub CB_1_Change()
  'как получить то самое заветное CB_1
End Sub
количество этих элементов я не знаю заранее, но от него зависит дальнейшие действия.
Заранее благодарен.
Поведение ComboBox на листе
 
Помогите разобраться со следующей ситуацией.
1. На листе есть ComboBox из ActiveX. Расположен он в объединенной ячейке, которая занимает десяток столбцов. Человек потом должен заполнить значениями столбцы при этом предварительно выбрав нужное значение из ComboBox. Кто-то видит хорошо, кто-то не очень. Поэтому при увеличении масштаба листа полоса прокрутки у комбобокса пропадает. Комбобокс сделан на всю ширину объединенной ячейки, но щелкая по нему в любом месте он раскрывается, не обязательно щелкать на стрелочке. И полоса прокрутки видна либо при уменьшении масштаба самого листа, либо при щелчке на стрелке комбобокса.
2. Если список данных у комбобокса большой, порядка 40-50, а показывается только 20, то если дернуть колесиком мыши по раскрытому списку листается не список, а сам лист.

Возможно ли решить данные проблемы без написания макроса на вычисление разрешения экрана, на положение мышки на списке и т.д. ? Можно ли просто где-то это задать в свойствах объекта?

3. Если комбобокс находится в какой-то ячейке на строке , допустим Х. То как сделать макросом, чтобы он в ячейку по соседству записывал свое значение? По сути вопрос в том, как узнать адрес ячейки где расположен комбобокс.

Заранее благодарен за ответы и советы.
Страницы: 1
Наверх