2017-02-25 115 views
0

我將以下內容剪切並粘貼到表單上的文本框中: 糾正措施:您如何提高完美性?以表格形式訪問VBA Richtext

然後我按下「更新數據庫」按鈕,去掉單詞「糾正措施:」,並將其餘文本放在表格中。

在表中,條目如下所示:您如何提高完美度?

當我將信息發回到表單時,操作系統(或其他)在其下插入一個空行。

不需要很長時間重複上述步驟,直到文本框由於空白行被添加到文本而變得難以接受。

我該如何擺脫這個插入的空白行?除了這裏顯示的內容,我沒有看到任何額外的字符。

這個問題是有關問題「在訪問表CRLFs」我在9月30日2016年

2017年2月27日 今天上午發佈我用下面的代碼來看看字符串中最後幾個字符:

theFld.Value = Trim(tempNom) 
'temporary 
tempCt = Len(tempNom) 
While tempCt > 0 
    Debug.Print Asc(tempNom) 
    tempNom = right(tempNom, Len(tempNom) - 1) 
    tempCt = Len(tempNom) 
    If tempCt < 15 Then Stop 
Wend 
'temporary 

無論是否帶TRIM功能,調試器都沒有顯示意外的字符,但它仍然插入CRLF!有趣的是,調試器在debug.print out的末尾放置了一個空白行,但子程序沒有顯示字符。

+0

如果不以某種方式進入這些字符(任何VBA代碼參與?),那麼你的表格上,看文本屬性「回車鍵行爲」 ......是什麼把它設置爲? –

+0

要查找具有CR或LF的記錄,請運行類似於以下的查詢(更改表名稱和字段名稱!):SELECT FldB,InStr(1,[FLDB],Chr(13))AS CR,InStr(1 ((InStr(1,[FLDB],Chr(13)))> 0))OR(((InStr(1,[FLDB],[FLDB],Chr(10))。 CHR(10)))> 0)); –

+0

關鍵行爲設置爲「默認」。感謝您的輸入 –

回答

0

我懷疑這是關於如何選擇要剪切的文本以及剪切它的位置。如果從Word文檔的中間選擇一行文本,則可能會注意到選區中此行末尾的空格。這實際上是'新行'字符。所以當你粘貼到Access時,你也會得到新的一行。由於表視圖通常設置爲單行高,因此在表視圖中默認情況下不會顯示此內容,但如果您在表中編輯此條目,則可以超出文本末尾併到達下一行。這是最明顯的,如果你使用shift-F2來調出縮放框進行編輯。

有一對夫婦的方法來治療這個問題:

1選擇剪切文本時要小心。如果您單擊並拖動鼠標使其遠離要複製的內容的末尾,則可能會發現在展開選區時Word將自動選擇整個單詞。一旦你經過了你想要的選擇結束的位置,如果你開始慢慢地回到那個結束位置,Word將開始一次取消選擇一個字符而不是整個單詞。確保你只選擇你想要的最後一個字母,並且不要在你的文字後加上'空格'(換行)。

2或者,您可以按照您總是完成的方式選擇文本,但是當您粘貼時,您可能會注意到插入點在插入文本後會在行上結束。只需按退格鍵即可擺脫這條新線。

3如果這是其他用戶正在做的事情,並且您不能將它們「教育」爲如何剪切/粘貼,而不在文本的末尾添加新行,那麼您將不得不去掉在「更新數據庫」按鈕後面的代碼中關閉新行。我永遠記得它倒過來了CR和LF字符去,但它會像

Dim strCA As String 
If Right(txtCorrectiveAction, 2) = Chr(10) & Chr(13) Then 'might need to swap the 10 and 13 around 
    strCA = Left(txtCorrectiveAction, Len(txtCorrectiveAction) - 2) 
Else 
    strCA = txtCorrectiveAction 
End If 

然後在你的insertupdate語句中使用strCA。

+0

今天早上我用下面的代碼來查看字符串中的最後幾個字符: –

0

除了Skippy說的,你可能會在字符串中嵌入CR或LF(即你複製多行)。以下代碼只是一個示例,顯示如何找到它們的出現位置以及兩個要刪除的方法。注意刪除的區別......第一個僅從字符串末尾刪除,第二個刪除全部,而不管在字符串中遇到的位置。

' Sample code to find and replace CR, LF's 
Dim tempNom As String 
Dim tempCt As Integer 
Dim i  As Integer 
Dim char As String 

tempNom = "Now is the time..." & vbCrLf ' FOR TESTING. REMOVE WHEN LIVE! 

' To find any CR or LF in string 
For i = 1 To Len(tempNom) 
    char = Mid(tempNom, i, 1) 
    If Asc(char) = 13 Or Asc(char) = 10 Then 
     Debug.Print "In position " & i & " of string: Found Asc(" & Asc(char) & ")" 
    End If 
Next i 

' To remove either CR or LF from right of string 
Do 
    If right(tempNom, 1) = vbCr Or right(tempNom, 1) = vbLf Then 
     tempNom = left(tempNom, Len(tempNom) - 1) 
    Else 
     Exit Do 
    End If 
Loop 

' Replace all CR or LF anywhere in string 
tempNom = "Now is the time..." & vbCrLf ' FOR TESTING. REMOVE WHEN LIVE! 
tempNom = Replace(tempNom, vbCr, "") 
tempNom = Replace(tempNom, vbLf, "")