Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


26 / 13170 ツリー ←次へ | 前へ→

【80018】オプションボタンのコードの簡略化をしたいです。 703 18/6/29(金) 0:43 質問[未読]

【80024】Re:オプションボタンのコードの簡略化をし... hatena 18/6/30(土) 1:45 回答[未読]
【80025】Re:オプションボタンのコードの簡略化をし... hatena 18/6/30(土) 2:53 回答[未読]
【80026】Re:オプションボタンのコードの簡略化をし... 703 18/7/1(日) 11:23 お礼[未読]

【80024】Re:オプションボタンのコードの簡略化を...
回答  hatena  - 18/6/30(土) 1:45 -

引用なし
パスワード
   ▼703 さん:
>アンケートの集計フォームをつくっています。
>アンケートの設問がQ1~Q17まであり、各設問に答えがA1~A10またはA1~A20ほどあります。

>240個のオプションボタンがあり、チェックがついたら、そのオプションボタンに対応したセルの値を、別のシートのセルに投入していく(積上げていく)作業を繰り返し行いたいです。

オプションボタンといってもいろいろあります。
下記のどれでしょうか。

1.ワークシート上に、フォームコントロールのグループボックスとオプションボタンを配置した。

2.ワークシート上に Active X のオプションボタンを配置した。

3.ユーザーフォーム上に、フレームを配置して、その上にオプションボタンを配置した。

提示のコードから推測すると 3.だと思いますが、どうですか。

【80025】Re:オプションボタンのコードの簡略化を...
回答  hatena  - 18/6/30(土) 2:53 -

引用なし
パスワード
   3.の場合だとすると、下記のコードでどうしょう。

Private Sub CommandButton1_Click()
  Dim i As Long, j As Long
  Dim rngOutput As Range, wsInput As Worksheet
  Dim a As Long

  Set wsInput = Worksheets("アンケート項目")
  Set rngOutput = Worksheets("シートA").Range("投入範囲")
  a = rngOutput.Rows.Count
  rngOutput.Rows(a).Insert Shift:=xlDown
  rngOutput.Cells(a, 1).Value = Me.TextBox1
  
  For i = 1 To 17
    With Me.Controls("Frame" & i)
    For j = 0 To .Controls.Count - 1
      If .Controls(j).Value Then
        rngOutput.Cells(a, i + 1).Value = wsInout.Cells(j + 3, i + 2)
      End If
    Next
    End With
  Next
End Sub

【80026】Re:オプションボタンのコードの簡略化を...
お礼  703  - 18/7/1(日) 11:23 -

引用なし
パスワード
   ご回答ありがとうございます。
仰る通り3の場合です。分かりづらい質問ですいませんでした。
頂いたコードを元に再度見直してみたところ
無事エラーなく動きました。
大変ありがとうございました。

26 / 13170 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free