人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルVBAのmatch関数に対応するキングソフトの関数
はありますか?
Application.match(Worksheets("sheet1").Cells(1,1),Worksheets("sheet2").Columns(1), 0)
をキングソフトで書き換えたいのですが、できますか?

●質問者: NishidaTetsuo
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

質問者から

また、同様にApplicationオブジェクトのGetOpenFilename()に対応する関数はありますか?


1 ● lang_and_engine
●150ポイント ベストアンサー

ご存じのように、ApplicationオブジェクトはExcelそのものを表すオブジェクトで、MS版とキングソフト版では大きな違いがあります。
そして、後者はマイナーであり、情報がほとんど手に入りません。

こういうシチュエーションで困った場合のセオリーですが、
同等の関数があるか?という調べ方だと、泥沼にはまり、いつまでも解決しません。

なぜなら、マイナーな情報とかマイナーな名前を探し当てようと努力したところで、そもそも載ってないし、使っている人も少ないからアドバイスできる人もいないし。

で、かわりにどうしたら良いかについてですが
同等の関数名は何だろう?ではなく
同等の処理やロジックを実現できるコードは何だろう?と考えればいいんです。

関数の名前に注目するのをやめて、
関数の中身、つまりその関数がどういう処理をしているのか、に注目するんです。
そうすれば、同等の機能を持つ関数を、自前で独自に実装することが可能になりますよね。

この質問の場合でいうと、
Match関数の名前にとらわれるのをやめて、
この関数が何をする関数なのか、という基礎の部分に立ち戻って考えます。

つまり、自分は何をしたいんだろう、という根本的な疑問に答えればいいんです。
そうすれば、やりたいことがはっきりしますから、あとはやりたいことを基礎に戻ってコーディングするだけです。

いまやりたいことは、
Col内に、特定の値の入ったセルがあるかどうか、探したいんですよね?

そうであれば、
Col内を1セルずつforとかwhileのループでスキャンして、セルの値をif文で比較して、欲しい値が見つかったらそれでOK
という処理を自分でコーディングさえすればよい、ということなんですよね。
万が一、自分で作れなければ、そういう具体的な処理の内容を伝える、という頼み方で誰か別の人にコーディングを依頼することもできますが…

つまり、プログラミングの基礎でなんでも解決できるんです。
逆に、基礎を知らないまま、難しい関数の名前を探そうとしても、いつまでも仕事が終わりません。

こういう方向性で取り組んだほうが、圧倒的に速く仕事が片付きますよ。
キングソフトのようなマイナーなAPIと付き合う時には、いつもこういう考え方をするといいです。
私にもキングソフト利用で苦しんだ経験があるのでよくわかります。

コツは、独自仕様に振り回されずに、標準的でわかりやすく実現しやすい代わりの方法を作り出して対処を終えることです。
急がば回れ的なスタンスといえるかもしれません。

もっと言うと、
ここで述べたように
・やりたいことの本質を考えて
・その処理のロジックをほどいてみて分解して
・分解した結果を、一つ一つプログラミングの基礎的な言葉に置き換えてゆく。

というステップを踏めば、
どんな未知で未経験の新しい言語でも、どんなプログラムでも、全然知識や情報が手に入らない状況であっても、
必ず作業の停滞を避けることができ、バリバリ仕事を進めていって、堅実に安定してなにも心配なく目的のプログラムを仕上げることができます。

だから、プログラムに関連した仕事をしていく上で、
上記の考え方と取り組み方は、一生役立つんですよ。


以上ですが、ご参考になることを願います。


NishidaTetsuoさんのコメント
アドバイスありがとうございます。 その方向性でやっていこうと思います。 うまくできるかどうかわかりませんが、できそうになければまた 質問させていただきます。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