Excel2000 VBAスピンボタンの修正方法

このQ&Aのポイント
  • Excel2000のVBAを使用してスピンボタンの修正方法について教えてください。
  • 現在、スピンボタンの値が一つずつしか変わらないため、データシートのオートフィルターでフィルターをかけた時に、スピンボタンの値を飛ばすように修正したいです。
  • 現物ファイルを投稿しましたので、No5643で確認していただけると幸いです。
回答を見る
  • ベストアンサー

excel2000 vba スピンボタン

いつもお世話になっています。 下記内容の変更をしたいのですが、自分ではうまくいかず、お力をお貸しください。 よろしくお願いします。 一枚のデータシートと一枚の入力用フォームがあります。 入力フォームのスピンボタンのNOをキーにして、データシートのレコードを一件ずつ切り替えて、表示させるようにしています。 さてデータシートのオートフィルターでフィルターをかけた時に、それにあわせて、スピンボタンのNOを飛ばすようにしたいのですが、どのように修正していいか、わかりません。 現状ですと、下記プロシージャですが、いまのままだと、スピンボタンの値が一つずつしかかわりません。 'スピンボタンの値が変わったらテキストボックスに反映 Private Sub SpinButton1_Change() TextBox1.Value = SpinButton1.Value Call hyouji End Sub Private Sub hyouji() 'データを検索して表示する Dim fRange As Range Dim fRow As Long Set fRange = Sheets("data").Columns(3).Find(what:=TextBox1.Value, _ LookIn:=xlValues, lookat:=xlWhole, SearchOrder:=xlByRows) If (fRange Is Nothing) Then ' MsgBox "Noがみつかりません", vbExclamation Exit Sub End If fRow = fRange.Row '検索されたNoの行位置を求める With Worksheets("data") TextBox2.Value = .Cells(fRow, 4).Value TextBox3.Value = .Cells(fRow, 5).Value TextBox4.Value = .Cells(fRow, 6).Value TextBox5.Value = .Cells(fRow, 7).Value TextBox6.Value = .Cells(fRow, 8).Value End With SpinButton1.SetFocus End Sub ※現物ファイルを下記に投稿(No5643)させていただきました。見ていただけると幸いです。 http://www.kent-web.com/pubc/book/test/uploader/uploader.cgi

  • puyopa
  • お礼率87% (459/525)

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

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.3

こんにちは。#1、#2、cjです。 いや私説明下手ですから無理もないかと。 一応、フォローしておこうかと思いますが、Yahoo!の方で付いている回答は SpinButton1_Changeイベントを一切使わない前提で書かれていますから、 SpinButton1_Change をコメントブロックしてからでないと試せないと思います。 あちらと同じコンセプトで書いたものを私も用意してはあったのです。 今回の目的を果たすだけならば、あちらの方が簡単ですが 今後更に仕様変更していく時に、どうかな?と思うことなどありましたので そのまま#1のように_Changeイベントで提示しました。 でも、一度、試した上で、どちらの方法を採るかちゃんと選んだ方が良いと思います。 今回の目的の部分だけでいえば、私が提示したものの方がメンテナンス が少しだけ難しいと思います。 もしや、あちらのコード試せなくてお困りなのではないかと思ってのレスです。

puyopa
質問者

お礼

ご丁寧に補足頂きありがとうございます。 いろんな方の回答がお聞きしたくて、YAHOOでも投稿させていただきました。 cj_mover様にコメント頂けたとおり、どちらのプロシージャでも、上手く行きました。 私としては、2通りの対処方を学ぶことが出来たので、夢のようにありがたい話です。 cj_mover様のコードですと、現コードに簡単に修正できますが、ご指摘とおり、 やはり第3者、並びに私自身がコードを見たときに、理解するのに苦しいという事も あり、残念ながら、SpinButton1_Change の使用を見送りました。 しかし、せっかく教わったこのプロシージャの知識は、何らかの機会で必ず活かせる と確信しています。 色々とご親切、ご丁寧にコメント頂き、ありがとうございました。

その他の回答 (2)

  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.2

