プロが教える店舗&オフィスのセキュリティ対策術

入力用シートから蓄積用シートにデータを転記し、同じ入力シートを使って蓄積用シートからデータを呼び出して修正できるようにしたいと考えています(入力ボタン・呼び出しボタンあり)。転記はできたのですが、呼び出しが出来ません。本を見て作業していますが、私は文字で検索したいのです。本では数字(社員コード)で検索しています。
Sub セル範囲に名前を付ける()
Dim myName As String, myrng As Range
myName = "顧客情報"
Set myrng = Worksheets("一覧").Range("B3:T65536")
ThisWorkbook.Names.Add myName, myrng
End Sub
Sub 新規レコード転記2()
Dim motoSht As Worksheet, sakiSht As Worksheet, sakiTbl As Range, sakiRng As Range, i As Long
Dim lastRec As Range, newRec As Range
Dim motohani()
Application.ScreenUpdating = False '画面の更新をストップ
Set motoSht = Sheets("入力")
Set sakiSht = Sheets("一覧")
motohani = Array("D4", "C6", "I6", "C7", "J7", "C8", "C9", "C10", "H10", "C11", "I11", "C12", "E12", "H12", "J12", "C13", "E13", "H13", "J13", "C14", "C15", "C16")
Set sakiRng = sakiSht.Range("B" & Rows.Count).End(xlUp).Offset(1)
For i = 0 To UBound(motohani)
sakiRng.Offset(0, i).Value = motoSht.Range(motohani(i)).Value
motoSht.Range(motohani(i)).MergeArea.ClearContents
Next
MsgBox "入力を完了しました。"
End Sub
ここまでは動作OKでした。問題はこの下です。検索セルに数字を入れると動作するのですが、私は名前(全角カタカナ)で検索したいのです。
Sub 情報検索()
Dim tmpInt As Integer, motoHani(), myRng As Range, i As Integer
'変数の宣言
tmpInt = Sheets("入力").Range("D4").Value
'検索する値を取得
motoHani = Array("C6", "I6", "C7", "J7", "C8", "C9", "C10", "H10", "C11", "I11", "C12", "E12", "H12", "J12", "C13", "E13", "H13", "J13", "C14", "C15", "C16")
'転記する位置を設定

Set myRng = Range("顧客情報").Columns(1).Find(tmpInt, LookAt:=xlWhole)
If myRng Is Nothing Then
MsgBox "該当するレコードはありませんでした"
Exit Sub
End If
For i = 0 To UBound(motoHani)
Range(motoHani(i)).Value = myRng.Offset(0, i + 1)
Next
End Sub
宜しくお願いいたします。

A 回答 (2件)

>Dim tmpInt As String, motoHani(), myRng As Range, i As String


iはi As Integerでいいんですよ。

変数tmpInt には、名前(全角カタカナ)を代入したかったわけですから、
文字列型(tmpInt As String)で宣言しなければいけなかっただけです。

iは配列の数値を扱っているので変更する必要はないです。
    • good
    • 0
この回答へのお礼

ありがとうございました!
検索&転記できました。感動です。
優しくていねいに教えていただいて本当にありがとうございました。

お礼日時:2008/01/23 18:27

>Dim tmpInt As Integer


宣言は整数型ですよね。

文字列なら
Dim tmpInt As String
ではないでしょうか?

この回答への補足

早速の回答ありがとうございました!
宣言が間違っていたのですね。
>Dim tmpInt As String, motoHani(), myRng As Range, i As String
に書き換えましたが、
>For i = 0 To UBound(motohani)
のiでコンパイルエラー(型が一致しません)がでてしまいました。
無知ですみません(涙)
正常に動作するにはあとどこを直せばいいのでしょうか?
For iも調べましたが、ループ文ということしか分かりませんでした。
検索文字が見つかったセルを元にレコードの情報を転記というコードにしたいのですが・・・。
宜しくお願いいたします。

補足日時:2008/01/23 16:08
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!