Excel VBA,很多;如果是;,一些错误和变量情况

Excel VBA,很多;如果是;,一些错误和变量情况,excel,vba,Excel,Vba,嗨,我正试图简化这段代码并使其工作,这是一个验证代码。每次我得到 “如果没有结束,如果”。我试着用“选择案例”、“其他如果”、“其他”。我对这些不太适应 Sub Caption2_Click() Dim page As Range, New_Name As Range, Input_PWD As String, Input_Txt As String 'Set page = Range("I3") 'Set New_Name = Range("J3") 'Input_PWD = Input

嗨,我正试图简化这段代码并使其工作,这是一个验证代码。每次我得到 “如果没有结束,如果”。我试着用“选择案例”、“其他如果”、“其他”。我对这些不太适应

Sub Caption2_Click()
Dim page As Range, New_Name As Range, Input_PWD As String, Input_Txt As String

'Set page = Range("I3")
'Set New_Name = Range("J3")


'Input_PWD = InputBox("SVP entré le code ", "Demande d'activation")
 'Input_TX = InputBox("SVP entré le nouveau nom ", "Data Entry Form")

 ' If Input_PWD = 71234 Then

  'Range("D7").Select
If Sheets("XXX").GL.Caption <> Range("D7").Value Then
Sheets("XXX").GL.Caption = Range("D7").Value
Range("E7").Value = Sheets("XXX").GL.Caption 

If Sheets("XXX").WB.Caption <> Range("C8").Value Then
Sheets("XXX").WB.Caption = Range("D8").Value

If Sheets("XXX").HTTP.Caption <> Range("C9").Value Then
Sheets("XXX").HTTP.Caption = Range("D9").Value

If Sheets("XXX").WE.Caption <> Range("C10").Value Then
Sheets("XXX").WE.Caption = Range("D10").Value

If Sheets("XXX").NF.Caption <> Range("C11").Value Then
Sheets("XXX").NF.Caption = Range("D11").Value

If Sheets("XXX").AC.Caption <> Range("C12").Value Then
Sheets("XXX").AC.Caption = Range("D12").Value

'If Sheets("XXX").MU.Caption <> Range("C13").Value Then
'Sheets("XXX").MU.Caption = Range("D13").Value
End If
'If Input_PWD <> 71234 Then Exit Sub
'End If

End Sub
子标题2\u单击()
Dim page作为范围,New_Name作为范围,Input_PWD作为字符串,Input_Txt作为字符串
'设置页面=范围(“I3”)
'设置新名称=范围(“J3”)
“Input_PWD=InputBox(“高级副总裁输入代码”、“需求激活”)
“Input_TX=InputBox(“SVP entréle nouveau nom”,“数据输入表”)
'如果输入=71234,则
'范围(“D7”)。选择
如果图纸(“XXX”).GL.标题范围(“D7”).值,则
图纸(“XXX”).GL.Caption=范围(“D7”).值
范围(“E7”)。值=图纸(“XXX”)。总帐标题
如果图纸(“XXX”).WB.Caption范围(“C8”).值,则
图纸(“XXX”).WB.Caption=范围(“D8”).值
如果表格(“XXX”).HTTP.Caption范围(“C9”).值,则
图纸(“XXX”).HTTP.Caption=范围(“D9”).值
如果图纸(“XXX”).WE.Caption范围(“C10”).值,则
图纸(“XXX”).WE.Caption=范围(“D10”).值
如果图纸(“XXX”).NF.标题范围(“C11”).值,则
图纸(“XXX”).NF.Caption=范围(“D11”).值
如果图纸(“XXX”).AC.标题范围(“C12”).值,则
图纸(“XXX”).AC.Caption=范围(“D12”).值
'如果图纸(“XXX”).MU.标题范围(“C13”).值,则
'表(“XXX”).MU.Caption=范围(“D13”).值
如果结束
'如果输入_PWD 71234,则退出Sub
"完"
端接头
另一种看法是:

我可以用wong的方式写,基本上我只想比较左边的所有值和右边的值,当它为false时,左边的标题名称会变为右边的值。因此,它可能类似于
如果XXX.caption range(“C8:C13”),那么xxxx.caption=range(D8:D13)或=Offset(0,1)

WB;HTTP;NF;AC ect是我的按钮的名称(适当)


