(言葉の使い方が間違っていたらわかりずらくて、すみません)

経理の仕事をしているのですが、新しく人が増えた時のためにエクセルで経理のマニュアルを作るよう指示されました

それで、普通に説明が載っているものとは別に『こういう時にはこういう処理をする』というような感じの逆引き検索機能が出きるようなものを作りたいのですが、VBAの本を買ってきて読んでも、わからなくてなかなか先に進めません

希望としてはわかならいことを検索したい時に検索ボタンを押すと、自分で作ったフォームが表示されて、キーワードを入れて検索すると、ヘルプのようにその言葉に関する題名のようなものが出てきて、その中から一つを選択すると、詳しい説明が表示されるようにしたいです

エクセルの隣のシートにはマニュアルのデータを入れて、随時追加もしたいです


VBAに関しては全くの初心者です このような事が出来るのかどうかも不明なのですが どうぞ宜しくお願い致します 

このQ&Aに関連する最新のQ&A

A 回答 (2件)

>普通に説明が載っているものとは別に『こういう時にはこういう処理をする』というような感じの逆引き検索機能が出きるようなものを作りたいのですが、



エディタライクに、作るのが簡単な、HTML ヘルプはどうでしょうか?
私は、Excelを開きながら、ヘルプを作っていきます。文章を書きながら、項目ごとに溜めていきます。ScreenCapture で、画面も撮って文章に貼り付けます。最後に、コンパイルしますが、改編も簡単です。一旦、慣れると、Excel上に書くよりも、セルの制限もなく楽にきれいにできあがります。

私は、ずっと、ここのHelpDesigner を使用しています。全て、フリーで作ることが出来ます。
http://www.koji27.com/
ただ、最初に、Microsoft のヘルプワークショップを探すのが、ちょっと手間取りました。

その後は、このようにしています。

Sub HelpInstall()
Dim myPath As String
 myPath = ThisWorkbook.Path &"\"
 On Error Resume Next
 If Dir(myPath & "myHelp1.hlp") = "" _
   Or Dir(myPath & "myHelp1.cnt") = "" Then
   MsgBox "ヘルプファイルが、" & myPath & "に見つかりません。", _
   vbInformation, "ヘルプ"
 Else
 Application.Help myPath & "myHelp1.hlp"
 End If
End Sub

それを、以下のようにして、メニューバーに入れてしまいます。


Set MyCB =Application.CommandBars("WorkSheet Menu Bar")
With MyCB.Controls("ユーザーメニュー(&U)").Controls. _
    Add(Type:=msoControlButton, temporary:=True)
      .Caption = "ヘルプ(&H)"
      .FaceId = 984
      .OnAction = "HelpInstall"
      .BeginGroup = False
End With



参考URL:http://www.koji27.com/

この回答への補足

アドバイスありがとうございます!!

回答を読ませていただいたのですが・・・
本当にすみません!!
知識がほとんどないので意味がわかりませんでした

(1)エディタライク??? 
(2)Screen Capture??? 
(3)コンパイル???
(4)HelpDesigner URLに入って何をダウンロード???
(5)最初にMicrosoftのヘルプワークショップを探す???
(6)Sub HelpInstall() で始まるデータはいったいどこに入れたのでしょうか???
(7)それを以下のようにしてメニューバーに入れる??? というのは、(6)のデータの後に続けて入れるということでしょうか???

・・・というように、何からどういう順番で行えばいいのかも
全然わからない状態です(無知ですみません)

私の今の知識では難しいことをしようとしているのだと
いうことはよくわかったのですが
やはりどうしても作りたいので出来ましたら
アドバイスを宜しくお願い致します

補足日時:2005/04/23 12:36
    • good
    • 0

HelpDesignerは、Vector の解説どうかしら?


http://www.vector.co.jp/vpack/browse/pickup/pw3/ …

Screen Capture は、スクリーンキャプチャというツールの名前。
HelpInstall() 一般的には、標準モジュールです。
メニューバーは、Open時に入れる。Auto_Open や ThisWorkbook_Openというイベントを使うのですが……。