こんにちは。#1、cjです。お礼欄へのレスです。 さっそく説明に入ります。 仮に、SpinButton1.Value が元々 30 だった時にSpinDownボタンを押したとします。 この段階で SpinButton1.Value は 29 に変わり、続いてPrivate Sub SpinButton1_Change()がCallされます。 Private Sub SpinButton1_Change() SpinUp なら1、SpinDown なら-1、増減どちらなのか調べておきます。 SpBtnPrev は前回このプロシージャが呼ばれた時の SpinButton1.Value つまり、この例では30 この段階の SpinButton1.Value は 29 ですから、29-30=-1。つまり SpinDown だと判ります。   nSgn = Sgn(SpinButton1.Value - SpBtnPrev) SpinButton1.Value を 監視用の変数 SpBtnPrev に確保しておきます。 これは専ら nSgn を調べる為に使う変数です。   SpBtnPrev = SpinButton1.Value ここまでが下ごしらえ。 まず、Sheets("data").FilterMode をチェックして With Sheets("data") If .FilterMode Then フィルターが掛かっている時は一旦 i = SpBtnPrev  29 に対応した行 つまり Sheets("data").Rows(33) が非表示であるか調べます。  非表示なら、続けて 28、27、26、とそれぞれ対応した行を調べます。  非表示ではない行にあたった処でLoopを抜けその結果が変数 i になります。 Do While .Rows(i + 4).Hidden i = i + nSgn Loop  29 に対応した行 が非表示でない場合は↑このループは一度も実行されませんので  i = SpBtnPrev のままです。その場合は従来の処理に進みます。  And そして、SpinButton1.Value でいうと 1 から 29 対応した行    つまり Sheets("data").Rows("5:33") がすべて非表示であった場合に変数 i は    タイトル行 Sheets("data").Rows(4) を意味する 0 になり、    SpinButton1.Value = 0 にはできない設定になっているせいでエラーになるので    この場合を条件分岐で除外します If i <> SpBtnPrev And i > 0 Then     ここまでの処理で得られた変数 i の値 つまり "飛ばす"先に当たる数値を     SpinButton1.Value に設定します。     SpinButton1.Value = i     この↑処理によって、SpinButton1 の値が変更されるのに伴い、     Private Sub SpinButton1_Change() がCallされます。     "ここ"のプロシージャの処理は一旦保留になり、"ここ"での処理とは別に     新たに呼び出された(再帰的に呼び出された) Private Sub SpinButton1_Change()     が処理されます。     ~そちら~↑では "SpinButton1.Value に対応した行が非表示ではない前提"で処理が始まるので     まっさきに、従来の処理を済ませます。     再び、"ここ"のプロシージャでの処理に戻って来るのですが、     処理するべきことは先ほどCallしたプロシージャの方で済んでいて     他にやることもないので、プロシージャを抜けて終わりにします。 Exit Sub End If End If End With フィルターが掛かっていなければ、そのまま従来の処理をします。 TextBox1.Value = SpinButton1.Value Call hyouji End Sub /// なお、無限ループについては Private Sub SpinButton1_Change() ' ・ ' ・ ' ・   SpinButton1.Value = i ' ・ ' ・ ' ・ End Sub この↑ような記述に関しては きちんと Exit Sub するように注意した方がいいということです。 説明解りにくいようでしたら、また遠慮なく訊いてください。

puyopa
質問者

お礼

ご無理言いましたが、にもかかわらずご親切丁寧な回答をありがとうございました。 理解するのに、時間がかかりましたが、イメージすることが出来ました。 上級者の方々の深い世界には、頭が下がります。

  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.1

