2015-09-17 2 views
0

Я использую Access VBA для заполнения электронной таблицы Excel информацией из базы данных.Перерыв строки в запятой, а не дефис

У меня есть столбец «Зависимые проекты», которые заполняются номерами проектов. Это столбец фиксированной ширины с включенным текстом.

Прямо сейчас, выход в формате

01-04,01-05,01- 
06,01-07 

Я хотел бы выход быть в этом формате

01-04,01-05, 
01-06,01-07 

Моя идея для моего кода VBA, чтобы проверить, чтобы увидеть если содержимое столбца будет перенесено на вторую строку, и если это так, сломайте строку на последнем «,», который она может найти.

Я подхожу к этому неправильно? Если да, то каковы мои другие варианты?

У меня есть не что иное, как простая команда WrapText = True, потому что я не уверен, где мне нужно начинать с этого. Я не так опытен в VBA, как скоро хочу.

Спасибо за любую помощь, которую вы можете дать.

Текущий код:

'format Dependent Project(s) column as text, and wrap column 
Columns("D").Select 
Selection.NumberFormat = "@" 
Selection.WrapText = True 


EDIT:

Я закончил с использованием решения Брэда ниже; его решение помечено как лучший ответ.

Мне, однако, пришлось немного изменить код, чтобы он работал в моей конкретной ситуации. Уменьшение переменной в качестве диапазона дало мне ошибку, так что это код, который я использовал.

Dim ProjList As String 
ProjList = QF_CustomFormatFunct(ProjectKey) 'A function that given raw data 
              'to builds a string in format 
              '"01-01, 01-02, etc" 
ProjList = Replace(ProjList, "-", ChrW(8209)) 

После ProjList имеет новый неразрывный дефис, он заполняется в колонке D, которая отформатирована, чтобы обернуть текст вверх выше.

+0

Вы можете включить пробел после каждой запятой, как это? '01-04, 01-05, 01-06, 01-07' И если это приемлемо, то Excel затем обертывает значения ячеек, как вам угодно? – HansUp

+0

Мне удалось добавить запятую, но теперь я получаю несколько ошибок, которые мне нужно отлаживать. Я обновлю вас и дам вам знать, работает ли это решение, как только я это знаю. – jtchase08

+0

К сожалению, он по-прежнему не обтекает столбец так, как я этого хочу. Теперь это просто сокращение линии над одним персонажем. – jtchase08

ответ

3

Проблема со строкой, которую вы написали, состоит в том, что как запятые, так и дефисы являются предпочтительными местами для разрыва строки. Если вы идете с форматом 01‑04, 01‑05, 01‑06, 01‑07, то HansUp предлагает использовать non-breaking hyphen, , он должен отображаться так, как вы хотите.

Вы можете использовать это в VBA с chrw(8209) как

Dim c as Range 
Set c = Selection 
c.Value = replace(c.Value , "-",ChrW(8209)) 
+0

Это отлично работает для меня. Мне пришлось немного изменить его для моей конкретной ситуации, так как я получал ошибку 424. См. Редактирование моего исходного вопроса для кода, который я завершил. – jtchase08

+0

@ jtchase08 Я понял, что вы использовали Excel, и в этом случае 'Range' не должен вызывать ошибку. Но если вы заработаете, просто используя строки, то супер. – Brad

Смежные вопросы