DELPHI and EXCEL SOS (299分) (299分)

  • 主题发起人 主题发起人 Tuatara
  • 开始时间 开始时间
T

Tuatara

Unregistered / Unconfirmed
GUEST, unregistred user!
用Range.Find('Text')可以查找选定范围是否存在TEXT文字的单元格,结果得到一个
单元格。我现在能在选定的范围中查找指定的字符串,并且替换成其它字符串
但我不知道如何判断查找结果:
1、 是否找到 2、如果找到,单元格的行号和列号是多少
或者您能否告诉我单元格有无行号和列号参数及是否是一个有效的单元格
先谢了!加到299了还没人有兴趣吗?

原始问题是我用Excel文件制作模版,在模板中将#Customer标记的单元格用字段Customer
内容替换,但如果不存在#Customer时替换会出错,而且我还想知道查找到后单元格的行列
有关注的UP一下吧
SOS.

 
Find 方法


在区域内查找特定信息,并返回 Range 对象,该对象代表所找到的第一个包含所查找信息的单元格。如果未发现匹配单元格,就返回 Nothing。本方法不影响选定区域或活动单元格。

关于在 Visual Basic 中使用 Find 工作表函数的详细内容,请参阅在 Visual Basic 中使用 Microsoft Excel 工作表函数。

语法

expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte)

expression 必选。该表达式返回 Range 对象。

What Variant 类型,必选。要查找的数据。可为字符串或任意 Microsoft Excel 数据类型。

After Variant 类型,可选。表示查找过程将从其之后开始进行的单元格。此单元格对应于从用户界面查找时的活动单元格位置。注意 After 必须是查找区域中的单个单元格。请记住查找是从该单元格之后开始的;直到本方法环绕到此单元格时,才检测其内容。如果未指定本参数,查找将从区域的左上角单元格之后开始。

LookIn Variant 类型,可选。可为下列 XlFindLookIn 常量之一: xlFormulas、 xlValues 或 xlComments。

LookAt Variant 类型,可选。可为下列 XlLookAt 常量之一:xlPart 或 xlWhole。

SearchOrder Variant 类型,可选。可为下列 XlSearchOrder 常量之一:xlByColumns 或 xlByRows。

SearchDirection Variant 类型,可选。可为下列 XlSearchDirection 常量之一: xlNext 或 xlPrevious。默认常量为 xlNext。

MatchCase Variant 类型,可选。若指定为 True,就进行区分大小写的查找。默认值为 False。

MatchByte Variant 类型,可选。仅在选择或安装了双字节语言支持时使用。若指定为 True,就使双字节字符仅匹配双字节字符。若指定为 False,则双字节字符可匹配其等价的单字节字符。

说明

每次调用本方法后,参数 LookIn、 LookAt、 SearchOrder 和 MatchByte 的设置将保存。如果下一次调用时未指定这些参数,将使用保存的设置。设置这些参数将改变“查找”对话框中的设定,而在“查找”对话框中修改相应设定,也将改变忽略这些参数时所使用的保存值。为避免出现麻烦,每次调用本方法时,请显式指定这些参数的值。

可以使用 FindNext 和 FindPrevious 方法重复查找。

当到达指定查找区域的结尾时,本方法环绕至区域的开始。发生环绕后,为停止查找,可保存第一次找到的单元格的地址,然后测试每一次成功匹配的单元格的地址是否与其相等。

如果希望进行更为复杂的模式匹配查找,可用 For Each...Next 语句和 Like 运算符。例如,下列代码在单元格区域“A1:C5”中查找字体名称以“Cour”打头的单元格。当 Microsoft Excel 找到匹配单元格以后,就将其字体改为“Times New Roman”。

For Each c In [A1:C5]
If c.Font.Name Like "Cour*" Then
c.Font.Name = "Times New Roman"
End If
Next
 
With Worksheets(1).Range("a1:a500")
Set c = .Find(2, lookin:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Interior.Pattern = xlPatternGray50
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
 
谢谢cxz9的提示,我的问题解决了,受你的提醒 If Not c Is Nothing Then
在Delphi中要用
if not varIsClear(TempV) then
我用了VarType,VarIsEmpty,VarIsNull都不行,怎么也不会想到是VarIsClear
问题解决了,谢了。当然分数就全给你了。
 
接受答案了.
 
后退
顶部