シリアル通信プログラムを作っているんですが、シリアルから受信するときデータをバイト型で扱いたいのです。どうやらそのためにバイト型の変数を固定長で宣言する必要があるらしいのです。もし、これがstring型なら
Dim moji*100 as stringや
Dim moji as string
string=space(100)
などとすれば100の長さを設定できるようですが、
こういうことをbyte型の変数でする方法がわかりません。
どなたか教えてください。

A 回答 (2件)

Dim a(0 To 99) As Byte


または
Dim a() As Byte
ReDim a(0 To 99)
    • good
    • 0
この回答へのお礼

どうもありがとうございます。参考にさせていただきます。

お礼日時:2001/10/26 08:43

MSCommコントロールを使ったシリアル通信プログラムでは、


Byte型で受信するには、次のように宣言し受信します。

Dim byBuf() As Byte

固定長のデータを受信するには、RThresholdプロパティに長さを設定します。
すると、OnCommイベントで受信処理できます。
Private Sub MSComm1_OnComm()
Dim byBuf() As Byte

Select Case MSComm1.CommEvent
Case comEvReceive ' RThreshold プロパティで指定された数のバイトを受信しました。
 byBuf = MSComm1.Input
End Select
End Sub
    • good
    • 0
この回答へのお礼

どうもありがとうございました。なんとか解決しましたので締め切らせていただきます。

お礼日時:2001/10/27 10:37

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

このQ&Aを見た人が検索しているワード

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

QExcelの余白は固定できない?

Excel2000です。
印刷プレビューの余白が常に上下2.5、左右2、ヘッダー1.3で表示されます。水平垂直はチェックマークが付いていません。

すべて0.5に設定しても印刷は正常におこなえます。常時0.5で固定しておきたいのですが、
「新規作成」するたびに設定が元に戻ってしまいます。Excelは余白設定を固定できないのでしょうか?

「プリンタの余白を自動取得」という設定がどこかにあったような気がするのですが、これのせいでしょうか?
自動取得しなければ任意の数値で余白を固定できますか?

Aベストアンサー

> 常時0.5で固定しておきたいのですが、
> 「新規作成」するたびに設定が元に戻ってしまいます。Excelは余白設定を固定できないのでしょうか?

ご希望の余白などを設定したBookを自作のテンプレートとして分かりやすい名前を付けて、デスクトップなどに保存しておく方法をお勧めします。

保存した自作のテンプレートをダブルクリックすれば、ご希望のページ設定されたBookが起動します。

「定型ファイルをテンプレートとして保存するワザ」
http://www.nextone.jp/no060629/it/it02.html

上記URLはExcel 2003で説明されていますが、操作方法はExcel 2000でもほとんど同じです。
また、てんぷれーとの保存先が「Templates」フォルダに保存されるように説明されていますが、保存先は「Templates」フォルダ以外の場所でもOKです。

「Excelテンプレートの保存先」
http://oshiete1.goo.ne.jp/qa816891.html

Qbyte型をstring型として扱うには

今日の質問/マイページに反映されないので、再度の質問です。
windows2000-sp4/vb6-sp5環境です。ユニコードのデータをvbで直接入出力し、vb内でstring型で扱いたいとおもっています。今のところ、vbの入出力では、自動的にsjis/unicode変換がされるので、binaryで受け取り、string型にするのかなと思っています。byte型で受け取り、APIの"MoveMemory"("RtlMoveMemory")でstring型にcopyするのかなとは思っているのですが、うまくいきません。経験不足そのものです。vbでのbyte型とstring型双方向のbinaryな変換の方法をお教えください。

Aベストアンサー

dim s as string
dim b() as byte

'文字列 -> byte配列
b = s

'byte配列 -> 文字列
s = b

QExcel2010の行や列の固定

Excelで行や列を固定する方法について質問させていただきます。
例えばBの列を固定したい場合、Cの列全体を選択した状態で「ウィンドウ枠の固定」を選択すると固定することができますが、この方法だとAの列とBの列が固定されてしまいます。
Aの列を固定せずBの列のみ固定する方法はありませんでしょうか。
初歩的な質問で申し訳ありませんが、お答えいただければ幸いです。

Aベストアンサー

「ウィンドウ枠の固定」でなく、「ウィンドウの分割」を利用されたら如何かと。設定法は同じだけど、左(右)ウィンドウに這入ると右(左)ウィンドウが固定されます。左右2分割の場合ですね。
上下2分割、上下左右の4分割も出来る筈。

添付図は Excel 2013 の場合です。

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型を多用しているコードは、宣言を見ても、どういう種類の値を使うかわかりづらいですし、比較対象の型を誤るというよう...続きを読む

Qウィンドウ枠の固定@Excel

超初歩的な質問です。Excelでウィンドウ枠の固定がうまくいきません。1列だけを固定したいのに、周り3列10行くらいが巻き添えになってしまいます。そこの列を選択してから「ウィンドウ枠の固定」をクリックしたのですがダメでした。
やり方を教えてください。

Aベストアンサー

