Excel VBA 質問スレ Part67

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 33da-3+hg)
垢版 |
2020/06/26(金) 02:01:29.56ID:uDfmpksE0
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付ける

ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

※前スレ
Excel VBA 質問スレ Part66
https://mevius.5ch.net/test/read.cgi/tech/1589085825/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
280犬丸 ◆MRCYWQz4rc (ワッチョイ 8a01-c9XW)
垢版 |
2020/07/07(火) 20:31:41.96ID:2cf+0s2v0
>>278
和音の構成音(ドレミ・・・)を1つづつセルに入れられるから。
2020/07/07(火) 20:33:47.85ID:BPFgnJg70
なんでdominoとか使わないの?
282デフォルトの名無しさん (ワッチョイ 8a01-c9XW)
垢版 |
2020/07/07(火) 20:34:49.08ID:2cf+0s2v0
あと、PCにインストールされてる開発系はexcelだけだから。
283277 (ワッチョイ 8a01-c9XW)
垢版 |
2020/07/07(火) 20:41:28.24ID:2cf+0s2v0
つか、改変させたいmidiファイルが300個位あって、それの欲しいデータのexcelファイルへの読み込みはもう終わったわけ。
あとは、そのデータをちょい改変して、同様な300個のmidiファイルを吐き出すだけなんですよ。
284277 (ワッチョイ 8a01-c9XW)
垢版 |
2020/07/07(火) 20:42:49.00ID:2cf+0s2v0
だから、excelでバイナルファイルを作りたいのです。
2020/07/07(火) 21:00:27.95ID:yByKJQAn0
読み込めたなら反対をやればいいんじゃないの
2020/07/07(火) 21:05:07.15ID:CAdbpiIn0
>>283
著作権的にどうなの?
287277 (ワッチョイ 8a01-c9XW)
垢版 |
2020/07/07(火) 21:10:37.49ID:2cf+0s2v0
>>285
日本語だってそうだろ。
読むのは簡単。 書くのは大変なんだよ。

>>286
ネットで買った和音だけの簡単なデータで改変したデータを自分だけで使うぶんには問題ありません。
2020/07/07(火) 21:13:27.88ID:BPFgnJg70
じゃあそうすればいいじゃない?

所詮16進数の文字の羅列(Byteの配列とかにはさすがに出来てるんやろ?)なんだから
最終的には好きに料理してファイルに吐き出せばいい
ただ、1つのセルにバイナリなんて入れたら手作業で編集なんてしずらくてしょうがないけどな
あとセルの文字数上限もあるだろうし
midiの規格書読んだことあるのかしらんが、よくチャンクとかバイナリいじって編集しようと思うな
2020/07/07(火) 21:13:57.80ID:CAdbpiIn0
>>287
ならmidiの編集ソフトが使った方がいいね
290277 (ワッチョイ 8a01-c9XW)
垢版 |
2020/07/07(火) 21:14:00.67ID:2cf+0s2v0
>>286
そもそも観賞するためのmidiデータではなく音楽制作に使うツールとしてのmidiデータなんだよね。
2020/07/07(火) 21:14:32.40ID:/HMzap4UM
>>282
C#やVB.NETもあるけど?w
292277 (ワッチョイ 8a01-c9XW)
垢版 |
2020/07/07(火) 21:22:41.71ID:2cf+0s2v0
>>288
> midiの規格書読んだことあるのかしらんが、よくチャンクとかバイナリいじって編集しようと思うな
基礎的な部分は把握してます。

