VB5でデータを添え字を使って1バイトごとに抽出するプログラムを書きました。(For i = 1 To 128 Get #1,,Bwk(i) Next i) ←このプログラムをVBAで使いたいのですが、VB5と同じでいいですか?あと、これで1バイトごとに抽出できているでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

こんにちは。

itohhといいます。

基本的にVBとVBAは文法は同じだと思っていいと思います。

この程度のコードならば、質問するより試して見るなりヘルプをひくなり
したほうが早くはないですか?
エラーを自分自身で解決する(出来るだけ!)ことがスキルアップに
つながりますよ。
    • good
    • 0

Open も Get も VBA でステートメントとして使えます。



> これで1バイトごとに抽出できているでしょうか?

VBのコードをVBAに持ってこようとしているようだけど、
元のコードが信頼できるのかどうか分からないので、
「できるかどうか」までは、保証できません (^^;

でも、この程度だったら VBA のヘルプを引いた方が早いと
思うんだけど、Excel を持ってないんですか?
    • good
    • 0

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

このQ&Aと関連する良く見られている質問

QFor next使う場合、next iはできない?

vbsでFor next使う場合、next iはできないのですか?

for i = 1 to 2
msgbox ""
next i

をすると
"ステートメントの末尾が不正です"800A401
になります。

しかし
for i = 1 to 2
msgbox ""
next
にすると、問題ないです。

VBAではnext iでも実行できるけどVBSではだめなのでしょうか?
理由を教えてください。

Aベストアンサー

Excel2003(Office2003)は持ち合わせていないので、2002の場合なら・・
VBE上で
for i = 1 to 2
msgbox ""
next i
となっていたら、for の所にカーソルを持って行って、F1 キーを押せば
該当すると思われるものがピックアップされます。
あるいは、For まで打ち込んで、F1 とか
イミディエイトウィンドウ(Ctrl + G で出現)で、For まで打ち込んで、F1 とか
2002なら
---------------------
For キーワード
キーワード For は、次の構文で使用します。
For...Next ステートメント
For Each...Next ステートメント
Open ステートメント
-------------------------
となりますので、For Each...Next ステートメント をクリックすると
前回回答のがでます。
たしか、2002の場合はVBAのヘルプはインストール時のオプション扱いだった記憶・・
2003は分かりません。
蛇足ですがOffice2010のVBAのヘルプは今までで一番使いやすいです。
ところが2013では
『以前のバージョンの Office に付属していた開発者用リファレンス ヘルプ ファイルは、セットアップから削除され、
Microsoft Developer Network (MSDN) で参照できるようになります。』
だとさ (-"-)
http://technet.microsoft.com/ja-jp/library/cc178954%28v=office.15%29

VBSのヘルプは、ここから
http://www.microsoft.com/ja-jp/download/details.aspx?id=1406
scd56jp.exe をダウンロードして
実行するとインストール先を聞いてきます。OSがWinXPなら既定のフォルダは
C:\Program Files\Microsoft Windows Script\ScriptDocs
ですので、そこから script56.chm だけをお好きな所にコピーします。
他のものに用は無いので、コントロールパネルからアンインストールしてください。
または解凍ソフトをインストールして
http://win.just4fun.biz/WSH/WSH%E3%81%AE%E3%83%98%E3%83%AB%E3%83%97%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%85%A5%E6%89%8B%E6%96%B9%E6%B3%95.html
にて。

Excel2003(Office2003)は持ち合わせていないので、2002の場合なら・・
VBE上で
for i = 1 to 2
msgbox ""
next i
となっていたら、for の所にカーソルを持って行って、F1 キーを押せば
該当すると思われるものがピックアップされます。
あるいは、For まで打ち込んで、F1 とか
イミディエイトウィンドウ(Ctrl + G で出現)で、For まで打ち込んで、F1 とか
2002なら
---------------------
For キーワード
キーワード For は、次の構文で使用します。
For...Next ステートメント
For Each...Next ステートメント
...続きを読む

QVB6変数の宣言dim j,k,p,m,n as Integerは良くない?

お世話になります。

VB暦1年です。

汎用の変数宣言でタイトルのように
dim j,k,p,m,n as Integer
dim ssa,ssb as String

など、カンマ区切りで変数宣言を使っていたのですが
最近、知人にasの手前の変数は型どおり宣言されるが
その手前の変数はVariant型で宣言されてしまうと指摘されました。

指摘されるまで気にはしていませんでしたが
ウォッチで確認すると変数に代入されるまでは
型がVariant/Emptyとなってます。

以後、気をつければいいのですが
過去にコーディングしたプログラムにも多少、使用していて客先に納品してしまっているものもあります。
後々、問題になるのかな?

Aベストアンサー

おっしゃる通り、カンマで区切る場合は、
Dim j As Integer, k As Integer, p As Integer
という風にすべてAsで型を明示しないと、
Variant型になってしまいます。
つまり、
Dim j
Dim k
Dim p As Integer
とわけて書いた場合と同じです。
(VB.NETは、
Dim j, k, p As Integer
で全部Integerになるようなので、ややこしいですね)

すでにご存知とも思いますが、一般的にVariant型を多用しているコードは、宣言を見ても、どういう種類の値を使うかわかりづらいですし、比較対象の型を誤るというようなバグの原因になりやすいので、型を明示できるような状況で敢えてVariant型を使うべきではないです。

しかし、すでに納品してしまったコードについては、問題はメモリを余計に使ってしまうことくらいではないでしょうか?
他の人が気づかなかったことから考えるに、多分狭いスコープで使っていますよね? 比較対象や代入するべき型を誤るというようなロジックの誤りがない限り、少なくとも動作上の問題は発生しないと思います。ただ、直せる機会があるのであれば、直した方がいいとは思いますが。

おっしゃる通り、カンマで区切る場合は、
Dim j As Integer, k As Integer, p As Integer
という風にすべてAsで型を明示しないと、
Variant型になってしまいます。
つまり、
Dim j
Dim k
Dim p As Integer
とわけて書いた場合と同じです。
(VB.NETは、
Dim j, k, p As Integer
で全部Integerになるようなので、ややこしいですね)

すでにご存知とも思いますが、一般的にVariant型を多用しているコードは、宣言を見ても、どういう種類の値を使うかわかりづらいですし、比較対象の型を誤るというよう...続きを読む

QVB,NETでのGUIプログラムのテスト

こんばんは。
VB.NETを今日始めて触りました。
Java経験あり、VC++6.0を少し触ったことがあります。
FormでのGUIの作成に単体テストを行いたいのですが、単体テストのツールとしてNUnitを知りました。
単体テストツールをあまり触ったことがなく、GUIの単体テストとしてどのように利用することができるのか、ご教授いただきたいとおもい、質問しました。
JavaのときはJUnitというツールを少しだけ触ったのですが、サーバーサイドプログラムの単体テストに利用したまでで、今回のようなGUIの単体テストと言っても想像できません。。
単体テストのレベルとしては、テキストフィールドのサイズがいくつだとか、
コンポーネントの利用可・不可(enable)になるのでしょうか?
また、どのように利用するかの手順などを教えてください。

Aベストアンサー

単体設計者がだれかがわかりませんが、設計者に訊いた聞く方がいいと思いますが。。。

承認者=設計者ですよね?

もし自分で詳細設計されているのであれば、内部設計者(または結合テスト仕様書設計者)に訊く方が確かだと思います。
すでに結合テスト仕様書ができているのであれば、それを一読すると、どのレベルまで必要かも見えてきますよ。


ちなみに私の場合は
・IF・CASEなどの全てのケースが全て通る
・限界値テスト(未満値・MIN値・中間値・MAX値・超値)
が、単体の基本と考えております。

GUIだからと言わず、あくまで「単体」という考えで持たれてはいかがでしょうか?

>テキストフィールドのサイズがいくつだとか、コンポーネントの利用可・不可(enable)になるのでしょうか
それも単体のレベルだと思いますよ。結合でするレベルかどうかで判断がつくと思います。

「NUnit」は使用したことがありませんが、QTPと呼ばれるテストツールを利用したことがあります。
参考までにですが、その設計者は
・結合テストは、機能としてのストーリーを持っている。
・単体テストは、とにかくそのスポットスポットでの想定される値を見る。
ということを言っておりました。


>また、どのように利用するかの手順などを教えてください。
すいません。それはわかりません。

単体設計者がだれかがわかりませんが、設計者に訊いた聞く方がいいと思いますが。。。

承認者=設計者ですよね?

もし自分で詳細設計されているのであれば、内部設計者(または結合テスト仕様書設計者)に訊く方が確かだと思います。
すでに結合テスト仕様書ができているのであれば、それを一読すると、どのレベルまで必要かも見えてきますよ。


ちなみに私の場合は
・IF・CASEなどの全てのケースが全て通る
・限界値テスト(未満値・MIN値・中間値・MAX値・超値)
が、単体の基本と考えております。

...続きを読む

QVB6で電子天秤で測った重量を1分ごとに記録したいです。

前にも『VB6でPCと電子天秤をつなぎたいです』というタイトルで質問した者です。

みなさまのアドバイスのおかげでようやくPCと電子天秤をつなぐことができ、1秒に1回重量を測ることができるようになりました。

1秒間に1回というのは電子天秤のコマンドのなかに1秒間に1回というものがあったのでできましたが、できれば測定間隔を自由に変えることができるようにしたいです。

また、自分は『自動計測システムのためのVB6』という本を参考にして書いたのですが、この本だと計測したデータをテキストボックスに表示していてデータの取れる量が限られています。

直接HDにデータをためる方法はありませんでしょうか??

またまた超基本的なことで申し訳ありませんがどうか回答よろしくお願いします。

Aベストアンサー

MT-SICSのコマンド S は「安定している現在の重量の値を送信せよ」という命令です。
"S"という文字をシリアルポートから出力すれば、そのつど値が返ってきます。
VB6の場合、タイマーを使って1分ごとにコマンド S を送り、値を入力すれば良いでしょう。

またOSがVISTAでなければ、アクセサリーにハイパーターミナルがあるので
これでどのような値が帰ってくるかが確認できます。


下記から「MT-SICS Standard Interface Command Set - Reference manual」がダウンロードできます。
http://japan.mt.com/mt/resources/operatingInstructions.jsp

Q【VB2005】別のプログラムから別のプログラム起動

"A"というVB2005で、作成したプログラムがありまして、
メインのフォームがあり、
そこにボタンがあります。
Shellの関数を使って、クリックイベントで、
指定したExe"B"を立ち上げます。

そのExe"B"は、VB2005で作成したオリジナルのプログラムです。
プロジェクトは別で作った物と考えてください。

Exe"B"を起動した画面を[フォーム1]と考えて、
ボタンがあり、クリックすると
別の[フォーム2]が表示するはずなのですが、
特にエラーも掴まずに、Showで開くことができません。

しかし、Exe"B"からダイレクトに起動させて
ボタンをクリックしたら[フォーム2]が表示されます。

どうしたら、Exe"A"からExe"B"を起動して
Exe"B"からフォーム2を呼び出すことができるか、
考えられる要因などをアドヴァイスして頂けたら助かります。

Aベストアンサー

意味がよくわかりませんので、補足をお願いします。

A.EXE と B.EXE という実行ファイルがあり、それらは VB 2005 で
作ったもので……
A.EXE から Shell 関数で B.EXE を起動すると B.EXE が持っている
Form2 の表示が不可能となるが
A.EXE を起動していない状態で B.EXE を起動すると B.EXE が
持っている Form2 の表示が可能である。

という意味なのでしょうか?

A.EXE から B.EXE の起動と表示を行う箇所のコードも記述して
頂けると何かわかるかも知れません。


人気Q&Aランキング

おすすめ情報