2017-11-01 10 views
0

私がやろうとしていることについて、少しの背景があります。 私のuserformは従業員の訓練の評価に使用され、結果はExcelスプレッドシートに追加されます。私のフォームのチェックボックスは、間違いの種類を表しています。それぞれの間違いは、ボックスがチェックされている間に何回失敗したかを指定する数量ボックスを理想的に持っています。各行は各従業員のために1つのテストであるため、1つのセルで両方が必要です。ここに私のuserformの例があります: Mistakes Screen Shot すべてのチェックボックスとテキストボックスは同じ番号を共有していますが、チェックボックスをオンにするとチェックボックスをオンにすると自動的に1つの数値が挿入されるようにプログラムされています。 (間違いのタイプが重複している場合は、数量を編集できる必要があります)Excel Userform/VBA CheckBoxとTextBoxを1つのセル文字列に結合する

Dim CheckBox As Control 
Dim Mistakes As String, delimiter As String 

For Each CheckBox In Me.Frame_Mistakes.Controls 
    If TypeOf CheckBox Is MSForms.CheckBox Then 
     If (CheckBox.Value) Then 
      Mistakes = Mistakes & delimiter & CheckBox.Caption 
      delimiter = " | " 
     End If 
    End If 
Next 

With Sheet1 
    .Cells(emptyRow, 4).Value = Mistakes 
End With 

しかし、これまでのところ、デリミタの前の各ミスの最後に量を追加する方法を理解することができませんでした。文字列をこの形式にすることができれば私はそれを好むでしょう:Mistakes Format in Excel

私の意図が不明な場合は、私は謝罪します。私は信じられないほど新しいと正直に驚いて私はこれまでこれを行うことができました。お願いとありがとう!

答えて

0

私が正しくあなたを理解していればそう、あなたは間違いセルの出力は

[Caption of checked box](x[Number in Text Box])|[Caption of checked box](x[Number in Text Box])... 

を読みたいものがそうであるならば、あなたは、単にあなたの「間違いの最後にコードのスニペットを追加する必要があります'変数は、それが読むように:物事が困難取得

Mistakes = Mistakes & delimiter & Checkbox.Caption & "(x" & TextBox.text & ")" 

は、あなたが該当するチェックボックスに適用される一方だけが使用されているように、テキストボックスを区別する必要があるということです。テキストボックスを引数として渡すなど、いくつかの方法でこれを行うことができます。

もう1つの問題は、テキストボックスに数字だけが使用されていることを確認することです。私がこれを達成する方法は、IsNumeric()Val()の機能を組み合わせたものです。最初に値が数値かどうかを確認し、Val()関数を使用してintに格納します。ただし、文字列にのみ必要なので、IsNumeric()関数を単独で使用すると問題ありません。

もっと具体的な説明が必要な場合は、探しているものを正確に把握する必要があります。

+0

返信いただきありがとうございます!あなたが与えた出力例は、まさに私が探しているものです。あなたが提供したスニペットを追加しました。それは私にエラーを与えています。これはテキストボックスがまだ区別されていないためだと思います。私はisnumericを研究し、引数オプションとしてtextboxを渡して、この作業をしようとしています。確かに、それは暗闇の中のショットのようです。これは正しい方向への大きな跳躍ですので、私は心からあなたの指導に感謝します。 – BryanivaD

関連する問題