如何更改Access中特定字段中部分文本的颜色?

时间:2013-07-03 06:14:06

标签: vba ms-access access-vba

在Access中,我有一个包含如下字段的表:

零件编号

A / B / C

A / B / R

吨/ / V

d / A / I

我想将所有第三部分的颜色更改为红色。所以在这种情况下,C,R,V,I将被涂成红色。但是我无法在Access 2007中更改部分文本字段的颜色。如果我在“主页”选项卡下使用“字体更改”,则会更改整个表的“字体”。我对微软很失望。有没有办法改变颜色会很棒:D你可以推荐VBA,Form in Form,Query,Report ... P / S:我使用Access 2007

2 个答案:

答案 0 :(得分:2)

如果您可以使用Access报告,则可以向报告添加TextBox。在文本框中,您可以使用如下公式:

="<font color=""blue"">" & [ColumnA] & "</font> <u>" & [ColumnB] & "</u>"

有关详细信息,请参阅Access Rich-Text: Which subset of HTML is supported?

答案 1 :(得分:0)

好吧我认为唯一的办法就是自动导出到Excel。最后我可以这样做

Private Sub CommandExport_Click()
Dim db As Database
Dim rec1 As Recordset
Dim xlFile As Object
Dim xlWorkBook As Object
Dim xlActiveWkb As Object
Dim xlActiveSheet As Object
Dim iCols, iRows, flag As Integer

Set db = CurrentDb
Set xlFile = CreateObject("Excel.Application")
Set xlWorkBook = xlFile.Workbooks.Add
Set xlActiveWkb = xlFile.Application.ActiveWorkBook

xlFile.Visible = True
xlActiveWkb.Sheets.Add
xlActiveWkb.Worksheets(1).Name = "My_Report"

Set xlActiveSheet = xlActiveWkb.Worksheets("My_Report")
Set rec1 = db.OpenRecordset("Report")

For iCols = 0 To rec1.Fields.Count - 1
    xlActiveSheet.Cells(1, iCols + 1).Value = rec1.Fields(iCols).Name
    If rec1.Fields(iCols).Name = "FS Number" Then
        flag = iCols
    End If
Next

xlActiveSheet.Range(xlActiveSheet.Cells(1, 1), xlActiveSheet.Cells(1, rec1.Fields.Count)).Font.Bold = True
xlActiveSheet.Range(xlActiveSheet.Cells(1, 1), xlActiveSheet.Cells(1, rec1.Fields.Count)).Interior.ColorIndex = 15
xlActiveSheet.Cells(2, 1).CopyFromRecordset rec1
xlActiveSheet.Columns("A:AD").EntireColumn.AutoFit

iRows = 1
rec1.MoveFirst
While Not rec1.EOF
    xlActiveSheet.Cells(iRows + 1, flag + 1).Characters(InStr(rec1![FS Number], "*")).Font.ColorIndex = 3
    iRows = iRows + 1
    rec1.MoveNext
Wend

Set xlSheet = Nothing
Set xlWorkBook = Nothing
Set xlActiveWkb = Nothing
rec1.Close
db.Close
Set rec1 = Nothing
Set db = Nothing

End Sub

魔术就在这里

xlActiveSheet.Cells(iRows + 1, flag + 1).Characters(InStr(rec1![FS Number], "*")).Font.ColorIndex = 3