VBA根据txt文件输入优于填充单元格颜色

时间:2013-10-20 12:31:24

标签: excel-vba vba excel

我是VBA的新手。我正在读取制表符分隔文件并解析它。 文件中的每一行都包含行索引,col索引和标签:例如:

0    0    "John"

1    1    "Lena"

9    14   "John"

我想为每个标签分配一个颜色,并用指定的颜色填充匹配的[row,col]。 标签可能出现在多个文件行中。 另外,我应该创建一个图例(在工作表的不同位置),它描述了为每种颜色分配的标签。

在c#中我会使用一个字典:当我看到一个新标签时,我会检查字典中是否存在这个标签,如果是,我会使用它现有的颜色,如果没有,我会在字典中添加一个新条目。 在VB中执行此操作的最佳方法是什么?我应该使用什么数据结构来检查当前标签是否存在,如果存在,使用它的颜色?

谢谢, 李

1 个答案:

答案 0 :(得分:0)

这个怎么样:我使用ColorIndex属性通过从1开始递增来设置单元格的颜色:

Dim dict As New Scripting.Dictionary

Sub ReadTextFile()
    Dim fso As FileSystemObject, filePath As String, data As Variant, colorIndex As Integer
    filePath = "C:\Users\Alex\Desktop\input.txt" //Change this

    Set fso = New FileSystemObject
    Set txtStream = fso.OpenTextFile(filePath, ForReading, False)
    colorIndex = 1

    Do While Not txtStream.AtEndOfStream
        inputLine = txtStream.ReadLine
        data = Split(inputLine, vbTab)

        With Worksheets("Sheet1")
            .Cells(CInt(data(0)), CInt(data(1))) = data(2)
            .Cells(CInt(data(0)), CInt(data(1))).Interior.colorIndex = GetColor(CStr(data(2)), colorIndex)
        End With

        colorIndex = colorIndex + 1
    Loop

    txtStream.Close
 End Sub

Function GetColor(label As String, colorIndex As Integer)
    If Not dict.Exists(label) Then
        dict.Add label, colorIndex
        GetColor = colorIndex
        Exit Function
    Else
        GetColor = dict(label)
    End If
End Function

我唯一没有做的就是添加图例,但我相信你可以迭代字典并在工作表上写到你想要的任何地方。