質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.36%

  • VBA

    1898questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

  • Excel

    1624questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。

ExcelVBAのListViewでスクロール周りのイベントをコードで調整したい

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 799

funmas

score 6

 前提・実現したいこと

ExcelのVBAでListViewを二つ並べています。
これら片方のスクロールバーを動かした場合(ドラッグ、ホイール問わず)
同期をとり、もう片方のListViewも動くように調整したいと考えています。

ListViewではこちらの実現は不可能でしょうか。

 試したこと

始めはListboxで作成していたのですが、
見出しが上手く追加できなかったことからListViewで運用しています。

ListViewのイベントに、Scroll周りのものがないか、
色々見てみたのですが、見つけることが出来ませんでした。

 補足情報

・Excel2010
・Microsoft ListView Control, Version6.0

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

0

始めはListboxで作成していたのですが、
見出しが上手く追加できなかったことからListViewで運用しています。

下記の方法でてきると思いますが。

Office TANAKA - Excel VBA Tips[ListView-列見出しの設定]

これら片方のスクロールバーを動かした場合(ドラッグ、ホイール問わず)
同期をとり、もう片方のListViewも動くように調整したいと考えています。

APIを使うことになります。下記にAccessのフォームのスクロールバーを操作して同期させるサンプルがあります。

サブフォーム間のスクロールを同期させる方法 - hatena chips

スクロールバーのハンドルが取得できれば、リストボックスやリストビューでも同様のことは可能だと思います。
ただ、ExcelVBAerさんも言われてるようにかなり難易度は高いと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/12 11:05

    ListViewの見出し追加機能自体は実現しています。
    Listboxがセル指定のみになっていたので、ListViewで見出し追加を実現した次第です。

    Accessの同期ソースコード拝見しました。
    これは生半可な知識では難しいと感じました。
    一旦この機能は見送って進めたいと思います。ありがとうございました!

    キャンセル

0

ListViewではやったことはないですが、
WinAPIを使ってマウスのスクロールをHook(フック)し、
スクロール処理をSendKeyで表現したことはあります。

ただ、難易度が非常に高くなりますし、
最悪、Excelが落ちたり、不安定になる事もあるので、
オススメはしません。

結論としては、不可能ではないけど、難関です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/12 11:03

    ListView自体にやはり機能は備わっておらず、
    想像以上に難しいのですね・・・
    不安定で厳しいということがわかっただけで助かりました。
    ありがとうございます!

    キャンセル

0

ども^^

始めはListboxで作成していたのですが、
見出しが上手く追加できなかったことからListViewで運用しています。

あぁ、僕もそんなこと試したことがあるような無いような。
リストボックス、見た目がしょぼいのでリストビュー使いたいなーって思う気持ちはわかります。
が、ユーザーフォームで何かを作るのって、
1から10までほぼ自分で機能を付けないといけないですよね?
しかも、マウスホイールに一向に対応してくれないし。。。

なので僕はユーザーフォームで何かを作るのはほぼやめました。
シートで代わりをすればいいと思ってます。
今回の件もシート上に表を展開して、
新しくウィンドウを開く→整列(左右)→並べて比較→同時にスクロール
とすれば、やりたいことが実現できるわけですよね?

折角のエクセルVBAなので、エクセルの機能に頼れるとこは頼る。
使える機能は使い倒す。
という気概で開発してはいかがでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/11 16:12

    同感です~!

    フォームばっかりで作られたツール(ソフト)を見た日には、
    作った人はエクセルが嫌いだったんだなって思っちゃいますね~

    エクセルの良さは、シートにデータを展開できる、
    シート上なら、シェイプ、図形、スクロール、フィルタ、ズーム、数式、、、etc
    色んな事ができますからね~

    キャンセル

  • 2018/07/12 11:09

    Listbox、見た目たしかに少しちゃちい感じがしますね笑

    シート上で実現可能な範囲ならいいのですが、
    不特定多数の人間に触らせるので、多少ブラックボックスな作りにしなくてはならず、
    且つデータのやりとりミスが発生すると少々重大になってしまうので、
    フォームでの開発を行っております。簡単にいうと左から右にデータを移すようなシステムです。

    実現可能なシステムであれば、シート上で動かせるということを視野に入れたいと思います。
    ありがとうございました!

    キャンセル

  • 2018/07/12 20:30

    触らせたくないブックやシートは非表示にしたり、シートに保護かけて選択できなくした状態でVBAからの操作の命令しか受け付けなくできますし、ユーザーフォームじゃなきゃ絶対ダメってことは無いように思いますが勘違いでしょうか?
    まぁ、勝手に制限をかけるのはご自由になさってください。こちらは結局当事者ではないですから。
    とりあえず、一つの案として発言しました。

    キャンセル

同じタグがついた質問を見る

  • VBA

    1898questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

  • Excel

    1624questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。