2017-04-09 4 views
0

"do while loop"를 사용하여 2 차원 동적 곱셈 테이블을 작성하려고하지만이 코드로 1 행만 얻을 수 있습니까? 그리고 다른 루프가 아닌 while 루프를 사용해야합니다.excel vba로 do while 루프를 사용하여 곱셈 테이블 만들기

Sub multp_doWhileLoop() 
Dim i As Long 
Dim j As Long 
Dim k As Long 
Dim l As Long 
k = Range("b1").Value 
l = Range("d1").Value 
ReDim multp_tab(k, l) As Long 'defining ixj matrix 
i = 1 
j = 1 
Range("a2:zz100000").Clear 
Cells(2, 1) = "mult." 
    Do While i < k + 1 
     Do While j < l + 1 
     Cells(i + 2, 1).Value = i  'for frame 
     Cells(2, j + 1).Value = j  ' 
     multp_tab(i, j) = i * j 
     j = j + 1 

     Loop 
     i = i + 1 
    Loop 
    i = 1 
    j = 1 
     Do While i < k + 1 
      Do While j < l + 1 
      Cells(i + 2, j + 1).Value = multp_tab(i, j) 
      j = j + 1 

      Loop 
     i = i + 1 
     Loop  
End Sub 

답변

0

시험에서 속임수를 쓰는 것이 도움이되지 않는다고 말해주세요.

Sub multp_doWhileLoop() 
    ' 09 Apr 2017 

    Dim Mtbl As Variant      ' Multiplication table 
    Dim R As Long       ' row 
    Dim C As Long       ' column 
    Dim Rmax As Long      ' try to give meaning to the names 
    Dim Cmax As Long      ' you give to your variables 

    With ActiveSheet 
     Rmax = .Cells(1, "B").Value 
     Cmax = .Cells(1, "D").Value 
     If Rmax < 1 Or Cmax < 1 Then 
      MsgBox "Please enter valid parameters in row 1.", _ 
        vbExclamation, "Invalid matrix parameters" 
      Exit Sub 
     End If 
     ReDim Mtbl(1 To Rmax, 1 To Cmax) 'defining ixj matrix 

     Do 
      R = R + 1 
      C = 0 
      Do 
       C = C + 1 
       Mtbl(R, C) = R * C 
      Loop While C < Cmax 
     Loop While R < Rmax 

     With .UsedRange 
      .Range(.Cells(2, 1), .Cells(.Rows.Count, .Columns.Count)).ClearContents 
     End With 
     .Cells(2, 1).Resize(Rmax, Cmax).Value = Mtbl 
    End With 
End Sub 
+0

아니요, 시험에는 적합하지 않습니다. 같은 문제가있는 다른 루프를 이해하려고 노력 중입니다. 루프를 사용하여 수행했지만이 작업을 수행 할 수 없습니다. 도와 줘서 고마워. –

관련 문제