エクセルの質問です。

ダイアログを出して、A列にある選択肢を質問文としてプルダウン表示し、B列にある解答の中からそれを選んでもらい、その結果(例えば、A1→B18などの表現の仕方で)C列にそれを再び格納するVBAのスクリプトを教えてください。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/12/14 23:54:09
  • 終了:2007/12/16 00:59:17

回答(1件)

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692007/12/15 10:26:08

ポイント60pt

回答もプルダウンから選択する方法を以下に。

(他にオポションボタンやリストボックスで選択する方法もあります。直接シート上で選択するにはユーザーフォームのモーダル属性を変えればできます)


まずユーザーフォームを追加します。方法は以下の最初のほう

http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_080.html


適当にコンボボックスを2つ追加します。名前はそのままにしてください。


ユーザーフォームのコードを

Const maxSitumon As Integer = 7 '質問の数
Const maxSentaku As Integer = 5 '選択肢の数

Private Sub ComboBox1_Change()
    Call ckb_click
End Sub

Private Sub ComboBox2_Change()
    Call ckb_click
End Sub

Private Sub UserForm_Initialize()
    Dim i As Integer
    
    ComboBox1.Style = fmStyleDropDownList
    ComboBox2.Style = fmStyleDropDownList
    
    ComboBox1.Clear
    For i = 1 To maxSitumon
        ComboBox1.AddItem Cells(i, 1).Value
    Next i
    
    ComboBox2.Clear
    For i = 1 To maxSentaku
        ComboBox2.AddItem Cells(i, 2).Value
    Next i
End Sub

Private Sub ckb_click()
    Dim c1, c2 As Integer
    
    c1 = ComboBox1.ListIndex + 1
    c2 = ComboBox2.ListIndex + 1
    If c1 = 0 Then Exit Sub
    If c2 = 0 Then Exit Sub
    
    Cells(c1, 3).Value = "A" & c1 & "→B" & c2    
End Sub

後は適当に自動保存した内容を以下に変えショートカットで呼び出したり、シートにボタンをつけて呼び出したりすればいいです。

Sub Macro1()
    UserForm1.Show
End Sub
id:clinejp

実際のコードをありがとうございます。

2007/12/16 00:59:02

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません