在字符串变量

时间:2018-01-24 21:59:43

标签: excel vba substring

我试图在包含html的变量中找到一个短语。然后我想用一个新短语替换它。

我试过InStr但是找不到这句话。我也尝试在短语的开头和结尾使用通配符。我也尝试过使用和不使用通配符。

目的是允许测试人员通过输入他们想要更改的句子或短语对预期结果和/或测试步骤进行批量更改。

我遇到的唯一问题是能够以编程方式在变量中找到句子。 问题区域以粗体显示

Dim qcURL As String
Dim qcID As String
Dim qcPWD As String
Dim qcDomain As String
Dim qcProject As String
Dim preActVal As String
Dim postActVal As String
Dim FindSt As String
Dim currentString As String
Dim thisSheet As Worksheet
'Toggle debugging mode'
Dim isDebugOn As Boolean
isDebugOn = True   'set to true to turn off Active X
''On Error GoTo ErrHandler:
FOLDER_PATH = "BAT\PC2P - Claims - Med"
Set thisSheet = ThisWorkbook.Sheets("ShellUpdater")
TestID = thisSheet.Range("B1").Value
stField = thisSheet.Range("B2").Value
**FindSt = thisSheet.Range("B3").Value**
ReplaceSt = thisSheet.Range("B4").Value
testLocation = thisSheet.Range("B5").Value

'ActiveX Forms
   If isDebugOn = False Then
       'qcURL = GetOptionMetric("qcURL", 1, "Enter ALM URL")   ''popup to get url from user
       qcURL = "<<URL>>"
    'qcDomain = GetOptionMetric("qcDomain", 1, "Enter your ALM Domain")     
''popup to get domain from user
       qcDomain = "<<DOMAIN>>"
    'qcProject = GetOptionMetric("qcProject", 1, "Enter your ALM Project")      
''popup to get project from user
       qcProject = "<<PROJECT>>"
       qcID = GetOptionMetric("qcID", 1, "Enter your ALM MSID")
       qcPWD = GetOptionPassword("qcPWD", 1, "Enter your ALM Password")
   Else
       qcURL = "<<URL>>"
       qcID = "<<USERNAME>>"
       qcDomain = "<<DOMAIN>>"
       qcProject = "<<PROJECT>>"
       qcPWD = InputBox("THIS IS IN DEEBUG MODE")
       If qcPWD = vbNullString Then Exit Sub
       If qcPWD = "" Then Exit Sub
   End If
'END ActiveX Forms

'Connect to ALM
Set tdConnection = CreateObject("TDApiOle80.TDConnection")
tdConnection.InitConnectionEx qcURL
tdConnection.Login qcID, qcPWD
tdConnection.Connect qcDomain, qcProject

''Check if batch updating or single case
Dim testObject As ITest

   If InStr(TestID, "All") > 0 Then
       Dim TestFact As testFactory
       Set tMng = tdConnection.TreeManager
       Set srcFolder = tMng.NodeByPath("Subject\" & testLocation)
       Set tstFact = srcFolder.testFactory
       Set tstList = tstFact.NewList("")

       For Each shellTest In tstList
           Set DSFact = shellTest.DesignStepFactory.NewList("")

           For Each dStep In DSFact

               Select Case stField
                   Case "StepExpectedResult"
                    **currentString = dStep.StepExpectedResult**
                    **stposition = InStr(currentString, FindSt)**
                       If stposition > 0 Then
                           dStep.StepExpectedResult = preActVal & Replace(currentString, FindSt, ReplaceSt) & postActVal
                       End If
                   Case "StepDescription"
                       currentString = dStep.StepDescription
                       stposition = InStr(currentString, FindSt)
                       If stposition > 0 Then
                           dStep.StepDescription = preActVal & Replace(currentString, FindSt, ReplaceSt) & postActVal
                       End If
               End Select

            dStep.Post
        Next dStep

    Next shellTest

Else
    Dim myTest
    'Find the Test in test plan
    Set thisTest = GetTest(Trim(TestID), testLocation, "\")
    Set myTest = tdConnection.testFactory.Item(TestID)
End If

1 个答案:

答案 0 :(得分:0)

试试这个:

    Sub replace_string()

    FindSt = "but also need rendering provider first name"
    ReplaceString = "I LIKE BANANAS"

    currentString = "All fields populate from the correctly populated provider<<<\!Renderingproviderlastname>>>, but also need rendering provider first name"
    stPosition = Replace(currentString, FindSt, ReplaceString)

    MsgBox stPosition

    End Sub