Visual Basic 6调用PrintRTFWithMargins报Argument not optional错误求助
问题原因
你定义的PrintRTFWithMargins函数声明了5个必填参数,调用时没有传入任何参数,因此触发“Argument not optional(参数不可选)”报错,和Option Explicit语句无关。
函数签名如下:
Public Function PrintRTFWithMargins(RTFControl As Object, _ ByVal LeftMargin As Single, ByVal TopMargin As Single, _ ByVal RightMargin As Single, ByVal BottomMargin As Single) _ As Boolean
必填参数说明:
RTFControl:要打印内容的RichTextBox控件对象LeftMargin:左边距,单位为英寸TopMargin:上边距,单位为英寸RightMargin:右边距,单位为英寸BottomMargin:下边距,单位为英寸
解决方法
修改Image87_Click过程,调用函数时传入对应的参数即可,示例代码如下(可以根据实际需求调整边距数值,以及替换为你实际使用的RichTextBox控件名):
Private Sub Image87_Click() ' 示例:打印Form1上的RichTextBox1控件内容,四边距均设为1英寸 PrintRTFWithMargins Form1.RichTextBox1, 1, 1, 1, 1 End Sub
额外优化建议
你现有函数代码里硬编码了Form1.RichTextBox1,会导致你传入其他RichTextBox控件时,打印的永远是Form1上RichTextBox1的内容,建议把两处硬编码的Form1.RichTextBox1替换为参数传入的RTFControl:
- 将
lngTxtLen = Len(Form1.RichTextBox1.Text)改为lngTxtLen = Len(RTFControl.Text) - 将两处
SendMessage(Form1.RichTextBox1.hWnd, ...)改为SendMessage(RTFControl.hWnd, ...)
内容的提问来源于stack exchange,提问作者Fraaaaaa
相关产品推荐
相关产品推荐