全体を見通す余裕がないので、SpinButton1_Changeから派生する処理しかチェックしていませんが 一応、お望みの"スピンボタンのNOを飛ばす"ことは出来ていると思います。 dataシートで表示されているレコードだけをフォームに表示するという理解であってますよね? dataシートで非表示のレコードをフォームに表示しない為にSpinButton1のValueを"飛ばす"と。 SpinButton1.Valueを監視する変数 SpBtnPrev これの宣言部は必ずUserFormモジュールの先頭に。 nSgn は SpinButton1 が増加したか減少したかを[ 1 | -1 ]で捉えます。 dataシート にフィルターが掛けられていれば、 SpinButton1.Value に対応した行が非表示である限り i は表示されているセルを nSgn 方向に探しに行きます。 当初のSpinButton1.Value に対応した行が非表示であった場合で、"飛ばす"候補となるインデックスが  ゼロでない場合はSpinButton1.Valueを更新します。 SpinButton1.Valueを更新すると、Private Sub SpinButton1_Change()処理の途中で 再帰的に(二重に)Private Sub SpinButton1_Change()が呼び出され、そちらで通常の処理が済まされます。 元のPrivate Sub SpinButton1_Change()に戻ってからは、何も処理せず Exit Sub します。 手を加える時は、無限ループに気を付けてください。 Private Sub UserForm_Initialize()の追加分は nSgn を減少に定義してエラーを回避する為です。 細かな動作確認は出来ていませんので、何か問題があれば、詳しく具体的に伝えて下さい。 余談になりますが、今回ご相談の件でアドバイスを真摯に考えると どうしても、SpinButton 以外のコントロールを使うことを奨めたくなります。 例えば、CommandButtonふたつであれば、増減を監視する必要もない訳で、、、。 将来的に、ご自分で設計する余裕ができた頃に、思い出して検討してもらえたら、と思います。 今回は現状を活かして比較的簡素なものを提案しています。 Private SpBtnPrev As Long ' モジュール先頭で!!宣言 Private Sub SpinButton1_Change() Dim nSgn As Long Dim i As Long nSgn = Sgn(SpinButton1.Value - SpBtnPrev) SpBtnPrev = SpinButton1.Value   With Sheets("data")     If .FilterMode Then       i = SpBtnPrev       Do While .Rows(i + 4).Hidden         i = i + nSgn       Loop       If i <> SpBtnPrev And i > 0 Then         SpinButton1.Value = i         Exit Sub       End If     End If   End With TextBox1.Value = SpinButton1.Value Call hyouji End Sub Private Sub UserForm_Initialize() Dim fRange As Range Dim fRow As Long fRow = Sheets("data").Range("D50000").End(xlUp).Row - 3 SpBtnPrev = 65536 ' ←追加◆ SpinButton1.Value = fRow SpinButton1.SetFocus End Sub

puyopa
質問者

お礼

回答ありがとうございます。試したところ、うまくいきました。 解説もご丁寧にいただけたので、なんとか理解したいと思い、なんども読み返して理解しようとしているのですが、下記部分がどうしても理解出来なくて苦しんでいます。 もしご迷惑でなければ、もう少し詳しく解説いただけないでしょうか。 ご無理ばかり申し上げてすみません。 「当初のSpinButton1.Value に対応した行が非表示であった場合で、"飛ばす"候補となるインデックスが  ゼロでない場合はSpinButton1.Valueを更新します。 SpinButton1.Valueを更新すると、Private Sub SpinButton1_Change()処理の途中で 再帰的に(二重に)Private Sub SpinButton1_Change()が呼び出され、そちらで通常の処理が済まされます。 元のPrivate Sub SpinButton1_Change()に戻ってからは、何も処理せず Exit Sub します。」

関連するQ&A

  • excel2003 VBA のスピンボタンについて

    とあるワークシートにスピンボタンがあり、C2セルの値を変えるようにしています。 スピンボタンのup,downの記述は下記の通りです。 ここで、スピンボタンを長押し(どちらかに押しっぱなし)したときに、ばぁーと数字が ドンドン進んでいくようにしたいのですが、 今は長押ししても、何も変わりません。 どのように修正すればよいでしょうか? Private Sub SpinButton1_SpinDown() Range("C2").Value = Format(DateValue(Range("C2").Value) + 1, "yyyy/mm/dd") Call hyouji Application.ScreenUpdating = True End Sub Private Sub SpinButton1_SpinUp() Range("C2").Value = Format(DateValue(Range("C2").Value) - 1, "yyyy/mm/dd") Call hyouji Application.ScreenUpdating = True End Sub

  • エクセルVBA「スピンボタン」について

    エクセルVBA「スピンボタン」について スピンボタンとテキストボックスを組み合わせて Private Sub SpinButton1_Change() Me.TextBox1.Value = Me.SpinButton1.Value End Sub Private Sub UserForm_Initialize() With Me.SpinButton1 .Min = 1 .Value = .Min End With Me.TextBox1.Value = Me.SpinButton1.Min End Sub というコードを書きました。 「1、2、3、・・・10、11、・・・」という数の増加を「01、02、03・・・10、11・・・」という風にしたいのですがどのようにコーディングすればよいのでしょうか?お願いします。.

  • エクセルVBAでスピンボタン

    ワークシート上にスピンボタンを配置しました。 Valueは、Max100、Min0 で設定しました。 やりたいのは、スピンボタンでValueを減らしていって、0になるまでは何も言わず、Valueが0の状態でさらに減らそうとした場合、メッセージを出したいのです。 Private Sub SpinButton1_Change() If SpinButton1 <= 0 Then MsgBox "マイナスにはできません!", vbCritical End If End Sub としましたら、0になった瞬間にメッセージがでてしまいます。 If SpinButton1 < 0 Then としたら、マイナスにはならないので当たり前ですが何も出ません。 どうしたらいいでしょうか?

  • VBAのコードを見ていただけませんか

    いつも、ここのサイトの方々には大変お世話になっております。ありがとうございます。 さてexcel2000で、dataというフォームにデータを格納し、メインのシートから、読みに行って編集するデータベースを作成しようとしています。 とあるサイトを参考にして、コードを作成しましたが、いくら頑張ってもどうしてもエラーが出てしまいうまくいきません。 どうか、コードのチェック・修正内容の提案等をいただけないでしょうか?よろしくお願いいたします。 (1)自分で登録した「IDが見つかりません」という表示しかでず、登録が出来ない (2)dataシートのB列(2列目)が主キー(IDと呼んでいます) です。(メインのシートとデータを照合させる部分) (3)メインのシートのIDはAL1~AQ1行セルまでを結合したセルに保管しています。 (4)下記コードでCommandButton1ボタンを「登録」と命名し、メインシートで入力したデータをdataシートに変更登録、新規に入力したデータも登録できるようにしたい。 (5)スピンボタンでIDを変化させて、メインフォーム上のデータも変化させたいけど、こちらも同種のエラーが出てしまう。 ■以下コードです。 Private Sub CommandButton1_Click() Dim fRange As Range Dim fRow As Long If (Range("AL1").Value = "") Then 'IDが入力されていない場合 MsgBox "IDを入力して下さい", vbExclamation Exit Sub End If Set fRange = Sheets("data").Columns(2).Find(What:=Range("AL1").Value, _ LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows) If (fRange Is Nothing) Then 'IDが見つからなかった場合 MsgBox "IDが見つかりません", vbExclamation Exit Sub End If fRow = fRange.row 'IDの行位置を求める Sheets("data").Cells(fRow, 1).Value = Range("AZ1:BE1").Value Sheets("data").Cells(fRow, 2).Value = Range("AL1").Value Sheets("data").Cells(fRow, 3).Value = Range("AA1:AO1").Value Sheets("data").Cells(fRow, 4).Value = Range("D5:E5").Value Sheets("data").Cells(fRow, 5).Value = Range("G5").Value Sheets("data").Cells(fRow, 6).Value = Range("I5").Value Sheets("data").Cells(fRow, 7).Value = Range("D5:F7").Value Sheets("data").Cells(fRow, 8).Value = Range("G6:I7").Value Sheets("data").Cells(fRow, 9).Value = Range("E8:E9").Value Sheets("data").Cells(fRow, 10).Value = Range("G8:G9").Value Sheets("data").Cells(fRow, 11).Value = Range("B11:I24").Value Sheets("data").Cells(fRow, 12).Value = Range("B71").Value Sheets("data").Cells(fRow, 13).Value = Range("C71").Value Sheets("data").Cells(fRow, 14).Value = Range("B73").Value Sheets("data").Cells(fRow, 15).Value = Range("C73").Value Sheets("data").Cells(fRow, 16).Value = Range("B75").Value Sheets("data").Cells(fRow, 17).Value = Range("C75").Value   ’・・・・全部でfRow122まであります End Sub

  • ExcelVBA スピンボタンの値について

    参考書を片手に勉強中のエクセルVBA初心者です。 ぜひアドバイスをお願いします…! Excel2000でユーザーフォームを作成し、スピンボタンを使用して数値を指定できるよう、以下のソースを記述しました。 ----------------------------------------- Private Sub UserForm_Initialize() With SpinButton1 .Min = 20 .Max = 150 .Value = 150 .SmallChange = 5 End With End Sub ----------------------------------------- Private Sub SpinButton1_Change()   TextBox1.Value = SpinButton1.Value / 10 End Sub ----------------------------------------- Private Sub TextBox1_Change()   TextBox1.Text = Format(TextBox1.Text, "0.0") End Sub ----------------------------------------- これを、スピンボタンも使用でき、かつ手入力にも対応するように動作させたいと考えています。 具体的にはテキストボックスに6(ランダムな値)と手入力後、 スピンボタンを使用してで6.0の値から増減させたいのですが、 そのようなことは可能でしょうか? 可能であれば、どのようにすればよいのでしょうか? (テキストボックス内の値は、小数点第1位まで表示させ、2.0~15.0の値しか表示できないようにしたいです) どうかご回答よろしくお願いいたします。

  • excel VBA 2つのプロシージャを1つに

    いつもお世話になっております。 初心者ですが、苦しみながらもexcelでデータベースを作成しております。 さて Worksheet_Change のイベントが2つあり、これを一つにまとめようとしているのですが、がんばっているんですが、自分ではどうしてもうまくいかない為、投稿させていただきました。 コードは下記2つです。 また、どういったものを作ろうとしているのか説明不足でご指摘を頂戴することもありますので、試作段階のファイルですが、アップローダーにあげさせていただきました。確認頂ければ幸いです。 ■アプロダ 投稿No 4514 http://www.kent-web.com/pubc/book/test/uploader/uploader.cgi ■作ろうとしているデータベースの概要 inputシート・・・データを直接入力して、また、データや写真を閲覧をするシート dataシート・・・データを格納するシート、オートフィルタを使って、曖昧検索フィルタもここでかけたりします。 どうか良いお知恵を拝借させていただきたくよろしくお願いします。 '一つ目のプロシージャ(Noセルに数字が入ると、そのNoのデータを自動的にdataシートまで読みにいって表示させます) Private Sub WorkSheet_Change(ByVal Target As Range) 'No入力してデータ反映 Dim fRange As Range Dim fRow As Long If Target.row <> 4 Then Exit Sub If Target.Column <> 3 Then Exit Sub Set fRange = Sheets("data").Columns(1).Find(What:=Range("C4").Value, _ LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows) If (fRange Is Nothing) Then '見つからなかった? MsgBox "入力された顧客コードが存在しません。", vbExclamation Exit Sub End If fRow = fRange.row '検索された顧客DCの行位置を求める Range("F4").Value = Sheets("data").Cells(fRow, 2).Value Range("C5").Value = Sheets("data").Cells(fRow, 3).Value Range("C6").Value = Sheets("data").Cells(fRow, 4).Value Range("C7").Value = Sheets("data").Cells(fRow, 5).Value Range("F5").Value = Sheets("data").Cells(fRow, 6).Value End Sub '二つ目のプロシージャ(写真を表示させるためのコードです) Private Sub Worksheet_Change(ByVal Target As Range) Select Case Target.Address Case "$k$4" myLoadPicture "board_Image", Target.Text, Range("I5") Case "$K$17" myLoadPicture "map_Image", Target.Text, Range("I18") Case Else Exit Sub End Select End Sub

  • Excel VBA スピンボタンの使い方

    Excel VBA 初心者です。 ActiveXでシート上にTextBox1とSpinButton1を配置した場合で、 SpinButton1.Valueの値をコードで設定したとき、それまでの値と異なっていてもChangeイベントを発生させない方法はあるでしょうか。 例えば以下のようなコードです。 ---------------------- Private Sub 初期設定() 'ここでSpinButton1.Enabled = False を入れてもグレーアウトするのみでChangeイベントは発生する Dim N As Long N = 20 SpinButton1.Value = N '↑TextBox1.Valueが<>Nの時でも 'ここでChangeイベントに飛ばさない方法はあるでしょうか? End Sub '↓通常はこの動作 Private Sub SpinButton1_Change() TextBox1.Value = SpinButton1.Value 'さらにこのあと数値増減による処理有り End Sub ---------------------- 「SpinButton1.Enabled = False」ではグレーアウトはしますがコードからの設定ではChangeイベントは発生しました。 宜しくお願い致します。

  • VBA で2つのプロシージャを一つにまとめたい

    いつもここにはお世話になっており、ありがとうございます。 さて、タイトルにもありました通り、下記2つのプロシージャでコマンドボタンを設定して、実行しておりますが、これを一つのプロシージャ(ボタン)にまとめたく、ご指導お願いいたします。 ○作ろうとしているVBAの概要 1)EXCELのデータベースで、一枚目の「inputシート」に入力し、2枚目の「dataシート」でデータをどんどん格納していきます。 2)データは、「顧客CDボタン」で管理しており、これをキーとしています。 3)「顧客CD」は[inputシート」ではC4セル、「dataシート」ではA列にで管理しています。 3)データは新規にデータを入力したときの登録ボタン(一つ目のプロシージャ)、既存のデータを編集して、上書きするときの、変更登録ボタン(二つ目のプロシージャ)があります。 ○相談したい内容 「登録ボタン」と「変更」ボタンを一つにまとめて、ひとつのボタンとして、新規にデータを登録するときも、変更したデータを登録するときも、同じボタンで行えるようにしたい。 '■1つ目のプロシージャー Private Sub CommandButton1_Click() '登録ボタン Dim row As Integer row = WorksheetFunction.CountA(Sheets("data").Columns(1)) Sheets("data").Cells(row, 2).Value = Range("C5").Value row = WorksheetFunction.CountA(Sheets("data").Columns(1)) Sheets("data").Cells(row, 3).Value = Range("C6").Value row = WorksheetFunction.CountA(Sheets("data").Columns(1)) Sheets("data").Cells(row, 4).Value = Range("C7").Value row = WorksheetFunction.CountA(Sheets("data").Columns(1)) Sheets("data").Cells(row, 5).Value = Range("F5").Value ActiveWorkbook.Save End Sub '■2つ目のプロシージャー Private Sub CommandButton3_Click() '変更ボタン Dim fRange As Range Dim fRow As Long If (Range("C4").Value = "") Then '顧客CDが入力されていない? MsgBox "顧客コードを入力してください。", vbExclamation Exit Sub End If Set fRange = Sheets("data").Columns(1).Find(What:=Range("C4").Value, _ LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows) If (fRange Is Nothing) Then '見つからなかった? MsgBox "入力された顧客コードが存在しません。", vbExclamation Exit Sub End If fRow = fRange.row '検索された顧客DCの行位置を求める Sheets("data").Cells(fRow, 2).Value = Range("C5").Value Sheets("data").Cells(fRow, 2).Value = Range("C5").Value Sheets("data").Cells(fRow, 2).Value = Range("C5").Value Sheets("data").Cells(fRow, 3).Value = Range("F5").Value

  • excel VBA スピンボタンの値をジャンプ

    いつもお世話になります。 コードで、スピンボタンの値をC4セルに入れて変化させています。 下記やりたいことに対して、コードにどのような編集を加えればいいかアドバイスをお願いいたします。 ◆やりたいこと C4セルに任意の数字を手入力⇒enterボタンを押した後に、スピンボタンの値をその数字がら追従して変化させたい。 たとえば、スピンボタンで11⇒12⇒13と変化させているところで、C4セルに77と入力した後にスピンボタンを押すと、78⇒79⇒80と変化できるようにさせたいです。 '◆スピンボタンコード Private Sub SpinButton1_Change() Range("C4").Value = SpinButton1.Value SpinButton1.Min = 1 End Sub

  • Excel VBAデータ登録のスピードアップしたい

    下記のようなコードがあります。 ■input データ閲覧・登録・編集シート ■data データを格納するシート inputシートとdataシートでdataの受け渡しを行っているのですが、データレコードを切り替えるだけで20秒ちょっとかかるため、作業効率が悪いです。 この時間を1~2秒ぐらいまで減らすには、どのように修正すれば、いいでしょうか?どうかアドバイスをお願いいたします。 Private Sub datatouroku() ’データを登録する Dim touroku As Integer Dim fRange As Range Set fRange = Sheets("data").Columns(1).Find(What:=Range("BC1").Value, _ LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows) touroku = fRange.Row '検索されたNoの行位置を求める Sheets("data").Cells(touroku, 1).Value = Range("BC1:BE1").Value Sheets("data").Cells(touroku, 2).Value = Range("AX1").Value Sheets("data").Cells(touroku, 3).Value = Range("I4").Value   '・・・上記のデータが全部で256件あります。 End Sub ------------------------------------------ Private Sub hyouji() 'データを表示させる Dim fRange As Range Dim kensaku As Long Set fRange = Sheets("data").Columns(1).Find(What:=Range("BC1").Value, _ LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows)    If (fRange Is Nothing) Then '見つからなかった?    MsgBox "入力された顧客コードが存在しません。", vbExclamation    Exit Sub    End If    kensaku = fRange.Row '検索された顧客DCの行位置を求める     Range("BC1:BE1").Value = Sheets("data").Cells(kensaku, 1).Value     Range("AX1").Value = Sheets("data").Cells(kensaku, 2).Value    Range("I4").Value = Sheets("data").Cells(kensaku, 3).Value     '・・・上記のデータが全部で256件あります。 Set trg = Sheets("data").Cells(kensaku, 1) End Sub

専門家に質問してみよう