とりあえず、ヘルプから作っていって、メニューバーへの登録は、また、後から聞いてもいいです。

ユーザーフォームでしたら、そこで、データを検索して、表示させるというような方法をとるか、ですね。失礼かもしれませんが、ご自身でユーザーフォームを、表示させ終了させるコードは書けますか? Findメソッドとか分かりますか?そのレベルまでを、掲示板でというのは、わたし感覚では、ちょっと無理があります。どういうのが良いのか、今は分かりません。すみません。

参考URL:http://www.vector.co.jp/vpack/browse/pickup/pw3/ …
    • good
    • 0
この回答へのお礼

>そのレベルまでを、掲示板でというのは
・・・・・はい、そのレベルです(しょぼん)

夢見すぎてしまいました ありがとうございました

前に勤めていた人がたくさんすばらしいものを作っていたので、
私にも作れたら・・・と思ったのですがやはりいきなり
難しすぎたようです

せっかくのアドバイスを無駄にしてしまう形になってしまいました(すみません)が
親身なアドバイス本当にありがとうございました
他の方法を考えてみます!!

お礼日時:2005/04/23 16:39

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qセグメントの違うNT/2000サーバーのアクセスについて

ご教授宜しくお願い致します。
この度、社内のNWを再構築しようと考えております。

同一NW上に、現在は同じセグメントでマシンAのPDC(NT4SV)と別の業務用のマシンBのPDC(NT4SV)があります。
マシンAはユーザー管理をしていますが、この度長年頑張ってくれたマシンAを償却し、Windows2000ServerのマシンCに入れ替えをしたいと思ってます。
その際に、現状のセグメントでは管理しにくいのでActiveDirectoryを構築の際にマシンCを含むクライアントや固定IP機器たちを別のセグメントに変更したいと思います。
しかしマシンBはフレームリレーの都合でセグメントを変更したくありません。
現在ADSLルーターのDHCPサーバーで固定IP機器以外は動的IPを振ってます。

ActiveDirectory構築の際に同一NWにある別ドメインをマシンCは見付ける事が出来るのでしょうか?
また見付けれた場合、マシンCとBは信頼関係を築けるのでしょうか?

今回の作業はかじる程度の私の知識ではとても重荷で、
この説明も不足してる事は承知していますが、幾つかに分けて考えたいのでご教授をお願い致します。
宜しくお願い致します。

ご教授宜しくお願い致します。
この度、社内のNWを再構築しようと考えております。

同一NW上に、現在は同じセグメントでマシンAのPDC(NT4SV)と別の業務用のマシンBのPDC(NT4SV)があります。
マシンAはユーザー管理をしていますが、この度長年頑張ってくれたマシンAを償却し、Windows2000ServerのマシンCに入れ替えをしたいと思ってます。
その際に、現状のセグメントでは管理しにくいのでActiveDirectoryを構築の際にマシンCを含むクライアントや固定IP機器たちを別のセグメントに変更したいと思います。
...続きを読む

Aベストアンサー

遅くなりました
補足ありがとうございました

「同一NW」という言葉を
「物理的に同じネットワークに所属している(同じHUBに接続されているなど)」
と解釈されているのか?
「同一セグメント」と解釈されているのか?
それによって話は変わってきますが、
同一セグメントに別ドメインがあるのであれば、
当然その別ドメインを見つけ出すことはできます
逆に、「別セグメント」ということになった場合、
ルーター等で、その別セグメントと通信をできる状態にしておかなければ
別セグメントにあるドメインは見つけることができません

補足にあるような、マシンB(192.168.0.XXX)と
マシンC(192.168.10.XXX)の間で信頼関係を構築という話になる場合
お互いのセグメントの架け橋になるルーターが必要になります
(もしくはサーバーにLANカードを2枚さしてルーターの機能も持たせる)
信頼関係の構築、及び同一NW(同一セグメントと仮定した場合)
における説明は以上のようになるかと思います

また、NTドメインからActiveDirectoryへのドメイン移行は
非常に面倒です(経験談)
しっかりと手順を固めた上で行われた方がよいと思います
更に補足が必要でしたら補足をお願いいたします

遅くなりました
補足ありがとうございました

「同一NW」という言葉を
「物理的に同じネットワークに所属している(同じHUBに接続されているなど)」
と解釈されているのか?
「同一セグメント」と解釈されているのか?
それによって話は変わってきますが、
同一セグメントに別ドメインがあるのであれば、
当然その別ドメインを見つけ出すことはできます
逆に、「別セグメント」ということになった場合、
ルーター等で、その別セグメントと通信をできる状態にしておかなければ
別セグメントにあるドメ...続きを読む

Q検索エンジンのような 検索プログラムを作りたいのですが

検索エンジンのように文字を入力して スペースを空けて入力した単語も探し

てくれ さらにヒットした文字に色をつけるプログラムを作り 自分のPCの

ファイル検索に使いたいのですが もしよろしければご教授下さい。

VisualStudioで作成しようとしております。 よろしくお願い致します。

Aベストアンサー

漠然とした質問で、丸投げに近い。子供がロケットを作りたい、というなものを親が聞いている場合を連想します。その実現のために本人は、小学校、中高大學の勉強やその後の努力の積み重ねが必要です。したいことを言えば、誰かが教えてくれるというのはあまえです。VBを勉強してどこまで進んだのでしょうか。世の中で教えてもらうほうもある程度のレベルになって居ないとならないというのは、色んなところで経験します。
文字列の中の語句の検索
見つかった後のさらに続けて検索
見つかった語句の文字の色を変える
PC内のファイルの検索
PC内にあるファイルのファイル形式(エクセル・ワードだけとは限らないので非常に勉強が必要。)のことと読み込み。例 PDFファイルなどになると途端に難しい。
以上のようなことはワードVBAならWEBに例があるかもしれないような
課題です。
情報系の仕事にでも就かないなら、今はソフト作るより(買ってきて)使う時代です。
プログラムの習得を簡単に考えすぎではないですか。

QDNS設定なしのセグメント越え

Aセグメント(192.168.10.*)
Bセグメント(192.168.20.*)
とあり、Bセグメント内のマシン内のDNSの設定をしておけば、AセグメントからBセグメント
のマシンには到達できます。

しかしBセグメント内にDNSが設定できないマシンがあり、
通常ではAからBに到達できません。

Aセグメントから到達したい場合には、
DNSサーバに何か記述すれば、AからBに到達することは可能でしょうか?

Aベストアンサー

ちょっと意味がわからない

DNSに関係なくルータとルーティングテーブルさえできていればセグメントが
ちがっても接続できますね
ホスト名でアクセスができないという話をしているのでしょうか?

QエクセルVBAでボタンを作ったシートとVBAを実行するシートを変えたい

シート1にボタンを作成し、
そのボタンを押すと実行するVBAを作成しました。
そこで、VBAを実行するシートの指定はできるのでしょうか。
例えば、ボタンを押すと、
10行から20行まではシート2で実行させ、
30行から40行まではシート3で実行させたいと考えています。
可能でしょうか。
どうぞ宜しくお願いします。


***********************************************
作成したVBA。ボタンはシート1にあります。
***********************************************

Private Sub CommandButton1_Click()


***********************************************
ここからはシート2で実行させたい
***********************************************
Range("E2").Select
ActiveCell.FormulaR1C1 = "10"
Range("E2").Select
Selection.AutoFill Destination:=Range("E2:E101"), Type:=xlFillDefault
Range("E2:E101").Select


***********************************************
ここからはシート3で実行させたい
***********************************************
Range("A2").Select
ActiveCell.FormulaR1C1 = "100"
Range("A2").Select
Selection.AutoFill Destination:=Range("E2:E101"), Type:=xlFillDefault
Range("A2:A101").Select

End Sub

シート1にボタンを作成し、
そのボタンを押すと実行するVBAを作成しました。
そこで、VBAを実行するシートの指定はできるのでしょうか。
例えば、ボタンを押すと、
10行から20行まではシート2で実行させ、
30行から40行まではシート3で実行させたいと考えています。
可能でしょうか。
どうぞ宜しくお願いします。


