Страницы: 1
RSS
Как отобразить табуляцию в ячейке?
 
Заранее прошу прощения за кросспост, но в Миру ( http://www.excelworld.ru/forum/2-2857-1 ) что-то ничего толкового мне не подсказали, а у Серёги (KuklP) сегодня День варенья (и здесь ПОЗДРАВЛЯЮ) и он на более важное дело отвлёкся, естественно.  
А свободное время у меня чтобы поковыряться с проблемой есть сейчас.  
Чуть сокращу свой пост "в Миру":  
Пытаюсь подкрутить свой макрос для склеивания текстов из нескольких объединяемых ячеек в один стринг с переносами строк до юзабилити состояния чтобы было можно делать не только Merge без потери данных, но и UnMerge с распределением по ячейкам.  
Sub Merge_with_Chr10()   ' объединить выделенные ячейки, склеив их тексты с переносами строк  
   If TypeName(Selection) <> "Range" Then Exit Sub  
   Dim rRng As Range: Set rRng = Intersect(Selection, ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible))  
   If rRng Is Nothing Then Exit Sub  
   If rRng.Cells.Count = 1 Then Exit Sub  
   Dim text$, rCell As Range  
   For Each rCell In Intersect(Selection, ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible))  
       If Len(rCell.Value) Then text = text & IIf(Len(text), vbLf, "") & rCell.Value  
   Next rCell  
   Application.DisplayAlerts = False  
   rRng.Merge: rRng.Value = Application.Trim(text)  
   Application.DisplayAlerts = True  
End Sub  
Да ещё при этом хотелось бы в объединённой ячейке умудриться данные из объединяемых не только "в столбик" vbLF'ом разделять, но и по горизонтали.  
Ну в смысле чтобы в объединённой ячейке сохранялось подобие расположения данных, которое было в объединяемых.  
Множественные пробелы, естественно, не катят для горизонтального распределения данных внутри ячейки (ну не блондинки же мы-секретарши чтобы переносы в ячейках пробелами делать :D )  
Я тут в ручном режиме ввода в ячейку попробовал организовать наглядность разделителями-символами псевдографики. Не наглядно получилось.  
Хотя потом по этим символам не сложно было бы и UnMerge с обратной расстановкой по ячейкам организовать.  
А потом решил попробовать сделать "в лоб" - ввести макросом в стринг, вставляемый в объединённую ячейку табуляцию.  
В окне Immediate выполнил:  
[a1]="12" & vbtab & "34"
Посмотрел на лист. На первый взгляд в ячейке А1 на листе ничего не получилось.  
Но когда я "прошёлся" в строке формул курсором по символам слева-направо, то очень интересно получилось: после 2 курсор скакнул за несколько знако-мест на середину символа 4, а потом пошёл дальше 2 раза по пустому месту (прямо как будто у меня там пробелов после 4 понатыкано).  
Т.е. символ табуляции в ячейке всё-таки не "глушится" Excel'ем, а только не отображается!  
Вот бы придумать, как его отображать!  
Есть у кого-нибудь идеи?
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
{quote}{login=Alex_ST}{date=23.11.2012 11:38}{thema=Как отобразить табуляцию в ячейке?}{post}В окне Immediate выполнил:  
[a1]="12" & vbtab & "34"
Посмотрел на лист. На первый взгляд в ячейке А1 на листе ничего не получилось.  
Но когда я "прошёлся" в строке формул курсором по символам слева-направо, то очень интересно получилось: после 2 курсор скакнул за несколько знако-мест на середину символа 4, а потом пошёл дальше 2 раза по пустому месту {/post}{/quote}Алекс, привет! У меня даже этого не происходит - остаётся сплошной текст с "квадратиками". А вот в ЛистБоксе, помнится, срабатывало...
 
Юрий,  
а у меня даже квадратиков не видно :(  
Просто смотрится и в ячейке, и в строке формул как сплошной текст 1234
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
Символы, которые нельзя ввести с клавиатуры  
 
Зачастую случается, что надо ввести какой-либо символ, для которого отсутствует клавиша на клавиатуре (например, символ копирайта). Другая ситуация - когда надо в строку включить служебный символ VBA (самый распространенный случай - включение двойных кавычек).  
Чтобы включить в строку символы, которые невозможно ввести с клавиатуры, или которые имеют особое значение для VBA, используется функция Chr.  
Синтаксис  
 
Chr (Charcode)  
 
Charcode - любое численное выражение, являющееся допустимым кодом для набора символов, используемого компьютером. Должен быть целым числом от 0 до 255.  
Функция Chr принимает код отдельного символа в качестве аргумента и возвращает строку, содержащую соответствующий этому коду символ. Данная функция использована в вышеприведенных листингах для перевода строки при выводе сообщения на экран Chr (13).  
 
Поскольку символы, используемые для начала новой строки, являются очень важными при форматировании сообщений и других строковых данных, которыми манипулируют VBA-процедуры, имеется несколько предопределенных констант для этих символов, чтобы не было необходимости использовать функцию Chr:  
vbCr - символ возврата каретки. Эквивалент Chr(13)  
vbLf - символ смещения на одну строку. Эквивалент Chr(10)  
vbCrLf - символ возврата каретки+смещения на одну строку. Эквивалент Chr(13)+ Chr(10)  
vbTab - символ табуляции. Эквивалент Chr(9)  
отсюда http://www.on-line-teaching.com/vba/lsn0107.html
 
Анониму: см. скрин - выполнено с Chr(9)
 
Аноним, ну и что из этого следует?  
Может ещё какую-нибудь цитатку приведёте?
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
сарказм?
 
Почему сарказм? - результат.
 
Алексей, попробуй  
   ActiveCell.FormulaR1C1 = "1234" & Chr(10) & "5678" & Chr(10) & "5678" & Chr(10) & "5678" & Chr(10) & "5678"
Спасибо
 
Дима, а при чём здесь vbLF=Chr(10) ?  
Его то ввести элементарно.  
А вот vbTab=Chr(9) - фиг вам!  
То есть ввести то можно, но он не отобразится
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
Страницы: 1
Читают тему
Наверх