也谈分数标注的问题 经常被朋友问到分数标注的问题,如林班的标注。在坛子里搜索,大伙给出了很多方案。最常见的是勾选advance 后,用VBA 语言,利用“—”来划那条横线,或者利用对分子加下划线的形式加横线。下边看下具体例子【其中引用了很多以前坛子里大家滴成果】: 1)如只想简单的标注成分数形式,那是很easy 的,如以 shape_length 作分子,shape_area作分母,则其设置方式为: 试验 1: 图 1 简单分数形式标注设置 即,对分子[Shape_Length]字段加下划线,然后用vbnewline 换行,再加上[Shape_Area]字段即可。 1. ""&[Shape_Length]&""&vbnewline&[Shape_Area] 复制代码 此时存在的问题是,有可能分子的长度小于分母,导致下划线长度不够,缺少美观,改进方式为,增加长度判断,并以"—"代替下划线,则此时将分子、横线和分母,作三行显示。其设置如下: 试验 2 图 2 调整中间横线长度的设置 用 len([字段])来获取字段值的长度,如 12.34,其长度为4,而 123.45,其长度为5。 用 if..then..end if 条件判断语句,使 max 取得最长字段的长度,作为"—"长度计算值。 string(int(max/2),"—")的作用为:绘制int(max/2)个"—", 而 int(max/2)是因为一个中文输入法下的"—"占据了 2 个英文字符的长度,因此要除 2 取整。 1. Function FindLabel ( [Shape_Length], [Shape_Area], [DM] ) 2. max=len( [Shape_Length] ) 3. if max