2016-11-18 53 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)再回來。如果是這種情況,那很簡單。