消息框指单元格内容

我不能得到一个msgbox的语法正确。 我想要这个盒子说:

你已经指出“雇员的名字”(工作表的一个单元格的范围引用)已经工作了“小时”(对工作表单元格的范围引用)做“工作”(对工作表单元格的范围引用)

这个信息是否正确?

这是我的(稍微缩短):

Public confirmation_yes_no() Dim yesornoanswertomessagebox As String Dim questiontomessagebox As String questiontomessagebox = "You have indicated that" & worksheets("dept 1 input").range("g12"),"worked at" & worksheets("dept 1 input").range("g16"), "for" & worksheets("dept 1 input").range("g16"), vbinformation, "Are you sure that this data is correct?" yesornoanswertomessagebox = MsgBox(questiontomessagebox, vbYesNo, "FlightPlan for Profits PRO") If yesornoanswertomessagebox = vbNo Then MsgBox "Return to Data Input to correct error(s)", 0, "FlightPlan for Profits PRO" Else MsgBox "Great! Press Enter", 0, "FlightPlan for Profits PRO" End If End Sub 

我当然假设这是可能的。

几件事情与你的代码,

  • 你的sub的Public confirmation_yes_no()是什么,它是一个子,函数还是什么,它现在写的是一个全局variables声明。
  • 将元素与string合并为一个元素时,请始终使用&但务必手动在其周围放置空格,否则将无法识别。 &var1 <> & var1
  • 将参数设置为稍后使用的variables时要谨慎,并且绝对不要设置它们两次。
  • 如果大量使用限定符,比如Worksheets("dept 1 input") ,可以考虑使用如下所示的With语句,这样可以避免必须反复inputWith语句。 请注意,要使用with语句,你写. 在代码前面。
    .Range(...指向由With语句设置的表单。
    Range(...指向Excel认为处于活动状态的表单。
  • 将variables与文本结合起来时,要考虑到variables很可能没有前导和尾随空格,并且必须在string位中对此进行补偿。
  • 为了便于阅读,您可以在代码中添加一个_来表示它在下一行继续,而不是非常长的一行。
  • 您可以直接在If语句中使用消息框。

更正的代码

 Public Sub confirmation_yes_no() Dim questiontomessagebox As String With ThisWorkbook.Worksheets("dept 1 input") questiontomessagebox = "You have indicated that " & .Range("G12") & " worked at " _ & .Range("G16") & " for " & .Range("G16") & "." _ & vbCr & vbCr _ & "Are you sure that this data is correct?" End With If MsgBox(questiontomessagebox, vbYesNo, "FlightPlan for Profits PRO") = vbNo Then MsgBox "Return to Data Input to correct error(s)", 0, "FlightPlan for Profits PRO" Else MsgBox "Great! Press Enter", 0, "FlightPlan for Profits PRO" End If End Sub 

嗨,你错过了“&”的迹象。 所以我正确的为你。

 questiontomessagebox = ("You have indicated that " & Worksheets("dept 1 input").Range("g12") & " ,worked at " _ & Worksheets("dept 1 input").Range("g16") & " for " & Worksheets("dept 1 input").Range("g16")) & Chr(32) & _ vbInformation & vbNewLine & " Are you sure that this data is correct?"