Excel VBA質問箱 IV

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

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


25686 / 76735 ←次へ | 前へ→

【56387】Re:シートのA列セル選択右クリックでTextBoxとComboBoxへのデータ移動
発言  kanabun  - 08/6/16(月) 10:19 -

引用なし
パスワード
   おじさん46 さん、Abebobo さん、こんにちは。
おじゃまします。

> 7つあるTextBoxの内、2つをComboBoxへ変更したい
↑この文章の解釈ですが、
たとえば、
   TextBox2 を → ComboBox1 に、
   TextBox3 を → ComboBox2 に、
変更ということだとすると、
Select Case 文で分岐すればよいと思います。
(まったくの解釈違いなら、以下は無視してください)

----------------------------------------------
まず、UserFormのほうの
> Private Sub TextBox7_AfterUpdate()
> '行番号入力でセルデータ収集
ですが、変数の宣言を以下のようにして、
 Dim 行番号 As Long
 Dim Target As Range
 Dim i  As Long
 Dim myValue As String
 
番号i によるテキストボックスまたはコンボボックスへのセル値の転記
は以下のようにしてみてはどうでしょう?

 行番号 = Val(Me.TextBox7.Text)
 'Rangeオブジェクト変数 Target に指定セルをセットする
 Set Target = ActiveSheet.Cells(行番号, 1)
 For i = 1 To 6
   myValue = Target.Offset(, i).Value
   Select Case i
    Case 2
      Me.ComboBox1.Text = myValue
    Case 3
      Me.ComboBox2.Text = myValue
    Case Else
      Me.Controls("textbox" & i).Text = myValue
   End Select
 Next i
 Target.Select

End Sub

もし、こういうことでよかったら、
シートのほうのA列 右クリック時の処理も同様に書き換えます。
----------------------------------------------
'シートの該当行のA列セル選択右クリックで
' UserForm1上の各TextBoxにセルのデータを移動(転記)するコード

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
'A列セル選択右クリックでセルデータ収集後フォームを開く
 Dim r As Range
 Dim i As Long
 Dim myValue As String
 
 If Target.Column <> 1 Then Exit Sub
 If Target.Row = 1 Then Exit Sub
 
 Cancel = True
 Set Target = Target.Item(1)
 With UserForm1
   .Show 0
   .Caption = Target.Text
   For i = 1 To 6
     myValue = Target.Offset(, i).Value
     Select Case i
      Case 2
        .ComboBox1.Text = myValue
      Case 3
        .ComboBox2.Text = myValue
      Case Else
        .Controls("textbox" & i).Text = myValue
     End Select
   Next i
 End With
End Sub

----------------------------------------------
よくみると、UserForm1 のほうでの転記処理と、
シートの右クリック時の転記処理部分は同じ処理をしていることが
分かります。
そういうときは、(つぎにまた コントロールなどに変更が
あったとき、2か所を変更しなければならないので)どこか
一箇所に書いておいて、それをUserForm1の
TextBox7_AfterUpdateと、シートの右クリックから呼び出せる
ように、まとめたほうがあとあとのメンテナンスが楽というこ
とが分かってきますが、、それはま、次のステップということ
で。。。(^^
0 hits

【56363】シートのA列セル選択右クリックでTextBoxとComboBoxへのデータ移動 おじさん46 08/6/15(日) 12:54 質問
【56385】Re:シートのA列セル選択右クリックでTextB... Abebobo 08/6/16(月) 9:38 発言
【56387】Re:シートのA列セル選択右クリックでTextB... kanabun 08/6/16(月) 10:19 発言
【56416】Re:シートのA列セル選択右クリックでTextB... おじさん46 08/6/16(月) 20:49 発言
【56420】Re:シートのA列セル選択右クリックでTextB... kanabun 08/6/16(月) 22:49 発言
【56424】Re:シートのA列セル選択右クリックでTextB... Abebobo 08/6/17(火) 9:08 お礼
【56430】Re:シートのA列セル選択右クリックでTextB... kanabun 08/6/17(火) 10:36 発言
【56431】Re:シートのA列セル選択右クリックでTextB... Abebobo 08/6/17(火) 10:44 お礼
【56454】Re:シートのA列セル選択右クリックでTextB... おじさん46 08/6/17(火) 20:10 発言
【56672】Re:シートのA列セル選択右クリックでTextB... おじさん46 08/6/29(日) 18:29 お礼
【56396】Re:シートのA列セル選択右クリックでTextB... Abebobo 08/6/16(月) 12:14 発言

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