Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4893 / 13644 ツリー ←次へ | 前へ→

【53707】ユーザーフォームからシートのデータを検索して表示 みさ 08/2/4(月) 11:21 質問[未読]
【53715】Re:ユーザーフォームからシートのデータを... Jaka 08/2/4(月) 16:23 発言[未読]
【53717】Re:ユーザーフォームからシートのデータを... みさ 08/2/4(月) 16:58 質問[未読]
【53720】Re:ユーザーフォームからシートのデータを... neptune 08/2/4(月) 17:10 発言[未読]
【53721】Re:ユーザーフォームからシートのデータを... みさ 08/2/4(月) 17:22 質問[未読]
【53722】Re:ユーザーフォームからシートのデータを... neptune 08/2/4(月) 18:53 回答[未読]
【53733】Re:ユーザーフォームからシートのデータを... みさ 08/2/5(火) 12:19 質問[未読]
【53735】Re:ユーザーフォームからシートのデータを... さかな 08/2/5(火) 12:29 発言[未読]
【53737】Re:ユーザーフォームからシートのデータを... みさ 08/2/5(火) 13:06 発言[未読]
【53727】Re:ユーザーフォームからシートのデータを... Jaka 08/2/5(火) 10:33 発言[未読]
【53734】Re:ユーザーフォームからシートのデータを... みさ 08/2/5(火) 12:21 発言[未読]
【53736】Re:ユーザーフォームからシートのデータを... Jaka 08/2/5(火) 13:00 発言[未読]
【53738】Re:ユーザーフォームからシートのデータを... みさ 08/2/5(火) 13:22 お礼[未読]
【53741】Re:ユーザーフォームからシートのデータを... VBWASURETA 08/2/5(火) 14:34 発言[未読]
【53743】Re:ユーザーフォームからシートのデータを... neptune 08/2/5(火) 16:04 発言[未読]
【53745】Re:ユーザーフォームからシートのデータを... VBWASURETA 08/2/5(火) 16:36 発言[未読]
【53750】Re:ユーザーフォームからシートのデータを... みさ 08/2/5(火) 18:00 お礼[未読]
【53753】Re:ユーザーフォームからシートのデータを... VBWASURETA 08/2/5(火) 20:27 発言[未読]
【53766】Re:ユーザーフォームからシートのデータを... みさ 08/2/6(水) 9:44 お礼[未読]

【53707】ユーザーフォームからシートのデータを検...
質問  みさ  - 08/2/4(月) 11:21 -

引用なし
パスワード
   初めて質問します。
初心者ですので、宜しくお願い致します。
本を見て、ユーザーフォームを使用したカード型データベースを作成しました。
ユーザーフォーム上で入力・編集が出来るようになっています。
そこに、検索機能を追加し、検索したデータをユーザーフォームに表示
させたいと思うのですが、どのようにすれば良いかわかりません。

教えてください。

【53715】Re:ユーザーフォームからシートのデータ...
発言  Jaka  - 08/2/4(月) 16:23 -

引用なし
パスワード
   カード型データベースですか、ファイルメーカーみたいですね。
さわったことないけど...。
クラリスワークスがカード型だったので多分。

で、検索ですが、
マクロ記録で基本となるコードは出来ると思います。
まずはマクロ記録をしてみてください。

注意事項として、
Find メソッドの引数は省略しないこと、ですが、エクセルバージョンによってコンパイルエラーになるものもあるので、適度に省略しないぐらい?
また、日本語検索時は、ルビ?で検索しているような気がします。
未だによく解らない。
もう少し具体的に質問された方が良いと思います。

検索機能だけだったら、Find メソッドを使用されたらいいとしか....。

【53717】Re:ユーザーフォームからシートのデータ...
質問  みさ  - 08/2/4(月) 16:58 -

引用なし
パスワード
   返信ありがとうございます。
質問の内容が足りなくてごめんなさい。
下記の内容が質問です。

エクセルShee1の4行目からデータが入力されるようになっていて
ユーザーフォーム(ボタンで表示されます)から新規登録・編集などができるようになっています。
今回質問させていただきたいのは、
このユーザーフォームに新たに【検索】ボタンを追加作成したいのです。

個人データなので フリカナ(Sheet1のB列)で検索をし、検索した結果をフォームに表示させたいのです。

下記のように、検索用のコードを考えてみたのですがエラーになってしまい、うまく作動しません。

Private Sub cmd検索_Click()

Dim myF As String

Dim myRange As Range

Dim Rw As Integer

myF = Application.InputBox( _

"フリカナを入力してください")

If myF = "false" Then

Exit Sub


End If


Set myRange = Range("b:b").Find(myF)

If myRange Is Nothing Then

MsgBox "該当するデータはありません"

Else

myF = Cells(Rw, "B").Value

Rw = scr切り替え.Value 

Call スクロールバー更新

End If

End Sub


どうにかしたいので是非アドバイスをください。宜しくお願い致します。


▼Jaka さん:
>カード型データベースですか、ファイルメーカーみたいですね。
>さわったことないけど...。
>クラリスワークスがカード型だったので多分。
>
>で、検索ですが、
>マクロ記録で基本となるコードは出来ると思います。
>まずはマクロ記録をしてみてください。
>
>注意事項として、
>Find メソッドの引数は省略しないこと、ですが、エクセルバージョンによってコンパイルエラーになるものもあるので、適度に省略しないぐらい?
>また、日本語検索時は、ルビ?で検索しているような気がします。
>未だによく解らない。
>もう少し具体的に質問された方が良いと思います。
>
>検索機能だけだったら、Find メソッドを使用されたらいいとしか....。

【53720】Re:ユーザーフォームからシートのデータ...
発言  neptune  - 08/2/4(月) 17:10 -

引用なし
パスワード
   ▼みさ さん:
こんにちは

>Set myRange = Range("b:b").Find(myF)
Set myRange = worksheets("Sheet1").Range("b:b").Find(myF)
とワークシートからRangeを指定してやる事は大事です。

>myF = Cells(Rw, "B").Value
も同様。

まずはこの辺を訂正してみては如何?

【53721】Re:ユーザーフォームからシートのデータ...
質問  みさ  - 08/2/4(月) 17:22 -

引用なし
パスワード
   返信ありがとうございます。
早速直して、試してみると、

実行時エラーが出てしまいます。

内容は「アプリケーション定義またはオブジェクト定義のエラーです」と出て

>myF =sheets("Sheet1").Cells(Rw, "B").Value

の部分が黄色く表示されます。
やはり、上記の部分に問題があるんですよね?

さっぱりわかりません。
すみませんが、再度アドバイスをお願い致します。

▼neptune さん:
>▼みさ さん:
>こんにちは
>
>>Set myRange = Range("b:b").Find(myF)
>Set myRange = worksheets("Sheet1").Range("b:b").Find(myF)
>とワークシートからRangeを指定してやる事は大事です。
>
>>myF = Cells(Rw, "B").Value
>も同様。
>
>まずはこの辺を訂正してみては如何?

【53722】Re:ユーザーフォームからシートのデータ...
回答  neptune  - 08/2/4(月) 18:53 -

引用なし
パスワード
   ▼みさ さん:
こんにちは


>内容は「アプリケーション定義またはオブジェクト定義のエラーです」と出て
>
>>myF =sheets("Sheet1").Cells(Rw, "B").Value
>
>の部分が黄色く表示されます。
これは書式はあっているが、その利用の仕方が悪いのでは?
Sheet1、Rw は大丈夫?

【53727】Re:ユーザーフォームからシートのデータ...
発言  Jaka  - 08/2/5(火) 10:33 -

引用なし
パスワード
   ちょっと気になったこと。

myF = sheets("Sheet1").Cells(Rw, "B").Value

   ↓下の様に大文字になりませんか?

myF = Sheets("Sheet1").Cells(Rw, "B").Value

Dim sheets As xxxxx
とかやってませんか?

【53733】Re:ユーザーフォームからシートのデータ...
質問  みさ  - 08/2/5(火) 12:19 -

引用なし
パスワード
   ▼neptune さん:
こんにちは。
回答ありがとうございます。

>Sheet1、Rw は大丈夫?

とは どういう意味ですか?
sheet1 は単にデータベースがあるシートなので
大丈夫だと思います。
RwはDimで変数を宣言してるので・・・(よくわかってませんが)

超初心者なので、やはりムリなのでしょうか。。。

【53734】Re:ユーザーフォームからシートのデータ...
発言  みさ  - 08/2/5(火) 12:21 -

引用なし
パスワード
   ▼Jaka さん:

下の文は 大文字になってました。
すみません。

>myF = sheets("Sheet1").Cells(Rw, "B").Value
>
>   ↓下の様に大文字になりませんか?
>
>myF = Sheets("Sheet1").Cells(Rw, "B").Value
>

下はやってません。

>Dim sheets As xxxxx
>とかやってませんか?

・・・何が駄目なのでしょうか。。。

【53735】Re:ユーザーフォームからシートのデータ...
発言  さかな  - 08/2/5(火) 12:29 -

引用なし
パスワード
   横から失礼いたします。
>myF = sheets("Sheet1").Cells(Rw, "B").Value
                        ↑
ここじゃないですか?
Cellsでセルを指定する場合、行と列を数字で指定するはずなのに、「文字列」が入っているので、エラーになるんじゃないかと思いますが。

【53736】Re:ユーザーフォームからシートのデータ...
発言  Jaka  - 08/2/5(火) 13:00 -

引用なし
パスワード
   >Sheet1、Rw は大丈夫?
とは、変数Rwの中にちゃんと数字が入っているのでしょうか?
の意味だと思います。
ステップ実行して確認しても良いけど、
メッセージボックスを使っても良いです。

Msgbox Rw
>myF = Sheets("Sheet1").Cells(Rw, "B").Value

要するに
Msgbox Cells(0,"A").value
と同じではないかと思います。

それと、変数Rwは、行を扱うので
Integer より Long の方が適していると思います。

【53737】Re:ユーザーフォームからシートのデータ...
発言  みさ  - 08/2/5(火) 13:06 -

引用なし
パスワード
   ▼さかな さん:
ありがとうございます。
直してみましたが、やはりエラーが出てしまいます。。。

【53738】Re:ユーザーフォームからシートのデータ...
お礼  みさ  - 08/2/5(火) 13:22 -

引用なし
パスワード
   出来ましたッ!!!!!!!!!
すごいです!
皆様のお力添えのお陰です。
本当に本当に ありがとうございました。

また質問させていただきますので
宜しくお願い致します。

【53741】Re:ユーザーフォームからシートのデータ...
発言  VBWASURETA  - 08/2/5(火) 14:34 -

引用なし
パスワード
   こんにちは。

一応何が原因かは書いておいた方が良いですよ。

多分ですが、

Dim RW As Integer '環境により変わるかも知れませんが初期値は0です。

'本来変数は使う前にありえる数値に初期化します。
RW = 1 '1行目から等

Msgbox Cells(RW, "B").Value '初期値が0行だと有り得ない行でエラー

ということではないですか?

【53743】Re:ユーザーフォームからシートのデータ...
発言  neptune  - 08/2/5(火) 16:04 -

引用なし
パスワード
   ▼みさ さん:
皆さん、こんにちは。

もう見ないかもしれませんが、やはりデバッグの方法は知っておかなければ
なりませんね。デバッグの方法を解説しているサイトを探したら
ものすごくわかりやすく書いてくれているページを発見しましたので
下記に書いておきます。
members.jcom.home.ne.jp/rex-uchida/vba110.htm

次に質問する前に目を通しておいてくださいね。

【53745】Re:ユーザーフォームからシートのデータ...
発言  VBWASURETA  - 08/2/5(火) 16:36 -

引用なし
パスワード
   ▼neptune さん:
こんにちは。

このデバック方法はわかり易いですね。
因みにExcel VBAだけではなく、Access VBA、VBでも共通のデバック方法です。
共通で見られたら結構役に立ちそうです。

【53750】Re:ユーザーフォームからシートのデータ...
お礼  みさ  - 08/2/5(火) 18:00 -

引用なし
パスワード
   ▼VBWASURETA さん:
▼neptune さん:


・・・そうですね、結局私は何がいけなかったのか
わかってないです。。。

Dim Rw As Integer のデータ型を Long に換えたこと、
Sheets("Sheet1")の大文字小文字の区別をちゃんとしたことと、
あとは
myF =Sheets("Sheet1").cells・・・の前に、
Rw = myRange.Row ←これを入れてみました。

このお陰で出来たのかな?

URLありがとうございます。
これからは質問する前にこれを見て確認します。
本当にありがとうございました。

【53753】Re:ユーザーフォームからシートのデータ...
発言  VBWASURETA  - 08/2/5(火) 20:27 -

引用なし
パスワード
   ▼みさ さん、neptune さん:

こんばんは。

VBAのデバックは覚えてしまえば結構自力で
デバックしながら解決できます。
エラーとなって黄色いライン位置(プログラム行)
が表示されたら、その行を疑う習慣をつけると、
デバックするのに良いですよ。
その前までは処理が正常に通ったという印になります。


で、問題はこれでしょうね。
Rw = myRange.Row


myRange.Row はB列の実際にシートで存在している行位置を覚えてます。
なので、デフォルト値の0から実際にある行番号に書き換わったので
見れるようになったということですね。

【53766】Re:ユーザーフォームからシートのデータ...
お礼  みさ  - 08/2/6(水) 9:44 -

引用なし
パスワード
   ▼VBWASURETA さん:
おはようございます。

なるほど。
わかりました。
デバックをちゃんと覚えてできるように
がんばります。

ありがとうございます。

4893 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free