当前位置:文档之家› 口算表宏命令

口算表宏命令

'以下是宏代码:
Sub 随机口算试题()
Dim H As Long, L As Long, Y As Long, Ys As Long, H1 As Long
Dim Ls As Long, Hs As Long, Str1 As String, Str2 As String
Dim P As Long, Ps As Long, DaH As Long, XiaoH As Long

Dim S1 As Long, S2 As Long, S3 As Long, S As Long
Dim Fu As String, nFu As String, FuSel As String, FuS As Long
Dim MaxRnd As Long, MaxOut As Long, nFond As Long, nBi As Single

'更改下面设置(等号后面的数字),可得到不同的显示效果 ==================
nFond = 12 '设置默认字体大小
MaxRnd = 100 '参见运算的最大数字
MaxOut = 100 '得数最大数字
nFu = 12 '12 表示选择加减(1234 分别代表:加减乘除)。改为 34 表示乘除,改为 1234 表示加减乘除全选

DaH = 1 '大题序号显示起点数
XiaoH = 1 '1 表示显示小题序号,否则不显示
Ps = 2 '纵向假分页数(纵向分栏)
Ys = 1 '实际总页数
Ls = 0 '横向试题数(0 表示根据字体大小自动设置)
Hs = 0 '纵向试题数(0 表示根据字体自动设置)
'========================================================================

Application.ScreenUpdating = False '关闭屏幕更新。提高宏代码执行速度
Cells(1, 1).Select: Cells.Delete '删除
Cells.Font.Size = nFond
Cells.NumberFormatLocal = "@"
nBi = nFond / 9
If Hs < 1 Then Hs = 26.4 / nBi
If Ls < 1 Then Ls = 5 / nBi
DaH = DaH - 1
If DaH < 0 Then DaH = 0

'设置格式
If XiaoH = 1 Then S = 3 Else S = 2
For L = 1 To Ls * S '单列右对齐,双列左对齐
If L Mod S = 0 Then '--得数列
Columns(L).HorizontalAlignment = xlLeft '左对齐
Columns(L).ColumnWidth = 3 * nBi '列宽度
Else '---------------- 试题列 或 序号列
Columns(L).HorizontalAlignment = xlLeft 'xlRight '右对齐
If S = 3 And L Mod 3 = 1 Then Columns(L).ColumnWidth = 3 * nBi Else Columns(L).ColumnWidth = 7 * nBi
End If
Next

For Y = 1 To Ys '实际页数
For P = 1 To Ps '纵向假分页数
'放置起行,加 2 是因为有标题行和序号行
H1 = (Y - 1) * Ps * (Hs + 2) + (P - 1) * (Hs + 2) + 1
If Y > 1 And P = 1 Then '插入分页符
Cells(H1, 1).Select
ActiveSheet.HPageBreaks.Add Before:=ActiveCell
End If

'标题行
If P > 1 Then H1 = H1 + 2
Cells(H1, 1).Font.FontStyle = "加粗"
Cells(H1, 1).Font.Size = 12
Cells(H1, 1) = "口算试题 第 " & (Y - 1) * Ps + P & " 页"
Cells(H1, 1).HorizontalAlignment = xlLeft '左对齐
If P > 1 Then Rows(H1).RowHeight = 30 '设置标题行的行高

'题号行 和 分隔线
H1 = H1 + 1
If XiaoH

= 1 Then S = 3 Else S = 2
For L = 1 To Ls
DaH = DaH + 1 '大题序号
Cells(H1, L * S - 1) = "第 " & DaH & " 大题"
'右边框
If L < Ls Then
With Range(Cells(H1, L * S), Cells(H1 + Hs, L * S)).Borders(xlEdgeRight)
.LineStyle = xlContinuous '线型
.Weight = xlThin '宽度
.ColorIndex = xlAutomatic '颜色
End With
End If
Next

'出试题
FuS = Len(nFu)
For H = 1 To Hs
For L = 1 To Ls
S = 1 + Int(Rnd * FuS)
FuSel = Mid(nFu, S, 1)
Do
S = S + 1
If S > 1000 Then MsgBox "出现错误,请检查设置是否正确。", vbInformation, "随机口算试题": GoTo Exit1
S1 = Int(Rnd * MaxRnd): S2 = Int(Rnd * MaxRnd)
If FuSel = "1" Or FuSel = "2" Then S3 = S1 + S2 Else S3 = S1 * S2
If S3 < MaxOut Then Exit Do
Loop

Select Case FuSel
Case "1": Fu = "+"
Case "3": Fu = "×"
Case Else
If FuSel = "2" Then Fu = "-" Else Fu = "÷"
S = S3: S3 = S1: S1 = S
End Select

If XiaoH = 1 Then S = 3 Else S = 2
If S1 < 10 Then Str1 = S1 & " " Else Str1 = S1
If S2 < 10 Then Str2 = S2 & " " Else Str2 = S2
If S = 2 Then
Cells(H1 + H, L * S - 1) = Str1 & Fu & Str2 & " = "
Cells(H1 + H, L * 2) = S3
Else
Cells(H1 + H, L * S - 2) = "(" & H & ")"
Cells(H1 + H, L * S - 1) = Str1 & Fu & Str2 & " = "
Cells(H1 + H, L * S) = S3
End If
Next
Next
Next
Next
Exit1:
Application.ScreenUpdating = False '恢复屏幕更新
End Sub



