2015-07-13 48 views
0

我一直在努力做一個簡單的導入VBA命令,以從另一個Excel表導入數據,其中包含我們使用的報表工具的數據。數據已經以這樣的方式輸出,即一個單元格包含多行文本,就像有人使用alt +輸入它來獲得回車一樣。包含回車數據的行自動大小

我試着自動調整這些行的數據以正確顯示數據,但是當我這樣做時,只會自動調整爲一行文本。有沒有辦法讓我的autosize可以使用多行文本,最好是通過VBA?

我曾嘗試此代碼之前使用自動調整大小,但它沒有工作,由於這個問題我說哪裏自動調整大小隻是使它一個前行

For counter = 1 To entries 

    Rows(counter).EntireRow.AutoFit 

Next 

編輯:我要提的問題電池需要自動調整的是合併單元格,並且是文本包裝。對於之前沒有包括它的道歉。

+0

嘗試在自動安裝之前設置wraptext – 99moorem

+0

包裝文本已啓用,它不會執行任何操作 – AnDanDan

+0

您是否有任何合併的單元格?我總是有自動填充合併單元的問題。 – Krishna

回答

0

如果我的單元格包含長文本,則使用行(計數器).EntireRow.AutoFit將無法顯示所有文本。我需要在使用代碼之前設置列的最大寬度:

Columns("A:AA").ColumnWidth = 200 'depends on possible max width and which columns 
    Columns("A:AA").EntireColumn.AutoFit 

    For counter = 1 To entries 
     Rows(counter).EntireRow.AutoFit 
    Next i 
+0

嗯,這也適用於合併單元格? – AnDanDan

+0

有趣。它不適用於合併的單元格。 –

0

也許問題是在細胞中的格式(套)

嘗試這種方式

For counter = 1 To entries 
    Rows(counter).WrapText = True 
    Rows(counter).EntireRow.AutoFit 
Next 

編輯:

如果您已將不同行上的單元格合併,則可以嘗試如下所示:

'I set number of rows and columns only for example 
entries = 10 
LastCol = 20 

Set Rng = Range(Cells(1, 1), Cells(entries, LastCol)) 
For Each mCell In Rng 
    If Not mCell.Value = "" Then 
     If mCell.Address <> mCell.MergeArea.Address Then 
      mStr = CStr(mCell.Value) 
      mLF = 1 
      For x = 1 To Len(mStr) 
       If Mid(mStr, x, 1) = vbCr Or Mid(mStr, x, 1) = vbLf Then 
        mLF = mLF + 1 
       End If 
      Next x 
      mHeight = mLF * 7 'Set the value you need for each line of text 
      Range(mCell.MergeArea.Address).RowHeight = mHeight 
     End If 
    End If 
Next mCell 
+0

文本換行已在單元格中啓用。對不起,以前沒有提及它。這是我一直試圖(有效)到沒有結果) – AnDanDan

+0

這很奇怪它爲我工作!你確定在粘貼到單元格之後wraptext仍然是啓用的嗎? – genespos

+0

是的,當我通過VBA創建合併單元格時,它已經合併,設置中心對齊,然後啓用文本換行。可悲的是,它沒有按照我的計劃行事。我嘗試過從功能區中調整設置,也沒有任何運氣。 – AnDanDan