用逗号分隔字符串,而不是连字符

时间:2015-09-17 14:53:49

标签: vba ms-access access-vba

我正在使用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


修改

我最终在下面使用Brad的解决方案;他的解决方案被标记为最佳答案。

但是,我确实需要改变代码,以便在我的特定情况下工作。将变量调暗为Range会给我一个错误,所以这就是我最终使用的代码。

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中,该列已被格式化为在上面包装文本。

1 个答案:

答案 0 :(得分:3)

您编写的字符串的问题是逗号和连字符都是打破字符串的优先位置。如果你采用HansUp建议的01‑04, 01‑05, 01‑06, 01‑07格式,那么使用non-breaking hyphen,它应该显示你想要的方式。

您可以在chrw(8209)

的VBA中使用此功能
Dim c as Range
Set c = Selection
c.Value = replace(c.Value , "-",ChrW(8209))