2015-09-17 75 views
0

我正在使用Access VBA使用数据库中的信息填充Excel电子表格。以逗号分隔字符串,而不是连字符

我有一个名为“Dependent Project(s)”的专栏,填充项目编号。这是一个固定宽度的列,并且启用了换行文本。

眼下,输出是在

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 


编辑:

最后我用下面布拉德的解决方案;他的解决方案被标记为最佳答案。

但是,我确实需要修改一下代码,以使其适用于我的特定情况。调暗变量作为范围给我一个错误,所以这是我最终使用的代码。

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