数四则混合运算口算随机试题-Excel单元格公式
2010-04-27 0:24
当前位置:首页>VBA - Word 和 Excel 宏代码> 整数四则混合运算-随机口算试题-Excel单元格公式

整数四则混合运算-随机口算试题

Excel 单元格公式



国培:b0731042038 5851018

本人文章 整数四则混合运算随机口算试题(试卷) 介绍了用宏代码出随机口算练习题的方法,本文用粘贴公式到单元格的方式,一样可以达到相同的效果,而且简单易行,不需要了解任何 Excel 公式和宏代码的知识,最多 2 分钟就能搞定。

打开 Excel 电子表格,将下面某行黑色文字(即表格公式)复制到 Excel 空白表格最上面第一个单元格中(A1单元格,见图1),复制完毕后,将得到一道试题(见图2)。(不知什么原因,经实际操作发现,粘贴后会在下面出现第二行合并的空单元格,要先将这个空的行删除,然后选定第

一行前五个单元格,即 A1 到 E1 )。然后将鼠标移动到选定单元格的右下角(见图3),鼠标会由中间白边缘黑的十字形变为全黑色的十字形,这时按住鼠标并往下拖动,拖过一定行数后(想拖多少行就拖多少行,例如10行)放开鼠标,就得到图4所示的许多试题了。



本人原创,转载请注明文章来源:https://www.doczj.com/doc/b818039377.html,/100bd/blog/item/48d0cbfbbee38dd2b58f31e2.html

一、10以内加法

=INT(10*RAND()) ="+" =INT((10-A1)*RAND()) ="=" =A1+C1

二、10以内减法(不含减 0)

=E1+C1 ="-" =INT(1+(9-E1)*RAND()) ="=" =INT(10*RAND())

三、10以内减法(可能包含减 0)

=E1+C1 ="-" =INT((10-E1)*RAND()) ="=" =INT(10*RAND())

四、20以内加法(一位数 加 一位数,进位)

=INT(1+9*RAND()) ="+" =10-A1+INT(A1*RAND()) ="=" =A1+C1

五、20以内加法(进位 或 不进位 混合)

=INT(20*RAND()) ="+" =INT((20-A1)*RAND()) ="=" =A1+C1

六、100以内进位加法(两位数 加 一位数,进位)

=INT(1+9*RAND())+INT(1+8*RAND())*10 ="+" =10-MOD(A1,10)+INT(MOD(A1,10)*RAND()) ="=" =A1+C1

 

七、100以内进位加法(两位数 加 两位数,进位)

=INT(1+9*RAND())+INT(1+7*RAND())*10 ="+" =10-MOD(A1,10)+INT(MOD(A1,10)*RAND())+10*INT(1+INT(8-A1/10)*RAND()) ="=" =A1+C1

 

八、100以内加法(进位 或 不进位 混合)

=INT(100*RAND()) ="+" =INT((100-A1)*RAND()) ="=" =A1+C1


九、100以内减法(两位数 减 一位数 不退位)

=INT(1+9*RAND())+INT(1+9*RAND())*10 ="-" =1+INT(MOD(A1,10)*RAND()) ="=" =A1-C1

 

十、100以内减法(两位数 减 二位数 不退位)

=INT(1+9*RAND())+INT(1+9*RAND())*10 ="-" =10*INT(1+(A1/10-1)*RAND())+1+INT(MOD(A1,10)*RAND()) ="=" =A1-C1

十一、100以内减法(两位数 减 一位数 退位)

=INT(9*RAND())+INT(1+9*RAND())*10 ="-" =MOD(A1,10)+1+INT((9-MOD(A1,10))*RAND()) ="=" =A1-C1

 

十二、100以内减法(两位数 减 两位数 退位)

=E1+C1 ="-" =10-MOD(E1,10)+INT(MOD(E1,10)*RAND())+10*INT(1+INT(8-E1/10)*RAND()) ="=" =INT(1+9*RAND())+INT(1+7*RAND())*10

 

十三、表内乘法

=INT(10*RAND()) ="×" =INT(10*RAND()) ="=" =A1*C1
 

十四、表内除法

=E1*C1 ="÷" =INT(1+9*RAND()) ="=" =INT(1+9*RAND())
 

十五、乘法(两位数 乘以 一位数)

=INT(10*RAND())+INT(1+9*RAND())*10 ="×" =INT(10*RAND()) ="=" =A1*C1
 

十六、除法(两位或三位数 除以 一位数,得数为两位数)

=E1*C1 ="÷" =INT(1+9*RAND()) ="=" =INT(10*RAND())+INT(1+9*RAND())*10

本人原创,转载请注明文章来源:https://www.doczj.com/doc/b818039377.html,/100bd/blog/item/48d0cbfbbee38dd2b58f31e2.html

当前位置:首页>VBA - Word 和 Excel 宏代码> 整数四则混合运算-随机口算试题-Excel单元格公式

相关主题
文本预览
相关文档 最新文档