***********************************************
作成したVBA。ボタンはシート1にあります。
***********************************************

Private Sub CommandB...続きを読む

Aベストアンサー

予期しないエラーを避けるため
シートを直接選択したらどうでしょうか

Private Sub CommandButton1_Click()

Application.ScreenUpdating = False

***********************************************
ここからはシート2で実行させたい
***********************************************
Sheets("Sheet2").Select

Range("E2").Select
ActiveCell.FormulaR1C1 = "10"
Range("E2").Select
Selection.AutoFill Destination:=Range("E2:E101"), Type:=xlFillDefault
Range("E2:E101").Select


***********************************************
ここからはシート3で実行させたい
***********************************************

Sheets("Sheet3").Select

Range("A2").Select
ActiveCell.FormulaR1C1 = "100"
Range("A2").Select
Selection.AutoFill Destination:=Range("E2:E101"), Type:=xlFillDefault
Range("A2:A101").Select

Sheets("Sheet1").Select
Application.ScreenUpdating = True

End Sub

予期しないエラーを避けるため
シートを直接選択したらどうでしょうか

Private Sub CommandButton1_Click()

Application.ScreenUpdating = False

***********************************************
ここからはシート2で実行させたい
***********************************************
Sheets("Sheet2").Select

Range("E2").Select
ActiveCell.FormulaR1C1 = "10"
Range("E2").Select
Selection.AutoFill Destination:=Range("E2:E101"), Type:=xlFillDefault
Range("E2:E101").Selec...続きを読む

Q会計セグメントとは?

「会計セグメント」もしくは「セグメント会計」どっちか
忘れたのですが・・この「セグメント」とはどういった
意味なのでしょうか?。

アドバイスお願いします。

Aベストアンサー

会計で使う場合は部門・地域・事業部を表すことが多いです。損益計算書との関連でよく使われるので、セグメント別損益計算書というと部門別、地域別(事業所別)、事業部別の採算性を比較した損益計算書のことになります。
これらの業績を元に伸びている地域、部門には人員を増やしたり、設備投資をしたりとか、あるいは不採算の部門、地域に対しては撤退を考え、実行するとかの意思決定に用います。このあたりが「セグメント会計」と呼ばれるものだと思います。

QExcel VBA で検索 → 検索結果をsheetに書込む

データが以下のようにランダムにA列のみに『A65536』までずら~っと並んでます。

 ・
 ・
R:F7090006000C9129
S:06
R:4C
S:06
R:F23404AA
16:56:08
S:06
R:F50A0000008807
S:06
R:F50A00010053D3
S:06
 ・
 ・

この中の検索条件は *F50A* 『F50A』を含む情報を持つセルを
全て抜き出して、sheetに書き込む。
※書込み先のsheetは、新しいsheet,既存のsheet
どちらでも構わない。
アドバイス宜しくお願い致します。

Aベストアンサー

関数で出来ます。
(1)空き列に
=IF(ISERROR(FIND("F50A",A2)),"",MAX($D$1:D1)+1)
を入れて最終行までコピー
(2)空き列に
=INDEX($A$1:$A$20,MATCH(ROW(),$D$1:$D$20,0),0)
で下方向にコピーです。((1)の最終番号数行まで)
第1行目は空けておくこと。
別シートへコピー。

Qデジタル放送のサブチャンネルのセグメント数配分

お世話になります。

デジタル放送は1つのチャンネルが13のセグメントに分かれており、そのうち12のセグメントがワンセグ放送を除いた通常の放送に利用されていると解釈しています。
HD画質を放送する場合は12のセグメントが用いられ、さらに、使用するセグメント数を4つにして画質を落とすことで最大3つの番組を同時に放送できるのだと解釈しています。
テレビに搭載されているデジタル放送の番組表機能を使って番組表を見ると、1つのチャンネルが2つか3つのサブチャンネルに分かれています。
サブチャンネルに分かれているのはセグメントを配分して表示しているからだと言うことはわかるのですが、これが2つだったり3つだったりするのはどういう事なんでしょうか?

