入力用シートから蓄積用シートにデータを転記し、同じ入力シートを使って蓄積用シートからデータを呼び出して修正できるようにしたいと考えています(入力ボタン・呼び出しボタンあり)。転記はできたのですが、呼び出しが出来ません。本を見て作業していますが、私は文字で検索したいのです。本では数字(社員コード)で検索しています。
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
宜しくお願いいたします。
No.2ベストアンサー
- 回答日時:
>Dim tmpInt As String, motoHani(), myRng As Range, i As String
iはi As Integerでいいんですよ。
変数tmpInt には、名前(全角カタカナ)を代入したかったわけですから、
文字列型(tmpInt As String)で宣言しなければいけなかっただけです。
iは配列の数値を扱っているので変更する必要はないです。
No.1
- 回答日時:
>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も調べましたが、ループ文ということしか分かりませんでした。
検索文字が見つかったセルを元にレコードの情報を転記というコードにしたいのですが・・・。
宜しくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Aというブックの1というシート...
-
Excelの「0」だけ非表示、小数...
-
エクセルで条件に一致したセル...
-
Rangeメソッドは失敗しました。...
-
日付が未入力の際はゼロか、空...
-
別シートのセルを絶対参照にする
-
複数シートの同じセル内容を1シ...
-
エクセルで1月0日と表示される!!
-
ExcelでTODAY関数を更新させな...
-
シートAで横に並んだ項目→シー...
-
シート参照で変数を使いたい(EX...
-
エクセルのセルに、マウスで選...
-
エクセルで、勤務表から 日付...
-
Excelシートの保護時にデータの...
-
エクセルのシート間で連続した...
-
(Excel)あるセルに文字を入力...
-
VBAで、セル(Range)のオブジ...
-
エクセルVBA テキストボックス
-
エクセルのルビがついたセルを...
-
エクセルの参照先が固定されて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの「0」だけ非表示、小数...
-
日付が未入力の際はゼロか、空...
-
エクセルで条件に一致したセル...
-
エクセルで1月0日と表示される!!
-
(Excel)あるセルに文字を入力...
-
別シートのセルを絶対参照にする
-
Rangeメソッドは失敗しました。...
-
Excelシートの保護時にデータの...
-
複数シートの同じセル内容を1シ...
-
エクセルで、加筆修正したセル...
-
シート参照で変数を使いたい(EX...
-
エクセルで複写のように自動入...
-
Excelで複数シートの選択セルを...
-
INDIRECTを使わず excelで複数...
-
ExcelでTODAY関数を更新させな...
-
式の説明をお願いします。
-
excelでハイパーリンクになって...
-
エクセルのルビがついたセルを...
-
Excelでスクロールすると文字が...
-
エクセル ハイパーリンクで画像...
おすすめ情報