- ベストアンサー
VBAのUserFormに大量のTextBoxを配置し、特定の条件で数字の先頭に¥を付ける方法
- VBAのUserFormにTextBoxを縦13個×横9個で配置し、ExcelのSheetに入力された内容を表示する方法についてご質問です。
- 特定の条件を満たす場合に、表示された数字の先頭に¥を付けたい場合、以下のコードを使用することができます。
- ただし、UserForm上のTextBoxで縦1列目と縦3列目と縦5列目のみ¥を付けない場合、それ以外のTextBoxには全て¥を付けたい場合は、該当するTextBoxの位置を条件分岐させて処理を行います。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
If y = 1 Or y = 3 Or y = 5 Then Controls("TextBox" & (y - 1) * 9 + x) = ThisWorkbook.Sheets(2).Cells(y, x) Else Controls("TextBox" & (y - 1) * 9 + x) = "\" & ThisWorkbook.Sheets(2).Cells(y, x) End If でいかがでしょう。
その他の回答 (2)
- kmetu
- ベストアンサー率41% (562/1346)
> 数字がマイナスになった時に赤字で表示させたいと思います。 If ThisWorkbook.Sheets(2).Cells(y, x) < 0 Then Controls("TextBox" & (y - 1) * 9 + x).ForeColor = vbRed End If 上記を参考にして実際のコードに埋め込んでください。
お礼
この度は、ありがとうございます。 やっと、自分の思う通りにできました。 これかも何かと質問すると思いますがよろしくお願いします。
補足
本当にありがとうございます。初心者ですが、何とかできるようになりました。以下の参照。 Dim y As Integer Dim x As Integer For y = 1 To 13 For x = 1 To 9 If x = 1 Or x = 3 Or x = 5 Then Controls("TextBox" & (y - 1) * 9 + x) = Format(ThisWorkbook.Sheets(2).Cells(y, x), "m/d") Else Controls("TextBox" & (y - 1) * 9 + x) = Format(ThisWorkbook.Sheets(2).Cells(y, x), "\\#,###") If ThisWorkbook.Sheets(2).Cells(y, x) < 0 Then Controls("TextBox" & (y - 1) * 9 + x).ForeColor = vbRed End If End If Next x Next y End If
- kmetu
- ベストアンサー率41% (562/1346)
> 縦13個×横9個のうち、縦1列目と縦3列目と縦5列目のみ¥は必要ないです。 縦ではなく横の1,3,5だったということでしょうか。
補足
横9個のうち1列目と3列目と5列目と言う意味になります。 ややこしい言い方になってしまって・・・すみません。 結果的に >縦ではなく横の1,3,5だったということでしょうか。 と言う事になります。
お礼
追加で質問させて頂きたいのですが、お手数お掛けします。 一旦、以下の状態で落ち着いたんですが・・・数字がマイナスになった時に赤字で表示させたいと思います。・・・が、ここからどの様にしたら良いでしょうか? Dim y As Integer Dim x As Integer For y = 1 To 13 For x = 1 To 9 If x = 1 Or x = 3 Or x = 5 Then Controls("TextBox" & (y - 1) * 9 + x) = Format(ThisWorkbook.Sheets(2).Cells(y, x), "m/d") Else Controls("TextBox" & (y - 1) * 9 + x) = Format(ThisWorkbook.Sheets(2).Cells(y, x), "\\#,###") End If Next x Next y End If
補足
回答ありがとうございます。私の説明不足の箇所もありましたが、ヒントを頂まして完成する事が出来ました。 以下ので動作できました。 Dim y As Integer Dim x As Integer For y = 1 To 13 For x = 1 To 9 If x = 1 Or x = 3 Or x = 5 Then Controls("TextBox" & (y - 1) * 9 + x) = ThisWorkbook.Sheets(2).Cells(y, x) Else Controls("TextBox" & (y - 1) * 9 + x) = "\" & ThisWorkbook.Sheets(2).Cells(y, x) End If Next x Next y