Excel VBA質問箱 IV

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

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


11 / 13155 ツリー ←次へ | 前へ→

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

【80020】Re:オプションボタンのコードの簡略化をし... γ 18/6/29(金) 7:17 回答[未読]
【80022】Re:オプションボタンのコードの簡略化をし... 703 18/6/29(金) 9:07 質問[未読]
【80023】Re:オプションボタンのコードの簡略化をし... γ 18/6/29(金) 18:45 発言[未読]
【80027】Re:オプションボタンのコードの簡略化をし... 703 18/7/1(日) 11:25 お礼[未読]

【80020】Re:オプションボタンのコードの簡略化を...
回答  γ  - 18/6/29(金) 7:17 -

引用なし
パスワード
   シートモジュールに書いてください。
テストを十分していないので、そちらで検証してください。

Sub test()
  Dim ws As Worksheet
  Dim rng As Range
  Dim j  As Long
  Dim jj As Long
  Dim k  As Long
  Dim ruiseki As Long
  Dim p  As Long
  Dim ary As Variant
  
  Set rng = Worksheets("シートA").Range("投入範囲")
  Set ws = Worksheets("アンケート項目")
  
  'オプションの数
  ary = Array(10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 20, 20, 20, 20, 20, 20, 20)
  
  For k = 1 To 17
    For j = 1 To ary(k - 1)
      jj = ruiseki + j
      If Me.OLEObjects("OptionButton" & jj).Object.Value = True Then
        rng.Cells(a, k + 1).Value = ws.Cells(j + 2, k + 1)
        ' Exit For
      End If
    Next
    ruiseki = ruiseki + ary(k - 1)
  Next
End Sub

【80022】Re:オプションボタンのコードの簡略化を...
質問  703  - 18/6/29(金) 9:07 -

引用なし
パスワード
   γ さん ご回答ありがとうございます。

今までシートモジュールに書いたことがなく
重ねての質問になってしまい申し訳ないのですが、

vbaの画面で投入シートを右クリックし、コードの表示を押し

そこに
Private Sub CommandButton2_Click()

Dim a As Integer
a = Worksheets("シートA").Range("投入範囲").Rows.Count
Worksheets("シートA").Range("投入範囲").Rows(a).Insert Shift:=xlDown
Worksheets("シートA").Range("投入範囲").Cells(a, 1).Value = TextBox1

Sub test()
  Dim ws As Worksheet
  Dim rng As Range
  Dim j  As Long
  Dim jj As Long
  Dim k  As Long
  Dim ruiseki As Long
  Dim p  As Long
  Dim ary As Variant
  
  Set rng = Worksheets("シートA").Range("投入範囲")
  Set ws = Worksheets("アンケート項目")
  
  'オプションの数
  ary = Array(10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 20, 20, 20, 20, 20, 20, 20)
  
  For k = 1 To 17
    For j = 1 To ary(k - 1)
      jj = ruiseki + j
      If Me.OLEObjects("OptionButton" & jj).Object.Value = True Then
        rng.Cells(a, k + 1).Value = ws.Cells(j + 2, k + 1)
        ' Exit For
      End If
    Next
    ruiseki = ruiseki + ary(k - 1)
  Next
End Sub

を入力する形でよいのでしょうか。

【80023】Re:オプションボタンのコードの簡略化を...
発言  γ  - 18/6/29(金) 18:45 -

引用なし
パスワード
   いいんじゃないですか?
動きませんか?

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

引用なし
パスワード
   ご回答ありがとうございました。
シートの方に書くことは初めてだったため、大変勉強になりました。
頂いたコードを元に改めて考えて、エラーなく動かすことができました。
大変ありがとうございました。

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