我有一个MS Access表单,用户在其中将字符串粘贴到{Vars}字段中,我想将该字符串重新格式化为新字段,以便(a)保留整个单词,并且(b)在其中“适合” 70列。
具体来说,用户将从SPSS中剪切/粘贴变量名称。因此,字符串将以全名形式进入字段-不允许使用空格-每个变量之间都有换行符。因此,VBA代码的第一位看起来像这样:
Vars = Replace(Vars, vbCrLf, " ")
可删除换行符。但是从那里开始,我很困惑-最终,我希望将粘贴在Vars字段中的长字符串放在连续的多行中,每行不超过70列。
感谢您的帮助!
答案 0 :(得分:0)
好的,对于后代,这是一个解决方案:
捕获用户输入的表单上的字段名称是VarList。下面对SPSS_Syntax函数的调用返回了变量名列表(在“变量”中),这些变量名随后可以在其他地方使用:
Vars = SPSS_Syntax(me.VarList)
回想一下,用户输入Varlist是作为每个变量(单词)输入的,每个变量之间都有一个换行符。问题是我们希望列表位于一行上(水平而不是垂直),并且一行的长度不能超过256个字符(我将其设置为下面的70个字符)。功能如下:
Public Function SPSS_Syntax(InputString As String)
InputString = Replace(InputString, vbNewLine, " ") 'Puts the string into one line, separated by a space.
MyLength = Len(InputString) 'Computes length of the string
If MyLength < 70 Then 'if the string is already short enough, just returns it as is.
SPSS_Syntax = InputString
Exit Function
End If
MyArray = Split(InputString, " ") 'Creates the array
Dim i As Long
For i = LBound(MyArray) To UBound(MyArray) 'for each element in the array
MyString = MyString & " " & MyArray(i) 'combines the string with a blank space in between
If Len(MyString) > 70 Then 'when the string gets to be more than 70 characters
Syntax = Syntax & " " & vbNewLine & MyString 'saves the string as a new line
MyString = "" 'erases string value for next iteration
End If
Next
SPSS_Syntax = Syntax
End Function
也许有更好的方法可以做到这一点。干杯。