Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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,下面,我有一个代码,发送个性化的短信,包括姓名。我有那个角色要演。现在,我只需要使我的范围是动态的,并沿着相应的列向下移动,直到没有人留下来留言。在当前状态下,它将只向第一人称发送消息。我试着查找动态范围教程、循环等,但它们要么太复杂,我无法掌握,要么需要我重写已经在使用的内容 Private Sub btnSend_Click() Dim contactNumberRange As Range Dim messageRange As Range Dim clientNam

下面,我有一个代码,发送个性化的短信,包括姓名。我有那个角色要演。现在,我只需要使我的范围是动态的,并沿着相应的列向下移动,直到没有人留下来留言。在当前状态下,它将只向第一人称发送消息。我试着查找动态范围教程、循环等,但它们要么太复杂,我无法掌握,要么需要我重写已经在使用的内容

Private Sub btnSend_Click()


   Dim contactNumberRange As Range
   Dim messageRange As Range
   Dim clientNameRange As Range
   Dim phoneCell As Range
   Dim messageCell As Range
   Dim nameCell As Range


   Set contactNumberRange = Range("D2") //Need to make this range dynamic
   Set messageRange = Range("E2") //This too
   Set clientNameRange = Range("A2") //This aswell


   For Each phoneCell In contactNumberRange
    For Each messageCell In messageRange
     For Each nameCell In clientNameRange
      SendMessage FROMPHONE, nameCell.Value, phoneCell.Value, messageCell.Value
     Next
    Next
   Next





 Me.Hide
End Sub

您只需要使用最后一行变量来扩大范围

此外,请使用工作表确认这些范围

Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")

Dim LR As Long
LR = ws.Range("A" & ws.Rows.Count).End(xlUp).Row

Set contactNumberRange = ws.Range("D2:D" & LR)
Set messageRange = ws.Range("E2:E" & LR)
Set clientNameRange = ws.Range("A2:A" & LR)

For Each phoneCell In contactNumberRange
    For Each messageCell In messageRange
        For Each nameCell In clientNameRange
            SendMessage FROMPHONE, nameCell.Value, phoneCell.Value, messageCell.Value
        Next nameCell
    Next messageCell
Next phoneCell

对我来说,下一个问题是,为什么这会发送这么多短信?我认为一个循环就能完成OP真正想要的。但这不是这个问题的范围,只是一个想法。我有同样的想法,连接字符串,只给每个人发送一条消息-好吧,这不起作用。当我使用设置为每个范围一个单元格的范围进行测试时,它发送了一条连接消息。使用这段代码,它进行了垃圾邮件发送,消息被分解。我想我必须重写代码才能使用它。