> 所詮16進数の文字の羅列(Byteの配列とかにはさすがに出来てるんやろ?)
これがわからないんです。たとえば、4D 54 68 64という16進のデータをexcelの1つのセルに書き込む方法を教えて欲しいのです。
293277 (ワッチョイ 8a01-c9XW)
垢版 |
2020/07/07(火) 21:25:44.85ID:2cf+0s2v0
で、excelの"C3"に、4D 54 68 64を書き込んで>>277のソースを動かして試してみたいんです。
2020/07/07(火) 21:26:04.88ID:CAdbpiIn0
これなんか良いんじゃね
https://openmidiproject.osdn.jp/Sekaiju.html
2020/07/07(火) 21:29:51.89ID:CAdbpiIn0
midiの規格ってそんな簡単じゃないから素人が扱っても音が切れたりトラックがずれたりして
結局使えないだろ
2020/07/07(火) 21:32:34.47ID:7cSgkxva0
ExcelのRange#valueにバイト列なんか入るわけないんだから自分がわかりやすいように文字列か数値に勝手に変換して勝手に入れろとしか言えない
2020/07/07(火) 21:34:29.92ID:MaHOmhaOM
Excelでmidiデータを取り扱うなんて常人の発想ではない
たぶんあなた以外に誰も方法はわからないから頑張ってその道の第一人者になって欲しい
2020/07/07(火) 21:35:25.31ID:BPFgnJg70
>>292
セルに入れられるのはあくまで文字列ってこと理解してないの?

その例なら「Byte(0):77 Byte(1):84〜」とかいう配列から「4D 54 68 64」という文字列にしなければセルには書き込めない
Byteはそれぞれの数値が入ってるだろうけど、hexかなんかで16進数にしたうえで(編集上必要あるか知らんけど)
join(array, " ")かなんかで1つの文字列にする

くっそ編集しずらいだろうけどな
299デフォルトの名無しさん (ワッチョイ 8ab5-5DWS)
垢版 |
2020/07/07(火) 21:44:56.92ID:tZSrRerM0
前スレのテキストフルスキャンの発想とコード提示してくれた人
改めて言わせて貰う
職場の一大イベントを乗り切ったわこれで
300デフォルトの名無しさん (ワッチョイ 8ab5-5DWS)
垢版 |
2020/07/07(火) 21:46:02.99ID:tZSrRerM0
改めて多大なるお礼を言わせて貰うが抜けてた

これのおかげですべての可能性が広がったわ
301277 (ワッチョイ 8a01-c9XW)
垢版 |
2020/07/07(火) 22:23:53.24ID:2cf+0s2v0
では、すみません。 >>277の質問はなしにして、↓の質問をお願いします。

1、変数に「4D 54 68 64」のバイナリデータを代入するソース
2、中身は「4D 54 68 64」だけのファイル
3、ファイル名は5ch.bin
こんなファイルを作るにはどのようなソースを書けばよいでしょうか?
302277 (ワッチョイ 8a01-c9XW)
垢版 |
2020/07/07(火) 22:29:17.16ID:2cf+0s2v0
>>228
allrenameというフリーソフトを使えばいいのじゃ。
2020/07/07(火) 22:32:51.69ID:CAdbpiIn0
>>301
バイナリ編集のソフト使えばいいんじゃね
304301 (ワッチョイ 8a01-c9XW)
垢版 |
2020/07/07(火) 22:42:26.54ID:2cf+0s2v0
>>303
すみません。 「VBAを使って」でした。
305デフォルトの名無しさん (ワッチョイ 0302-WfHi)
垢版 |
2020/07/07(火) 22:43:37.27ID:O/UE8zUS0
もはやExcelを使うことが目的化してる
2020/07/07(火) 22:44:27.22ID:yByKJQAn0
それもう読み込んだデータ無意味やん
フォーマット知らんけどセルに書き出せたんならファイルにもいけるやろ
307301 (ワッチョイ 8a01-c9XW)
垢版 |
2020/07/07(火) 22:54:30.10ID:2cf+0s2v0
>>306
基礎になるソースさえ教えてもらえれば、そこに色々付け加えてって自分に必要なバイナリファイルが作れるんですよ。
2020/07/07(火) 22:57:06.69ID:BPFgnJg70
まず書く努力をしよう
309デフォルトの名無しさん (スッップ Sdaa-DbYN)
垢版 |
2020/07/07(火) 22:57:22.32ID:0KBHODZEd
>>307
そろそろ死ねや
2020/07/07(火) 23:05:51.69ID:1TMQwlbY0
Excelの設定もAppDataの中身も場所も変えて無いのに、
下記のように表示されてマクロが読めません!