(1)列を固定(例A,B固定)
(2)行を固定(例 第1,2,3行固定)
(3)列と行を固定(例A,B列と第1,2,3行固定)
の3つができますが
(1)がやり方が正しくないため、(3)になっているのでは。
ーー
(1)はC1セルを選択して、ウインドウ枠の固定(隣列の一番上)
(2)はA4をセル選択して、ウインドウ枠の固定(隣行の一番左)
(3はC4をセル選択して、ウインドウ枠の固定(交差せるの1つ外側)
のセルで、ウインドウ枠の固定の操作をします。
ーーー
さらに応用で
第14行目、15行目を固定したいとき(そして1-13行目は見たくないとき、画面節約や、見易いので)、ウインドウ枠を固定せず、スクロールして行って、一番上の行が第14行目になるよう出した状態で、A15を選択して、ウインドウ枠の固定をする。
列も同じ。
ーー
(1)、(2)、(3)の状態の相互変更は、一旦現状の固定を解除してから、改めて行う必要アリ。

Qマクロで100マス計算! Dim i,j As Integer For i = 2 ToRang

マクロで100マス計算!

Dim i,j As Integer

For i = 2 ToRange(”A1”).End(xlDown).Row
For j=2 To Range(”B1”).End(xlToRight).Column

Cells(i,j).Value = Cells(i,1).Value * Cells(1,j).Value
Next j
Next i
Endsub

上記のように記述しましたが、
iの最終行が2となってしまっていますがなぜこのコードが間違っているのか分からないです。。どなたか教えていただけたら嬉しいです!

Aベストアンサー

確認してはいませんが…


>改行、スペースは実際にはきちんととっていますので気にしないでください
とのことなので、違っているのかもしれませんが、

>For i = 2 ToRange(”A1”).End(xlDown).Row
         ↓
 For i = 2 To Range(”A1”).End(xlDown).Row
で、うまくいきませんか?
100マス(10×10)と最初から決まっているので、範囲は 2 To 11 でも良いように思いますが…

改行、スペースなどが正しくなっているなら、Range(”A1”).End(xlDown).Rowの値が2以下になっている可能性が考えられます。(ということは、A1が空白セル、または、A3が空白セルなどなど・・)
A1が空白セルの場合は、
 For i = 2 To Range(”A2”).End(xlDown).Row
とするか、
 For i = 2 To 11
などとすることで、動作するのではないかと推測します。

QExcelの計算結果を固定したい

こんにちは。
Excelのシートに計算式が入っており、その結果を固定したいです。
計算式の結果を固定する方法でセルを選択後、F2→F9で固定できることはわかったのですが、
これでは1つのセルずつしか固定されません。
複数セルを選択してF2→F9を実行しても1つずつしか固定されませんでした。
そこで、シートごとあるいは複数セルごとに計算結果を固定できる方法はありませんか?
よろしくお願いします。

Aベストアンサー

シートを変えるのでしたら、シート全体を選択して「コピー」し、別のシートのA1セルがアクティブセルの状態で「形式を選択して貼り付け」で「値」にチェックをして「貼り付け」ます。

Q[VB.net] StringからByte配列への変換

皆さんこんばんは。
最近VB.NET2000でVisual Basicをはじめたのですが、どうにもString型の値をByte配列へ変換するやり方が分かりません。
VB6.0だとByte配列にStringを代入するだけでいいそうなのですが、.NETで代入しようとすると『型"String"の値を"Byteの1次元配列"に変換できません』というビルドエラーが表れてしまいます。


CByte( Mid(str,i,1) )
CLng( Mid(str,i,1) )

他にも上記コードのように一つずつ変換しようと試みたのですが、String中のある文字がワイドバイトらしく、System.InvalidCastExceptionが表れてしまいます。
("『"を上下反転したような文字)


ワイドバイトのStringを1バイトずつ区切ってByte配列やLong配列へ格納する手法というものはありませんでしょうか。

よろしくお願いします。

Aベストアンサー

Option Explicit On
Option Strict On
Option Compare Binary
Option Infer Off ' VB2008以上。
Class Q3512824

Shared Sub Main()
Dim Str1 As String = "ほげふが"
Dim ByteArray1 As Byte()
'Code Page 932 = Shift_JISもどき
'Code Page 65001 = UTF-8
ByteArray1 = System.Text.Encoding.GetEncoding(65001).GetBytes(Str1)
For Each Byte1 As Byte In ByteArray1
System.Console.WriteLine(Byte1.ToString)
Next
End Sub
End Class

QExcel  で2つウインドウ枠の固定はできますか?

Excel で横の列のウィンドウ枠の固定は出来たのですが、もう一つ縦のウィンドウ枠の固定もしたいのですが、、

教えて下さい。

Aベストアンサー

一度、枠の固定を解除してください。
横方向でA:C列、縦方向で1:4行を固定する場合はD5(固定位置の右下のセル)を選択して
「ウィンドウ」「ウィンドウ枠の固定」で設定できます。

QMicroSoft BasicのDim文とVisualBasicのDim文の違い

私が20年前にMicroSoft Basicを使っていたときは、DIM文はDIMENSIONの略で配列型変数の宣言に使っていました。

最近VisualBasicの勉強を始めたのですが、変数の宣言はすべてDim文になっており、昔のMS BasicのDim文と意味合いが変わっているのに驚いています。

ここで質問させてください。
・なぜ配列を意味するDimension文が変数の宣言なのか?
・どのバージョンのBasicからDim文の意味が変わったのか?

私が使用していたのはNEC N-Basic,N-88Basic,N-98Basicです。

Aベストアンサー

VISUAL BASIC のDimは ディメンジョンの略です。
私の経験ではVB2.0時代からありました。

配列0を考えた場合変数とおなじであるからだとおもいます


人気Q&Aランキング

おすすめ情報