サブチャンネルが3つあるところは
4セグメント×3サブチャンネル
なのでしょう。

しかし、サブチャンネルが2つしかないところは
4セグメント×2サブチャンネル?
4セグメント+8セグメント?
6セグメント×2サブチャンネル?

いろいろ調べても、6セグメントで放送しているような記述が見つかりません。
古い記述では8セグメントで準HD画質の放送も出来るという記述はありました。
しかし、現在のデジタル放送において、12セグメントか4セグメント以外で放送をしているという、根拠がしっかりした記述を見つけられませんでした。
とはいえ、周波数帯のほぼ1/3を無駄にするような「4セグメント×2サブチャンネル」の放送をするとも思えません。

実際のところはどうなのでしょうか?
よろしくお願いします。


これが「AV機器(>テレビ)」のカテゴリーで良いかどうか我ながら疑問なんですが、放送に関するものは「ワンセグ放送」のカテゴリーになってしまうので現行のカテゴリーにしました。

お世話になります。

デジタル放送は1つのチャンネルが13のセグメントに分かれており、そのうち12のセグメントがワンセグ放送を除いた通常の放送に利用されていると解釈しています。
HD画質を放送する場合は12のセグメントが用いられ、さらに、使用するセグメント数を4つにして画質を落とすことで最大3つの番組を同時に放送できるのだと解釈しています。
テレビに搭載されているデジタル放送の番組表機能を使って番組表を見ると、1つのチャンネルが2つか3つのサブチャンネルに分かれています。
サブチ...続きを読む

Aベストアンサー

>ただ、NHKのEテレはワンセグを2つ流せるようにワンセグ用のセグメントを2つ取っているという話を新たに耳に入れました。そしてHD放送は11セグメントだと。

これは「誤った情報」です。

確かに、ワンセグは、3桁番号が2つ割り当てられていて、同時に2つの番組を放送出来ます。

例えば、フルセグの3桁番号が011~013の放送局は、ワンセグの3桁番号は611、612の2つが割り当てられます。

そして、ワンセグで2つの番組を同時放送している放送局が存在しています。

しかし、これは「ストリーミング分割による多重放送」であって、使っているのは「セグメント1つ」です。

ストリーミング分割による多重放送は、デジタルのデータを生成する段階で行う物で、通常よりもデータの圧縮率を2倍にしてデータ量を半分にして、2番組分のデータを「1212121212…」のように交互に生成すれば、1つのセグメントで(従来のデータ量で)2つの番組を流せます。

また、NHK-Eテレでは「ワンセグ放送の放送内容を、フルセグ放送と違う内容で放送するサービス」をやっています。このサービスは「NHKワンセグ2」と言います。

通常、ワンセグ放送は「フルセグ部分と同じ物を放送している」のが普通です。しかし「NHK-Eテレは、ワンセグの放送内容がフルセグと違う場合がある」のです。

それを見た人が「NHK-Eテレのワンセグ、フルセグと放送内容が違う。もしかしてNHK-Eテレってワンセグが2つあるの?」と誤解したのでしょう。

話を戻しますが、ストリームレベルで多重放送する「セグメント1つで、放送を2つ」と言う放送は、TOKYO MX、奈良テレビ放送で行われています。

TOKYO MXは、このサービスを「ワンセグ2サービス」と呼んでいます。

しかし、MXが商標登録しなかった為、NHKが「NHKワンセグ2」と言う名称で、前述のような、まったく異なる内容のサービスを開始しました。

NHKの「NHKワンセグ2」は、単に「ワンセグ放送の内容を、フルセグ放送の番組と違う内容で放送しているだけ」の物で、1セグメントで1放送(1番組)です。

MXの「ワンセグ多重放送」と、NHKの「ワンセグ独自放送」は、どちらも「ワンセグ2」と言う名称は同じですが、中身はまったくの別物です。

>にわかに信じられないです。わざわざそんな事をするなんて。

やったとしても、受信機側で対応できません。

テレビやレコーダーの地デジチューナー、携帯等のワンセグチューナーは「12セグでハイビジョン放送1本、1セグでワンセグ放送1本」か「12セグで標準画質放送3本、1セグでワンセグ放送1本」と言う構成しか対応していません。

