VBA读取单元格值作为变量定义而不是文本

时间:2017-09-03 17:27:17

标签: excel string vba variables import

我的同事经常不得不发出邀请面试(一次最多几十次)。我正在编写一个宏来帮助他们根据所有受访者的信息自动生成Outlook会议邀请,我们将这些信息存储在Excel数据文件中。

例如,“亲爱的[INSERT NAME],我们想邀请您参加[插入日期] [INSERT SUBJECT]的采访。请使用[INSERT PHONE NUMBER]致电面试,并准备好谈谈患者[INSERT CONDITION]。“

因为我的同事不知道VBA我试图让他们在输入表中写下它并让程序读取格式并将其存储在名为MeetingInviteBody的变量中。所以我需要获取单元格的值并将其作为变量定义读取。问题是整个事物是作为字符串输入的,即使单元格的内容是部分字符串和部分引用另一个变量。有办法解决这个问题吗?

提前谢谢!

附录:我希望这能澄清我的目标。这是我作为测试写的宏:

Sub MultipleDataTypeInput()
Dim FirstLineofText As Variant
Dim PhysicianName As String

PhysicianName="Dr. Smith"
FirstLineofText=Sheets("Sheet1").Cells(1,1).Value
MsgBox(Prompt:=FirstLineofText)
End Sub

我把“亲爱的”& PhysicianName&单元格A1中的“,”我希望Excel能够将宏读作为 FirstLineofText =“亲爱的”& PhysicianName& “” 如果发生这种情况,MsgBox会说“亲爱的史密斯博士”。 相反,提示是“”亲爱的“& PhysicianName&”,“”

这有意义吗?

2 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是在VBA中使用replace函数。

但是,在单元格A1中,写下"Dear PhysicianName,"并删除&连接。 (如果你在 中严格地编写它,那么你编写它的方式就可以了。代码会将值连接在一起。例如:FirstLineofText = "Dear " & PhysicianName & ","

Sub MultipleDataTypeInput()

    Dim FirstLineofText As Variant
    Dim PhysicianName As String

    PhysicianName="Dr. Smith"
    FirstLineofText=Sheets("Sheet1").Cells(1,1).Value

    FirstLineofText = Replace(FirstLineOfText,"PhysicianName",PhysicianName)
    MsgBox(Prompt:=FirstLineofText)

End Sub

我建议这样做,因为你说同事正在编写他们自己的脚本,我不想提出一个全新的方法,因为它可能会让你感到困惑。也就是说,我认为有更有效的方法来设计它。

答案 1 :(得分:0)

我认为你的逻辑落后

你可能想要这个

Sub MultipleDataTypeInput()

    Dim PhysicianName As String
    Dim PatientName As String

    PhysicianName = Sheets("Sheet1").Range("A1").Value  ' this cell should hold "Dr. Smith"
    PatientName = Sheets("Sheet1").Range("B1").Value

    MsgBox "Dear" & PhysicianName & ", We would like to invite you to an interview about " & PatientName

End Sub