excel2003中,如何写宏程序,用于返回选定单元格中文本字符串的行数。

谢谢楼下两位的回答,但还是有点不对,我的单元格是自动换行的,如果需要另起一段,也有用Alt+Enter键换行的,再请指点一下,返回这样的行数,怎么写宏程序。

请试下这个:

Sub LineCount()
count = 1
str1 = Selection.Range("A1").Value '选定区域中第1个单元格
i = Len(str1)
If i = 0 Then '如果没有内容就是 0 行
count = 0
Else
For j = 1 To i
If If Mid(str1, j, 1) = Chr(10) Then count = count + 1
Next j
End If
MsgBox "行数为:" & count
End Sub

GoodLuck!
----------------------------
惭愧,这几天我花了很多时间来研究这个行数的问题,结果是:没有结果,VBA无法确切地得到这个自动换行的行数!

看来,Excel单元格中的东西,在VBA中只把它作为一个整体处理,也就是一个单元格的属性(Value、Text等),作为一个属性它不是对象,所以它除了一个值之外没有其他的信息可以供VBA来提取,比如:一个单元格中各字符的不同大小、不同颜色、不同字体等。 虽然这些东西我们手工可以在Excel中操作,但VBA却无法操作(VBA只能按单元格来整体处理)

所以,我理解,这个具体行数,是Excel在把数据放入时根据各字符大小和单元格宽度以及数据中是否有换行来临时处理后的一个现象,并没有保存在哪个地方,所以VBA无法获得它。

也许只有自己来按各字符大小和单元格宽度来计算行数了,但这个“各字符大小(同一单元格中各字符大小不一样)”又恰是VBA所无法逐个取得的。

GoodLuck Anyway!
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-03-03
建立一个新宏,将一下代码拷贝,再执行。
其中对象单元格可根据自己需求,进行修改。

代码如下,仅供参考:
Sub test()
Dim i As Integer
Dim count As Integer
Dim length As Integer
Dim str As String
str = ActiveSheet.Cells(2, 2).Value 可以动态指定
length = Len(str)
count = 0
For i = 1 To length
If Right(Left(str, i), 1) = Chr(10) Then
count = count + 1
End If
Next i
MsgBox (count)

End Sub

excel2003中,如何写宏程序,用于返回选定单元格中文本字符串的行数。
count = 1 str1 = Selection.Range("A1").Value '选定区域中第1个单元格 i = Len(str1)If i = 0 Then '如果没有内容就是 0 行 count = 0 Else For j = 1 To i If If Mid(str1, j, 1) = Chr(10) Then count = count + 1 Next j End If MsgBox "行数为:" &...

excel2003中,怎么写VB程序,单击及双击单元格会变
End Sub 不是 宏 是工作表事件 在编辑器中,左上角找到 工程-VBAProject 窗口右击里面的 Sheet1(Sheet1) 选择 查看代码 在右侧粘贴 要双击Sheet1的 A1单元格,一次以后才会出现提示 A1中必须已经有 是 或者 否 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Bool...

excel如何利用宏程序在一个单元格输入特定数字后,自动在另外几个单元...
CTRL+SHIFT+回车 然后下拉

EXCLE中如何用宏来执行指定单元格的值满足条件后,执行后续宏程序
把 If Cells(f02 = "TPAL") Then改成 If Range("A1")="指定输入" Then

如何写VB程序,返回当前单元格所在行的序列号
Dim ExcelID as Excel.Application Set ExcelID as new Excel.Application ExcelID.Visible=false ExcelID.WorkBooks.Open('C:\\Excel\\Demo.xls')msgbox ActiveCell.Row

excel统计公式或者宏程序
因此下列公式必须放在B101中:统计x:B101=COUNTIF(OFFSET(INDIRECT("A"&ROW()-100),0,0,100),"x")统计d:C101=COUNTIF(OFFSET(INDIRECT("A"&ROW()-100),0,0,100),"d")然后下拉复制公式,你就可以在任何大于100行数的地方统计出上面100行的重复d或x的个数了。

请问,想选定当前活动单元格所在的行(整行),用excel的VBA编程语言怎么写...
activecell.entirerow.select 或者 Private Sub Worksheet_SelectionChange(ByVal Target As Range)Rows(Target.Row).Select End Sub

Excel2003中批量打印报表方法是什么?
其次,预处理工作表:移除或下移包含合计行或非上报信息的行,移行数量应至少等于样板表的行数,确保调整后与样板表格式一致。接着,录制宏程序:开始录制,复制与样板表行数相等(不含合计行)的记录到工作表中,定位至下一次复制的区域左上角,粘贴至样板表并试打印。结束录制,并根据需要调整宏程序...

如何利用Excel宏编写一个小程序求助excel宏程序编程实例
常用的话就写到加载宏中,然后用Function封装一下,直接返回数组就可以。===3.31 新增加载宏 具体如何加载宏可以自行检索, 我大概说一下, 使用版本excel2016专业增强版 如果你需要把老的xla转xlam, 可以这样~~~在 立即窗口 中运行 ThisWorkbook.IsAddin = False ,然后另存为.xls文件, 转存xlam &...

关于excel表格中,固定单元格格式的问题。请教。
点击菜单:工具-宏-Visual Basic编辑器,在左侧的列表中找到对应的工作簿和工作表,双击工作表,打开代码窗口,输入以下代码:Private Sub Worksheet_Change(ByVal Target As Range)Target.Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone ' 清除选定区域边框格式 Selection.Borders(xlDiagonal...

相似回答