我在这里有种约束力。我需要在工作表上设置自动过滤器。为此,我通常使用以下代码:
此处Columncount
是列数visible
Dim alphabet As String = "abcdefghijklmnopqrstuvwxyz"
myDatasheet.AutoFilter.Range = (String.Format("A1:{0}1", alphabet.Substring(columnCount - 1, 1)))
直到26列(这是正常的,因为字母表长26个字母)。但突然间我有29列(Columncount = 29)
。这会导致argumentoutofrangeexception
。
问题:我知道如何修改代码以便在26列或更多列上进行操作?
注意:我主要在aspose网站上进行了我的研究,但是在超过26列的情况下没有找到任何信息或示例
答案 0 :(得分:1)
实际上,我不应该在这里发帖,而应该更多地考虑这一点。事实上,解决方案使用MOD计算非常简单:
Dim alphabet As String = "abcdefghijklmnopqrstuvwxyz"
Dim lastString As String = String.Empty
Dim isDoubledletters As Boolean = (CInt(columnCount / alphabet.Length) > 0)
If Not (isDoubledletters) Then
myDatasheet.AutoFilter.Range = (String.Format("A1:{0}1", alphabet.Substring(columnCount - 1, 1)))
Else
Dim myEndFilter As String = alphabet.ToCharArray()(CInt(columnCount / alphabet.Length) - 1).ToString &
alphabet.ToCharArray()(CInt(columnCount Mod alphabet.Length) - 1).ToString
myDatasheet.AutoFilter.Range = (String.Format("A1:{0}1", myEndFilter))
End If
希望这对未来的任何人都有用处