|
▼lucky-cat-konkon さん:
今晩は。
イロハBOOKの、一番シートから、3番シートまでを検索し、ホヘトBOOKの、"記入用"というシートに記入するマクロを書きました。注意事項がいくつか有ります。
1.標準モジュールをホヘトBOOKに挿入し、下記コードを記入する。
2.ホヘトBOOKのシートに、"記入用"と名前を付け、A6から、横に、項目名を書いていく。
3.各BOOKの名称、シートの名称は、下記コードに出てくるのと完全に一致させる。(半角、全角に注意!)
4.項目名も、一致させる。出来ない場合は、イロハBOOKの方の項目名の上に、一列挿入して一致した項目名を書く。(たとえば、「氏名」の上のセルに、「つくった人」と書けば、つくった人でその行を特定できる。)
5.記入用シートのつくった人の欄(「つくった人」と書いてあるセルの下のセル)に名称を記入し、そのセルを選択した状態でマクロを動かす。(私は、ボタンのような丸い図形をシートに貼り付け、マクロを登録して、クリックする方法をいつもやっています。)
*私は、WINDOWS2000と、EXCEL97で動作させて、順調に動かせました。私もプロではないので、lucky-cat-konkon さんのシステムでうまくいくかどうかは、やってみなければわかりません。うまくいかない場合は、また連絡してください。
Option Explicit
Dim vv() As Variant
Dim gensi As Object, yousi As Object
Dim s As String
Dim i As Integer, j As Integer, ir As Integer, ic As Integer
Dim r As Range
Dim ws As Worksheet
Sub つくった人()
Set yousi = ThisWorkbook.Worksheets("記入用")
s = ActiveCell.Value
i = MsgBox(s & "さんを検索しますか?", vbYesNo)
If i <> vbYes Then Exit Sub
i = 0
Do While Range("a6").Offset(, i).Value <> ""
i = i + 1
ReDim Preserve vv(2, i)
vv(1, i) = Range("a6").Offset(, i - 1).Value
Loop
Set gensi = Workbooks("イロハBOOK.xls")
gensi.Activate
シート
記入
End Sub
Private Sub シート()
For Each ws In gensi.Worksheets
If ws.Name = "一番シート" Or ws.Name = "二番シート" Or ws.Name = "三番シート" Then
ws.Activate
検索
End If
Next ws
End Sub
Private Sub 検索()
For Each r In ws.UsedRange
If r.Value = s Then
ir = r.Row
Exit For
End If
Next r
For j = 1 To i
For Each r In ws.UsedRange
If r.Value = vv(1, j) Then
ic = r.Column
vv(2, j) = Cells(ir, ic).Value
Exit For
MsgBox vv(2, j)
End If
Next r
Next j
End Sub
Private Sub 記入()
yousi.Activate
For j = 1 To i
Cells(ActiveCell.Row, 1).Offset(, j - 1).Value = vv(2, j)
Next j
End Sub
|
|