「起動フォルダーにある個人用マクロブックは記録のために開かれた状態でなければなりません」
2020/07/07(火) 23:09:31.21ID:exS2x9T+0
>>310
そのままググった
https://xtech.nikkei.com/it/pc/article/NPC/20070719/277869/
2020/07/08(水) 00:06:04.08ID:66yUE/saa
>>301
「'4D 54 68 64'」シングルかダブルで囲えば良いのでは?
「"4D 54 68 64"」
あるいは
いったんタブ区切りファイルtmp.tsvを途中で
中間ファイルとして介在させたらいいんじゃないですか?
2020/07/08(水) 00:14:08.99ID:4BPfKF9s0
ソースくれくれ君だからひんとあろうが自分で書かないよ、こういうやつ
314301 (ワッチョイ 2301-6wWl)
垢版 |
2020/07/08(水) 01:45:46.54ID:gPwSdoJG0
>>312
ありがとうございます。でも、「セルから変数を代入する」は止めました。で、>>277を変形してみたんですけど、↓のドコがまずいんですかね?

Sub test()
Dim TEMP As Variant
Dim I As Variant
Dim BIN As Variant

TEMP = Array(&H4D, &H54, &H68, &H54, &H68, &H64)
ReDim BIN(Len(TEMP) / 2 - 1) As Byte
For I = 1 To Len(TEMP) Step 2
BIN((I - 1) / 2) = Val("&H" & Mid(TEMP, I, 2))
Next I
Open "C:\1.BIN" For Binary As #1
Put #1, , BIN
Close #1
End Sub
315301 (ワッチョイ 2301-6wWl)
垢版 |
2020/07/08(水) 01:49:45.50ID:gPwSdoJG0
つか、
ReDim BIN(Len(TEMP) / 2 - 1) As Byte
この部分が何だかわかんないんですよ。
まず、ReDimとは何だ?と。
316301 (ワッチョイ 2301-6wWl)
垢版 |
2020/07/08(水) 02:05:21.42ID:gPwSdoJG0
目的は、
&H4D, &H54, &H68, &H54, &H68, &H64という6個のバイナリデータだけの、
1.BINというファイルを作りたい!
です。
2020/07/08(水) 03:08:12.79ID:F8fi/iH60
Excelでやる事ではない
以上です
2020/07/08(水) 03:11:39.83ID:F8fi/iH60
まずバイナリが何かすら分かってなさそうだしこの分だとmidiについても何も分かってなさそう
319デフォルトの名無しさん (ドコグロ MM43-jxlo)
垢版 |
2020/07/08(水) 03:24:41.69ID:llacuNM3M
ここで聞くより、「vba バイナリデータ」でググったほうが早そう
2020/07/08(水) 04:08:36.29ID:a4KGuVW5a
うちは会社のpcでバイナリ編集するのってセキュリティー的にアウトだし
2020/07/08(水) 05:18:34.50ID:hKBgVgLRr
この写真のように、例えば、3以下の数値をアクティブにする方法を教えて頂きたい

できれば、for next 構文はなしで

一発検索が望ましい。


https://i.imgur.com/EGujBbu.jpg
2020/07/08(水) 06:25:23.32ID:yrsbI81qa
>>315> ReDimとは何だ?と
思ったらググって下さい。
ReDim BIN(Len(TEMP) / 2 - 1) As Byte
よくわからないですが動的配列を半分の長さで確保してるようです。
512÷2-1=255
forで繰り返すMid関数のスタート引数が1からのため配列の0番を1つ引算してまふ
「4D 54 68 64」ではなくてスペースなし「4D546864」か
Replace関数でスペースを削除しましょう
出来た文字列"4D546864"に対して
ループで前から2文字ずつ"&H"を付け足しているので
おそらく"&H4D&H54&H68&H64"が生成されるのでしょう

なので>>314のコードは全く意味がありません。
323デフォルトの名無しさん (アウアウエー Sa13-c9t6)
垢版 |
2020/07/08(水) 06:49:42.97ID:yrsbI81qa
>>321> できれば、for next 構文はなしで

