標題:
一個變色問題
[打印本頁]
作者:
hong912
時間:
2016-9-14 10:48
標題:
一個變色問題
大大們, 安好
有一個儲存格變色問題請教, 圖片有明細說明, 先行謝過各大大們,
[attach]25243[/attach]
作者:
Hsieh
時間:
2016-9-14 22:57
回復
1#
hong912
工作表右鍵事件,選取範圍後按下滑鼠右鍵
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
With Selection
.Interior.ColorIndex = 6
.Merge
End With
End Sub
複製代碼
作者:
hong912
時間:
2016-9-15 08:44
回復
2#
Hsieh
尊敬的版大, 早晨
感謝協助, 謝謝!!
作者:
hong912
時間:
2016-9-19 19:09
回復
2#
Hsieh
Hsieh 版大好,
小弟再有問題請教, 程式中按滑鼠左健變色, 現想變多一色, 假設當用家選定儲存格按左健變藍色, 再按左健, 儲存再變成紅色, 這是否可做到, 煩勞版大教導..
謝謝!!
作者:
周大偉
時間:
2016-9-21 19:03
小弟也想知道這似簡單實是複雜的雙重變色問題, 在vba中是否可做到,
作者:
zyzzyva
時間:
2016-9-21 22:16
加個if 判斷?
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
With Selection
If .Interior.ColorIndex = 5 Then
.Interior.ColorIndex = 3
Else
.Interior.ColorIndex = 5
.Merge
End If
End With
End Sub
複製代碼
作者:
hong912
時間:
2016-9-21 22:42
本帖最後由 hong912 於 2016-9-21 22:44 編輯
回復
6#
zyzzyva
感謝大大,
我也曾用錄制巨集方式研究,但功力太淺,沒成功,衷心感謝!
作者:
周大偉
時間:
2016-9-25 13:50
回復
6#
zyzzyva
前輩好,小弟想請問若在程式中加入強制性自動換列,自否可以,感恩,謝謝!
作者:
zyzzyva
時間:
2016-9-28 14:25
回復
8#
周大偉
自動換列是什麼意思?變色後換到下一列嗎?
作者:
周大偉
時間:
2016-9-28 18:41
回復
9#
zyzzyva
謝謝回應,
自動換列是指一般輸入文字於儲存格過長時沒法全部顯示, 用家便會設定儲存格格式,在對齊方式中勾選自動換列, 這情況下輸入文字幾長都會自動調整列高,
在程式中可否加入自動換列, 是指用家輸入過長文字, 儲存格自行調整列高,
多謝回應..
作者:
zyzzyva
時間:
2016-9-29 09:00
回復
10#
周大偉
不好意思,不是很了解這跟變色問題的關聯。如果只是要在vba中設定自動換列,使用.WrapText = True就可以了。
作者:
周大偉
時間:
2016-9-29 19:06
回復
11#
zyzzyva
明確說, 樓上樓主發問一個變色問題, 我把程式套入小弟工作表中, 而我在工作表儲存格格式>對齊方式中>勾選自動換列, 這情況下, 輸入文字過長列高便自行調整, 但現時文字過長,儲存格沒有調整列高, 因而沒法把全部輸入的文字顯示, 心想我己勾選了自動換列, 為何有此情況, 故想如果加入vba程式是否可以做到文字過長列高自行調整, 以便把輸入文字全部顯示, 謝,
[attach]25401[/attach]
作者:
zyzzyva
時間:
2016-9-29 20:20
回復
12#
周大偉
那是合併儲存格的問題,excel合併儲存格有很多問題,用vba設定wraptext也沒用(可以手動在目標列的下緣按兩下,會發現一樣無效),詳細可以參考:
http://blog.contextures.com/archives/2015/12/03/autofit-merged-cells-row-height-update-20151203/
我想您應該是合併、變色完儲存格要在裡頭輸入文字?把下面的code加到同一個worksheet裡試試看。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Vhight As Single
If Target.WrapText = True Then
With Target
.Select
.RowHeight = 1
.WrapText = True
.UnMerge
.EntireRow.AutoFit
Selection.Merge
Vhight = .Width * .Height / Selection.Width
If Vhight < 16 Then Vhight = 16
.RowHeight = Vhight
.VerticalAlignment = xlCenter
End With
End If
End Sub
複製代碼
作者:
周大偉
時間:
2016-9-29 20:54
回復
13#
zyzzyva
感謝大大,
我會鑽研, 若有不問處, 再請教, 謝謝,
作者:
hong912
時間:
2016-10-11 19:53
本帖最後由 hong912 於 2016-10-11 19:55 編輯
回復
13#
zyzzyva
大大好,
癹問了一個變色問題, 帶出另一個換列問題, 若能把兩個程式融合, 就是否可以, 謝謝!!
作者:
zyzzyva
時間:
2016-10-12 10:00
回復
15#
hong912
儲存格合併後不太好操作,請參考13F的回覆。
作者:
hong912
時間:
2016-10-12 19:52
回復
16#
zyzzyva
前輩, 你好,
可否明確說明, 如何放於同一程式區內, 受教了, 感恩賜!
作者:
zyzzyva
時間:
2016-10-12 20:09
回復
17#
hong912
是2個事件,要放在同一個worksheet。按右鍵後會變色同時合併儲存格,如果在裡頭輸入,會有換列的效果(但不是很漂亮)。
個人覺得,如果會需要操作公式或程式,非必要盡量避免使用合併儲存格,儲存格合併之後,容易有很多奇奇怪怪的問題。
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
With Selection
If .Interior.ColorIndex = 5 Then
.Interior.ColorIndex = 3
Else
.Interior.ColorIndex = 5
.Merge
.WrapText = True
End If
End With
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Vhight As Single
If Target.WrapText = True Then
With Target
.Select
.RowHeight = 1
.WrapText = True
.UnMerge
.EntireRow.AutoFit
Selection.Merge
Vhight = .Width * .Height / Selection.Width
If Vhight < 16 Then Vhight = 16
.RowHeight = Vhight
.VerticalAlignment = xlCenter
End With
End If
End Sub
複製代碼
作者:
hong912
時間:
2016-10-12 22:38
回復
18#
zyzzyva
謝謝前輩, 衷心感謝!
作者:
zyzzyva
時間:
2016-10-13 12:36
回復
20#
hong912
可以試著理解一下code,執行合併儲存格的是merge,只要把它刪除就可以了。
沒有合併的話,wraptext可以正常作用,另一個change事件也可以刪掉。
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
With Selection
If .Interior.ColorIndex = 5 Then
.Interior.ColorIndex = 3
Else
.Interior.ColorIndex = 5
.WrapText = True
End If
End With
End Sub
複製代碼
作者:
hong912
時間:
2016-10-13 13:51
回復
21#
zyzzyva
謝謝前輩無私教導,現時正工作中,待今晚放工後試用,但真心感謝,祝願健康。
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)