将数组传输到另一个工作表

时间:2014-06-02 01:26:45

标签: arrays excel vba excel-vba

在一个名为“Flange Management Sheet”的工作表中,我有相当大的信息数据库,在另一个名为“Cert Sheet”的工作表中,我创建了一个表单,其中包含需要从FMS填写的字段。

我想在一行信息中选择第一个单元格,然后单击按钮并填充证书表。

我认为解决这个问题的方法是使用数组。

我已经创建了这个

Array(“A = Q14”, “B = C12”, “D = Q12”, “K = C11”, “L=C14”, “M=C16”, “N=C17”, “O = C19”, “P = Q19”, “Q=C18”, “T=C27”, “U=Q27”, “X = C24”, “Y = C25”, “Z=Q24”, “AA=Q25”, “AB=Q26”, “AD = L5", “AE = N30”)

它如何处理它以及如何在VBA中实现它。

这一切都是因为当前你必须在Word文档中手动输入所有信息,并且必须有一种简单的自动填充方式。

为清晰而编辑 - 我正在寻找的是使用法兰管理矩阵上的信息来填充我在单独的工作表上创建的表单。

在FMM表格中,我有A - AO字段,在这些字段下有大约400行相关信息 因此,对于A列中的示例 - '标签ID,B列 - '行号',列K - '图号'等等......后面跟着400行唯一标签ID,依此类推。

我在另一个名为“证书表”的工作表中创建了一个表单,它只是与FMM上为客户收集的信息中某些与客户信息相关的可打印版本。

我想要的是(例如)单击Cell A10或A列中的任何Cell(Tag ID字段),单击'Make Cert'然后使用FMM相关的字段并填充Cert Sheet。

再次使用“标签ID”字段。需要将单元格A10放入证书表格中的单元格Q14 我上面用Array做的是FMM上的列=证书表上的Relevent Cell。

1 个答案:

答案 0 :(得分:0)

您可能会发现更容易 - 而不是使用数组 - 在工作簿中创建“配置”工作表并从那里读取映射。

说(例如)您将映射数据放在A2:B10中,其中ColA具有源列字母,而ColB在您要填充的表单上具有目标单元格。

Sub Transfer()
    Dim shtSrc As Worksheet, shtDest As Worksheet, rngConfig As Range
    Dim rwSrc As Range, rwMap As Range

    Set shtSrc = ThisWorkbook.Sheets("Flange Management Sheet")
    Set shtDest = ThisWorkbook.Sheets("Cert Sheet")
    Set rngConfig = ThisWorkbook.Sheets("Config").Range("A2:B10")

    'exit if a range is not selected...
    If TypeName(Selection) <> "Range" Then Exit Sub
    '...or if it's on the wrong sheet
    If Selection.Parent.Name <> shtSrc.Name Then Exit Sub

    'what row is selected?
    Set rwSrc = Selection.Cells(1).EntireRow

    'loop through each row in your config table
    For Each rwMap In rngConfig.Rows

         'make sure this row has a mapping
         If Len(rwMap.Cells(1).Value) > 0 And _
           Len(rwMap.Cells(2).Value) > 0 Then

           'transfer the value
           shtDest.Range(rwMap.Cells(2).Value) = _
                    rwSrc.Cells(1, rwMap.Cells(1).Value).Value

        End If
    Next rwMap

End Sub