Страницы: 1 2 След.
RSS
Расширять столбец по длине текста при нажатии на ячейку
 
При раскрытии выпадающего списка в ячейках E13:E18, я не могу полностью видеть отображающиеся данные, можно сделать так, чтобы диапазон ячеек E13:E18 автоматически расширялся на длину текста при нажатии и потом возвращался в исходную ширину?
Изменено: Ибрагим Белхороев - 26.07.2021 10:17:07
 
.
 
tolikt, мне нужно как в этом примере, там когда нажимаешь на ячейку J столбец расширяется, а потом возвращается на исходную
Изменено: Ибрагим Белхороев - 29.05.2021 15:06:38
 
Надо же, нашелся в запасниках форума файл многолетней давности с моим примером...  Приятно  :)
Ибрагим, хватит уже в личку писать, Вам дают нормальные ответы в темах, если что-то непонятно, в темах и задавайте вопросы.
По этой теме код из #3:
Код
Sub Раздвинуть()
    Columns("J:J").ColumnWidth = 83.14
    ActiveWindow.ScrollColumn = 7
End Sub
Sub Вернуть()
    Columns("J:J").ColumnWidth = 14.86
    ActiveWindow.ScrollColumn = 1
    Rows("1:1000").AutoFit 'Если автоподбор высоты строки не нужен, уберите из кода эту нижнюю строку
End Sub
Замените "J" на нужный Вам столбец и поставьте нужную Вам ширину (ColumnWidth)
ActiveWindow.ScrollColumn = 7 - это сдвиг полосы прокрутки, регулируйте.
 
_Igor_61, а можно сделать так, чтобы этот код срабатывал автоматически при раскрытии выпадающего списка и конкретно к ячейкам E13:E18 под графой "Маршрут перевозки", которые входят в эту таблицу?
 
Цитата
Ибрагим Белхороев написал:
чтобы этот код срабатывал автоматически при раскрытии выпадающего списка
Не нашел в файле никакого списка, стоит "#ССЫЛКА", видимо Вы этот список удалили. Сделал список сам, не знаю этот ли список должен быть в столбце "E".
Цитата
Ибрагим Белхороев написал:
конкретно к ячейкам E13:E18
см. файл
 
_Igor_61, я добавил ваш код с этого файла, но почему то он у меня не расширяет при нажатии на ячейку как у вас?
 
Ибрагим, а код из #6 работает? Именно в том файле из #6? Ответьте, только честно - да или нет?
Вы его просто вставили в модуль листа ниже Вашего кода, т.е. одним и тем же событием пытаетесь запустить разные макросы одновременно...
Иначе: почему он не работает в Вашем файле - Вам лучше знать (или искать причину, почему не работает). Наверное, собаку нужно искать в событиях листа плюс добавить задания условий для разных ситуаций (If). Скорее всего Вам нужно как-то сформулировать и обозначить условия для вызова разных макросов по одному и тому же событию листа.
У меня почему-то нет никаких списков в столбце "E", про которые Вы пишите, хотя имя в диспетчере имен есть, но там #ССЫЛКА.
Возможно версии...  у меня 2007 Excel и Win7 и XP до сих пор... Но все макросы которые делал работали и работают и в 2010, как в остальных не знаю
Изменено: _Igor_61 - 04.06.2021 16:15:52
 
_Igor_61, да, работает. Вы правы, я вставлял этот код не в то событие и поэтому он у меня работал не так как у вас, щас я вставил под событием SelectionChange и всё работает, извините меня, знаю, что нервы потрепал, я просто не разбираюсь в этом и только начинаю изучать макросы и в целом эксель.  
 
_Igor_61, а можно сделать так, чтобы этого макроса не было в модуле, а только в самом листе, имеется в виду, чтобы во вкладке разработчики, где пункт макросы не было "вернуть" и "раздвинуть"?
 
Напишите перед Sub слово Private.
 
Пробовал, но не работает
Код
Private Sub Раздвинуть()
    Columns("E:E").ColumnWidth = 35
End Sub
Private Sub Вернуть()
    Columns("E:E").ColumnWidth = 4
End Sub
Изменено: vikttur - 09.06.2021 13:00:29
 
Тогда так.
Код
Sub Раздвинуть(Optional b As Boolean)
    Columns("E:E").ColumnWidth = 35
End Sub
Sub Вернуть(Optional b As Boolean)
    Columns("E:E").ColumnWidth = 4
