执行从 1 到 100 的乘法。执行结果保存成二维数组。
创建 “公式”和“值”两个表,计算完成后,表保存在外部文件中。
二维数组的开始单元格是A2和B1
另外,将该工具另存为“Multi.xlsm”
二维数组的结果如下图所示
请告诉我代码
代码调整,之前的已删除
'测试用例:新建一个EXCEL表格文件,工作表1为“Sheet1”,工作表2为“Sheet2”
'鼠标右键点击工作表名Sheet1,弹出菜单中选择“查看代码(V)”
'弹出Visual Basic For Applications窗口
'选择“插入(I)”的子菜单“用户窗体(U)”
'在窗体中放置两个文本框TextBox1、TextBox2;两个单选OptionButton1、OptionButton2;一个按钮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
望采纳:
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