excel vba 执行从 1 到 100 的乘法。执行结果保存成二维数组

执行从 1 到 100 的乘法。执行结果保存成二维数组。

创建 “公式”和“值”两个表,计算完成后,表保存在外部文件中。

二维数组的开始单元格是A2和B1

另外,将该工具另存为“Multi.xlsm”

二维数组的结果如下图所示

请告诉我代码

代码调整,之前的已删除

'测试用例:新建一个EXCEL表格文件,工作表1为“Sheet1”,工作表2为“Sheet2'鼠标右键点击工作表名Sheet1,弹出菜单中选择“查看代码(V)'弹出Visual Basic For Applications窗口
'选择“插入(I)”的子菜单“用户窗体(U)'在窗体中放置两个文本框TextBox1TextBox2;两个单选OptionButton1OptionButton2;一个按钮CommandButton1
'按钮响应事件执行,生成1×N乘法数
测试样表已打包上传https://download.csdn.net/download/Check_Const/87245479
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   If KeyAscii < 48 Or KeyAscii > 57 Then
      KeyAscii = 0   '文本框限制输入整数
   End If
End Sub
Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   If KeyAscii < 48 Or KeyAscii > 57 Then
      KeyAscii = 0   '文本框限制输入整数
   End If
End Sub

Private Sub CommandButton1_Click()
   Application.ScreenUpdating = False   '暂停刷新

   If Val(TextBox1.Text) < 1 Or Val(TextBox1.Text) > 250 _
      Or Val(TextBox2.Text) < 1 Or Val(TextBox2.Text) > 250 Then
      
      '控制新数列的数量
      MsgBox "输入数值不能小于1或者大于250", vbExclamation, "提示"
      Exit Sub
   End If

   Dim v_SheetA As Integer, v_SheetB As Integer  '工作表编号
   Dim v_minN As Integer, v_maxN As Integer
   Dim Row_Start As Integer
   Dim Col_Start As Integer
   
   v_SheetA = 1  '工作表Sheet1
   v_SheetB = 2  '工作表Sheet2
   
   If MsgBox("即将清空工作表" & v_SheetA & "、" & v_SheetB & ",是否继续?", vbYesNo + vbQuestion, "提示") = 7 Then
      Exit Sub
   End If
   
   'Sheets(v_SheetA).Columns.ClearFormats  '清除格式
   Sheets(v_SheetA).Columns.Clear         '初始化清空内容
   Sheets(v_SheetA).Rows.UseStandardHeight = True   '恢复标准行高
   Sheets(v_SheetA).Columns.UseStandardWidth = True '恢复标准列宽
   'Sheets(v_SheetB).Columns.ClearFormats
   Sheets(v_SheetB).Columns.Clear
   Sheets(v_SheetB).Rows.UseStandardHeight = True   '恢复标准行高
   Sheets(v_SheetB).Columns.UseStandardWidth = True '恢复标准列宽
   
   
   'v_minN × v_maxN =?   '公式
   v_minN = Val(TextBox1.Text)   '始数
   v_maxN = Val(TextBox2.Text)   '止数
   
   Sheets(v_SheetA).Activate
   Sheets(v_SheetA).Cells(1, 1).Value = "乘法公式"

   Row_Start = 2   '始行 填写位置
   Col_Start = 2   '始列
   Cells(Row_Start, Col_Start).Value = "序号"

   With Workbooks(v_SheetA).ActiveSheet
      For i = v_minN To v_maxN
      .Cells(Row_Start + i, Col_Start).Value = i               '行序号
      .Cells(Row_Start + i, Col_Start).Interior.Color = 65535  '填充颜色
         For j = v_minN To v_maxN
            .Cells(Row_Start, Col_Start + j).Value = j               '列序号
            .Cells(Row_Start, Col_Start + j).Interior.Color = 65535  '填充颜色
            .Cells(Row_Start + i, Col_Start + j).Value = i & "×" & j & "=" & i * j '乘法公式
         Next j
      Next i

      '区域1
      'ActiveSheet.Range(Cells(Row_Start, Col_Start), Cells(Row_Start + v_maxN, Col_Start + v_maxN)).Select
      .Range(Cells(Row_Start, Col_Start), Cells(Row_Start + v_maxN, Col_Start + v_maxN)).Select
   
     '单元格格式
      'Selection.Font.Name = "宋体"
      Selection.Font.Size = 9   '字体大小
      Selection.VerticalAlignment = xlVAlignCenter   '垂直居中
      Selection.Borders.LineStyle = xlContinuous     '边框实线
      Selection.EntireColumn.AutoFit                 '列宽
      .Rows(Col_Start).HorizontalAlignment = xlHAlignCenter     '水平居中 行设置方式
      .Columns(Col_Start).HorizontalAlignment = xlHAlignCenter  '水平居中
   End With

   If OptionButton1.Value = True Then   '保存工作表1
      Row_Start = v_maxN + 5   '数值形式 始行号
      With Workbooks(v_SheetA).ActiveSheet
         .Cells(Row_Start - 1, 1).Value = "数值形式"
         .Cells(Row_Start, Col_Start).Value = "序号"

         For i = v_minN To v_maxN
            .Cells(Row_Start + i, Col_Start).Value = i               '行序号
            .Cells(Row_Start + i, Col_Start).Interior.Color = 65535  '填充颜色
            For j = v_minN To v_maxN
               .Cells(Row_Start, Col_Start + j).Value = j               '列序号
               .Cells(Row_Start, Col_Start + j).Interior.Color = 65535  '填充颜色
               .Cells(Row_Start + i, Col_Start + j).Value = i * j '乘法结果
            Next j
         Next i
    
         '区域2
         .Range(Cells(Row_Start, Col_Start), Cells(Row_Start + v_maxN, Col_Start + v_maxN)).Select
          Selection.Font.Size = 9   '字体大小
          Selection.HorizontalAlignment = xlHAlignCenter '水平居中
          Selection.VerticalAlignment = xlVAlignCenter   '垂直居中
          Selection.Borders.LineStyle = xlContinuous     '边框实线
    
          .PageSetup.Orientation = xlLandscape   '纸张方向:横向
          .Cells(1, 2).Select
       End With

       MsgBox "已生成 " & v_minN & "×" & v_maxN & " 数据", vbInformation, "提示"
   Else
      '数值填写工作表2
      Sheets(v_SheetB).Activate  '切换
      With Sheets(v_SheetB)
         .Cells(1, 1).Value = "数值形式"
         .Cells(Row_Start, Col_Start).Value = "序号"
      
         For i = v_minN To v_maxN
            .Cells(Row_Start + i, Col_Start).Value = i               '行序号
            .Cells(Row_Start + i, Col_Start).Interior.Color = 65535  '填充颜色
            For j = v_minN To v_maxN
               .Cells(Row_Start, Col_Start + j).Value = j               '列序号
               .Cells(Row_Start, Col_Start + j).Interior.Color = 65535  '填充颜色
               .Cells(Row_Start + i, Col_Start + j).Value = i * j '乘法结果
            Next j
         Next i
      End With
    
      '区域格式
      Sheets(v_SheetB).Range(Cells(Row_Start, Col_Start), Cells(Row_Start + v_maxN, Col_Start + v_maxN)).Select
      Selection.Font.Size = 9   '字体大小
      Selection.HorizontalAlignment = xlHAlignCenter '水平居中
      Selection.VerticalAlignment = xlVAlignCenter   '垂直居中
      Selection.Borders.LineStyle = xlContinuous     '边框实线
      Selection.EntireColumn.AutoFit                 '列宽

      Sheets(v_SheetB).PageSetup.Orientation = xlLandscape   '纸张方向:横向
      Sheets(v_SheetB).Cells(2, 1).Select
      MsgBox "已生成 " & v_minN & "×" & v_maxN & " 数据,其中数值形式保存于工作表2", vbInformation, "提示"
   End If

   Application.ScreenUpdating = True   '恢复刷新
End Sub

img

img

img

望采纳:


dim s as integer, i as integer, j as integer
  s = 0
  for i = 1 to 100
    for j = 1 to 100 
      s = i * j
      next
       msgbox s