こんな縛りが無ければ普通にググって出てくるし以下で出来るだろうけど

複数のセルを選択する
http://officetanaka.net/excel/vba/tips/tips126.htm
2020/07/08(水) 07:11:29.93ID:x0V53xaA0
つーかわざわざselectする意味あんの?
2020/07/08(水) 07:47:38.02ID:8s/zJrIHa
わからないで書いてたのか
2020/07/08(水) 07:58:30.68ID:krt5VVG+d
>>316
簡単だろw
Dim btByte() As Byte
Dim lngFN As Long

btByte(0)=&H4D
btByte(1)=&H54
btByte(2)=&H68
btByte(3)=&H54
btByte(4)=&H68
btByte(5)=&H64

lngFN=FreeFile
Open strPath For Binary As #lngFN
Put #lngFN, btByte
Close #lngFN
2020/07/08(水) 08:02:35.63ID:krt5VVG+d
>>326
途中で送信しちまった。
スマホで書いてるからどっか間違ってるかも。

Dim btByte() As Byte
Dim lngFN As Long

Redim btByte(5) As Byte

btByte(0)=&H4D
btByte(1)=&H54
btByte(2)=&H68
btByte(3)=&H54
btByte(4)=&H68
btByte(5)=&H64

lngFN=FreeFile
Open strPath For Binary As #lngFN
Put #lngFN, , btByte
Close #lngFN
2020/07/08(水) 08:09:09.54ID:krt5VVG+d
>>314
というかね、Variantとは何か、Byteは何かとか考えた方が良い。
扱える範囲が違うということはメモリ上のサイズが違うということ。
6個のバイナリって6Byteのファイルってことだろ。
Variant1個で16Byteだぞ。
329301 (ワッチョイ 2301-6wWl)
垢版 |
2020/07/08(水) 09:06:02.86ID:gPwSdoJG0
みなさんレスありがとうございます。 感謝します。

>>327
ってことは、結局、↓でよいのでしょうか?


Sub test()
Dim btByte() As Byte
Dim lngFN As Long

ReDim btByte(5) As Byte

btByte(0) = &H4D
btByte(1) = &H54
btByte(2) = &H68
btByte(3) = &H54
btByte(4) = &H68
btByte(5) = &H64

lngFN = FreeFile
Open "C:\hogehoge.bin" For Binary As #lngFN
Put #lngFN, , btByte
Close #lngFN


End Sub
330301 (ワッチョイ 2301-6wWl)
垢版 |
2020/07/08(水) 09:09:44.11ID:gPwSdoJG0
あるいは、↓ですかね? ↑も↓も「Open "C:\hogehoge.bin" For Binary As #lngFN」の業でパス名が無効です、というエラーがでます。

Sub test()
Dim btByte() As Byte
Dim lngFN As Long

ReDim btByte(5) As Byte

btByte(0) = &H4D
btByte(1) = &H54
btByte(2) = &H68
btByte(3) = &H54
btByte(4) = &H68
btByte(5) = &H64

lngFN = btByte
Open "C:\hogehoge.bin" For Binary As #lngFN
Put #lngFN, , btByte
Close #lngFN


End Sub
2020/07/08(水) 09:23:12.29ID:yuZwXh1F0
>>330
>>307 > 基礎になるソースさえ教えてもらえれば、そこに色々付け加えてって自分に必要なバイナリファイルが作れるんですよ。
もういいやろ
332301 (ワッチョイ 2301-6wWl)
垢版 |
2020/07/08(水) 09:32:29.70ID:gPwSdoJG0
つか、 FreeFile関数ってのがあるんですね 知らなかったw
333301 (ワッチョイ 2301-6wWl)
垢版 |
2020/07/08(水) 09:38:09.26ID:gPwSdoJG0
じゃあ、↓のドコが悪いんだろ?

