我有一个vb .net程序,它使用命名范围将信息导出到excel工作簿的某些字段。其中一个命名范围是一个注释部分,如果它超出了分页符,它将被截断(不可见也不被打印)。我正在寻找一种动态创建新命名范围的方法,以适应笔记文本的 所有 。
其他一些信息:
指定范围是来自A2:L36的合并单元格,启用了文本换行
A栏是31个单位
B栏至L栏的宽度为8.38个单位
所有行都是15.75个单位
我不想打印空白页面,调整字体大小,禁用文本换行,让最终用户进行任何重新格式化,也不要改变单元格的大小,因为我尝试了这些方法而没有成功。< / p>
使用Excel 2007
请帮忙!
提前完成! 〜第八
原谅我的无知,我仍然是一个n00b
答案 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个字符,只需使用正常的自动调整。