この2通りの構成以外は、例え放送局から放送したとしても、受信機側で対応してないので受信できません。

また、前述のワンセグ多重放送も、ストリーミング多重放送に対応している機器、端末じゃないと受信できません。

>ワンセグを2つ流す時は恐らくマルチ編成の時でしょう。そのときはワンセグで2セグメントを使っても、通常放送には8セグメントあれば足ります。わざわざHD放送を12セグメントから11セグメントに減らさなくてもマルチ編成の時はセグメントが余るのだから。

と言うのはすべて誤った認識ですので、忘れましょう。

>ただ、NHKのEテレはワンセグを2つ流せるようにワンセグ用のセグメントを2つ取っているという話を新たに耳に入れました。そしてHD放送は11セグメントだと。

これは「誤った情報」です。

確かに、ワンセグは、3桁番号が2つ割り当てられていて、同時に2つの番組を放送出来ます。

例えば、フルセグの3桁番号が011~013の放送局は、ワンセグの3桁番号は611、612の2つが割り当てられます。

そして、ワンセグで2つの番組を同時放送している放送局が存在しています。

しかし、これは「ストリーミ...続きを読む

QVBAマクロ・・同一セルの検索と検索したセルの操作

VBAマクロ・・同一セルの検索と検索したセルの操作

 VBAのほぼ初心者です。

 決められたセル(たとえばE100)に入力された文字列と同一の文字列を
その列内の上(E1~E99)で検索する。
そして、検索できれば(たとえばE30)そのセルがある行(行30)を削除する。
なお、複数検索されれば、検索されたすべてのセルに対応する行を削除する。

 というようなことをVBAのマクロで作成したいです。
FindメソッドとDo..Loop Whileを使って試行錯誤してみたのですが、うまくいきません。。

 いい方法があれば、是非教えていただきたいです。
 どうぞよろしくお願いいたします。

Aベストアンサー

完全に寝ぼけた回答ですので前回の回答は無視してください。

(訂正版)

Sub 行削除()
Dim k As String, r As Range
k = [E100]: Set r = [E1:E99]
On Error GoTo er
Do: r.Find(k, lookat:=xlWhole).EntireRow.Delete: Loop
er:
End Sub

QMASMのセグメント+オフセットと物理アドレス値

素人、アセンブリ言語をかじっています。専門的な教育は受けてません。
MASMではアドレス値を指定するのに

セグメント値+オフセット値でしていします。
セグメント値を確定しオフセット値が決まれば当然物理アドレス値はきまります。

セグメント+オフセット -> 物理アドレス値 :一対一に対応しています。

しかし
物理アドレス値 -> セグメント+オフセット :一対一の対応 不可
だと思います。
セグメント値がきまらなければ一対一の対応はしませんし、物理アドレスからセグメント値は決められないと思っています。
物理アドレスからセグメント値がきまるのでしょうか?

この辺の対処はどうなっているのでしょうか?
MASM -> 機械語 
対応はできますが、
機械語->MASM
どう対応するのか?
をふくめて、どうなっているのでしょうか

宜しく願います。

Aベストアンサー

><<機械語で与えられた情報(セグメントとオフセットの組み合わせ)>>は其のままということですね。
>CPU内のMMUが計算するということですね。
>
>これでよろしいでしょうか?
OKです。

QVBで文書を検索するシステムを作ったのですが、検索実行のたびに表示されるレコードが増えます。

VBで文書検索を行うシステムを作っているのですが、文字列を変えて検索するたびにMSHFlexGrid上に表示されるレコードが増えていきます。原因がわかりません。よろしくお願いします。

Private Sub Command1_Click()

Dim kubun As String '文字列型
Dim mojiretsu_k As String '文字列型
Dim A As Integer '
Dim cn As New ADODB.Connection 'データベースに接続するためのコネクションオブジェクト
Dim cmd As ADODB.Command
Dim rst As ADODB.Recordset
Dim strSQL As String
Dim i As Integer


