对于每个循环范围VBA Excel宏

时间:2015-12-23 18:04:32

标签: excel vba excel-vba

static void Main(string[] args)
    {
        //Login to the Twilio Account
        string AccountSid = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
        string AuthToken = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

        var Twilio = new TwilioRestClient(AccountSid, AuthToken);
        var message = Twilio.SendMessage("+TwilioNumber", "+CellNumber", "Hello World"); 

        var sms = Twilio.GetMessage(message.Sid);
        Console.Write(sms.Body);            
        Console.Read();
    }

我一直试图弄清楚如何将这些值放在每个循环中。

基本上,如果D15-> AE15 = 2且D32-> AE32 = 0,则将两个值都改为1.

我考虑过为每个单元格重复上面嵌套的IF语句..但这需要一些时间。

If Range("D32").Value = 2 Then
   If Range("D15").Value = 0 Then
      Range("D15").Value = 1
      Range("D32").Value = 1
   End If
End If

适用于一个细胞。但是我很难理解如何检查整行,然后在一个为2时更改15和32的相应列值。

2 个答案:

答案 0 :(得分:2)

试试这个,你就走上正轨:

Sub ChgValues()
    Dim c As Range, d As Range

    For Each c In Range("D15:AE15")
        Set d = c.Offset(17, 0)
        If c.Value = 0 And d.Value = 2 Then
            c.Value = 1
            d.Value = 1
        End If
    Next c
End Sub

修改
对于从D到AE的所有列,上面的代码将检查第15行中的0和第32行中的2。如果值也可以相反(第15行中的2,第32行中的0),则需要进行额外的比较:

变化

If c.Value = 0 And d.Value = 2 Then

If (c.Value = 0 And d.Value = 2) or (c.Value = 2 And d.Value = 0) Then

答案 1 :(得分:1)

您需要为每个循环提供一个集合,然后检查值。

Dim cell As Range
For Each cell In Range("D15:AE15").Cells
    If cell.Value = 0 And cell.Offset(17).Value = 2 Then
        cell.Value = 1
        cell.Offset(17).Value = 1
    End If
Next cell