
No.3ベストアンサー
- 回答日時:
こんにちは。
VBAというのは、本当に予約語としてシステムで禁止している単語が少ないですね。Str は、禁止されていませんから、ご質問者さんのコードでも通りますし、際立ったトラブルもないはずです。
>エラーになったり何か不都合が発生しますか?
エラーとして扱えないケースとしては、
例えば、
× Str = Str(200)
つまり、変数と関数の併用
他のうまくない事象としては、
Dim str As String とすると、今度は、Str 関数の時に、str となって、小文字になってしまうので、変数なのか、関数なのか、見分けがつかなくなるということです。
同じように、メソッド名も使えないということです。プロパティ名も避けたほうがよいです。
ついでに、細かいことを言うなら、
Sub test()
↓
Sub Test1() 'Testは、メソッドの中にそういう語を持ったものがあります。
と、パスカル形式にしますね。(別に従わなくてもよいけれど、コードを見ただけで、ある程度の実力は観られてしまいます)
昔は、VB6で、コーディング・ルールとして会社ごとに決められることもあり、プレフィックスの "int", "str", "lng" などを変数の手前につけろ、と言っていた時代はありました。今は、VB6のコーディング・ルールを持ち出されることはないにしろ、VBAプログラマーにとっては、str は、VB.Net では標準的な変数として使われるとなると、なんと言ってよいものか、訳がわからなくなることがあります。
要するに、エラーになるか、ならないかは別としても、他人からみて(半年経てば、自分も他人)が読みやすいコードで書くということが大事だということです。たかが、VBAなのですが、それでも、プロシージャ名、変数、定数の書き方などは、一般的に知られたコーディング・ルールを適用したほうが良いということです。
ちなみに、Str 関数は、昔は、VB6でよく使われていた関数で、符号のスペースを数値の前にとってくれるので桁揃えをしやすく便利なのですが、最近では使われなくなりました。
No.2
- 回答日時:
愚問だとは思うが、予約語を本来の意味以外に使ってはいけない。
この手のコードはネットのサンプルでもみかける。こういう鈍感なヤツにサンプルを書いてもらいたくない、ッタク、、、
例えば、そのコードに、次のコードを追加しても、最早、変数定義の方が強いので、Strは関数としては使えない。
Dim Str2 As String
Str2 = Str(100)
No.1
- 回答日時:
関数名と変数名を同じにするのは混乱するので普通は使いません。
予約語だとエラーになりますし。
それよりも何を目的に作成したものか分かる方がいいです。
stringもStr_TestCode とか相応しい名前があります。
適当に長いとダブル可能性も小さくなります。
翌日には何を作ったのか忘れることさえあります。
まして人が作成したものをメンテナンスというのは骨が折れます。
だから後々の楽を考えれば少々の面倒には目をつぶります。
何を意図としたものかを後々分かるように注釈を入れる、
グローバルで使うのなら接頭辞にgを付けるなど幾つかの約束事は用意した方がいいです。
会社ならコーディング規約とかありますし、プロジェクト前に決めるのが普通です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます 1 2022/10/15 16:30
- Visual Basic(VBA) エラー処理 3 2022/04/11 14:58
- Visual Basic(VBA) VBA ユーザーフォームからSubプロージャ―に値を引き渡す方法 3 2023/04/09 01:54
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) 飛び地セルの空白判定 2 2022/10/24 15:54
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
マクロについて教えてください...
-
エクセルエラー13型が一致しま...
-
アプリケーション定義またはオ...
-
VBA エラーと対策
-
Access:結果は出るがエラー
-
VBAで実行時エラー'424' オブジ...
-
EXCEL VBA シート追加時のエラ...
-
実行時エラー3001「引数が間違...
-
Excelのマクロ ブック間である...
-
Outlook.ApplicationをCreateOb...
-
Access2002 で Select Case文が...
-
VBA:「中断モードでは入力でき...
-
Invalid procedure call or arg...
-
VB6+SQL サーバー 2000 で 実行...
-
ExcelのVBAのAutoFillの使い方...
-
マクロでのActiveSheet.Pasteで...
-
ASP.NET OleDbConnectionが定義...
-
【VBA】実行中に「型が一致しま...
-
マクロでオートシェイプ内の文...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
なぜこんな初歩的なVBAのIf文で...
-
VBAがブレークモードになっ...
-
【Excel VBA】マクロをボタンに...
-
マクロについて教えてください...
-
ExcelVBA Range クラスの Page...
-
VBAでのエラー
-
エクセルエラー13型が一致しま...
-
EXCEL VBAマクロ中断でデバッグ...
-
実行時エラー48発生時のDLL特定...
-
実行時エラー -'-2147417848
-
実行時エラー3001「引数が間違...
-
ExcelVBAで、ユーザー定義型は...
-
VBAのエラー発生場所をメッセー...
-
VBS実行時エラー オブジェクト...
-
Outlook.ApplicationをCreateOb...
-
なぜエラーになるのでしょうか...
-
VB6+SQL サーバー 2000 で 実行...
-
AccessVBAでExcelを起動し、罫...
-
VBAで、定数式が必要ですのエラ...
おすすめ情報