我试图在表格的第2列中找到所有文本为“0.118”的单元格,并为该行列出命令列表。我还试图从该行中找到的选定文本的第5列中获取值,然后减去我在该行的输入框中输入的值。
我遇到的问题是,它只改变了我找到的“0.118”之一,而不是每行中的所有内容。
我不知道如何搜索选定行的列(5)。
任何帮助都将不胜感激。
非常感谢。
Sub ConvertTo_3MM()
Dim oTable As Table
Dim stT As Long, enT As Long
Dim stS As Long, enS As Long
With Selection.Find
.Forward = True
.MatchPhrase = True
.Execute FindText:="0.118"
End With
For Each oTable In ActiveDocument.Tables
Do While Selection.Find.Execute = True
stT = oTable.Range.Start
enT = oTable.Range.End
stS = Selection.Range.Start
enS = Selection.Range.End
If stS < stT Or enS > enT Then Exit Do
Selection.Collapse wdCollapseStart
If ActiveDocument.Tables.Count >= 1 Then
With ActiveDocument.Tables(1).Cell(nRow, 2).Range
.Text = "3 MM" & vbCrLf & "-" & vbCrLf & "6 MM"
End With
End If
Selection.MoveRight Unit:=wdCell
If ActiveDocument.Tables.Count >= 1 Then
With ActiveDocument.Tables(1).Cell(nRow, 3).Range
.InsertAfter Text:=vbCrLf & "-" & vbCrLf & "SHANK"
End With
End If
Selection.MoveRight Unit:=wdCell
Selection.MoveRight Unit:=wdCell
response = InputBox("Cut Length For 3 MM")
If ActiveDocument.Tables.Count >= 1 Then
With ActiveDocument.Tables(1).Cell(nRow, 5).Range
.Text = response & vbCrLf & "-" & vbCrLf & (column(5).value - response)
End With
End If
Selection.Find.Execute Replace:=wdReplaceAll
Loop
Selection.Collapse wdCollapseEnd
Next
Application.ScreenUpdating = True
End Sub
请尝试以下代码:
Sub ConvertTo_3MM()
Dim oTable As Table, rng As Range
Dim nRow As Long, response As String
For Each oTable In ActiveDocument.Tables
With oTable
Set rng = .Range
Do
If rng.Find.Execute("0.118") Then
If rng.Information(wdEndOfRangeColumnNumber) = 2 Then
nRow = rng.Information(wdEndOfRangeRowNumber)
.Cell(nRow, 2).Range.Text = "3 MM" & vbCrLf & "-" & vbCrLf & "6 MM"
.Cell(nRow, 3).Range.InsertAfter Text:=vbCrLf & "-" & vbCrLf & "SHANK"
response = Val(InputBox("Cut Length For 3 MM"))
.Cell(nRow, 5).Range.Text = response & _
vbCrLf & "-" & vbCrLf & (Val(.Cell(nRow, 5).Range.Text) - response)
End If
Else
Exit Do
End If
rng.Collapse wdCollapseEnd
Loop
End With
Next
Application.ScreenUpdating = True
End Sub
这可能不是一个解决方案,但我确实看到了一些问题:
你可以:
For Each oTable In ActiveDocument.Tables
然后你在循环中这样做:
Do While Selection.Find.Execute = True
但是这个查找
将不限于For每个
循环的表。
虽然无害,但在这个循环中,您可以执行:
If ActiveDocument.Tables.Count >= 1 Then
但这当然是正确的,因为每个的已经确定至少有一个表。
我建议你查找
查找
的留档,重新思考逻辑,然后在调试器中一步一步地运行它,看看代码在做什么。
如果你问题中的代码真的做了什么,甚至没有编译,我会非常惊讶。
您的代码相当混乱,因此我不能完全确定我是否正确理解了您试图执行的操作,但请尝试以下操作:
Sub ConvertTo_3MM()
Application.ScreenUpdating = False
Dim oTable As Table
Dim response As String
For Each oTable In ActiveDocument.Tables
With oTable.Range
With .Find
.Forward = True
.MatchPhrase = True
.Text = "0.118"
.Wrap = wdFindStop
.Execute
End With
Do While .Find.Found = True
.Text = "3 MM" & vbCr & "-" & vbCr & "6 MM"
With .Rows(1)
.Cells(3).Range.InsertAfter Text:=vbCr & "-" & vbCr & "SHANK"
response = Val(InputBox("Cut Length For 3 MM"))
With .Cells(5).Range
.Text = response & vbCr & "-" & vbCr & (Val(.Text) - response)
End With
End With
.Collapse wdCollapseEnd
.Find.Execute
Loop
End With
Next
Application.ScreenUpdating = True
End Sub
在Atom中,对你文件或者项目中的文本进行查找或者替换,非常快速而且容易。 cmd-F 在缓冲区中查找 cmd-shift-f 在整个项目中查找 如果你执行了这些命令,你屏幕的底部会出现一个“Find and Replace”面板。 你可以按下cmd-F,输入需要搜索的字符串,并且多次按下回车(或者cmd-G,或者“Find Next”按钮)来在当前文件中搜索,循环查找当前文件中的匹配内容。“Fi
我有一些占位符的docx文档。现在我应该用其他内容替换它们,并保存新的docx文档。我从docx4j开始,发现了这个方法: 但这很少起作用,因为通常占位符会在多个文本运行中拆分。 如何解决这个问题?
从word文件中,我想替换字符的交替出现。通过使用查找
查找工具栏 快捷键 Mac: Command + F Windows\/Linux: Ctrl + F 先选中复制,然后调出查找工具栏,选中部分就被自动填入搜索框,按回车键快速搜索。 操作步骤(快捷键): Command + C (复制单词) Command + F (调出查找工具栏) Enter (回车开始查找) 在查找结果中跳转 下一个匹配到的结果 快捷键: Mac: Command + G
如何使用PDFBox2.0找到和替换PDF文档中的文本,他们拉出了旧的示例,它的语法不再有效,所以我想知道这是否仍然可能,如果是,最好的方法是什么。谢了!
了解如何在当前文档、文件夹、站点或所有打开的文档中查找和替换代码、文本或标签(包含或不包含属性)。 使用 Dreamweaver 强大的查找和替换功能在当前文档、文件夹、站点或所有打开的文档中查找和替换代码、文本或标签(包含或不包含属性)。 您还可以将强大的模式匹配算法(正则表达式)用于高级查找和替换操作。 可以查找和替换的内容如下: 代码中的标签、属性和文本 一个选区或多个选区中的文本 多个文档