Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA查找和存储_Excel_Vba - Fatal编程技术网

Excel VBA查找和存储

Excel VBA查找和存储,excel,vba,Excel,Vba,我有这张单子 我想先找到familiyX,然后转到爸爸妈妈那边,然后将下面列出的地址保存在变量sTo中。我现在使用的代码是 Sub findAndStore() Dim EmailRng As Range, cl As Range Dim sTo As String, fam As String fam = "family2" Set EmailRng = Worksheets("sheet2").Range("D3:D"

我有这张单子

我想先找到familiyX,然后转到爸爸妈妈那边,然后将下面列出的地址保存在变量sTo中。我现在使用的代码是

Sub findAndStore()

 Dim EmailRng As Range, cl As Range
 Dim sTo As String, fam As String

 fam = "family2"

 Set EmailRng = Worksheets("sheet2").Range("D3:D" & Worksheets("sheet2").Cells(Worksheets("sheet2").Rows.Count, "D").End(xlUp).Row)

    For Each cl In EmailRng
        sTo = sTo & ";" & cl.Value
    Next

End Sub

正如你们所看到的,范围是硬编码的,我想根据fam持有的值使其动态化,你们能帮我吗?

你们真的需要代码吗

我建议创建一个新的工作表,其中数据是按列列出的字段和按行列出的记录,而不是创建一个透视表并获取所需的信息

然而,为了VBA培训

Sub findAndStore(family_name As String)
    ' find the family column
    Dim family_column As Integer, mum_column As Integer, dad_column As Integer
    family_column = ActiveSheet.Range("1:1").Find(family_name).Column
    
    ' get values
    Dim collected_addresses As String
    Dim addresses_collection As Variant
    Set addresses_collection = New Collection
    
    For column_offset = 0 To 1 'mum and dad column
        
        current_row = 3 'start on a third row under dad/mum header
        Do
            cell_value = ActiveSheet.Cells(current_row, family_column + column_offset).Value
            current_row = current_row + 1 'move to next row
            If cell_value <> "" Then addresses_collection.Add cell_value
        Loop Until cell_value = ""
    
    Next column_offset ' next column
    
    For Each s In addresses_collection
        collected_addresses = collected_addresses & s & ";"
    Next s
    
    Debug.Print collected_addresses

End Sub
子findAndStore(家族名称为字符串)
'查找族列
Dim family_列为整数,mum_列为整数,dad_列为整数
family\u column=ActiveSheet.Range(“1:1”).Find(family\u name).column
“获取价值
将收集的地址设置为字符串
Dim地址\u集合作为变量
设置地址\u集合=新集合
对于列_offset=0到1'爸爸妈妈列
当前_行=3'从dad/mum标题下的第三行开始
做
单元格\u值=ActiveSheet.Cells(当前行、族列+列偏移量)。值
当前行=当前行+1'移动到下一行
如果单元格\u值为“”,则地址为\u集合。添加单元格\u值
循环直到单元格_value=“”
下一列\u偏移量“下一列
对于地址集合中的每个s
收集的地址=收集的地址&s&“;”
下一个s
调试。打印收集的\u地址
端接头

您好,谢谢您的输入!问题是,我想让地址在mom或dad下,而不是同时在mom或dad下,我希望.find步骤基于fam变量中存储的内容。这只是第一步和第二步创建电子邮件,但我已经完成了这一步。查找部分基于family_name参数,只需将其更改为您的遗嘱或使用单元格值(如果您愿意)。我使用了您的代码,并通过我自己的一点触摸使其正常工作,感谢您的帮助!不客气。如果有帮助,请记下我的答案。