即使我输入了男性,我的价值也会变得虚假而不是我添加的价值。谁有任何想法?
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
答案 0 :(得分:4)
您无法在同一语句中分配两次值。在第一个之后的任何=字符被视为逻辑运算符(等于),而不是作为赋值。
所以如果你有:
a = b = c
VBA将语句视为:将“Is b等于c”的结果分配给A. 如果你在一个陈述中有三个相同的符号会变得更复杂,但它不会是你想要的任何速度。
此外,&运算符用于字符串连接。所以
a = "top" & "hat"
将字符串“tophat”分配给。
您可能希望使用:运算符而不是&amp ;.这在单行上将语句分开。所以试试这个:
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
但是,我建议你不要使用:这里。实际上没有必要,我认为它使代码更难阅读。我建议:
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
答案 1 :(得分:1)
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