合并单元格的内容超出了分页符

时间:2009-05-12 15:15:42

标签: vb.net excel-vba merge printing vba

我有一个vb .net程序,它使用命名范围将信息导出到excel工作簿的某些字段。其中一个命名范围是一个注释部分,如果它超出了分页符,它将被截断(不可见也不被打印)。我正在寻找一种动态创建新命名范围的方法,以适应笔记文本的 所有

其他一些信息:

  • 指定范围是来自A2:L36的合并单元格,启用了文本换行

  • A栏是31个单位

  • B栏至L栏的宽度为8.38个单位

  • 所有行都是15.75个单位

  • 我不想打印空白页面,调整字体大小,禁用文本换行,让最终用户进行任何重新格式化,也不要改变单元格的大小,因为我尝试了这些方法而没有成功。< / p>

  • 使用Excel 2007

请帮忙!

提前完成! 〜第八


原谅我的无知,我仍然是一个n00b

2 个答案:

答案 0 :(得分:1)

再次感谢Lunatik的回复。在看到你最近的帖子之前,我能够提出一个可接受的解决方法。这不是最优雅的解决方案,但它最适合我想要完成的任务。我希望将来可以对其他人有所帮助。

Dim sNotes As String = g_strProgram.sNotes
Dim iStartIndex, iEndIndex As Integer
Dim iRow As Integer = 0

If (sNotes.Length > 0) Then
   g_frmMain.ucAdditionalInfo.txtNotes.Text = sNotes
   Do
      iRow += 1
      oWorkSheet.Range("A" & iRow + 1 & ":L" & iRow + 1).Merge()
      iStartIndex = IIf(iRow = 1, 0, iEndIndex + 1)

      If (g_frmMain.ucAdditionalInfo.txtNotes.GetFirstCharIndexFromLine(iRow) >= 0) Then
         iEndIndex = g_frmMain.ucAdditionalInfo.txtNotes.GetFirstCharIndexFromLine(iRow) - 1
      Else
         iEndIndex = g_strProgram.sNotes.Length - 1
      End If

      oWorkSheet.Range("ProgramNote").Offset(iRow, 0).Value = g_strProgram.sNotes.Substring(iStartIndex, iEndIndex - iStartIndex).TrimEnd(vbCrLf)
   Loop While (iEndIndex < g_strProgram.sNotes.Length - 1)
Else
       oWorkSheet.Visible = Excel.XlSheetVisibility.xlSheetHidden
End If

如果有人在阅读此内容需要澄清任何上述内容,请不要犹豫,在此发布问题! 〜第八

答案 1 :(得分:0)

Aaargh!合并的细胞是撒旦的工作,应该不惜一切代价避免。即使他们的存在被认为是良性的,他们也可以通过微妙而狡猾的方式破坏其他声音的工作表。

您没有提到文字是垂直还是水平剪切?

您应该将AutoFit method视为强制文本保留在打印区域内的一种方法。这将调整单元格的大小,使文本适合您选择的字体大小,并且由于打印区域由单元格边框定义,这应确保所有文本在打印后仍然可见。

如果这不起作用,那么在不删除合并的单元格的情况下可能很难确定。他们绝对必要吗?

我正在为你的工作表模板制作一个类似的工作表模板,让单元格调整大小以适应各种字符串,最多911个字符,只需使用正常的自动调整。