- ベストアンサー
エクセルVBAを教えて下さい
エクセルの表で -AB C D E F 1年月--1801 2------ 3------ 4------ (-)は空欄でセルE1=18、F1=1とします。 コントロールボックスをつかって Private Sub Command登録_Click() Dim d1 As Long Dim d2 As Long Dim ret As Variant Dim FindValue As String Dim TotalAddress As String If Range("E1").Value = "" Or Range("F1").Value = "" Then MsgBox "該当する場所にデータが入っていません。", vbCritical Exit Sub End If d1 = Range("A65536").End(xlUp).Offset(1).Row d2 = Range("B65536").End(xlUp).Offset(1).Row FindValue = """" & Range("E1").Value & Range("F1").Value & """" TotalAddress = Range("A1").Resize(d1).Address & "&" & Range("B1").Resize(d1).Address ret = Evaluate("MATCH(" & FindValue & "," & TotalAddress & ",0)") If IsError(ret) Then Cells(d1, 1) = Range("E1").Value Cells(d2, 2) = Range("F1").Value Else MsgBox "既に同じ組み合せがあります。", vbInformation End If End Sub というものを作ったのですが、E1=18、F1=1及びコマンドボタンを別シートに作成し、上記の表への登録をできるようにしたいのですが、なにかいい方法はありませんか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。Wendy02です。 これは、VBAですが、概ねは関数の問題ですね。(^^; 私の作った独特なコードですから、他の人は読めないかもしれませんね。 替えたところを良く比較してみてください。 Private Sub Command登録_Click() Dim d1 As Long Dim d2 As Long Dim ret As Variant Dim FindValue As String Dim TotalAddress As String Dim Sh As Worksheet 'シート登録 Set Sh = Worksheets("Sheet2") If Range("E1").Value = "" Or Range("F1").Value = "" Then MsgBox "該当する場所にデータが入っていません。", vbCritical Exit Sub End If d1 = Sh.Range("A65536").End(xlUp).Offset(1).Row d2 = Sh.Range("B65536").End(xlUp).Offset(1).Row FindValue = """" & Range("E1").Value & Range("F1").Value & """" TotalAddress = Sh.Name & "!" & Range("A1").Resize(d1).Address & "&" _ & Sh.Name & "!" & Range("B1").Resize(d1).Address ret = Evaluate("MATCH(" & FindValue & "," & TotalAddress & ",0)") If IsError(ret) Then Sh.Cells(d1, 1) = Range("E1").Value Sh.Cells(d2, 2) = Range("F1").Value Else MsgBox "既に同じ組み合せがあります。", vbInformation End If Set Sh = Nothing End Sub
その他の回答 (1)
- yodakii
- ベストアンサー率18% (14/74)
シートコレクションを使えば実現できます。 コマンドボタンを配置シートを Sheet1 データを配置するシートを Sheet2 として、 Sheets("Sheet1").Select 処理する内容 Sheets("Sheet2").Select 処理する内容 などとするか、シート.レンジ として、直接データを配置するシートのセルを指定することで実現できます。