谢谢

在VBA中,如果块看起来像:

If someTest Then doSomething 'all on one line: no End If required


当使用多行时,您需要
结束If

蒂姆已经回答了您的部分问题。
下面是确定单行语句的方法。

示例1:
下面是一个非单行的
IF语句

If Sheets("XXX").WB.Caption <> Range("C8").Value Then
    Sheets("XXX").WB.Caption = Range("D8").Value
或者像下面这样使用行连续字符
\uu

If Sheets("XXX").WB.Caption <> Range("C8").Value Then _
    Sheets("XXX").WB.Caption = Range("D8").Value
如果语句,是否可以将其设为一行 当然可以。您需要使用语句分隔字符
,如下所示:

If Sheets("XXX").GL.Caption <> Range("D7").Value Then Sheets("XXX").GL.Caption = Range("D7").Value: Range("E7").Value = Sheets("XXX").GL.Caption
我打赌你会同意它更干净?

希望以上能有所帮助。

我不明白您是如何设置GL、WB、HTTP的……它们是否声明为按钮

我做了一些测试,得出了:

sheets("XXX").buttons("ButtonName").caption = Range("C9").Value 'you may want to add a sheets("XXX") before Range("C9")...

要查看按钮名称,请选择按钮并查看excel窗口的左上角。

这有什么意义:如果是工作表(“XXX”).GL.Caption范围(“D7”)。值,然后是工作表(“XXX”).GL.Caption=范围(“D7”)。值?修改工作表(“XXX”).GL.Caption如果不检查,成本可能会更低,代码可读性也会更高。我不确定“不检查”是什么意思" ? 我想用这段代码来更改一些按钮上的标题,所以如果我需要快速简单地更改其中的许多按钮,我会将它们与一系列单元格进行比较。但每个按钮都有不同的标题。请检查标题是否与单元格中的标题不同,如果不同,请指定Caption=cell。仅执行caption=cell将以相同的效果结束。这只适用于第一次签入代码(带有“D7”的代码)。在下面的几行中,它是不同的,尽管假设C和D列中的valuest是不同的,但每次运行宏时,标题都会用相同的值进行修改。如果C和D中的值相同,则不需要进行检查(与D7检查一样),谢谢,但我已经知道了。我忘了在问题的末尾加上“End sub”。如果excel告诉我的话,我会加上End。问题中的代码不是这样写的。你只有一个
End If
和一大堆
If
,没有一个是单行语句。嗨,我真的不明白“:”的用法,“Select case”似乎起作用,但最后只有第一部分起作用(或dowant I want)/激活。我在我的问题中添加了一些例子,希望对您有所帮助
If Sheets("XXX").GL.Caption <> Range("D7").Value Then
    Sheets("XXX").GL.Caption = Range("D7").Value
    Range("E7").Value = Sheets("XXX").GL.Caption
If Sheets("XXX").GL.Caption <> Range("D7").Value Then Sheets("XXX").GL.Caption = Range("D7").Value: Range("E7").Value = Sheets("XXX").GL.Caption
If Sheets("XXX").GL.Caption <> Range("D7").Value Then _
    Sheets("XXX").GL.Caption = Range("D7").Value: _
    Range("E7").Value = Sheets("XXX").GL.Caption
Select Case True
Case Sheets("XXX").GL.Caption <> Range("D7").Value
    Sheets("XXX").GL.Caption = Range("D7").Value
    Range("E7").Value = Sheets("XXX").GL.Caption

Case Sheets("XXX").WB.Caption <> Range("C8").Value
    Sheets("XXX").WB.Caption = Range("D8").Value

Case Sheets("XXX").HTTP.Caption <> Range("C9").Value
    Sheets("XXX").HTTP.Caption = Range("D9").Value

Case Sheets("XXX").WE.Caption <> Range("C10").Value
    Sheets("XXX").WE.Caption = Range("D10").Value

Case Sheets("XXX").NF.Caption <> Range("C11").Value
    Sheets("XXX").NF.Caption = Range("D11").Value

Case Sheets("XXX").AC.Caption <> Range("C12").Value
    Sheets("XXX").AC.Caption = Range("D12").Value
End Select
sheets("XXX").buttons("ButtonName").caption = Range("C9").Value 'you may want to add a sheets("XXX") before Range("C9")...