A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
>使う側としては、「開発史が、まったく違うものですから」というのは、関係ないですよね?
関係ない?って、私は、「開発史」が違うものは、同じ仕様を持っていないという説明が、お分かりにならないかったのでしょうか?ご質問が「うんちく」というから、もう少し、ゆるい話をお求めのように思いましたが、どうやら、そうではなかったようですね。
VBAとExcelのワークシートの操作は、まったく質の違うものとしか言いようがありません。違うソフトウェアと思ったほうがよいです。もし、VBAを覚えたいなら、一旦、ワークシートのことは忘れて、VBAに集中したほうがよいです。両方を行ったり来たりの掛け持ちでは覚えられません。同じような考えでいたら、うまくいかないのです。
>vbaの場合は、ワークシート関数の場合は、とか考えるのが面倒くさい、といった主旨でした。
Excelなどに興味があれは、いろんな周辺情報も楽しく感じるものですが、「面倒くさい」といわれれば、覚えられるものも、覚えられなくなってしまいます。
それに、いつまでも、VBAが続くとは思わないほうがよいです。いずれは、VBAはなくなると思ったほうがよいです。
No.2
- 回答日時:
こちら側からすると、ご質問の意図が分かりにくいのですが、ワークシート関数とVBA関数との違いについて、ということでしょうか。
しかし、開発史が、まったく違うものですから、それを比較するということは難しいのではないでしょうか?基本的な関数名自体は、Microsoft社 が考えたものではなく、1970年代後半、VisiCalc の開発者、MIT大学生のダン・ブリックリン氏とその友人が考えたものです。その後、ロータス社に権利を譲り、その時に関数が増えました。Microsoft側は、1980年代の初頭に天才チャールズ・シモニー氏が、その開発に関与したと言われますが、関数名は、すでに、ロータス社の中でほとんど揃っていたと思われます。
Lotus1-2-3との互換性が保たれるようにとはいいますが、その話には疑問があります。Microsoft MS-DOSの表計算 Multiplan は、1983~4年頃で、同様の関数があったからです。MS-DOSと表計算はバンドルしていた時代が初期にはあります。互換性が保たれていたとは言えません。
VBA側は、ご存知だと思いますが、Visual Basic からのダウンサイジングです。1995年にExcel Ver.5からVBが取り入れられたものであったわけで、ワークシート関数と似ているかといっても、比較できるものではないと思います。その開発チームは、まったく別な所にあったものだと思います。Excelに、VBAを取り込むことは賛否両論だったとも言われます。
Val は、VBAの文字から数値に換える関数。Value は、Range 等のオブジェクトのプロパティ。
N やCONCATENATEは、Lotus1-2-3との互換性のための数値化するためのワークシート関数。
Format は、VBAの書式関数、Text はワークシートの関数。しかし、Text 関数は、MS-DOS版表計算のロ社のものにもMS社どちらにもありません。
VBAのMID関数の仕様は、ワークシート関数のREPLACEと同じような機能があったりします。
ROUND関数は、両者ではまったく違うものです。VBAは、偶数丸めという近似値を求めるための関数で、四捨五入をすることではありません。MOD関数は、ワークシート側は、小数が発生しますが、VBAでは、もともと演算子であるし、Long型、Integer型、Byte 型と、各々の小数発生のデータ型の数値を丸めてしまいます。
ありがとうございます。使う側としては、「開発史が、まったく違うものですから」というのは、関係ないですよね?
もう21世紀になって10年にもなるのですから、1995年から全く変化がないというのも。。。
同じことが出来る関数があってもいいんではないかな、と思います。まあ下位互換性を保つためにはしょうがないのでしょうが。
毎日スクリプトを書くわけではない人間からすると、vbaの場合は、ワークシート関数の場合は、とか考えるのが面倒くさい、といった主旨でした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 以下のVBAで該当文字列の前後に付与したい。 例 前に付与 abc ユーザーID 12345 後に付 3 2022/04/19 21:50
- Visual Basic(VBA) vba 隣のセルに値がある行だけ関数をコピー&ペーストしたい A1 100001 A2 100002 1 2023/01/28 14:29
- Excel(エクセル) Excelのtextboxへの入力で小数点以下に0が続く場合でも正しく表示したい 3 2022/04/11 13:53
- その他(プログラミング・Web制作) pythonにおける単方向リストの実装について 4 2022/07/13 12:34
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- その他(プログラミング・Web制作) python質問 1 2023/08/14 11:54
- その他(パソコン・スマホ・電化製品) pthonのframeに演算結果(数値)を表示したい 1 2023/06/05 22:08
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- Visual Basic(VBA) テーブルを配列に入れて、元のテーブルの行番号を取得したい 1 2022/08/16 20:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルで複数のシートに画像...
-
Accessのテーブルを既存のExcel...
-
エクセルでブック内の倍率がバ...
-
特定のシートのみ再計算させな...
-
Wordで差し込み印刷時に表示す...
-
EXCELの「シートの見出し」のフ...
-
ワークシートそのものの色を変...
-
エクセルでリンク貼り付けした...
-
エクセルのシー名を二段表示に...
-
エクセル、特定のシートにパス...
-
EXCELの図形(テキストボックス)...
-
エクセルの2つのシートを並び...
-
エクセル 非表示のシートをハ...
-
エクセルを開くとメニューバー...
-
【Excel VBA】データ貼り付け先...
-
(エクセル)Indirect関数で、ハ...
-
エクセルでシートを追加したと...
-
PowerQueryで行数の指定はでき...
-
エクセル、別のシートの表をポ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルで複数のシートに画像...
-
特定のシートのみ再計算させな...
-
エクセルでブック内の倍率がバ...
-
ワークシートそのものの色を変...
-
【ExcelVBA】マクロの入ったシ...
-
エクセルの2つのシートを並び...
-
EXCELの図形(テキストボックス)...
-
ハイパーリンクでジャンプした...
-
エクセルのシート連番の振り直し
-
特定の複数のシートに同じ処理...
-
エクセルのシー名を二段表示に...
-
Wordで差し込み印刷時に表示す...
-
エクセルで、シートの名前を変...
-
エクセルでリンク貼り付けした...
-
エクセル、特定のシートにパス...
-
accessへエクセルの複数のシー...
-
Accessのテーブルを既存のExcel...
-
【Excel VBA】データ貼り付け先...
-
EXCELの「シートの見出し」のフ...
おすすめ情報