|
ichinose さん
できました。
本当にありがとうございます。
>ichinose さん
>ありがとうございます。
>なぜか
>Private Sub Worksheet_SelectionChange(ByVal Target As Range)
>のところで止まってしまい
>エラーが出て動きません。自分なりに四苦八苦してるところです。
>わかれば教えて頂きたいです
>宜しくお願いします
>
>>▼ぴ〜ちゃん さん:
>>おはようございます。
>>誤字とコード訂正です。
>>
>>>当該フォームモジュールに
>>>'=========================================================
>>>Private Sub UserForm_Initialize()
>>> Dim func_str As String
>>> func_str = "=if(countif(sheet1!$a$1:a1,a1)>1,"""",a1)"
>>> Call set_combo_item(ComboBox1, func_str)
>>> func_str = "=if(sheet1!a1=""" & ComboBox1.Text & """,sheet1!b1,"""")"
>>> Call set_combo_item(ComboBox2, func_str)
>>>End Sub
>>>'=========================================================
>>>Private Sub ComboBox1_Change()
>>> Dim func_str As String
>>> func_str = "=if(sheet1!a1=""" & ComboBox1.Text & """,sheet1!b1,"""")"
>>> Call set_combo_item(ComboBox2, func_str)
>>>End Sub
>>>'=========================================================
>>>Private Sub CommandButton1_Click()
>> Dim func_str As String
>> Dim rng As Range
>> Dim f_row As Long
>> Dim w_row As Long
>> func_str = "=if(and(sheet1!a1=""" & ComboBox1.Text & """,sheet1!b1=""" & ComboBox2.Text & """),row(),"""")"
>> Set rng = get_func_rng(func_str)
>> f_row = rng.Row
>> w_row = ActiveCell.Row
>> With Worksheets("sheet1")
>> Range(Cells(w_row, 1), Cells(w_row, 4)).Value _
>> = .Range(.Cells(f_row, 1), .Cells(f_row, 4)).Value
>> End With
>>'一括で移行できるんだった
>> rng.Value = ""
>>>End Sub
>>>'=========================================================
>>>Function get_func_rng(func_str As String) As Range
>>>'input: func_str データ抽出のための関数式
>>>'out : get_func_rng 条件に合ったセル範囲
>>> Dim rng As Range
>>> With ThisWorkbook.Worksheets("sheet1")
>>> Set rng = .Range("a1", .Range("a65536").End(xlUp))
>>> End With
>>> rng.Offset(0, 5).Formula = func_str
>>> rng.Offset(0, 5) = rng.Offset(0, 5).Value
>>> Set get_func_rng = rng.Offset(0, 5).SpecialCells(xlCellTypeConstants)
>>' ↑上3行でF列を使っています、変更するなら5を別の数字に
>>>End Function
>>>'=========================================================
>>>Sub set_combo_item(cmb As MSForms.ComboBox, func_str As String)
>>>'input: cmb データをセットするコンボボックス
>>>'input: func_str データ抽出のための関数式
>>> Dim rng As Range
>>> Dim rng2 As Range
>>> Set rng2 = get_func_rng(func_str)
>>> cmb.Clear
>>> For Each rng In rng2
>>> cmb.AddItem rng.Value
>>> Next
>>> cmb.ListIndex = 0
>>> rng2.Value = ""
>>> Set rng = Nothing
>>> Set rng2 = Nothing
>>>End Sub
>>>
>>>
>>>次にシート2のシートモジュールに
>>>'===========================================================
>>>Private Sub Worksheet_Activate()
>>> UserForm1.Show vbModeless
>>>End Sub
>>>'===========================================================
>>>Private Sub Worksheet_Deactivate()
>> Application.ScreenUpdating = False
>>> Unload UserForm1
>> Application.ScreenUpdating = True
>>>End Sub
>>>'===========================================================
>>>Private Sub Worksheet_SelectionChange(ByVal Target As Range)
>>> With UserForm1
>>> If .Visible = False Then .Show vbModeless
>>> End With
>>>End Sub
>>>
>>>尚、シート2では、コマンドボタンクリック時にどこのセルを選択しても
>>>選択されたセルと同じ行のA列からデータが貼り付けられる仕様になっています。
|
|