2016-11-18 83 views
0

我收到了关于代码的问题。我不确定它是否可行,我试图找到答案。逆向等号

但是,是否有可能扭转代码中的等号?

示例代码:

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

这会给单元格A1的值真或假。

但是如果我想让它变成另一种方式呢?来自A1的数据为我提供了复选框的值?

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

任何想法?

+0

我会为控件添加一个标记值,指定从哪里获取数据,然后遍历表单上的每个控件并读取标记。 –

+2

您必须更改代码中的每一行。这显示了你设计好代码的重要性,这样你就不会有像这样的100行代码。 – trincot

+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

  • 复制你想扭转到工作表起始单元格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)再回来。如果是这种情况,那很简单。