• ベストアンサー

エクセル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及びコマンドボタンを別シートに作成し、上記の表への登録をできるようにしたいのですが、なにかいい方法はありませんか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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)
回答No.1

シートコレクションを使えば実現できます。 コマンドボタンを配置シートを Sheet1 データを配置するシートを Sheet2 として、 Sheets("Sheet1").Select  処理する内容 Sheets("Sheet2").Select  処理する内容 などとするか、シート.レンジ として、直接データを配置するシートのセルを指定することで実現できます。