返回列表 上一主題 發帖

一個變色問題

回復 10# 周大偉
不好意思,不是很了解這跟變色問題的關聯。如果只是要在vba中設定自動換列,使用.WrapText = True就可以了。

TOP

回復 11# zyzzyva
明確說, 樓上樓主發問一個變色問題, 我把程式套入小弟工作表中, 而我在工作表儲存格格式>對齊方式中>勾選自動換列, 這情況下, 輸入文字過長列高便自行調整, 但現時文字過長,儲存格沒有調整列高, 因而沒法把全部輸入的文字顯示, 心想我己勾選了自動換列, 為何有此情況, 故想如果加入vba程式是否可以做到文字過長列高自行調整,  以便把輸入文字全部顯示, 謝,

TOP

回復 12# 周大偉
那是合併儲存格的問題,excel合併儲存格有很多問題,用vba設定wraptext也沒用(可以手動在目標列的下緣按兩下,會發現一樣無效),詳細可以參考:
http://blog.contextures.com/archives/2015/12/03/autofit-merged-cells-row-height-update-20151203/
我想您應該是合併、變色完儲存格要在裡頭輸入文字?把下面的code加到同一個worksheet裡試試看。
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. Dim Vhight As Single
  3. If Target.WrapText = True Then
  4. With Target
  5. .Select
  6. .RowHeight = 1
  7. .WrapText = True
  8. .UnMerge
  9. .EntireRow.AutoFit
  10. Selection.Merge
  11. Vhight = .Width * .Height / Selection.Width
  12. If Vhight < 16 Then Vhight = 16
  13. .RowHeight = Vhight
  14. .VerticalAlignment = xlCenter
  15. End With
  16. End If
  17. End Sub
複製代碼

TOP

回復 13# zyzzyva
感謝大大,
我會鑽研, 若有不問處, 再請教, 謝謝,

TOP

本帖最後由 hong912 於 2016-10-11 19:55 編輯

回復 13# zyzzyva
大大好,
癹問了一個變色問題, 帶出另一個換列問題, 若能把兩個程式融合, 就是否可以, 謝謝!!
hong912

TOP

回復 15# hong912
儲存格合併後不太好操作,請參考13F的回覆。

TOP

回復 16# zyzzyva
前輩, 你好,
可否明確說明, 如何放於同一程式區內, 受教了, 感恩賜!
hong912

TOP

回復 17# hong912
是2個事件,要放在同一個worksheet。按右鍵後會變色同時合併儲存格,如果在裡頭輸入,會有換列的效果(但不是很漂亮)。
個人覺得,如果會需要操作公式或程式,非必要盡量避免使用合併儲存格,儲存格合併之後,容易有很多奇奇怪怪的問題。
  1. Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

  2. With Selection
  3.     If .Interior.ColorIndex = 5 Then
  4.         .Interior.ColorIndex = 3

  5.     Else
  6.         .Interior.ColorIndex = 5
  7.         .Merge
  8.         .WrapText = True
  9.         
  10.     End If
  11. End With
  12. End Sub


  13. Private Sub Worksheet_Change(ByVal Target As Range)
  14. Dim Vhight As Single
  15. If Target.WrapText = True Then
  16. With Target
  17. .Select
  18. .RowHeight = 1
  19. .WrapText = True
  20. .UnMerge
  21. .EntireRow.AutoFit
  22. Selection.Merge
  23. Vhight = .Width * .Height / Selection.Width
  24. If Vhight < 16 Then Vhight = 16
  25. .RowHeight = Vhight
  26. .VerticalAlignment = xlCenter
  27. End With
  28. End If
  29. End Sub
複製代碼

TOP

回復 18# zyzzyva
謝謝前輩, 衷心感謝!
hong912

TOP

回復 20# hong912
可以試著理解一下code,執行合併儲存格的是merge,只要把它刪除就可以了。
沒有合併的話,wraptext可以正常作用,另一個change事件也可以刪掉。
  1. Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
  2.     With Selection
  3.         If .Interior.ColorIndex = 5 Then
  4.             .Interior.ColorIndex = 3
  5.         Else
  6.             .Interior.ColorIndex = 5
  7.             .WrapText = True
  8.         End If
  9.     End With
  10. End Sub
複製代碼

TOP

        靜思自在 : 做該做的事是智慧,做不該做的事是愚癡。
返回列表 上一主題