Sub test()
Dim btByte() As Byte
Dim lngFN As Long
ReDim btByte(5) As Byte
btByte(0) = &H4D
btByte(1) = &H54
btByte(2) = &H68
btByte(3) = &H54
btByte(4) = &H68
btByte(5) = &H64
lngFN = FreeFile
Open "C:\hogehoge.bin" For Binary As #lngFN
Put #lngFN, , btByte
Close #lngFN
End Sub
2020/07/08(水) 09:40:18.98ID:R5JQxD1z0
>>332
つか、知らないことの方が多いくせに知ったかすんな
2020/07/08(水) 10:17:02.56ID:67N0qsNYr
>>333
「どこが悪いんだろ」
ではなく、
「下記のソースで実行すると〜というエラーが出ます。
 調べたところこのエラーの意味は〜と理解していますが、〜と修正したら今度は〜というエラーが出ます。〜〜」
と言ったように、自分でなんとか解決したいという姿勢がないとサポートなんてしたくならないよ

本当は誰も君の相手なんかしなくてもいいんだ
君は人の時間をいただこうとしてることを考えること
2020/07/08(水) 10:25:36.83ID:kC98LgO60
みんなやさしいよね
どこまでも相手してあげてるんだから
337デフォルトの名無しさん (ブーイモ MMeb-+b0N)
垢版 |
2020/07/08(水) 10:37:36.28ID:vI+4Hlt3M
ハゲてきました。
市販の育毛剤で試すとエラーが出ます。
調べたところミノキシジルタブレットが聞くと理解しましたが、それを買って飲んだら今度は心臓ドキドキの副作用がでて命が危険だそうです。
どうしたらいいでしょうか?
2020/07/08(水) 10:37:36.28ID:yuZwXh1F0
暇つぶしでしょ
2020/07/08(水) 10:38:40.26ID:yuZwXh1F0
時間丸被りとかあんのな
2020/07/08(水) 10:41:28.04ID:Fq6DmaU+0
>>333
C:\に変なもの置くな
2020/07/08(水) 10:53:24.76ID:Ywdztm8P0
つーか動的配列にする意味あんの?
342デフォルトの名無しさん (ラクッペペ MMcb-0WwX)
垢版 |
2020/07/08(水) 12:08:46.81ID:lp5P2pBOM
>>341
行間を読め
343デフォルトの名無しさん (ワッチョイ cb8e-edot)
垢版 |
2020/07/08(水) 16:22:19.40ID:0tPjVu1x0
だから最初に馬鹿はお断りしときゃいいんだよ
344301 (ワッチョイ 2301-6wWl)
垢版 |
2020/07/08(水) 17:12:58.80ID:gPwSdoJG0
つか、書き込み先を、D:\にしたら動いたwww
>>327さん、どうもありがとう!!!

こんなシンプルなソースでバイナリが書けるんです。
どんなにググッてもこんなにシンプルなソースは出て来ません。
vba史上の快挙です!

Sub test()
Dim btByte() As Byte
Dim lngFN As Long
ReDim btByte(5) As Byte
btByte(0) = &H4D
btByte(1) = &H54
btByte(2) = &H68
btByte(3) = &H54
btByte(4) = &H68
btByte(5) = &H64
lngFN = FreeFile
Open "D:\hogehoge.bin" For Binary As #lngFN
Put #lngFN, , btByte
Close #lngFN
End Sub
2020/07/08(水) 17:43:43.08ID:4BPfKF9s0
はい次の方
346301 (ワッチョイ 2301-6wWl)
垢版 |
2020/07/08(水) 17:58:35.88ID:gPwSdoJG0
>>341
midiファイルというのはサイズが決まってないんですよ
347デフォルトの名無しさん (ワッチョイ 2de6-0WwX)
垢版 |
2020/07/08(水) 19:59:20.87ID:7XVFoSLh0
>>344
そりゃVBAではなく、VBですらなく
BASICの範疇だからな

基本過ぎてわざわざWEBに上げたりしない
348デフォルトの名無しさん (ワッチョイ a5ae-7/eX)
垢版 |
2020/07/08(水) 20:31:33.87ID:cTUxRwdY0
>>344
死ね
2020/07/08(水) 21:18:00.92ID:J4iDAbFT0
いつも馬鹿な質問ばかりで済みません。
Excelファイルをダブルクリックした際に他の人が先に開いていた場合、[読み取り専用]か、[通知]か聞かれます。
これをダイアログを出さずに最初から読専で開くようにすることは可能でしょうか?
(最初に開いた人は編集・保存できるという前提です)

