2016-11-18 3 views
0

コードに関して質問がありました。私はそれが実行可能であるかどうかわからない、私はそれの答えを見つけることを試みた。逆符号等

ただし、コードの等号を逆にすることはできますか?

例コード:

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

これは、値trueまたはfalseセルA1を与えるだろう。

私はそれを逆にしたいのですか? A1からのデータは、私にチェックボックスの値を与えてくれるのでしょうか?

このようなコードを1行だけ入力するだけで簡単に再入力できますが、ユーザーフォームのコードが100件ある場合は迷惑になり、時間がかかります。

アイデア?

+0

タグの値をコントロールに追加して、データの取得先を指定し、フォーム上の各コントロールを順番に調べてタグを読み取るようにしました。 –

+2

コードの各行を変更する必要があります。これは、あなたのコードをうまく設計することの重要性を示しています。そのような行は100個もありません。 – trincot

+0

さて、私は大きなuserformsで多数のコードを避ける方法がわかりません。 –

答えて

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

割り当てのほとんどは非常に想像力はありませんが、あなたのアイデアを見ることができます。私はあなたの割り当ての大部分が2つのブロックにあると仮定します:(1)形成するワークシートと(2)再び。このような場合は、すべて非常に簡単です。

関連する問題