Topic
Font colour in cell table
Home page › Community › Automation and VBA › Font color in cell table
- This topic has 21 replies and 2 voices and was last updated 11 years, 7 months ago ago by HerveM1234.
-
AuthorPosts
-
25.10.2013 at 11:23 #35146HerveM1234Participant
Hi,
Thanks for your reply.
The font setting works very wellThe problem I have is the value : myCell.Text gives something like :%{myfpscript_expression}
How in VBA can I compare this “value” to an integer or an string for example ?Thanks again
25.10.2013 at 11:23 #35145HerveM1234ParticipantHi,
Thanks for your reply.
The font setting works very wellThe problem I have is the value : myCell.Text gives something like :%{myfpscript_expression}
How in VBA can I compare this “value” to an integer or an string for example ?Thanks again
25.10.2013 at 11:23 #35144HerveM1234ParticipantHi,
Thanks for your reply.
The font setting works very wellThe problem I have is the value : myCell.Text gives something like :%{myfpscript_expression}
How in VBA can I compare this “value” to an integer or an string for example ?Thanks again
28.10.2013 at 13:08 #35157Bernhard KantzParticipantYou should loop through your table and convert the string extracted from each cell to a value.
You can use for example[code]Dim myValue As Double
myValue = Val(myString)‘ or
Dim myInt As Integer
myInt = CInt(myString)[/code]to do this. Then you’re able to check, if the value is within your limits:
[code]Dim myLimit As Double
myLimit = 100If myValue > myLimit Then
MsgBox (“red”)
Else
MsgBox (“green”)
End If[/code]05.11.2013 at 12:15 #35158Bernhard KantzParticipantTo evaluate the string expression contained in the .Text property of the CellTableCell object one may use the FPScript function Execute(). In the following macro this formula is generated on the fly and deleted after execution.
[code]
Option ExplicitPublic Sub ColorizeCells()
Dim myTable As CellTable
Set myTable = ActiveDatabase.ActiveFolder.Object(“Zellentabelle”, _
fpObjectTypeCellTable)Dim oEvaluator As Formula
Set oEvaluator = ActiveDatabase.ActiveFolder.Add(“Eval”, fpObjectTypeFormula, _
fpNameClashHandlingAutoRename)
oEvaluator.Formula = “Arguments str” & vbCrLf & “Execute(str)”Dim nRows As Integer, nCols As Integer
nRows = myTable.Cells.NumberOfRows
nCols = myTable.Cells.NumberOfColumnsDim i As Integer
Dim res As Double
For i = 1 To 3
‘ cells are numbered row-wise so 2 + i * nCols enumerates the cells
‘ from the second column starting at the second row
With myTable.Cells(2 + i * nCols).Text
res = oEvaluator.Call(ExtractExpression(.Text))
If res < -1 Then
.Font.Color = vbBlue
ElseIf res <= 1 Then
.Font.Color = vbBlack
Else
.Font.Color = vbRed
End If
End With
Next ioEvaluator.Delete
End SubPrivate Function ExtractExpression(str As String)
str = Mid$(str, InStr(str, "{") + 1)
ExtractExpression = Left$(str, InStrRev(str, "}") – 1)
End Function
[/code]This macro assumes a cell table named "Zellentabelle" with atleast two columns and four rows. It scans the 3 cells in the second column starting from the second row and changes the font color to blue for values less than -1, red for values greater than +1, values between this limits are colored black.
12.11.2013 at 14:45 #35159HerveM1234ParticipantHi,
Thanks again for that, but :
– the Execute FPS function doesn’t work with data series !
– 100 lines of code just to change the cell colours !I will try to export the tables to an Excel File and work with the built-in functions of Excel to modify the cells colours.
Please could you :
– Post a VBA example of FlexPro Table exportation to Excel Worsheet
– Upgrade the current version of FlexPro with this functionnalityrv
Attached : an example of Execute function
13.11.2013 at 08:59 #35160Bernhard KantzParticipantThe automatic coloring of table cells depending on their value is indeed planned for FlexPro 10.
To transfer a FlexPro table to Excel, copy and paste via the ordinary clipboard mechanism can be used: Select the whole table (using Ctrl-A) and use Ctrl-C followed by Ctrl-V in the destination Excel table to insert the content. -
AuthorPosts
- You must be logged in to reply to this topic.