反转等号

时间:2016-11-18 13:15:50

标签: excel excel-vba vba

我对代码有疑问。我不确定它是否可行,我试图找到它的答案。

但是,是否可以反转代码中的等号?

示例代码:

Worksheets("Example").Cells(1, 1).value = Me.checkbox1.value

这将使Cell A1的值为True或False。

但是,如果我想以相反的方式做到这一点?来自A1的数据给出了复选框的值?

只有这样的一行代码很容易重新输入,但是如果你有一个来自用户表单的100个代码,那就太烦人了,只需要很多时间。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

这是样本表格:
enter image description here

每个复选框都在属性中设置了标记值:
enter image description here

按下CommandButton1时:
如果没有按下切换按钮,代码将读取标签值并将数据从工作表复制到表单。

如果按下切换按钮,代码将读取标签值并将数据从表单复制到工作表。

Private Sub CommandButton1_Click()
    Dim ctrl As Control
    Dim vTag As Variant

    For Each ctrl In UserForm1.Controls
        If TypeName(ctrl) = "CheckBox" Then
            vTag = Split(ctrl.Tag, "|")

            If UserForm1.ToggleButton1 Then
                ctrl = ThisWorkbook.Worksheets(vTag(0)).Range(vTag(1))
            Else
                ThisWorkbook.Worksheets(vTag(0)).Range(vTag(1)) = ctrl
            End If
        End If
    Next ctrl
End Sub

答案 1 :(得分:-1)

方法1

  • 将要反转的语句复制到从单元格A1开始的工作表。

  • 将单元格B1设置为公式:= FIND(“=”,A1)

  • 将单元格C1设置为公式:= MID(A1,B1 + 1,LEN(A1)-B1)&“=”& MID(A1,1,B1-1)

  • 将单元格B1和C1复制下来

  • 单元格C1和向下将包含您希望复制回模块或表单的语句。

如果要反转的语句在少量块中,这种方法就足够了。如果语句通过模块或表单展开,这将比重新输入更好,但不如人们想要的那样方便。如果它们分散开来。请提供有关包含声明的模块和/或表单的更多信息。

修改

重读上述内容,我意识到图像会有所帮助:

Image of Excel formulae being used to reverse assignments

大多数作业都不是很富有想象力,但你可以看到这个想法。我假设你们大多数作业分为两个部分:(1)形成工作表,(2)再次返回。如果是这种情况,那就非常简单了。