<p>'公式计算函数<br/>Function jsjg(in_num)<br/>If Len([in_num].Value) > 254 Then<br/> jsjg = "对不起,请输入不超过255字符的公式"<br/>Else<br/> If VarType(in_num) = 0 Then<br/> jsjg = 0<br/> Else<br/> If VarType(Evaluate([in_num].Value)) = vbError Then<br/> jsjg = "输入值有误,请检查或重新输入"<br/> Else<br/> jsjg = Evaluate([in_num].Value)<br/> End If<br/> End If<br/>End If<br/>End Function<br/>'公式显式函数<br/>Function gsjs(in_num)<br/>If IsObject(in_num) Then<br/>gsjs = [in_num].Formula<br/>Else<br/>gsjs = "请输入引用单元格"<br/>End If<br/>End Function<br/>'中文大写转换函数<br/>Function zwdx(in_num)<br/>Dim Num_Len As Integer<br/>Dim In_Num_2 As Currency<br/>Dim in_num_C As String<br/>Dim In_End 'As Double<br/>Dim xx As String<br/>Dim EnSz<br/>Dim i As Integer<br/>Dim k As Integer<br/>Dim L As Integer<br/>Dim Zwsz<br/>Dim Out_Num As String<br/>Dim bz As Boolean<br/>Dim bzl As Boolean<br/>Dim bzd As Boolean<br/>Dim sing As Boolean</p><p>'初始化数据<br/>Zwsz = Array("壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖")<br/>k = 0<br/>Out_Num = ""<br/>sing = True</p><p>'负数处理<br/>If in_num < 0 Then<br/>in_num = -in_num<br/>sing = False<br/>End If</p><p>'数据四舍五入取两位小数<br/>In_End = IIf(Int((in_num - Int(in_num)) * 1000) Mod 10 > 5, 1, 0)<br/>In_Num_2 = Int((in_num - Int(in_num)) * 100) + In_End</p><p>'小数处理<br/>In_End = In_Num_2 Mod 10<br/>If In_End <> 0 Then<br/> Out_Num = Zwsz(In_End - 1) + "分" + Out_Num<br/>End If<br/>If Int(In_Num_2 / 10) <> 0 Then<br/> Out_Num = Zwsz(Int(In_Num_2 / 10) - 1) + "角" + Out_Num<br/>End If</p><p>'整数处理<br/>in_num = Int(in_num) '取整数<br/>Num_Len = Len(Trim(Str(in_num))) '求长度<br/>If Num_Len > 15 Then<br/>MsgBox "你要转换的数已超出范围(整数最多15位)", , "请注意"<br/>Exit Function<br/>End If</p><p>If in_num = 0 Then<br/>zwdx = Out_Num<br/>Exit Function<br/>End If</p><p>bzd = False<br/>bz = False<br/>bzl = False<br/>k = Int(Num_Len / 4 - 0.1) + 1<br/>If k > 2 Then<br/> In_Num_2 = Int(in_num * 0.0000001)<br/> in_num = (in_num * 0.0000001 - Int(in_num * 0.0000001)) * 10 ^ 8<br/> bz = True<br/>End If<br/>For i = 1 To k Step 1<br/> If i > 2 And bz = True Then<br/> in_num = In_Num_2<br/> bz = False<br/> End If<br/> In_End = in_num Mod 10000<br/> If In_End = 0 Then<br/> 'bzl = True<br/> If i <> 2 Then<br/> Call dwxz((i - 1) * 4 - 1)<br/> dw1 = dw<br/> Out_Num = dw1 + Out_Num '((i - 1) * 4 + 1)<br/> End If<br/> Else<br/> in_num_C = Trim(Str(In_End))<br/> L = Len(in_num_C)<br/> For j = 1 To L Step 1<br/> EnSz = Mid(in_num_C, L - j + 1, 1)<br/> If EnSz = 0 Then<br/> If j = 1 Then<br/> 'out = dw((I - 1) * 4 + 1) + Out_Num<br/> bzd = True<br/> End If<br/> bzl = True<br/> Else<br/> Call dwxz((i - 1) * 4 + j)<br/> dw1 = dw<br/> Call dwxz((i - 1) * 4 + 1)<br/> dw2 = dw<br/> If bzl = True Then<br/> If bzd = True Then<br/> Out_Num = Zwsz(EnSz - 1) + dw1 + dw2 + Out_Num<br/> bzd = False<br/> bzl = False<br/> Else<br/> Out_Num = Zwsz(EnSz - 1) + dw2 + "零" + Out_Num<br/> bzl = False<br/> End If<br/> Else<br/> Out_Num = Zwsz(EnSz - 1) + dw1 + Out_Num '+ dw((I - 1) * 4 + 1)<br/> bzd = False<br/> <br/> End If<br/> End If<br/> <br/> Next j<br/> If L < 4 And In_End > 0 Then<br/> If i < k Then<br/> Out_Num = "零" + Out_Num<br/> End If<br/> End If<br/> bzl = False<br/> bzd = False<br/> End If<br/> in_num = Int(in_num * 0.0001)<br/> Next i<br/> If sing = False Then<br/> Out_Num = "负" + Out_Num<br/> End If<br/> zwdx = Out_Num<br/>End Function<br/>Sub dwxz(i As Integer) 'Public Static<br/>Select Case i<br/> Case 1<br/> dw = "元"<br/> Case 5, 13<br/> dw = "万"<br/> Case 9<br/> dw = "亿"<br/> Case 2, 6, 10, 14<br/> dw = "拾"<br/> Case 3, 7, 11, 15<br/> dw = "佰"<br/> Case 4, 8, 12, 16<br/> dw = "仟"<br/> End Select<br/>End Sub<br/>Function Ezwdx(InputNum) '将英文数字转换成中文大写<br/>Dim InputNumZ As Double '输入数值<br/>Dim IntNum As Double '数值<br/>Dim EnSz As Integer '英文数字<br/>Dim Dwbz As Integer '必选单位标志<br/>Dim Zstar As Integer '为0数字的开始位置<br/>Dim i As Integer '计数值<br/>Dim Sign As Boolean<br/>Dim OutZ As String<br/>Dim Dwn, Zwsz<br/>'数值校对<br/>If IsObject(InputNum) Then '为对象时<br/> If Not IsNumeric([InputNum].Value) Then<br/> If IsEmpty([InputNum].Value) Then<br/> Ezwdx = "空白"<br/> Exit Function<br/> Else<br/> Ezwdx = "引用单元格无法计算"<br/> Exit Function<br/> 'MsgBox "引用单元格无法计算", , "错误"<br/> End If<br/> Else<br/> InputNumZ = [InputNum].Value<br/> End If<br/>Else<br/> InputNumZ = InputNum '为值或表达式时<br/>End If<br/>'MsgBox InputNumZ, , "测试"<br/>If IsNumeric(InputNumZ) Then<br/> If Len(Trim(Str(Int(InputNumZ)))) > 15 Then<br/> Ezwdx = "输入值超出范围,整数不大于15位,小数无论多少位均四舍五入取2位"<br/> MsgBox "输入值超出范围,整数不大于15位,小数无论多少位均四舍五入取2位", , "请检查"<br/> End If<br/>Else<br/> Ezwdx = "输入值超出范围,整数不大于15位,小数无论多少位均四舍五入取2位"<br/> MsgBox "引用单元格数值或输入表达式计算结果不为数值,请重新输入", , "请检查"<br/>End If<br/>'负值判断<br/>Sign = True<br/>If InputNumZ < 0 Then<br/>Sign = False<br/>InputNumZ = -InputNumZ<br/>End If<br/>'如果为-0-<br/>If InputNumZ = 0 Then<br/> Ezwdx = "空白"<br/> Exit Function<br/>End If<br/>'初始化<br/>Dwn = Array("", "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万", "拾", "佰")<br/>Zwsz = Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖")<br/>OutZ = ""<br/>'小数值处理<br/>IntNum = Int((InputNumZ - Int(InputNumZ)) * 1000)<br/>IntNum = Int(0.1 * IntNum) + IIf(10 * (0.1 * IntNum - Int(0.1 * IntNum)) < 5, 0, 1)<br/>If (IntNum Mod 10) <> 0 Then<br/> OutZ = Zwsz(IntNum Mod 10) + "分" + OutZ<br/>End If<br/>If Int(0.1 * IntNum) <> 0 Then<br/> OutZ = Zwsz(Int(0.1 * IntNum)) + "角" + OutZ<br/>End If<br/>'整数处理<br/>IntNum = Int(InputNumZ)<br/>If IntNum > 0 Then<br/>For i = 1 To Len(Trim(Str(IntNum))) Step 1<br/> EnSz = 10 * (0.1 * IntNum - Int(0.1 * IntNum)) ' Mod 10<br/> IntNum = Int(0.1 * IntNum) ' \ 10<br/> If EnSz = 0 Then<br/> Dwbz = 0<br/> Zstar = i<br/> While EnSz = 0<br/> If ((i - 1) Mod 4) = 0 Then<br/> Dwbz = Dwbz + i<br/> End If<br/> EnSz = 10 * (0.1 * IntNum - Int(0.1 * IntNum)) ' Mod 10<br/> IntNum = Int(0.1 * IntNum) ' \ 10<br/> i = i + 1<br/> Wend<br/> Select Case Dwbz<br/> Case 1<br/> OutZ = Zwsz(EnSz) + Dwn(i) + "元" + OutZ<br/> Case 6<br/> OutZ = Zwsz(EnSz) + Dwn(i) + IIf(i = 9, "元", "万元") + OutZ<br/> Case 15<br/> OutZ = Zwsz(EnSz) + Dwn(i) + "亿元" + OutZ<br/> Case 28<br/> OutZ = Zwsz(EnSz) + Dwn(i) + "万亿元" + OutZ<br/> Case 5<br/> OutZ = Zwsz(EnSz) + Dwn(i) + IIf(i = 9, IIf(Zstar = 5, "", "零"), IIf(Zstar = 5, "万", "万零")) + OutZ<br/> Case 9, 14<br/> OutZ = Zwsz(EnSz) + Dwn(i) + IIf(Zstar = Dwbz, "亿", "亿零") + OutZ<br/> Case 13<br/> OutZ = Zwsz(EnSz) + Dwn(i) + IIf(Zstar = 13, "万", "万零") + OutZ<br/> Case 27, 22<br/> OutZ = Zwsz(EnSz) + Dwn(i) + IIf(Zstar = 9, "万亿", "万亿零") + OutZ<br/> Case Else<br/> OutZ = Zwsz(EnSz) + Dwn(i) + "零" + OutZ<br/> End Select<br/> Else<br/> OutZ = Zwsz(EnSz) + Dwn(i) + OutZ<br/> End If<br/>Next i<br/>End If<br/>'负数处理<br/>OutZ = IIf(Sign = False, "负", "") + OutZ<br/>Ezwdx = OutZ<br/>End Function</p><p>Sub Gjtx(gjh As Integer) '箍筋[]<br/>Dim Srang As Range<br/>Dim x As Double<br/>Dim y As Double<br/>Set Srang = Application.ActiveCell<br/>Srang.Select<br/>x = Srang.Left + 5<br/>y = Srang.Top + 2<br/>Select Case gjh<br/>Case 1 '口<br/> x = x + 35<br/> With ActiveSheet.Shapes.BuildFreeform(msoEditingAuto, x + 65, y + 5) '1<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 80, y '2<br/> .AddNodes msoSegmentLine, msoEditingAuto, x, y '3<br/> .AddNodes msoSegmentLine, msoEditingAuto, x, y + 15 '4<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 80, y + 15 '5<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 80, y '6<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 70, y + 11 '7<br/> .ConvertToShape.Select<br/> End With<br/>Case 2 '——<br/> With ActiveSheet.Shapes.BuildFreeform(msoEditingAuto, x, y + 15)<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 150, y + 15<br/> .ConvertToShape.Select<br/> End With<br/>Case 3 '[______]<br/> With ActiveSheet.Shapes.BuildFreeform(msoEditingAuto, x + 15, y) '1<br/> .AddNodes msoSegmentLine, msoEditingAuto, x, y '2<br/> .AddNodes msoSegmentLine, msoEditingAuto, x, y + 15 '3<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 150, y + 15 '4<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 150, y '5<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 135, y '6<br/> .ConvertToShape.Select<br/> End With<br/>Case 4 '|______|<br/> With ActiveSheet.Shapes.BuildFreeform(msoEditingAuto, x, y) '1<br/> .AddNodes msoSegmentLine, msoEditingAuto, x, y + 15 '3<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 150, y + 15 '4<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 150, y '5<br/> .ConvertToShape.Select<br/> End With<br/>Case 5 '[__/ ̄]<br/> x = x + 35<br/> With ActiveSheet.Shapes.BuildFreeform(msoEditingAuto, x + 15, y + 15) '1<br/> .AddNodes msoSegmentLine, msoEditingAuto, x, y + 15 '2<br/> .AddNodes msoSegmentLine, msoEditingAuto, x, y '3<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 25, y '4<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 50, y + 15 '5<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 75, y + 15 '6<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 75, y '7<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 60, y '8<br/> .ConvertToShape.Select<br/> End With<br/>Case 6 '| ̄\_/ ̄|<br/> x = x + 35<br/> With ActiveSheet.Shapes.BuildFreeform(msoEditingAuto, x, y + 10) '1<br/> .AddNodes msoSegmentLine, msoEditingAuto, x, y '2<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 20, y '3<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 28, y + 15 '4<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 48, y + 15 '5<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 56, y '6<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 76, y '7<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 76, y + 10 '8<br/> .ConvertToShape.Select<br/> End With<br/>Case 7 ' ̄\__/ ̄<br/> x = x + 35<br/> With ActiveSheet.Shapes.BuildFreeform(msoEditingAuto, x, y) '1<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 20, y '3<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 28, y + 15 '4<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 48, y + 15 '5<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 56, y '6<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 76, y '7<br/> .ConvertToShape.Select<br/> End With<br/>Case 8 '|______<br/> With ActiveSheet.Shapes.BuildFreeform(msoEditingAuto, x, y) '1<br/> .AddNodes msoSegmentLine, msoEditingAuto, x, y + 15 '3<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 150, y + 15 '4<br/> .ConvertToShape.Select<br/> End With<br/>Case 9 '[____=__]<br/> With ActiveSheet.Shapes.BuildFreeform(msoEditingAuto, x + 15, y) '1<br/> .AddNodes msoSegmentLine, msoEditingAuto, x, y '2<br/> .AddNodes msoSegmentLine, msoEditingAuto, x, y + 15 '3<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 120, y + 15 '7<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 120, y + 12 '8<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 110, y + 12 '9<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 150, y + 12 '10<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 150, y '11<br/> .ConvertToShape.Select<br/> End With</p><p>Case 10 '____=___<br/> With ActiveSheet.Shapes.BuildFreeform(msoEditingAuto, x, y + 15) '1<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 110, y + 15 '3<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 110, y + 12 '7<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 90, y + 12 '8<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 150, y + 12 '9<br/> .ConvertToShape.Select<br/> End With</p><p>Case 11 '[___=____=____]<br/>With ActiveSheet.Shapes.BuildFreeform(msoEditingAuto, x + 15, y) '1<br/> .AddNodes msoSegmentLine, msoEditingAuto, x, y '2<br/> .AddNodes msoSegmentLine, msoEditingAuto, x, y + 12 '3<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 40, y + 12 '4<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 40, y + 15 '5<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 30, y + 15 '6<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 120, y + 15 '7<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 120, y + 12 '8<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 110, y + 12 '9<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 150, y + 12 '10<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 150, y '11<br/> .AddNodes msoSegmentLine, msoEditingAuto, x + 135, y '12<br/> .ConvertToShape.Select<br/>End With</p><p>Case 12</p><p>End Select<br/>Selection.ShapeRange.Line.Weight = 2.25<br/> Selection.ShapeRange.Line.Visible = msoTrue<br/> Selection.ShapeRange.Line.Style = msoLineSingle<br/> Selection.ShapeRange.Line.ForeColor.SchemeColor = 12<br/> Selection.ShapeRange.Line.Visible = msoTrue<br/> With Selection<br/> .Placement = xlMove<br/> .PrintObject = True<br/> End With</p><p>End Sub<br/>Sub GjtxWb(gjh As Integer)<br/>Cytx = Array("?????", "?????", "?????", "?????", "?????", _<br/> _<br/> "?????", "?????", "?????", "?????", "?????", _<br/> _<br/> "?????", "?????", "?????", "?????", "?????", _<br/> _<br/> "?????", "?????", "?????", "?????", "?????", _<br/> _<br/> "?????", "?????", "?????", "?????", "??????", _<br/> _<br/> "?????", "?????", " ??? ", " ???? ", "??????", _<br/> _<br/> "?????", "?????", "", "", "")<br/>ActiveCell.Value = Cytx(gjh - 1)<br/>ActiveCell.Characters(Start:=1, Length:=7).Font.ColorIndex = 5<br/>End Sub<br/>Function FGjtxWb(ParamArray ZH()) '内部编号 As Integer,<br/>Dim JBTF<br/>'Dim i As Integer<br/>Dim OUTWB As String<br/>JBTF = Array("????", "????", "????", "????", "?????", _<br/> _<br/> "?????", "???", "?????", "????", "????", _<br/> "?????", "???", "?", "?", "?", _<br/> "?", "?", "?", "?", "?", _<br/> "?", "?", "?", "?", "?", _<br/> "?", "?", "?", "?", "?", _<br/> "?", "?", "?", "?", "?", _<br/> "?", "?", "?", "?", "?", _<br/> "?", "?", "?", "?", "?", _<br/> "?", "?", "?", "?", "?", _<br/> "?", "?", "?", "?", "?", _<br/> "?", "?", "?", "?", "?", _<br/> "?", "?", "?", "?", "?", _<br/> "?", "?", "?", "?", "?", _<br/> "?", "?", "?", "?", "?", _<br/> "?", "?", "?", "?", "?", _<br/> "?", "?", "?", "?", "?", _<br/> "?", "?", "?", "?", "?", _<br/> "?", " ")<br/>OUTWB = ""<br/> <br/>For Each i In ZH<br/> If i - 1 > UBound(JBTF) Then<br/> OUTWB = OUTWB + Str(i) + "超出编号范围"<br/> Exit For<br/> Else<br/> OUTWB = OUTWB + JBTF(i - 1)<br/> End If<br/>Next<br/>FGjtxWb = OUTWB<br/>End Function<br/>Function Kjjs(左加密区长 As Long, 左加密区间距 As Long, _<br/> 右加密区长 As Long, 右加密区间距 As Long, _<br/> 非加密区长 As Long, 非加密区间距 As Long, _<br/> 加强筋个数 As Integer)<br/>Kjjs = Round(左加密区长 / 左加密区间距) _<br/> + Round(右加密区长 / 右加密区间距) _<br/> + Round(非加密区长 / 非加密区间距) _<br/> + 加强筋个数 + 1<br/> End Function<br/></p> |