End Sub
 
МатросНаЗебре, спасибо.
Изменено: Ибрагим Белхороев - 08.06.2021 09:16:39
 
Ибрагим Белхороев, а можно и просто в Модулях Листов подправить на вот это:

Код
    
    If isect Is Nothing Then
        
        If jsect Is Nothing Then
            Exit Sub
        Else
            Columns("E:E").ColumnWidth = 4
        End If
        
        Exit Sub
    Else
        Columns("E:E").ColumnWidth = 35
    End If



и не будет видно их в
Цитата
Ибрагим Белхороев написал:
где пункт макросы не было "вернуть" и "раздвинуть"?
 
_Igor_61, допустим у меня в примере обе ячейки A1 и B1 расширяются при нажатии на одну из них, мне нужно, чтобы они по отдельности расширялись, а не сразу вместе, как это сделать?
 
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column = 1 Then
        Target.ColumnWidth = 115
    Else
        Columns(1).ColumnWidth = 13
    End If
    If Target.Column = 2 Then
        Target.ColumnWidth = 50
    Else
        Columns(2).ColumnWidth = 13
    End If
End Sub
 
RAN, а как сделать так, чтобы это не распрастранялось на другие ячейки кроме заданного диапазона?
Изменено: Ибрагим Белхороев - 27.07.2021 09:11:15
 
RAN, не знаете, почему код макроса в сообщении #17 при выделении столбцов A, B, C и D расширяет и столбцы C, D?
 
потому что в макросе написано сделать именно так:
Target.ColumnWidth = ....
макросы ничего не придумывают, работают строго как написано (а не как предполалось (думалось) что будет работать)
Изменено: Ігор Гончаренко - 04.09.2021 13:28:12
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, а как изменить, чтобы расширялись только указанные столбцы?
 
Цитата
Ибрагим Белхороев написал:
указанные столбцы
это какие? где они указаны?
если те, о которых вы думаете - то так не получится
если те, которые можете назвать - это, скорее всего, можно сделать

т.е. если есть описание задачи - ее можно попытаться решить, если описания задачи нет - решения не будет
пока условия задачи крутятся только у вас в голове - никто ее не решит, когда расскажете здесь, может кто-то и осилит вашу задачу.
Изменено: Ігор Гончаренко - 04.09.2021 14:01:47
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, я разобрался сам, спасибо вам.
 
Target Target(1)
 
RAN, понял, спасибо.
 
RAN, не знаете почему этот код при выделении столбцов A, B, C расширяет столбец C?
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
     If Not Intersect(Target(1), Range("A1:A10")) Is Nothing Then
            Target.Columns.ColumnWidth = 75
     Else
            Columns(1).ColumnWidth = 14
     End If
     If Not Intersect(Target(1), Range("B1:B10")) Is Nothing Then
            Target.Columns.ColumnWidth = 75
     Else
            Columns(2).ColumnWidth = 14.5
     End If
     
End Sub
 
Ибрагим Белхороев, добавьте
Код
Columns(3).ColumnWidth = 14
перед End Sub и продолжайте спокойно работать. :)
Разработчики больших программ сами не всё знают, почему и как каждая часть программы работает именно так, как работает по одной простой причине - каждый из них делает только свою часть. И всю справку невозможно изучить. Не всегда можно найти конкретный ответ на вопрос "Почему это именно так?", но всегда можно воспользоваться известными ранее средствами для достижения нужного результата, в данном случае задать нужную ширину столбцу "С".  :) И если кто-то из форумчан ответит более предметно почему они расширяются (похоже, что не только "С", но и правее)  :) , будет очень полезно для всеобщего образования :)
Изменено: _Igor_61 - 09.10.2021 16:25:23
 
Цитата
Ибрагим Белхороев написал:
не знаете почему этот код при выделении столбцов A, B, C расширяет столбец C?
как написан - так и работает!
макрос НИЧЕГО не придумывает сам, он делает строго то, что в нем написано
довольно часто то, что написано в макросе, - не соответствует тому, для чего он был написан (макрос не может угадать, что вы хотели сделать, макрос выполняет то, что вы написали сделать, т.е. делает не то, что вы хотели сделать, а то, что вы в нем написали сделать)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, ну в коде же написано, чтобы расширялись только столбцы A и B.
 
_Igor_61, спасибо за помощь, но при добавлении этой строки, начинает расширяться столбец D.
Страницы: 1 2 След.
Наверх