If Option7 = True Then
ElseIf Option8 = True Then
kubun = "a"
ElseIf Option9 = True Then
kubun = "b"
ElseIf Option10 = True Then
kubun = "c"
ElseIf Option11 = True Then
kubun = "d"
ElseIf Option12 = True Then
kubun = "e"
ElseIf Option13 = True Then
kubun = "f"
ElseIf Option14 = True Then
kubun = "g"
ElseIf Option15 = True Then
kubun = "h"
ElseIf Option16 = True Then
kubun = "i"
ElseIf Option17 = True Then
kubun = "j"
End If




Set cn = New ADODB.Connection
cn.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Persist Security Info=False;" & _
"Data Source=aaa.mdb;" & _
"Mode=Read"
cn.Open

Set rst = New ADODB.Recordset

' レコードソースにSQL文を指定
mojiretsu_k = Text1.Text

If Option18.Value = True Then '現行文書のみ検索
If Option7.Value = True Then
strSQL = "Select 資料区分,資料名称,ファイルパス From T_SHIRYO WHERE 資料名称 like'%" & mojiretsu_k & "%' and 廃止フラグ = False order by ID"
Else
strSQL = "Select 資料区分,資料名称,ファイルパス From T_SHIRYO WHERE 資料名称 like'%" & mojiretsu_k & "%' and 資料区分 = """ & kubun & """ and 廃止フラグ = False order by ID"
End If
ElseIf Option19.Value = True Then '廃止文書のみ検索
If Option7.Value = True Then
strSQL = "Select 資料区分,資料名称,ファイルパス,廃止フラグ From T_SHIRYO WHERE 資料名称 like'%" & mojiretsu_k & "%' and 廃止フラグ = true order by ID"
Else
strSQL = "Select 資料区分,資料名称,ファイルパス,廃止フラグ From T_SHIRYO WHERE 資料名称 like'%" & mojiretsu_k & "%' and 資料区分 = """ & kubun & """ and 廃止フラグ = true order by ID"
End If
ElseIf Option20.Value = True Then '現行+廃止文書を検索
If Option7.Value = True Then
strSQL = "Select 資料区分,資料名称,ファイルパス,廃止フラグ From T_SHIRYO WHERE 資料名称 like'%" & mojiretsu_k & "%' order by ID"
Else
strSQL = "Select 資料区分,資料名称,ファイルパス,廃止フラグ From T_SHIRYO WHERE 資料名称 like'%" & mojiretsu_k & "%' and 資料区分 = """ & kubun & """ order by ID"
End If
End If


rst.Open strSQL, cn, adOpenStatic, adLockOptimistic, adCmdText


i = 0

Do While Not rst.EOF
With Form1.MSHFlexGrid1
.AddItem ""
.TextMatrix(i, 0) = rst.Fields("資料区分")
.TextMatrix(i, 1) = rst.Fields("資料名称")
.TextMatrix(i, 2) = rst.Fields("ファイルパス")

End With
i = i + 1
rst.MoveNext
Loop

rst.Close
cn.Close
Set rst = Nothing
Set cn = Nothing
End Sub

VBで文書検索を行うシステムを作っているのですが、文字列を変えて検索するたびにMSHFlexGrid上に表示されるレコードが増えていきます。原因がわかりません。よろしくお願いします。

Private Sub Command1_Click()

Dim kubun As String '文字列型
Dim mojiretsu_k As String '文字列型
Dim A As Integer '
Dim cn As New ADODB.Connection 'データベースに接続するためのコネクションオブジェクト
Dim cmd As ADODB.Command
Dim rst As...続きを読む

Aベストアンサー

前回の検索結果を削除していないので検索を実行するたびに結果が増えていくのは当然でしょう

MSHFlexGrid1.Clearとして一度初期化してから
Doループを実行してみましょう

Clearメソッドで不具合があるのでしたらRemoveItemを使って不要な結果を削除するようにしてください

for n = MSHFlexGrid1.Rows to 1 step -1
  MSHFlexGrid1.RemoveItem n
next
といった具合です


人気Q&Aランキング

おすすめ情報