外部から開く際のコントロールは簡単ですが、自分自身でコントロールするのは無理ですかね?
Workbook_Openでいろいろ試したのですが、どうもこのイベントよりも先にダイアログが発生しているようで、、、
無理だ、という回答でもいいです。ご意見ください。
2020/07/08(水) 21:25:31.07ID:eeGZOJTWa
>>349
https://www.shegolab.jp/entry/windows-excel-read-only
2020/07/08(水) 21:41:34.04ID:eWJ0cHmK0
>>349
まずちゃんと自分で調べよう
知識が伴ってないのにろくに調べもしないでは自分で解決どころか調べ方すら身に付かない

まぁ、はなから自分でやる気なんか無いのかもしれないが
2020/07/08(水) 21:42:45.60ID:J4iDAbFT0
>>350
情報ありがとうございます。
リンク先のものはだいたい既知の情報でした。
やっぱり自ファイルでの処理は難しそうですね。
2020/07/08(水) 21:46:48.09ID:J4iDAbFT0
>>351
いや、ここに書き込むときは相当調べて最後の頼みのつなで書き込んでます。
調べよう、と仰るということは、何かいい方法をご存じですか?
2020/07/08(水) 22:00:15.73ID:wtc6YQgJ0
>>353
ファイルの関連付けを変えて、マクロで迂回して。。。

。。。ここまで来るとウイルス判定かも(詳しい内容は自粛します)
2020/07/08(水) 22:05:22.90ID:J4iDAbFT0
>>354
う〜〜ん、あまり危ない橋は渡らないでおきます。
2020/07/08(水) 22:32:26.07ID:R5JQxD1z0
>>353
調べ方を調べてから言え
2020/07/08(水) 23:26:10.17ID:J4iDAbFT0
>>356
じゃあ、
>>349の繰り返しになりますが、、箇条書きにしますね。
●Excelファイルをダブルクリックした際の挙動についてです。
  ** つまり、外部から開くケースは除外です。(こちらのコントロールに苦はありません。昔から使っています)
    「外部から」とは、具体的には、、以下のケースなど。
    ・ Workbooks.Openの引数で制御する。(VBSからのOpenも含む)
    ・ ContextMenuの"新規作成"で開く。
●他の人が開いていた場合のケースです。
  ** 最初に開いている人は編集・保存ができる前提です。
    → つまり、FileAttributeを最初からReadOnlyにするケースは除外です。
●上記の際の、[読専]|[通知]を聞いてくるDialogをバイパスしたい。
  ** 「最初から読専で開きたいわけではなく、誰かが開いているときは最初から読専にしたい」
    → つまり外部から開くケースにあたらない。
● 自ファイル側で判定したい、、、Workbook_Openで試したが、このイベントより先に
  ダイアログが発生してる。

>>349とほぼ同じ内容ですが、これだけ書けばどこまでの理解で何を試したか読み取れますか?
2020/07/08(水) 23:40:00.14ID:4BPfKF9s0
てかそんなんできたらマルウェアの温床になるから出来ないって思っとけよ
共有化でも足りないんならあきらめろん
2020/07/08(水) 23:44:27.92ID:J4iDAbFT0
>>358
よくわかりませんが、わかりました。
本件Closeで。
2020/07/09(木) 00:12:21.12ID:dz7PM5ALa
>>346
midiはファイルの種類じゃない
2020/07/09(木) 00:12:27.29ID:ylhvfSy00
ファイルが書き込めない状態になってたら読み取り専用で開けばいいだけじゃん
2020/07/09(木) 00:13:47.48ID:dz7PM5ALa
>>357
きもい
2020/07/09(木) 00:17:27.90ID:dz7PM5ALa
社会で他の人も使うファイル勝手にいじるなよ
2020/07/09(木) 00:44:28.03ID:HzjnRl+40
>>363
お前には聞いてないから大丈夫だよ。
じゃ、お休み。
2020/07/09(木) 02:16:40.71ID:eQo6hEQpa
>>364
おまえに言ってない
2020/07/09(木) 03:10:18.53ID:rHxVo6X00
IE制御のついての質問。
マクロでIE制御を使ってウェブ情報を取り込んでいるんですが、連続で作動させると稀に止まることがあります。
バグった時にタスクマネージャーの詳細をみると毎回「ielowutil.exe」のプロセスだけ残ってるんですよね。
タスクマネージャーでielowutil.exe を右クリックして強制終了させると、また上手く作動するんですが、この ielowutil.exe プロセスを強制的に終了させるコードとかないですかね。

