如果function给我的问题

即使我进入男性,我的价值仍然是虚假的,而不是我添加的价值。 任何人有任何想法?

If gender = "Male" Then Sheet2.Range("A2").Value = "he" & Sheet2.Range("A3").Value = "him" & Sheet2.Range("A4").Value = "his" Else Sheet2.Range("A2").Value = "she" & Sheet2.Range("A3").Value = "her" & Sheet2.Range("A4").Value = "her" End If 

您不能在同一个语句中分配两次值。 任何=第一个之后的字符被视为逻辑运算符(等于),而不是赋值。

所以如果你有:

 a = b = c 

VBA将该语句看作:将“B等于C”的结果赋值给A。 如果你在一个陈述中有三个相同的符号,这会变得更加复杂,但它不会是你想要的。

另外,&运算符用于string连接。 所以

 a = "top" & "hat" 

将string“tophat”分配给a。

您可能需要使用:运算符而不是&。 这在一行中分开了陈述。 所以试试这个:

 If gender = "Male" Then Sheet2.Range("A2").Value = "he" : Sheet2.Range("A3").Value = "him" : Sheet2.Range("A4").Value = "his" Else Sheet2.Range("A2").Value = "she" : Sheet2.Range("A3").Value = "her" : Sheet2.Range("A4").Value = "her" End If 

但是,我会敦促你不要使用:在这里。 真的没有必要,我认为这使得代码难以阅读。 我会build议:

 If gender = "Male" Then Sheet2.Range("A2").Value = "he" Sheet2.Range("A3").Value = "him" Sheet2.Range("A4").Value = "his" Else Sheet2.Range("A2").Value = "she" Sheet2.Range("A3").Value = "her" Sheet2.Range("A4").Value = "her" End If 

Rich Holton给了你为什么你的代码不工作的原因

在这里我提出你一些不同的技巧

 Option Explicit Sub main() Dim valsArray As Variant '<--| declare a Variant variable to hold an array Dim gender As String gender = "Male" '<--| gender initialization for testing purposes If gender = "Male" Then valsArray = Array("he", "him", "his") '<--| fill your Variant with values corresponding to the 'gende'r value Else valsArray = Array("she", "her", "her") '<--| fill your Variant with values corresponding to the 'gende'r value End If Sheet2.Range("A2:A4").Value = Application.Transpose(valsArray) '<--| write all values in one shot (you need 'Transpose()' to change the "horizontal" Variant array to a "vertical" one and fit the range you're fill values of End Sub 

你也可以通过使用IIf()函数来缩短它:

 Option Explicit Sub main() Dim gender As String gender = "Male" '<--| gender initialization for testing purposes Sheet2.Range("A2:A4").Value = Application.Transpose(IIf(gender = "Male", Array("he", "him", "his"), Array("she", "her", "her"))) End Sub