Sub color2RGB(myColor As Long, RGBComponents() As Byte) RGBComponents(0) = (myColor And &HFF0000) \ &H10000 RGBComponents(1) = (myColor And &HFF00&) \ &H100 RGBComponents(2) = (myColor And &HFF&) End Sub
Sub color2RGB(myColor As Long, RGBComponents() As Byte) RGBComponents(0) = (myColor And &HFF0000) \ &H10000 RGBComponents(1) = (myColor And &HFF00&) \ &H100 RGBComponents(2) = (myColor And &HFF&) End Sub
Function offsetColor(myColor As Long, Optional R As Integer = 0, Optional G As Integer = 0, Optional B As Integer = 0) As Long Dim RGBComponents(2) As Byte Call color2RGB(myColor, RGBComponents()) R = (R + RGBComponents(0)) Mod &HFF If R < 0 Then R = 0 G = (G + RGBComponents(0)) Mod &HFF If G < 0 Then G = 0 B = (B + RGBComponents(0)) Mod &HFF If B < 0 Then B = 0 offsetColor = RGB(R, G, B) End Function
?Hex(offsetColor(myColor:=0, R:=1, G:=2, B:=3)) 30201
MyObject.Color = RGB(255, 0, 0) ' Set the Color property of MyObject to Red.
myCell.Comment.Shape.TextFrame.AutoSize = True
dokumentált bugba futottam bele ma reggel: az Exceled az outline-os táblák csikicsukizása (=show or hide) közben hajlamos aljas módon elpakolászni a commentet tartalmazó cellák comment boxait a helyükről. Ez odáig fajulhat, hogy a tábla fizikai sor/oszlopszélességén túlra pakolja őket és ekkor jön a baj: nem korrigálja, amit elbarmolt, hanem helyette rád mordul egy kétértelmű hibaüzenettel a következő sor/oszlop csikicsukinál. Ezt a problémát oldja fel az alábbi kis függvény, ami minden commentboxodat a forrás cella jobb felső sarka fölé pozícionál 10-10 pixellel. Használd egészséggel:
Sub resetCommentPositions() Dim S As Worksheet, C As Comment For Each S In ThisWorkbook.Worksheets For Each C In S.Comments C.Shape.Left = C.Parent.Offset(0, 1).Left + 10 C.Shape.Top = C.Parent.Offset(0, 1).Top - 10 Next C Next S End Sub
Sub testStrangeOverflowBug() Dim a As Double a = 1 / 86400 ' ezt simán eszi a rohadék a = 1 * (1 / (24 * 60 * 60)) ' ez tök ugyanaz, de egy Overflow Error a jutalmad End Sub
Ma jött szembe ugyanez a hiba, ezért túrtam ki a Google Reader cache-ből a rég dokumentált workaroundot: A Microsoft által dokumentált bugba futottam bele ma reggel: az Exceled az outline-os táblák csikicsukizása (=show or hide) közben hajlamos aljas módon elpakolászni a commentet tartalmazó cellák comment boxait a helyükről. Ez odáig fajulhat, hogy a tábla fizikai sor/oszlopszélességén túlra pakolja őket és ekkor jön a baj: nem korrigálja, amit elbarmolt, hanem helyette rád mordul egy kétértelmű hibaüzenettel a következő sor/oszlop csikicsukinál. Ezt a problémát oldja fel az alábbi kis függvény, ami minden commentboxodat a forrás cella jobb felső sarka fölé pozícionál 10-10 pixellel. Használd egészséggel:
Sub resetCommentPositions() Dim S As Worksheet, C As Comment For Each S In ThisWorkbook.Worksheets For Each C In S.Comments C.Shape.Left = C.Parent.Offset(0, 1).Left + 10 C.Shape.Top = C.Parent.Offset(0, 1).Top - 10 Next C Next S End Sub