ぐぐっても英語とか読めないのでわからない。誰か助けて
https://www.mrexcel.com/board/threads/vba-automation-error-2125463506-8150002e.1079769/
2020/07/09(木) 03:59:15.57ID:uBlORkna0
taskkill /im ielowutil.exe
なんでもかんでもExcelでやろうとするな
368301 (ワッチョイ 2301-6wWl)
垢版 |
2020/07/09(木) 05:30:09.44ID:C69oBRyL0
つか、>>344のソースの

> ReDim btByte(5) As Byte
> btByte(0) = &H4D
> btByte(1) = &H54
> btByte(2) = &H68
> btByte(3) = &H54
> btByte(4) = &H68
> btByte(5) = &H64
この部分で、btByteという変数に6個の16進数を代入していますが、もっとエレガントに代入する方法はないでしょうか?
実は定型文みたいのを50個ぐらい入れなきゃならないのです。
2020/07/09(木) 06:03:23.76ID:hGjJ3XRlM
ないです
次の方どうぞ
2020/07/09(木) 06:34:39.36ID:pd2EiZRKd
>>368
そういうのは、あらかじめ用意したバイナリファイルから読み込んだ方がいいと思うんだけど
どうしてもソースに大量の16進数を直接書きたいなら
配列を使う方法
h = Array(&H4D, &H54, &H68, &H54, &H68, &H64)
For i = 0 To 5
 btByte = h(i)
Next

文字列を使う方法
h = "4D,54,68,54,68,64"
For i = 0 To 5
 btByte(i) = Val("&H" & Mid(h, i * 3 + 1, 2))
Next
371301 (ワッチョイ 2301-6wWl)
垢版 |
2020/07/09(木) 06:37:41.14ID:C69oBRyL0
>>370
ありがとうございます。 感謝します。
2020/07/09(木) 06:38:57.33ID:pd2EiZRKd
文字列を使う方法2
h = "4D,54,68,54,68,64"
For i = 0 To 5
 btByte(i) = Val("&H" & Split(h, ",")(i))
Next
2020/07/09(木) 06:57:38.94ID:150ctWWia
エレガント?
2020/07/09(木) 07:48:49.30ID:3iI6FAhKd
>>368
そのエレガントな方法を考えるのがプログラミングなんじゃないの?
50個をコードでどうにかするなら、それをコードに書かにゃならんからエレガントにはならん。
別の所に持って良いなら別途ファイルを用意しとけば良い。
設定とか50個程度ならどっかのシートに書いとくとかでも良い。
2020/07/09(木) 07:58:21.56ID:8/Q//t/ar
ほんとコードくれくれ君は自分で何も考えないな
あげる方も頭おかしいが
2020/07/09(木) 10:13:45.21ID:tVMvaFoW0
激しく同意する
ちなみにバイナリを作成するやり方で実行ファイルが作れるのでウイルシなんかも作れてしまうわけだが
2020/07/09(木) 10:32:17.05ID:VstlXiSO0
モジュールから単体動作する関数を切り取って、別のモジュールにコピーしたのですが
変数の宣言がないとエラー表示されました。何度見ても宣言は正しくされているので?です。
新しく変数宣言して、置き換えると動作します。
こんなことあるのですか?
2020/07/09(木) 10:47:12.19ID:ylhvfSy00
>>377
変数?定数?
2020/07/09(木) 10:48:52.16ID:VstlXiSO0
すみません。変数ではなく定数(const)でした。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況