アプリ版:「スタンプのみでお礼する」機能のリリースについて

c言語はある程度わかるのですが、エクセルvbaは始めるにあたり、敷居が高く感じます。何故でしょうか、vbaがわかられる方はご解説お願い致します

A 回答 (5件)

僕は同じルートでVBA始めたので気持ちは少しわかります。



当然のことながらデバッグ環境の違いとかは
慣れるしかないですが、EXCELそのものに便利さを感じるかどうかが
大きいと思うんです。表で関数やピボット、グラフ他、セルの書式だけ
でも、多様な処理が出来るので、それがある程度使えるようになると
同じことを手作業で何度もするのはめんどくさい。
そこが大きなモチベーションになりました。

マクロの記録がどうオブジェクト操作に繋がっているのか
見ても、最初は無駄な構文が多くて読み切れない。
なんだ、マウスで操作しているからSelectしてるけど
これってプログラムなら要らないじゃん、と気づいた
辺りから面白くなりました。

面白味が、習得には一番大切な点だと思います。
健闘をお祈りします。
    • good
    • 0

#2の回答者です。


>vbaのヘルプはF1で出力されるのでしょうか?

ヘルプとは言えないと思いますが、Excel2013以降は、 MSDNを探すようですね。でも、ほとんど満足したことはありません。

他の方はどうしているものやら。

Office 2013ではVBAのヘルプがインストールされない
http://www.relief.jp/itnote/archives/018464.php
CHMファイルからVBAのヘルプを読む
http://www.relief.jp/itnote/archives/001208.php

それなりに工夫はしているものの、これに乗じて、便乗商法もあるようですが、あるサイトでは、ヘルプの値段が約$160とは高すぎます。
    • good
    • 0
この回答へのお礼

当方のエクセルは2010 と 2007のため、当面他のバージョンのエクセルの心配は不要の様です

お礼日時:2017/02/19 22:46

他の方がおっしゃるように、エクセルのVBAは、C等他言語や通常のVBやアクセスVBAと比較しても、入門用として敷居は低いはずです。


何といっても結果がシート上ですぐに確認できます。
エクセルVBAは、カット&トライ(やってみてダメで作り直す)でいけるので初心者向きだと思うのですが。

しかし、既に他言語を知っているシステム経験のある方が陥ってしまっている現状を
見た事があります。
1、エクセルの機能を知らないため、全てをVBAで処理しようとしている。
2、エクセルの活用方法を知らないため、現状をそのままマクロにしている。
まあ、よくもここまで長いマクロを書いたなと感心しますが
データが複数のシートやブックに分かれているなど、データベースとしての運用がないまま
云われたままにマクロを組んだりしていました。
プログラム経験者であるからこそ、陥りやすですね。(出来てしまうので)
今一度、エクセルの機能や本当の活用方法を勉強していただいて、仕事の流れを変える事も含めて
VBAを組んでみると、コードも非常に短く、シンプルになります。
シンプルなコードが良い所は、他の人に引き継ぐのかが簡単だからです。
作成したファイルをいつまでも自分が面倒みる事が無い様に、
分かりやすいコメントもしっかりと入れておきましょう。
    • good
    • 0
この回答へのお礼

他のプログラミングをある程度出来るから余計にvbaが混乱してるのかもしれません。c言語の仕様は本一冊にほぼ全てまとまってましたし、javaにはSUNが提供する辞書サイトがあり、少しわからない事はすぐ辞書サイトで調べ解決出来た記憶でございます。

お礼日時:2017/02/18 19:54

>エクセルvbaは始めるにあたり、敷居が高く感じます。


>何故でしょうか、vbaがわかられる方はご解説お願い致します
人の心の中までは分かりませんが、私も一言加えさせていただきます。

VBAの言語の甘さ、ゆらぎは、結果的には、自分で自分の首を締めるようなものでもあります。それでもいいのかなっていうコードは、結構ストレスを溜めます。

私の印象は、Excel VBAって、2つの仲の悪いチームが作り上げた製品のように感じます。

確かに、#1様のおっしゃる通り、Excelという表計算と、Visual Basic という言語があって、それをインターフェイスで繋いで、Excel VBAとなったわけです。その後も、Visual Basic の載せたのは失敗だった、あんなものをユーザーに無料で提供したのは間違いで、やめたほうがよかったなんていう話を聞かされました。

問題点。
Range(Cells(1,1), Cells(,1,3))
としても、Range と Cells の親オブジェクトは一緒ではないから、
With Worksheets("Sheet1")
  .Range(.Cells(1,1), .Cells(,1,3))
End With
で繋げなくてはいけないのです。

もともとは、R1C1 方式だから、Cells(1,1) で共有性はありましたが、Rangeオブジェクトが加わってくるのです。こちらが、A1方式です。

Window とWorkbook, Sheet と Worksheet 、Cells と Range など、対立的で、VBA専門の回答者の答えをみていても、常に揺らいでいます。(本当は、ある程度の使い分けが決まっています。)

VBAのヘルプ(2013以降はありません)は、Microsoft側の意向で、使ってほしくないものは、ヘルプを提供しないことになっています。Ver.5 ダイアログシートと、Ver.4 のマクロ関数は、探しても出てきません。ダイアログシートは、フォームコントロールの一部です。最近では、フォームコントロールのほうが圧倒的使うようになったと思います。

それと、VBAを使いこなすには、ワークシートの関数などを先に覚えろっていう人がいるけれど、それは本当かな?私は、VBA側からみたら、ワークシートは単なる出力の場所の一つだと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます、vbaのヘルプはF1で出力されるのでしょうか?

お礼日時:2017/02/18 18:01

一般的にCの方が難しいと言われているにもかかわらずって意味ですね。


オブジェクトの種類が多いのが原因の一つだと思います。Excel VBAという言語は無くて、あれはVBAという言語でExcelオブジェクトを操作することをいいます。
VBAそのものは、Cと比べて特別難しいものでは無いと思います。仮にExcel Cというものがあっても、やはり難しく感じると思いますよ。
慣れてる分、すこしはマシかもしれませんが。
    • good
    • 0
この回答へのお礼

ありがとうございます。vbaが敷居が高いのは、自分のコードでデバッグし、エラー検出、イミテイドウインドウの活用や、言語仕様に慣れないからかもしれません。

お礼日時:2017/02/15 22:22

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