[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2ch.scのread.cgiへ]
Update time : 07/24 13:47 / Filesize : 158 KB / Number-of Response : 580
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part67



1 名前:デフォルトの名無しさん [2020/06/26(金) 02:01:29.56 ID:uDfmpksE0.net]
!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

2 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 07:58:40.55 ID:PIx3bjtD0.net]
>>1
おちゅ

3 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 19:07:55.93 ID:ZjxMZdyJ0.net]
VBAでgrep検索を使いたいんだが教えてくれ。
https://website-note.net/vba/excel-grep-macro/
上のサイトのコードをコピペして動くまではいいんだけど、もう一つ条件を加えて
'キーワードを含むセルの情報をアウトプット時にキーワードの右のセルをアウトプットさせるようにしたい。
そこでOptionButtonを2つ作ってOpB1がtrueのときに普通に動いて、falseのときに
キーワードの右をアウトプットさせるコードを書いたんだがうまくいかない。
ifもselectcaseも試したんだけどだれか教えてくれ、VBA初心者で頭かかえてる。
つくったもの↓
'キーワードを含むセルの内容
If OptionButton1.value =then
省略 .Cells(lcnt, 7).Value = rFoundCell.Value
else
省略 .Cells(lcnt, 7).Value = rFoundCell.offset(0,1).Value

4 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 20:08:11.16 ID:SBXE4EMs0.net]
・OpB1って何ですか?丁寧に書いて
・せめてoutputCellInfoのソースは全部書いて
・=thenがガチなのかタイポなのか分からんから直打ちじゃなくてコピペして

5 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 20:20:30.07 ID:PIx3bjtD0.net]
日本語訳:

上のサイトのコードだと
キーワードを含むセルの値が、G列に出力されます。

これを以下のように変更したいです

キーワードを含むセルを検索したあと、このセルの値だけでなく、このセルのすぐ右側のセルの値をH列に出力したいです。

できたら、オプションボタンを新設して、右側セルの値を出力するかしないかを選択できるようにしたいです





面倒だから後はお前らにまかせた

6 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 20:26:55.66 ID:ZjxMZdyJ0.net]
>>4すみません、コードはります
Private Sub outputCellInfo(ByVal sTmpPath As String, ByVal sFilePath As String, ByVal sTmpSheetName As String, _
ByVal rFoundCell As Range)
Dim OptionButton1 As Boolean
If OptionButton1 = True Then
With ThisWorkbook.Sheets(STR_GREP_SHEET_NAME)
.Cells(lcnt, 2).Value = lcnt - 7
.Cells(lcnt, 3).Value = sFilePath
.Cells(lcnt, 4).Value = sTmpPath
.Cells(lcnt, 5).Value = sTmpSheetName
.Cells(lcnt, 6).Value = convertRange(rFoundCell.Column) & rFoundCell.Row
.Cells(lcnt, 7).Value = rFoundCell.Value
End With
lcnt = lcnt + 1
Else:
With ThisWorkbook.Sheets(STR_GREP_SHEET_NAME)
.Cells(lcnt, 2).Value = lcnt - 7
.Cells(lcnt, 3).Value = sFilePath
.Cells(lcnt, 4).Value = sTmpPath
.Cells(lcnt, 5).Value = sTmpSheetName
.Cells(lcnt, 6).Value = convertRange(rFoundCell.Column) & rFoundCell.Row
.Cells(lcnt, 7).Value = rFoundCell.Offset(0, 1).Value
End With
lcnt = lcnt + 1
End If
End Sub

7 名前:デフォルトの名無しさん (アウアウウー Sad3-fXbV) mailto:sage [2020/06/26(金) 20:40:26 ID:nEhmFRZ4a.net]
なんでElseに:ついてんだ?

8 名前:デフォルトの名無しさん (アウアウウー Sad3-d3ZO) mailto:sage [2020/06/26(金) 20:40:29 ID:1oZqQJala.net]
張り付けたオプションボタンと定義したのは別物じゃね

9 名前:デフォルトの名無しさん (ワッチョイ 3f01-bXJj) mailto:sage [2020/06/26(金) 20:50:43 ID:PIx3bjtD0.net]
つか、そもそもそのサイトのコードって正確に動く?
キーワードを含むセルを網羅しないんだけど

nothingになるRangeを比較対象に置いてるあたりがあれだ

10 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 21:05:20.01 ID:ZjxMZdyJ0.net]
Elseの:はミスです…
オプションボタンの定義…ググりなおします
>>9そうです、全文では無いんですよね…全文検索くんもDLして
編集しようとしましたが今の私では無理でした。



11 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 23:24:58.46 ID:SBXE4EMs0.net]
>>6
ぱっと見で分かるのは、OptionButton1が再定義されてて目的の値を参照してない事
Dim OptionButton1 を消して、>>3で自分で書いたようにOptionButton1.valueを評価してみて

あと、オブジェクト名にButtonって入ってるからコントロールだと思うけど、
もしコマンドボタンならこの用途でValueプロパティは使えないから、チェックボックスにしよう

解説サイトのソースも修正
grepExcelSheetメソッド
Loop While rTmpFoundCell <> rFoundFirstCell

Loop While rTmpFoundCell.Address <> rFoundFirstCell.Address

openExcelFilesメソッド
sTmpPath = Dir(sFilePath & "*.xls")

sTmpPath = Dir(sFilePath & "*.xls?")

それに伴って Do While sTmpPath <> "" 内の文を
If Not sTmpPath Like "*." & ThisWorkbook.Name Then 〜 End If
で括る

細かいこと言うと、Blean型を判定するときにリテラルと比較(= True や = False)はカッコ悪いから止めた方がいい
解説サイトではやってるけどね

12 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 23:25:32.05 ID:ZjxMZdyJ0.net]
>>3です
無理やりですが自己解決しました
標準モジュール2にアウトプットのコードをさわったものをコピペして
コマンドボタンクリックしたときの動作をIfでCallするようにしたら出来ました

でもやっぱりこのコード重いですね。どうにか軽くする方法無いものですかね。

13 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 23:28:15.39 ID:ZjxMZdyJ0.net]
>>11修正ありがとうございます、提案されたやり方も試してみます!

14 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 23:49:56.02 ID:kQH1YyZn0.net]
配列にすれば
あとやってるかとは思うけど自動計算と画面更新オフ

15 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 23:53:39.92 ID:ZjxMZdyJ0.net]
すみません、配列にするとはどういうことをすることですか?

16 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 00:17:07.69 ID:KqbSykww0.net]
Cells(1, 1).Value = "あ"
Cells(1, 2).Value = "い"
Cells(1, 3).Value = "う"
  ↓ ↓ ↓
Range("A1:C1").Value = Array("あ", "い", "う")

1個ずつじゃなくて、一気に放り込めってことでしょう。>>15

17 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 02:29:31.12 ID:gCUCp3Nd0.net]
そこを高速化してもしかたないのでは・・・

18 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 05:22:36.02 ID:J5vHObt/0.net]
他人にコード書かせて動かしたら遅いと文句言うのって人としてどうなの?

19 名前:デフォルトの名無しさん [2020/06/27(土) 08:53:12.31 ID:9qJBLgyD0.net]
>>

20 名前:デフォルトの名無しさん [2020/06/27(土) 09:24:13.86 ID:YKskLwzM0.net]
<<



21 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 09:43:15.25 ID:wwwZDyDia.net]
ビットシフトとは各桁を 1 桁左や右にずらすことです。

https://www.tipsfound.com/vba/02018

VBA にはそのような演算子はありませんが次のようにしてできます。
\ (2 ^ 1) ' 1 桁右へシフト
* (2 ^ 1) ' 1 桁左へシフト

22 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 10:06:21.20 ID:lV2RRwzl0.net]
実行時エラー '6':

オーバーフローしました。

23 名前:デフォルトの名無しさん [2020/06/27(土) 10:49:37.32 ID:gKvpRzl30.net]
今日は、タイマー作ってます。
IeTimerに
Private Sub IeTimer1_Timer()
Me.Label1 = Now
Me.IeTimer1.Interval = 1000 - (Timer Mod 1000)
End Sub
とかいて見たのですが、何か一秒の長さが変に感じます。
気のせいなんでしょうか?。

Excel 97
OS;Windows 98
機種;NEC VersaPro NX VP13C

24 名前:デフォルトの名無しさん [2020/06/27(土) 10:55:33.95 ID:gKvpRzl30.net]
今日は、タイマー作ってます。
MsgBox 36000*24
はエラーにならないが
MsgBox 24*3600
は実行時エラーオーバーフローしました。
となります。

どうしてなんでしょうか?。

25 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 11:02:47.04 ID:aTkq7ke+a.net]
>>23
教えてキャン>>98<<ビー
https://oshiete.goo.ne.jp/qa/597623.html
>Win98系のOSの場合ですが、処理中に、
頻繁にDoEventsを実行する必要があります。
 これは、OSの特性です。

26 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 11:13:07.90 ID:lV2RRwzl0.net]
釣りなのか本気なのか判断に困る質問だな

27 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 11:48:36.47 ID:P+1UXm0n0.net]
ヤベーイ

28 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 23:20:44.51 ID:J5vHObt/0.net]
動作がおかしいのは古いからじゃないかな

29 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 00:22:47.53 ID:/mLredfO0.net]
VBAで宣言せずに数式を書くと、式の中で最初に出てきた数字によって型が勝手に決められる仕様
小数点があったら、小数点以下が0でもDouble型
32767以下の整数はInteger型
32768以上の整数はLong型
になる

だから「24*3600」という式を書くと、最初に出てくる数字は24だからInteger型とみなされて、24*3600はInteger型の制限範囲を超えてるからエラーになる

変数を使わずに数値の型を指定したい時は型文字を使うか実数型にしてしまう
この場合は
24& * 3600 (Double型)
24.0 * 3600 (Double型)
24# * 3600 (Long型)
と書けばエラーにならない

ちなみにVBA(Excel)のバージョンは関係ない
最新でも仕様は変わってないから同じ所でエラーになる

30 名前:デフォルトの名無しさん (ワッチョイ 3f01-bXJj) mailto:sage [2020/06/28(日) 07:42:30 ID:sqW+tWgm0.net]
>>29
へー面白いね



31 名前:デフォルトの名無しさん (ワッチョイ 3f7f-nmuj) mailto:sage [2020/06/28(日) 07:45:50 ID:/E8O58u/0.net]
プロジェクトウィンドウが何かの表紙に名前順にソートされてしまったんですが、標準モジュール、クラスモジュール等の階層表示ってどうやって戻すのでしょうか

32 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 08:01:52.55 ID:8pre44tM0.net]
フォルダーの切り替え(黄色いフォルダの絵のアイコン) をクリック

33 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 11:43:32.56 ID:VHBre49Bd.net]
>>30
結構、常識だよ。
こういうエラーの時に真っ先に考える。
覚えておくと良い。
詳しく覚えなくても、勝手に型判定のせいかなと考えるだけで全然違う。

34 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 12:14:58.87 ID:dFUOn9oJ0.net]
適当なこと言っててワロタ

35 名前:デフォルトの名無しさん [2020/06/28(日) 13:50:31.47 ID:Gnbk8j2I0.net]
>>34
何が適当なんだ?
言語仕様の基本だろう
>>33に俺を言うべき

36 名前:デフォルトの名無しさん [2020/06/28(日) 13:50:52.16 ID:Gnbk8j2I0.net]
俺ではなくお礼

37 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 14:21:14.54 ID:t+bqi6uL0.net]


38 名前:デフォルトの名無しさん (ワッチョイ 8ff1-of6p) [2020/06/28(日) 14:41:16 ID:O22xrl4H0.net]
>>33


39 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 15:17:28.32 ID:IDO0V0ZPa.net]
dim 俺 as string

40 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 16:12:05.93 ID:WMjrpZfvF.net]
俺 = "童貞"



41 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 16:56:51.40 ID:69pcuKP2M.net]
Const 俺 As String = "童貞"

42 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 17:02:14.70 ID:YhC9oGcZa.net]
Do While 俺
俺 = 1
If 俺 > 1 Then
Exit Do
End If
Loop
MsgBox "happy"

43 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 17:20:31.84 ID:dFUOn9oJ0.net]
>>35
式の中で最初に出てきた数字によって型が勝手に決められる → 嘘
32767以下の整数はInteger型 → 嘘
24& * 3600 (Double型) → 嘘
24# * 3600 (Long型) → 嘘

これで適当以外の何なんだよ

44 名前:23 (ファミワイ FFb3-pKDl) [2020/06/28(日) 17:53:16 ID:n2mRaag0F.net]
Timerに1000を掛けて見ても何か変だと思ったら
想定より早くIeTimerが実行される時があるみたいだ。

マシンの性能が良すぎるんですかね。
取り敢えず+200にして解決としときます。

MsgBoxの方は型とか考えたくないので
兎に角勉強になりました。 ありがとうございました。

45 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 19:11:04.99 ID:LbQBFJ/O0.net]
>>24
MsgBox 24 * 3600   
MsgBox 24 * 36000

1行目はオーバーフローがでる
2行目はエラーが出ないで普通に計算されます

46 名前:デフォルトの名無しさん [2020/06/28(日) 19:21:56.72 ID:nTfCGwDP0.net]
特定のフォルダ内のファイルのファイル名を変えて、ついでにプロパティのコメントにも文字を入力したいです
for each f in fol.files
  f.name=ファイル名
  f.comment=コメント
next
みたいな感じでやりたいんですが、f.commentではだめなようです
どう書けばいいか教えてください

47 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 19:23:35.13 ID:LbQBFJ/O0.net]
Integer型 * Integer型 の計算結果が 32767を超えるとオーバーフローエラーがでる
Integer型 * Long型 の計算結果が 32767を超えてもエラーにならない

ってことじゃね

48 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 19:28:31.58 ID:Vk36drdU0.net]
win10でRS-232C使うとかなりの確率で
Set MSComm1 = New MSComm 
のところでエラーになります

どうにかなりませんか

49 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 19:52:40.03 ID:LbQBFJ/O0.net]
>>48
EasyComm ってのに変えたほうがいいかも

50 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 20:30:15.72 ID:LbQBFJ/O0.net]
>>46
変更後のファイル名が重複するんじゃね



51 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 20:32:56.52 ID:LbQBFJ/O0.net]
>>46
あとファイルの種類によってはコメントが無いのもある

52 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 20:35:06.31 ID:+IGHtKO4a.net]
イジカミジゴー

53 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 20:39:46.50 ID:yfJkjLDvM.net]
>>48
Win32API直叩きしたら?
自分で全部管理できるし、枯れた技術で安定してる

54 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 21:16:46.93 ID:yxdrwHPGa.net]
>>52
B'z乙

55 名前:デフォルトの名無しさん (アウアウウー Sad3-d3ZO) mailto:sage [2020/06/29(月) 10:38:25 ID:2N59jCILa.net]
excel標準でmscommの開発用のライセンス無いよね?

56 名前:デフォルトの名無しさん (アウアウカー Sac3-jwjG) [2020/06/29(月) 13:58:37 ID:T8IL5X90a.net]
B1の値に応じて、C1からC100の値が変動します
A1からA100までの文字列をB1に順番に入れていって、1回ごとにC1からC100を別シートのD列に上から順にコピーしていきたいです
A1からA100とC1からC100は、必ずしも100まで値が埋まっているわけではなく、途中までしか埋まっていないこともあります
別シートにコピーするときに、C列の空白分はコピーしないでD列に空白行を作らないようにしたいです

Array = Range(A1:A100)で配列になるらしいんですが、Forでループさせるときに1個ずつB1に入れていくところでつまずいてます
ここからどうやってA1からA100までを順番に取り出していけばいいのでしょうか?
それと、C列をコピーするときに空白のところまでで選択を止めて必要分だけコピーするにはどうすればいいですか?

57 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 14:21:14.85 ID:81b3XCdqM.net]
二次元配列を一つずつ取り出すときはArray(上からの番号,1)
空白行までのコピーは
with worksheets(1)
.Range(.Cells(1,3) ,.Cells(1,3).End(xldown)).copy
end with

58 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 15:29:59.45 ID:TB+oeC/70.net]
どういう配列が作られたのかがそもそもわかんないって話でしょ?

デバッグの仕方覚えて、Arrayに何が入るかを確認できるようになったほうがいいわ
どういう配列が入ってるのかも確認できずに中身取り出すとかそもそも間違ってる
一行ずつ実行しながらローカルウィンドウで確認すれば
例えばこんな感じで配列が作られるのが確認できる
https://i.imgur.com/wDjGPTf.png

59 名前:デフォルトの名無しさん (アウアウカー Sac3-jwjG) [2020/06/29(月) 15:49:01 ID:T8IL5X90a.net]
>>57
ありがとうございます
縦一行でも二次元配列というのになるんですね
基本的なことが分かっておらず、すみません

>>58
こんなのがあったとは・・・
活用させてもらいます、ありがとうございました

60 名前:デフォルトの名無しさん (ワッチョイ 3f01-bXJj) mailto:sage [2020/06/29(月) 15:52:32 ID:TB+oeC/70.net]
仮想COM使ってるバーコードリーダーからEasycomm使ってデータ読み取ろうとしたけどわからんかった
その辺の知識身につけたいんだけどとっかかりが分からない
知識ある人がうらやましい



61 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 16:45:10.65 ID:6d9dL1u1a.net]
>>60
セルに入力するだけなら
USB接続のバーコードリーダーでピッピするだけ
いったい何のデータ?

62 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 17:04:47.20 ID:TB+oeC/70.net]
>>61
いわゆるキーボードモード(USB HID)になってるようなバーコードリーダーならそうなんだけどね

今使ってるのは仮想COM(USB COM)の設定になってて、HIDに切り替えようとするとPC再起動
しないといけなかったり、何かと面倒なんだわ
COMモードじゃないとシステムに入力出来なかったりするものもあるしね
勝手にやっちゃうと職場の他の人に迷惑かけるし

そこでなんとかCOMモードのままでHID的にエクセルに出力できないかなって。
NW7のバーコード読取り結果を出力させたいってだけなんだけど、うまくいかなかった

63 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 17:16:51.22 ID:6d9dL1u1a.net]
基幹システムとExcelが分離してるなら
キーボードを別のキーボードにするだけの事だから
数千円でUSBバーコードリーダー買ってきてぶっ刺した方が早そう

64 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 17:27:14.16 ID:TB+oeC/70.net]
おっしゃる通りなんだけど
そこに立ちはだかる「セキュリティ?」の壁なんだわ
特にハードは目に見える分、よく分かってないお偉いさんでも口挟んでくる
おれ超末端だからハード新規導入は無理だ
ソフトは誤魔化せるんでこっちから攻めたかった

65 名前:デフォルトの名無しさん [2020/06/29(月) 17:37:54.02 ID:6d9dL1u1a.net]
それ、どっちがセキュアなんだかw

SD120(バーコードリーダー)を仮想シリアル通信で利用する
https://kagamikarasu.net/sd120_barcodereader_serial/
>これでプログラムに組み込むのが容易になるかと思います。

その先は知らん!

66 名前:デフォルトの名無しさん (ワッチョイ cfda-NJGG) mailto:sage [2020/06/29(月) 17:47:36 ID:pfpn6QaF0.net]
>>64
上司に黙ってソフト変更とかするほうがセキュリティー的にNGだろ

67 名前:デフォルトの名無しさん (オッペケ Sra3-G+5W) mailto:sage [2020/06/29(月) 17:50:11 ID:j9Yq0PlQr.net]
業務時間も資産も使うんだし相談なり申請なりはしとけよ

68 名前:デフォルトの名無しさん (ワッチョイ 3f01-bXJj) mailto:sage [2020/06/29(月) 17:50:20 ID:TB+oeC/70.net]
ちょ、そこで終わられても

69 名前:デフォルトの名無しさん (ワッチョイ cfda-NJGG) mailto:sage [2020/06/29(月) 18:01:00 ID:pfpn6QaF0.net]
うまくいかないって具体的なエラーや表示もないし
どこまでできて何ができないか書いてないよね

70 名前:デフォルトの名無しさん (ワッチョイ 3f01-bXJj) mailto:sage [2020/06/29(月) 18:11:42 ID:TB+oeC/70.net]
セキュリティー的にはな、
でもうちのは「セキュリティ?」だから
>>69
一応何らかのデータは取得できてて、不正確な数字やらスペースやらは羅列される
まぁそもそも仕組み分からず動かしてる段階で自分としては納得出来てないんで
その辺を学習できるとっかかりが見つかればと思って書いてみただけ
心当たりなければいいよ
いそぐものでもないし課題の1つとして気長に取り組んでみるわ



71 名前:デフォルトの名無しさん [2020/06/29(月) 18:19:31.08 ID:6uUvaw7SM.net]
関係ないけどcomってコミュニケーションのCOMでいいんだっけ?

昔 .com をカンパニーだと思ってたワシ

72 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 18:42:30.00 ID:6d9dL1u1a.net]
>>70
データ変換はこのスレの範疇なようなスレチの様な
1次元のいわゆる白黒バーコードはバイナリだから
https://ja.m.wikipedia.org/wiki/シリアルポート
とキーエンスのバーコード講座NW7
https://www.keyence.co.jp/ss/products/autoid/codereader/basic-nw7.jsp
でもお勉強しないとわかりません。

73 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 18:57:10.02 ID:2GVfwDQBr.net]
>>70
通信パラメタ(とくにbps)は合わせたのか?
とりあえずシリアル通信についてちゃんと勉強してからやれ

74 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 19:27:50.46 ID:TB+oeC/70.net]
>>72
さんきゅ
目通してみる
>>73
パラメータはバーコードリーダのマニュアルに載ってたんでそれ使った

最後に試したのが1年ぐらい前なんで
そのうちまたやってみるわ
ほんとはバーコードリーダを家に持ち帰れればいろいろ実験できるんだけどなぁ
職場のPCだと手荒な実験できないんで捗らない

75 名前:デフォルトの名無しさん (アウアウエー Sabf-PKxn) mailto:sage [2020/06/29(月) 19:33:50 ID:6d9dL1u1a.net]
>>74
同じ品番のバーコードリーダーを買いましょうw

76 名前:デフォルトの名無しさん (ワッチョイ cfda-NJGG) mailto:sage [2020/06/29(月) 19:40:44 ID:pfpn6QaF0.net]
なんでわざわざコンプライアンスを破ろうとするのかわからん

77 名前:デフォルトの名無しさん (スップ Sddf-uLB2) mailto:sage [2020/06/29(月) 20:58:53 ID:p0BvfhePd.net]
>>70
昔、そういうハードのサポートしてた。
POS関連でバーコ―ドリーダー、レシートプリンタ、何とかディスプレイ(金額表示)、キャッシュドロワーとか。

シリアルならフロー制御がどうなってるかとか含めて、ちゃんと設定しないとダメだぞ。

78 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 22:23:41.83 ID:R8I/2vyw0.net]
ユーザーフォームに元に戻すボタンを作ろうと
奮闘中
・ブックやシート、列行の削除や挿入などはやらない
・セル内の数値同士の計算などをやらせる

基本的に無理だから*2のに対しては/2のボタン
とか逆を割り当てていこうかと思ったら四捨五入で座礁しますた
記録して元に復元させるってやり方かぁ
ムズそうすぎてちょっとあきらめてる
使用者には間違えるなと言うしかないか…

79 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 22:35:48.51 ID:6d9dL1u1a.net]
>>78
間違えるないうようなユーザーフォームな時点でな
ロジカルなシンキングな出来てないな

80 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 22:40:32.32 ID:R8I/2vyw0.net]
>>79
ユーザーフォームのボタンの配置とか割り当てとかタブ分けとか悪戦苦闘してる
そこらへんのセンスがないんだよぁ



81 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 22:44:33.56 ID:9POaIpQ1a.net]
>>80
作業を分けてフローチャートを紙に書いてみた方が良いよ
頭の中の整理できるから

82 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 22:50:58.30 ID:R8I/2vyw0.net]
一応タブ分けしてみた
一番左はデータを指定したシートに全部読み込む

次のタブで選択セル±の反転をさせる
最初はabsで絶対値にすればいいかと思ったけどマイナス値が必要な数値があったため*-1で

その次のタブで四捨五入
選択セルを0.00まで四捨五入するボタンと
0.0まで四捨五入するボタン

最後のタブで選択セル-A列にある数値の
引き算をさせるボタン

なんか工程毎にタブ分けしてみたけど
慣れないとみんな使いにくそう
なかなかなぁ

83 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 23:04:34.75 ID:SxZPiP67a.net]
>>82
作業工程ごとに選択肢が複数あって
それぞれに元に戻すボタンをつけるの?
囲碁や将棋ソフトじゃないんだからさ
しかも完成しても使いにくいとか
考えたくないくらいめんどくせー、わし降りた。

84 名前:デフォルトの名無しさん (ワッチョイ 3fb5-jCQM) mailto:sage [2020/06/29(月) 23:31:00 ID:R8I/2vyw0.net]
>>83
そうなんよ、±反転はまぁいいとして
四捨五入と最後のまとめ計算がなぁ…と

85 名前:デフォルトの名無しさん (ワッチョイ 0fda-H7K1) mailto:sage [2020/06/29(月) 23:34:38 ID:PVh3udJT0.net]
操作する前に、シートをコピーして非表示にしとけば
戻すボタンでコピーしておいたシートに差し替えて戻すw

86 名前:デフォルトの名無しさん (ワッチョイ cfda-NJGG) mailto:sage [2020/06/30(火) 00:16:48 ID:HFjntDoM0.net]
間違えることくらいあるだろう
人間だもの

87 名前:デフォルトの名無しさん (アウアウエー Sabf-PKxn) [2020/06/30(火) 00:22:19 ID:l6PnVpoXa.net]
>>84
タブじゃなくてWordの葉書作成ウィザードみたいにしたらどうかな
アプリのインストールみたいに
順番に選択肢や入力欄があって
下にボタンで進んで行くイメージ[<<戻る][次へ>>][完了]

88 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 08:45:53.97 ID:LUNyPqILd.net]
>>84
根本的な考え方が違う。
フォームの内容を全部ユーザー定義かクラスに持たせて、そこ経由で動作させるようにする。
何かの動作はユーザー定義を元に動作させ、ユーザー定義をフォームに読み込むようにすれば簡単だ。

89 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 17:46:29.02 ID:HFjntDoM0.net]
普段からそういうの慣れてる人ならできるだろうが初心者に言っても無理だろ

90 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 18:08:03.74 ID:ulIgP7Tu0.net]
>>87
ありがとう、かなり見やすくかるかも
そのやり方でも作ってみるよ

>>88
ごめん、全く理解できん素人なので
教えてとは言えないからもう少しだけわかりやすく言ってもらえると
でも導入は厳しそうかなぁ



91 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 18:34:02.50 ID:iUIa6Vpk0.net]
配列の勉強中です
1行目にタイトルが入っていて、2行目以降に値が入っているシートで、C列に"年"、D列に"月"、E列に"日"が入っています。
そこで、同じ行のA列にC〜Eの値を結合して「年/月/日」の表示にしたいのですが、配列を使うにはどう書けばいいでしょうか?

Sub Test()

Dim i As Long
Dim LastRow As Long

LastRow = Cells(Rows.Count, 2).End(xlUp).Row

ReDim MyArray(LastRow - 2, 3) As Variant
ReDim DayArray(LastRow - 2) As Variant

MyArray = Range("C2:E" & LastRow)

For i = 0 To LastRow - 2
DayArray(i) = MyArray(i, 1) & "/" & MyArray(i, 2) & "/" & MyArray(i, 3)
Next i

Range("A2:A" & LastRow) = DayArray

End Sub

92 名前:デフォルトの名無しさん [2020/06/30(火) 18:39:14.24 ID:Z3NkR/bn0.net]
数式張り付けろや

93 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 18:47:22.61 ID:x94da/wE0.net]
>>91
代入先がLastRow-1行1列の2次元なら配列もそうせんと

94 名前:91 mailto:sage [2020/06/30(火) 19:05:07.51 ID:iUIa6Vpk0.net]
>>93
すみません。書き方を教えてください

95 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 19:24:15.34 ID:x94da/wE0.net]
>>94
何の書き方?配列サイズを代入先セル範囲の行数と列数分用意するだけだぞ

96 名前:91 (ワッチョイ cfcc-pPzt) mailto:sage [2020/06/30(火) 19:40:39 ID:iUIa6Vpk0.net]
↓ですか?
"インデックスが有効範囲にありません"のエラーがでます

Dim i As Long
Dim LastRow As Long

LastRow = Cells(Rows.Count, 2).End(xlUp).Row

ReDim MyArray(LastRow - 2, 3) As Variant
ReDim DayArray(LastRow - 2, 1) As Variant

MyArray = Range("C2:E" & LastRow)

For i = 0 To LastRow - 2
DayArray(i, 1) = MyArray(i, 1) & "/" & MyArray(i, 2) & "/" & MyArray(i, 3)
Next i

Range("A2:A" & LastRow) = DayArray

97 名前:デフォルトの名無しさん (ワッチョイ fff7-pPzt) mailto:sage [2020/06/30(火) 19:42:59 ID:s83lPCQk0.net]
配列数クソめんどいからこれでいいよ
Sub test()
Dim endRow As Long
endRow = ActiveSheet.UsedRange.Rows.Count
Dim ary As Variant
ary = Range(Cells(1, 1), Cells(endRow, 5)).Value
Dim i As Long
For i = 1 To endRow Step 1
ary(i, 1) = VBA.DateSerial(ary(i, 3), ary(i, 4), ary(i, 5))
Next i
Range(Cells(1, 1), Cells(endRow, 1)).Value = ary
End Sub

98 名前:デフォルトの名無しさん (ワッチョイ fff7-pPzt) mailto:sage [2020/06/30(火) 19:47:07 ID:s83lPCQk0.net]
range.valueからできる二次元配列の開始番号は0ではなく、1ですねえ

99 名前:91 mailto:sage [2020/06/30(火) 20:10:45.24 ID:iUIa6Vpk0.net]
>>95,97,98
動きました!ありがとうございます。

100 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 20:21:46.34 ID:h7LW9tmr0.net]
0番目のセルは無いのに0番目の配列要素はあるから面倒臭いよな



101 名前:デフォルトの名無しさん (ワッチョイ 4f7c-H7K1) mailto:sage [2020/06/30(火) 20:28:40 ID:x94da/wE0.net]
場合によってはoffset(i)にすればよい

102 名前:91 mailto:sage [2020/06/30(火) 20:44:53.74 ID:iUIa6Vpk0.net]
すみません勘違いをしていました。最終行の

「Range("A2:A" & LastRow) = DayArray」

だと、A列が2行目以降空欄になってしまいます。

「Range(Cells(2, 1), Cells(LastRow, 1)) = DayArray」

も同じでしたが、

For i = 2 To LastRow
Range("A" & i) = DayArray(i - 1, 1)
Next i

だと入りますが、できれば一括で置き換えたいので、正しい書き方を教えてください

103 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 20:53:49.15 ID:x94da/wE0.net]
>>102
入力先のセルは1列分なのにDayArrayは2列分あって2列目に年月日が入ってる
ReDimを見直せ

104 名前:91 (ワッチョイ cfcc-pPzt) mailto:sage [2020/06/30(火) 21:20:49 ID:iUIa6Vpk0.net]
>>103

Forの処理をこれに変えたらできました。ありがとうございます

DayArray(i - 1, 0) = MyArray(i, 1) & "/" & MyArray(i, 2) & "/" & MyArray(i, 3)

105 名前:デフォルトの名無しさん (スプッッ Sd5f-at/t) mailto:sage [2020/06/30(火) 21:53:25 ID:5LSCXiWjd.net]
ListView(lvw1、lvw2)を2つ用意して、それぞれに同じデータを同じ順番に追加した状態です。
矢印キーの上下でlvw1とlvw2の同行選択状態ってどうやってやるんですか?

106 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 22:01:34.74 ID:3GBrKjbXa.net]
>>105
1と2で同じ操作をやりたいなら、別プロシージャに切り分けて(関数化)それをそれぞれに処理する方がわかりやすい

107 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 22:14:31.69 ID:x94da/wE0.net]
>>105
keydownイベントで上下の時になんやかんやする

108 名前:デフォルトの名無しさん (ワッチョイ 4f7c-H7K1) mailto:sage [2020/06/30(火) 22:19:33 ID:x94da/wE0.net]
操作に関わらず一緒でいいならchangeイベントで楽に済ませられるが…

109 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 22:39:03.05 ID:ulIgP7Tu0.net]
Sub 四捨五入()
Dim PP As Range
Dim SELU As Range Set PP = Selection.EntireRow Set PP = Intersect(PP, Range("G:AE")) If WorksheetFunction.Count(PP) = 0 Then Exit Sub Set PP = PP.SpecialCells(xlCellTypeConstants, xlNumbers) For Each SELU In PP SELU = Round(SELU, 2) SELU.NumberFormatLocal = "0.00;-0.00;0" Next SELU End Sub

昨日の俺です
こんな感じで四捨五入をしてる
やはり記録するかコピーしといて間違えたら戻す作戦かなあ

110 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 22:56:39.68 ID:RrxBtxCBr.net]
A列とB列にXYデータが書かれているファイルがある

このファイルが複数あり、データを縦にくっつけてひとつのファイルにする方法をお願い致します。



111 名前:デフォルトの名無しさん (ドコグロ MMc3-qQym) [2020/06/30(火) 23:33:01 ID:ayj87xxdM.net]
>>110
「vba 別のブック間 コピー」でググればそれなりの答えのサイトは出てくるよ

112 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 16:24:36.34 ID:/ZTplk5x0.net]
グラフの列の範囲を1つ進めて、範囲が変わったグラフを眺めてまた次の範囲を選択するマクロにしたいのですが、うまくいきません。
sleepで5秒待機するループにすると、マクロが終わるまでグラフはそのままです。
何か良い方法はありますか?

113 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 16:38:43.05 ID:ufrQ+5Zi0.net]
新しい表示にしてから待機したらいいんでないの

114 名前:デフォルトの名無しさん (ワッチョイ 1ecc-VQSO) mailto:sage [2020/07/01(水) 17:00:30 ID:JVz0cdM50.net]
DoEvents

115 名前:デフォルトの名無しさん (ワッチョイ 3a33-h2ht) mailto:sage [2020/07/01(水) 17:01:38 ID:wdJg4V2k0.net]
眺め終わったら自分でボタン押す仕様にすればいい

116 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 18:02:59.35 ID:cdm/n45Wa.net]
眺めるってw

117 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 18:14:23.56 ID:BGy1oUher.net]
A列に上から1万個くらいのデータがある。

ある値以下なら行全体削除、上詰めにするマクロをお願い致します。


ググってもまとをえたのがなく困ってます。

118 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 18:21:37.82 ID:ufrQ+5Zi0.net]
>>117
作業列作ってある値以下なら1立てる→1でオートフィルタ→行削除

119 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 18:24:14.85 ID:g4YauoQu0.net]
>>117
どうせ暇なんだろ、1万くらい手作業でやれよ

120 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 18:24:43.29 ID:v2a99oiHF.net]
>>117
範囲をテーブルにする
条件に当てはまる行のa列から、データの入ってる最終列までClearContents
で、テーブルをある列基準に並び替え



121 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 18:34:27.89 ID:5XfsDMDI0.net]
wordをcomで操作しているんですが、基本的にcomは
同期処理できないんですか?
たとえば、よくあるprintout(wordVBAの)〜Set wordApp = Nothing
の流れなんかは、Application.Waitを入れないと印刷される前に
終わってしまいます。

122 名前:デフォルトの名無しさん [2020/07/01(水) 18:38:53.74 ID:34UZRJ820.net]
>>117
dim r as long
dim was as excel.worksheet
set we=activesheet
Do while r>0
if ws.cells(r,”A”)<ある値 then
ws.rows(r).delete shift:=xlup
else
r=r-1
end if
loop
パフォーマンスは知らん

123 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 19:21:24.82 ID:g4YauoQu0.net]
そして動かないとか言ってくる初心者

124 名前:デフォルトの名無しさん (ワッチョイ 8f5f-ewff) mailto:sage [2020/07/01(水) 19:44:41 ID:l3YNJLMh0.net]
deleteは重いわ誤作動起こしやすいわいいことないよな

125 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 19:59:04.37 ID:fKGbFrld0.net]
誤作動なんて起こすの?
単にセル番号計算ミスしたスクリプト書くだけなら理解できるけど、誤作動なんてあったら使えないな

126 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 20:06:30.76 ID:Tir3cVcXa.net]
フィルターかけてカレントリージョンでコピーして新規シートに貼り付けが良さそう

127 名前:デフォルトの名無しさん [2020/07/01(水) 21:01:32.84 ID:v34eJavmM.net]
>>122
(r,”A”)<ある値
顔文字に見えたわw

128 名前:デフォルトの名無しさん [2020/07/01(水) 21:43:01.53 ID:H9TCgnXe0.net]
Webで見たぐらいの初心者なのですが
書式設定の複数1行列を色変える作業が
200回ほどやらなきゃいけなく
マクロ組んでみようかと頑張ったのですが
上手くいきません

Dim a As Integer
Dim row1 As Integer
row1 = 3
For a = 0 To 200
Columns("row1 + a , P + a").Select
Selection.Format Conditions.以下略
Selection.Format Conditions以下略
With Selection.略
Selection略
Selection略
Selection略
End With
Next a

row1を無くしてb=3
これをColumnsをRange(b+a,b+a)
で出来ますでしょうか?
Rangeの指定カッコ内では数式を入れられないとかありますか?

129 名前:デフォルトの名無しさん [2020/07/01(水) 22:17:29.48 ID:H9TCgnXe0.net]
Range(cells(a,1),cells(a,16)).Select
でやってみます

130 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 22:45:11.71 ID:xxJ42X4qa.net]
何故初心者はSelectしたがるのか



131 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 23:36:22.71 ID:yn1qRX7nM.net]
>>35
>>130
マクロの記録がその手のコードを生成するからでしょ

132 名前:デフォルトの名無しさん (ワッチョイ 87da-z1wt) mailto:sage [2020/07/02(木) 01:40:39 ID:Y/spJvDG0.net]
条件付き書式とかは?

133 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 02:34:51.75 ID:G8g1bCvWr.net]
このメニューで、空白セルにチェック入れると空白セルを選択しますね。

では例えば値が100以上など、条件つきのセルを選ぶ事はできますか?

https://i.imgur.com/zyDAZ0X.jpg

134 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 04:05:38.32 ID:vmiMC9VK0.net]
教えてください。
imagemsoの名称からfaceidに変換することは可能でしょうか?
もしくはmsoBarPopupでimagemsoを使用することは可能でしょうか?

135 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 06:28:30.74 ID:PEAIWqln0.net]
>>133
選んだセルをどうしたいかによるけど、オートフィルかけて選択とか

136 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 08:20:19.52 ID:yX39WODNa.net]
他人の作ったコードはなぜ読む気がしないのか

137 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 10:30:47.89 ID:KAImZ3Owa.net]
読む必要はないからな

138 名前:デフォルトの名無しさん (ワッチョイ 1e8e-0gyK) [2020/07/02(木) 12:31:17 ID:cWLbwDw40.net]
馬鹿の特徴

「教えて」「助けて」

で始まる書き込みをする

139 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 13:06:37.09 ID:vmiMC9VK0.net]
>>138
馬鹿でもいいです。
じゃあ、模範的な質問の仕方を教えてください。

140 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 15:30:35.30 ID:NxUusdo6a.net]
そんなものはない



141 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 16:07:39.62 ID:fLeksvw30.net]
>>140
ありがとうごさいました。参考になります。

142 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 16:13:40.59 ID:pSHiLlcA0.net]
馬鹿の特徴

人にマウントしたがるだけで
質問への答えは出さない

143 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 17:04:38.40 ID:2Xt/GnSW0.net]
>>142
馬鹿でもいいです。
じゃあ、模範的な回答の仕方を教えてください。

144 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 17:44:48.44 ID:Q59tEF0c0.net]
そんなものはない

145 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 17:45:12.17 ID:q3lU8bAMa.net]
そんなひとはいない

146 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 21:22:15.18 ID:sbstkRF+M.net]
馬鹿には馬鹿と指摘しないと、あまりに低レベルの自分でやってみようという意志もない馬鹿な質問で溢れかえるからこれくらいでいい

147 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 21:49:51.56 ID:2Xt/GnSW0.net]
>>144
ありがとうございました。参考になります。

>>145
消えろ

148 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 22:51:02.52 ID:7/3Aifl90.net]
ここが上級者ばかり集う高尚なスレだと思っているのかWWWWWWWWWWWW
VBAごときでWWWWWWWWWw

149 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 23:33:21.68 ID:0km7hKfU0.net]
VBAを随分下に見てるねえ。
別にC#で回答してもいいよ?
VBAに脳内変換するから。

150 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 23:47:09.16 ID:Y/spJvDG0.net]
上級者も馬鹿も両方いてあたりまえ
お前らそんなにマウントとりたいのかw



151 名前:デフォルトの名無しさん [2020/07/02(木) 23:59:32.57 ID:yXnL3NZ/0.net]
誰か教えて。
式に=とか+を使うと字が読みにくくて困っています。
全角文字や絵文字を使うことはできないのでしょうか?
急いでいますからすぐに教えて、

152 名前: テトリス ◆SYKnw8OJpw [2020/07/03(金) 00:10:57 .net]
テスト

153 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 00:14:47.41 ID:P5PHrlsB0.net]
>>151
一休さんかコロンブスみたいな回答で良いなら出来る。
実際に全角文字や絵文字で書いてみな。

154 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 04:04:14.78 ID:B7qpVotz0.net]
Function 〓(ByRef a, ByVal b) : a = b : End Function
Function ┼(ByVal b, ByVal c) : 〓 ┼, WorksheetFunction.Sum(b, c) :End Function
これを入れておけば、=とか+から解放されるぞ

Sub test()
Dim a
〓 a, 1
Debug.Print ┼(a, 1)
End Sub

155 名前:デフォルトの名無しさん (ワッチョイ 0a2f-+ZV3) mailto:sage [2020/07/03(金) 12:58:30 ID:KESc8IU30.net]
そんなソース絶対読みたくないな

読みやすいフォント探すか自作すればいいだけだろうに

156 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 13:30:11.45 ID:hUamHkOVa.net]
ハズキルーペ使えよw

157 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 21:14:38.38 ID:mplhmvvw0.net]
ワークシートの条件にあう行を削除して上に詰めるみたいなことを、配列内でしたいです。

多次元配列"ary"内の1列目が66か、6列が1000か、28列目が空欄のレコードを削除するコードを教えてください

158 名前:デフォルトの名無しさん [2020/07/03(金) 21:23:34.89 ID:Mxid+JS90.net]
E列が空白になるまでE列とG〜M列に特定の処理をしたくて
Do loopを使って何とかできないかと悩んでたけど座礁しますた

Eの11行目を起点にして
E列の数値が正の数ならEもG〜Mも数値はそのまま
E列の数値が0ならEもG〜Mも数値はそのまま
Eの数値が負の数ならEとG〜Mの数値を-*1
と反転させたい
ってのは素人には荷が重すぎですかね?

159 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 21:31:07.37 ID:DQKehNsV0.net]
157,188
お互いに相手のコード相談しながら考えてあげればいいんじゃね
ちょうどよさげだわレベル

160 名前:デフォルトの名無しさん (ワッチョイ 27ce-BXkI) mailto:sage [2020/07/03(金) 21:44:24 ID:4NyCV/dB0.net]
>>158
いいえ、がんばればできます



161 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 21:55:13.66 ID:4NyCV/dB0.net]
Sub Macro1()
  r = 11 '起点の行
  Do While Cells(r, "E") <> ""
    If Cells(r, "E") < 0 Then
      Cells(r, "E") = -Cells(r, "E")
      For c = Asc("G") To Asc("M")
        Cells(r, Ch r(c)) = -Cells(r, Ch r(c))
      Next c
    End If
    r = r + 1
  Loop
End Sub

162 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 22:17:41.55 ID:aUU6z7Ir0.net]
そもそもマクロ作るのって違うデータでも同じ処理をやりたいような場合じゃないのか
一回限りのデータ抽出ならわざわざマクロなんか作る意味ないんだけどな
無駄に時間を浪費したいのかな

163 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 22:37:42.83 ID:qSqs6yG50.net]
使い捨てマクロってのもありまして

164 名前:デフォルトの名無しさん (ワッチョイ 6bda-ewff) mailto:sage [2020/07/03(金) 22:48:22 ID:3J4wGhdX0.net]
定型フォーマットの複数ファイルの同項目の値を集計したい
なんて時は使い捨てマクロかな

165 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 23:04:06.95 ID:KESc8IU30.net]
>>157
VBAの配列に要素詰める命令はなかったはずなので、どうしてもというなら
 該当要素より下の要素を一つずつ上にずらす
 最後の要素を消す
とやればできなくはないがお勧めはしかねる

166 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 23:06:05.89 ID:KESc8IU30.net]
>>158
それVBAじゃなくても計算式とワークの列使えばできると思うけど
なぜ素人がVBAでやろうと思うんだ

167 名前:デフォルトの名無しさん [2020/07/03(金) 23:26:37.07 ID:Mxid+JS90.net]
>>161
構文エラーでしたわ
>>166
VBAでやりたかったのです…

168 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 23:27:55.78 ID:8QUz9sdRa.net]
確かに一回限りの作業なら
マクロ考えているよりやった方が終わってるかもな

169 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 23:35:20.76 ID:P5PHrlsB0.net]
>>157
配列内でやるならレコードセットだな。

170 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 23:42:57.67 ID:9EQo/V7m0.net]
一回きりだろうと同じ処理100回やるようなのもあるんだし



171 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 23:46:08.59 ID:P5PHrlsB0.net]
1回限りでも3行くらいで済むのは書くな。

172 名前:デフォルトの名無しさん (ワッチョイ bb1d-+upQ) [2020/07/04(土) 00:48:12 ID:KIBH4SNT0.net]
まだ22歳の学生社長が得た、23億円の「使い道」
あの橋本環奈をCMに使うバイトアプリの雄
https://toyokeizai.net/articles/-/319511
中学時代の車いす生活から、17歳で起業するまで
https://www.advertimes.com/20200130/article306925/
ミャンマー発 AIダイニングアプリ「Yathar」をしかける日本人起業家
https://roboteer-tokyo.com/archives/14840
自分の視野は「世の中の0.001%」と自覚せよ。ビジネスチャンスを掴む4つの習慣
https://headlines.yahoo.co.jp/hl?a=20200511-00010001-srnijugo-life
アプリの視聴率がわかる 高専卒起業家の独創力
https://www.nikkei.com/article/DGXMZO46695580Y9A620C1000000/
1万人の若者を支援!インターンが日本を変えるかも!? glowshipの若き創業者・足立卓也氏インタビュー
https://sogyotecho.jp/glowship-adachi-interview/
大学生起業家が設立1年で20億円調達! 単発バイトアプリに外食企業など出資【タイミー】
https://foodfun.jp/archives/3490

173 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 01:40:09.94 ID:IOVEPry/0.net]
一般論としては頻度の多い作業の方が自動化に向いてるのは確かだけど、
1回だけでも大量のデータを加工したり手作業でやるには時間のかかる作業もあり、
作業時間の方がコード書く時間より長くなる場合も多々もあるのでケースバイケースやね

174 名前:デフォルトの名無しさん (ワッチョイ 5301-JCxG) [2020/07/04(土) 01:58:21 ID:42LT/T3f0.net]
逆に、山田やっとけ、というのはどうよ?

175 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 02:07:27.87 ID:VMWug14q0.net]
やるとは何を?

176 名前:デフォルトの名無しさん [2020/07/04(土) 02:09:15.54 ID:42LT/T3f0.net]
データの加工。

177 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 02:10:42.23 ID:VMWug14q0.net]
加工すればいいんじゃね

178 名前:デフォルトの名無しさん [2020/07/04(土) 02:13:10.44 ID:42LT/T3f0.net]
いや、山田がやってくれないかなって。
だめ?

179 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 02:16:03.66 ID:VMWug14q0.net]
だから山田がデータを加工すればいいんじゃね

180 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 02:38:36.13 ID:VMWug14q0.net]
素人にやらせた場合間違った結果を出すかもしれんが
その場合頼んだ側にも責任があるけどそれでも山田にやらせるか?



181 名前:デフォルトの名無しさん [2020/07/04(土) 03:10:27.15 ID:42LT/T3f0.net]
田中のほうが良いかな?

182 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 03:37:53.50 ID:OxpkXjjxa.net]
斎藤さんだぞ

183 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 04:04:04.69 ID:IjVZd7O90.net]
山田ができるのは座布団運びだけだろ

184 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 07:02:36.51 ID:VZt6Ms3K0.net]
do whileとかほとんど使わないわ
あれ試行錯誤してる最中に脱出条件間違えて固まるとイライラってするんで

>>158こういうのは
途中で空白行挟んでたらどうすんのとか考えるとEnd(xlup)とか使って無難にforで回したい
最も空白行挟んでたらそこまでしか処理しないのかもしれんけど
それなら上から順に一旦回して空白行がどこに出るのか調べてからやるわ
全データ配列に格納してからやれば速度的にも問題ないと思うし

185 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 07:59:26.14 ID:yagtSNgld.net]
観測地点が全国で2000ヶ所、1時間毎の観測結果3年分のデータがあって、8時間毎に観測出来なかった場合も踏まえて平均し、観測出来なかったのが8時間の内4時間以上あったら平均値も出力出来なかったとする。
で、その8時間の平均値は1時間ずつずれて24個分で1日のデ―タとなるんだが、それをさらに平均して1日の値とする

なんてのやったが1回限りでもVBA使わないと無理。
というか普通に考えてVBAでも無理だけどね。

186 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 09:41:06.65 ID:htrp3xgD0.net]
>>157
配列に入れたら順番に書き込んで条件の時だけ書き込みスキップじゃ駄目なの?

187 名前:デフォルトの名無しさん (ワッチョイ 1e8e-0gyK) [2020/07/04(土) 10:01:18 ID:1naoKVTK0.net]
>>185
お前の低い知能の頭ではできないだけだろ

188 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:47:27.20 ID:VZt6Ms3K0.net]
簡単だよな
セルにどういう風にデータが並んでるかで多少の工夫がいるかもしれんけど
加減乗除のみのワンパターン

189 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 12:11:54.32 ID:xB5SKVkx0.net]
水口克也氏のExcelVBA入門講座って本を使ったことある人いますか?
最後のじゃんけんゲームを作る所が、どうしてもうまくいきません

190 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 12:23:35.41 ID:KlM0EefbM.net]
>>185
作業シート使ってExcelだけでできるんじゃね?
そもそも移動平均の平均とかあまり意味ないことやってる方が気になるけど



191 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 12:37:06.40 ID:/jHrZd8o0.net]
8時間平均から24時間平均への変換は一般的なLPF処理だな
デジタル信号処理で数値データを扱う基本的な考え方だよ

192 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 13:05:03.59 ID:VZt6Ms3K0.net]
>>157
全要素forで回しながら
条件合うものだけを新しい配列newArrayにいれていけばいいじゃん
その後新しい配列から、データ空にしたシートに記入

新しい配列の要素数、特に1次元要素数(行数)だけど
Redim Preserveで順次増やしていくのはこの場合できないから、
一旦行数を確定するためだけにfor回してカウント
要素数確定したnewArray作ってから
もう一度for回して入れていけばいい

行列逆転させればredim preserve使って一発でもいけるか
特に巨大なデータでなければ間違い避けるために二回まわすなおれなら

行削除によって表自体の体裁を上に詰めていきたいっていうなら
最初にforを回した後、元の行数とnewArrayの行数の差だけ表の行を削除
データはすでに配列にとってあるんだからどこから削除しても構わない

193 名前:デフォルトの名無しさん (ワッチョイ 8a01-21HI) mailto:sage [2020/07/04(土) 13:32:13 ID:IjVZd7O90.net]
>>191
それ一気に24時間平均でよくね?

194 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 13:43:57.26 ID:/jHrZd8o0.net]
いきなりデータ粒度を荒くするのは悪手
ましてや>>185の場合はじめに欠損データのノイズキャンセルも行っているのでまとめて行なうとデータの精度が低下する

195 名前:デフォルトの名無しさん (アウアウエー Sa82-h0J+) mailto:sage [2020/07/04(土) 14:05:30 ID:Em2AcreDa.net]
24コマを1コマにするんだから
平らに均すのに精度もクソも無い気がする

196 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 14:21:18.07 ID:/jHrZd8o0.net]
データ値の定常状態と過渡状態を理解していれば分かる
粒度が荒いと応答性が悪化するので現象の追従が遅れる
安定時のデータ値だけならともかくデータの変化を取りこぼすリスクが高くなるんだよ

197 名前:デフォルトの名無しさん (アウアウエー Sa82-h0J+) mailto:sage [2020/07/04(土) 14:31:13 ID:Em2AcreDa.net]
>>196
そりはモニタのアッパーとローワーにトリガー仕込んだら良い話ではないのでしゅか?

198 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 14:44:04.22 ID:/jHrZd8o0.net]
上限、下限決め打ちの場合はトリガ仕込むのでも通用はする
ただ一日当たりの変化量でアクション起こす場合はどうする?
移動差分(微分)を連続的にデータ処理しないと難しい

199 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 14:48:04.16 ID:ZiXQ0AsVa.net]
喧嘩はやめよう

200 名前:157 mailto:sage [2020/07/04(土) 14:58:18.35 ID:oup49XFx0.net]
>>186

仮の配列を作り、編集してaryに入れるようにしたいのですが
これだと、全て空欄になってしまいます
Dim i As Long, j As Long, cnt As Long, cnt2 As Long
i = Cells(Rows.Count, 1).End(xlUp).Row
'仮の配列
ReDim Kariary(i, 30) As Variant
Kariary = Range("A2:AD" & i).Value
'最終的に代入する配列
ReDim ary(i - 1, 30) As Variant

For cnt = 1 To i - 1
If Not Kariary(cnt, 1) = 66 Or _
Kariary(cnt, 6) = 1000 Or _
Kariary(cnt, 28) = "" Then

j = UBound(ary) + 1
If j < i - 1 Then
For cnt2 = 1 To 30
ReDim Preserve ary(j, 30) As Variant
ary(j, cnt2) = Kariary(cnt, cnt2)
Next cnt2
End If
End If
Next cnt
'シートを一旦クリア
Cells.Clear
Range("A2:AD" & i) = ary



201 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 15:04:44.69 ID:xhESn47nr.net]
はい

202 名前:デフォルトの名無しさん (アウアウエー Sa82-h0J+) [2020/07/04(土) 15:22:36 ID:ZKMg5qK7a.net]
>>198
地デジのようなリアルタイムデコードじゃなくて
過去に既に起こってしまったデータ欠損の過ちをVBA で穴埋めしようとしたたところで土台遅いと言う話でした。
>>199
そうですね

203 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 15:31:40.93 ID:VZt6Ms3K0.net]
>>200
頭が痛くなってくるんだけど
まずifの条件がおかしい
自分で簡単の作って確かめてみ
こういうの
思ってるような動きするか確かめてみ
プログラムってのはそういうことしないとだめだわ
まっさらなxlsm作ってデータも簡単のシートに作ってやってみ
そうすりゃすぐ分かる

Sub teeee()
 With ActiveSheet
  If Not .Cells(1, 1) = 66 Or .Cells(2, 1) = 2 Then
   MsgBox "ok"
  End If
 End With
End Sub

例えばさ、
ary(j, cnt2) = Kariary(cnt, cnt2)
これにブレークポイントつけてここに到達するケースがあるか調べてみ
それだけで何か分かるわ

まぁだれか正解のコード書いちゃうんだろうけど
デバッグ
ブレークポイント
これ使えないとまともなコード書けないぞ

204 名前:デフォルトの名無しさん (ワッチョイ 8a01-5cl0) mailto:sage [2020/07/04(土) 15:38:09 ID:VZt6Ms3K0.net]
それだけじゃないからな
redim preserve は、くせ者

205 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 15:42:33.80 ID:RSp2d2NT0.net]
redimしなくても十分な量確保しといてどこまで使ったか変数に入れときゃいいだけだろ
わざわざ負荷かかることする意味がない

206 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 15:56:38.11 ID:D9As6lACa.net]
プロはとりあえず配列に格納するのが好きなんです

207 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 16:03:39.61 ID:DEQjmcqBd.net]
>>187
>>190
やって見てから言えよw
問題は時間だ。

2000x365x24x3=52560000

100列で50万行だぞ。
実際やったわけだが、普通にやって6時間とかかかる感じだった。
勿論、初心者じゃないから2次元配列使うのも当然やってる。

まあ、6時間もかけたく無かったからマルチプロセスにして1時間ぐらいにしたけどな。

208 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 16:04:11.08 ID:qCMIttGKd.net]
十分な量を確保

あとで失敗するパターン

209 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 16:09:00.53 ID:MUUOvXMba.net]
data.csv
年月日,時間,気温,湿度
2020/07/04,11:15,28.5℃,78%
2020/07/04,12:15,ー,78%
2020/07/04,13:15,28.5℃,ー
2020/07/04,14:15,ー,ー
2020/07/04,15:15,28.5℃,78%
・・・
・・

1カ月データとして24時間×31日=744行+先頭行
1年12ヶ月データで8,928行かぁ
データスルーとかデータ穴埋めとかって
どっちの場合も
VBA じゃなくてデータベースのSQLで出来たりするのかな?

210 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 16:22:41.23 ID:DNEaiqy30.net]
おれならそもそも案件をRDBMSに移す提案をするわ
だめなら元データはどうせCSVやJsonかなにかだろうし、VBAから普通にRDBにいれてプロシージャ叩くとか
外部プログラムで直に処理するね

元データがExcelでExcel縛りなら、どうやって案件から手を引くかを考えるねw
Excel起動するVBAでやることじゃない
まあ金次第でもあるけど



211 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 16:30:22.62 ID:DEQjmcqBd.net]
>>209
う〜ん、場所毎だから表になるっちゃあなるけど、SQLでやろうとは思わなかったし、どうやってやるのかも思い付かんわ。
仕事でSQLばかり触ってるが。

>>210
おう、確かに元データはCSVだった。
SQLで上手いことやるのが思い付かんが。

212 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 16:35:45.74 ID:qCMIttGKd.net]
pythonでデータクリーニングさせれば?

213 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 16:42:21.08 ID:IjVZd7O90.net]
>>196
> 安定時のデータ値だけならともかくデータの変化を取りこぼすリスクが高くなるんだよ
平均とってる時点で取りこぼしとか意味不明なんだけどw

214 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 16:47:20.12 ID:IjVZd7O90.net]
>>207
2000列で高々3万行程度だろ
Excelの計算式はマルチスレッドで動くから自称「初心者じゃない」君のVBAより速いと思うぞ

215 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 17:02:54.82 ID:DEQjmcqBd.net]
>>214
バーカw
やってから言え。
本当バカだなあ。

そもそもファイル重くて碌に動かねえよ。

216 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 17:18:55.42 ID:pfDbF4Mra.net]
どうせ適当なデータでっち上げて表示させても気づかないだろ

217 名前:200 mailto:sage [2020/07/04(土) 17:35:53.50 ID:oup49XFx0.net]
>>203
おっしゃる通りでした。
IFに問題があったみたいです。ありがとうございました。

218 名前:デフォルトの名無しさん (ワッチョイ 8e02-JJ0U) mailto:sage [2020/07/04(土) 17:46:55 ID:aRnpDm0b0.net]
5ちゃんのExcelVBA質問スレでMonaさんに対してマウントを取りたいのですが、
Mount Mona
と記述してもマウントが取れません
どうすればいいですか?

219 名前:デフォルトの名無しさん [2020/07/04(土) 17:49:24.23 ID:1naoKVTK0.net]
>>207
お前が馬鹿なだけだろ
全部メモリーに置く理由もない
己の頭の問題を仕様の問題とすり替えるな

220 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 17:54:43.71 ID:oup49XFx0.net]
A列の2行目以降に値あり、B列の2行目以降に同じ行のA列の値が
上から何回目に出現したかを返す関数として「=COUNTIF($A$1:A2,A2」を使っています。
同じことを配列で使用する方法を教えて下さい。
(A列の値は並び替えをしてあります)

Dim EndRow As Long, r As Long

EndRow = Cells(Rows.Count, 1).End(xlUp).Row
ReDim ary(EndRow, 2)
ary = Range("A2:B" & EndRow).Value

For r = 1 To EndRow - 1
ary(r, 2) = Application.WorksheetFunction.CountIf _
(Range(ary(1, 1), ary(r, 1)), ary(r, 1))
Next r

これだとRangeメソッドは失敗しましたになります。



221 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 18:14:15.70 ID:DEQjmcqBd.net]
>>219
出来もしないこと言ってるバカ?
それとも、それ迄のやり取りすら出来ないバカ?

手作業やExcel数式でやってから言え。
ちゃんとそれ迄のやり取りも読んでから言えよw

222 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 19:58:17.09 ID:VZt6Ms3K0.net]
>>185
批判したいとかそういうもんじゃないんだけど
わりと大きなデータ扱うことに興味があったんでどんなもんか実際やってみた

1カ所分しかやってないんだけど
csvから取得して平均値26280個をシート記入するまで1秒もかかってない感じ
一日ごとの平均は出してないけどこの分じゃそれほど差はないと思う

もしや取得時には配列で一括取得してても
シート記入時に配列使った一括記入してないんじゃ?


も少し情報提供すると
https://www.data.jma.go.jp/gmd/risk/obsdl/index.php#
ここから3年分時間別気温データを、1年ごとcsvにして三個ダウンロード

https://www.moug.net/tech/exvba/0060086.html
これと同じ感じでOpen使って取得
年ごとに必要な気温データのみ1次元配列に入れる

3つの配列を1つの配列にまとめる

平均値入れていく配列AveArrayを新しく作る(あえてString宣言)
あとはforで回しながら過去8時間分のデータを調べてデータない場合の個数を調べて
4つ以上ならAveArrayにN/Aを入れる
4つ未満なら8時間合計して、有効データ数で除算し、AveArrayに入れる

AveArrayを列数1の2次元配列にしてからシートに一括記入

なんかおれ間違ってる?

223 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 20:07:02.00 ID:ZiXQ0AsVa.net]
こうやって実際にやってみる人は素晴らしいと思う

224 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 20:15:53.04 ID:/OqMGH1W0.net]
>>220
matchならともかくcountifは配列に対応してない
素直にセルを引数にしてやったほうがいいのでは

225 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 20:17:12.12 ID:JHoncA5/a.net]
countifじゃなくてloopでfindにすればよいのでは

226 名前:デフォルトの名無しさん (ワッチョイ 87da-VQSO) mailto:sage [2020/07/04(土) 22:27:57 ID:VMWug14q0.net]
VBAは手段の一つ、目的はデータの加工ってわりきればすぐ終わる作業なのに
無理してVBAだけでやろうとするからいつまでもおわらない

227 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 23:58:08.33 ID:DEQjmcqBd.net]
>>222
ちょっと見た感じほぼ、俺と同じ感じだね。

>もしや取得時には配列で一括取得してても
シート記入時に配列使った一括記入してないんじゃ?

オイオイ、そんな素人なわけ無いだろ。

Line inputを使ったか、それより速いバイナリ読み込み+StrConv使ったかについては覚えて居ない。
まあ、速いといっても劇的に速くなる訳じゃないから、そんなことよりマルチプロセスってことでLine inputのままだったかも。

オレがやった時のデータは日付+24列のデータだった。
貼り付けは元データ込みで、元データの右に8時間平均と1日平均書いたと思うが、もしかしたら8時間平均は出力しなかったかも。

多分読み込みよりも列を増やした二次元配列にして書き込みにも利用してたと思う。

228 名前:デフォルトの名無しさん (スップ Sd4a-aBdg) mailto:sage [2020/07/05(日) 00:48:44 ID:poq4gvQsd.net]
複数のファイルの名前を編集したい

具体的には、全てのファイルのファイル名に、2020と入れたい。

229 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 00:51:15.79 ID:C4Jqu0Op0.net]
DOSコマンドでできる

230 名前:デフォルトの名無しさん (ワッチョイ 27ce-BXkI) mailto:sage [2020/07/05(日) 01:49:00 ID:UMxIfgnY0.net]
>>228
ファイル名のどこに入れるの?先頭?真ん中?末尾?



231 名前:デフォルトの名無しさん [2020/07/05(日) 01:59:51.75 ID:S3+IlzuQ0.net]
>>230
その程度vbaなら自由自在でしょ
バカにしないでください

232 名前:デフォルトの名無しさん [2020/07/05(日) 02:04:39.40 ID:sCEs+yW00.net]
>>227
お前の書き込みは、
「というか普通に考えてVBAでも無理だけどね。」
だろ

後付けで時間がとか言い出して誤魔化すんじゃねーよ

233 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 03:08:45.12 ID:EDU6Wt820.net]
powershellでやれ

234 名前:デフォルトの名無しさん (ワッチョイ 8a01-c9XW) [2020/07/05(日) 07:10:34 ID:Mq9FuBzw0.net]
標準モジュールに、
Sub 1()
・・・
・・・
End Sub

Sub 2()
・・・
・・・
End Sub

Sub 3()
・・・
・・・
End Sub
と、書いていき、Sub 1()がSub 2()を呼び、Sub 2()がSub 3()を呼ぶ、って可能でしょうか?

235 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 07:16:23.84 ID:2yUokYO9d.net]
>>232
???
日本語が理解出来ないのか?

>なんてのやったが1回限りでもVBA使わないと無理。

「やった」と書いて有るだろ。
その後に「普通に考えて」とも書いてる。

実際にやったが、普通はVBAでも無理という意味だよ。
>>222とほぼ同じで6時間かかるからマルチプロセスにしたんだからな。

236 名前:デフォルトの名無しさん (ワッチョイ 8a01-5cl0) mailto:sage [2020/07/05(日) 07:44:05 ID:VaIdJVAp0.net]
>>227
せっかくなんで
csvは日付+24列に加工してみた

1カ所の8時間ごと平均データ26280個を作って1列に貼り付けるfunctionを作る
引数は貼り付け先の列の列番号

これを
?1回だけ実行 A列のみに貼り付け
?100回実行 A列から右100列に1列ごと貼り付け
?200回実行 A列から右200列に1列ごと貼り付け


timer付けて一応測ってみた

?0.31秒
?32秒
?67秒

2000回だと12分ぐらいか?

CPU i5-4670
メモリ 24GB
Win7

実行時はPCでテレビ見ながらJane2個起動
firefox、Janetterなど20個以上のアプリが動いてる

環境やらデータの数値の大きさやらで
差は2000倍に拡大する可能性があるんで何とも言えない
うちの職場のしょぼいPCでやったらもっと酷いと思う

237 名前:234 (ワッチョイ 8a01-c9XW) [2020/07/05(日) 07:54:44 ID:Mq9FuBzw0.net]
>>234をグーグルで検索するには、どういうキーワードで検索すればいいでしょうか?

238 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 07:57:11.74 ID:R1IME3L+0.net]
>>228
Ruby で作った。
ただし、DryRun なので実際には実行されません!

require 'fileutils'

# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠し directory, file を除く
glob_pattern = "C:/Users/Owner/Documents/*"
src_dir = File.dirname( glob_pattern ) # ディレクトリパスだけを取り出す

Dir.glob( glob_pattern )
.select { |full_path| File.file?( full_path ) } # ファイルのみ処理する
.each do |full_path| # 1つずつ処理する
dest_path = src_dir + "/" + "2020_" + File.basename( full_path ) # ファイル名
FileUtils::DryRun.move( full_path, dest_path )
end

# mv C:/Users/Owner/Documents/a.txt
# C:/Users/Owner/Documents/2020_a.txt

239 名前:234 [2020/07/05(日) 08:01:08.68 ID:Mq9FuBzw0.net]
>>228
ファイルをバイナリで読み込んで、バイナリで書き出す、
で、書き出す際に、ファイル名に"2020"&、とすればいい。

240 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 08:01:41.62 ID:VaIdJVAp0.net]
>>234
うん
>>237
vba 関数 呼び出し

偉いね、その姿勢があればすぐにプロフェッショナルだわ



241 名前:デフォルトの名無しさん [2020/07/05(日) 08:04:40.53 ID:nDNnOTMWa.net]
>>234
普通に最後にサブルーチンの名前呼び出し書いたら良いのでは?
Sub 1()
・・・
・・・
2
End Sub

Sub 2()
・・・
・・・
3
End Sub

Sub 3()
・・・
・・・
End Sub

242 名前:234 [2020/07/05(日) 08:05:40.42 ID:Mq9FuBzw0.net]
>>240
どうもです。

243 名前:234 [2020/07/05(日) 08:06:29.51 ID:Mq9FuBzw0.net]
>>241
どうもです。

244 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:36:58.35 ID:CJtrxhlB0.net]
>>242
呼び出しは、可読性考慮すると文頭にCall書いた方がいいよ

245 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 13:58:43.83 ID:U1BgWcwt0.net]
>>207
VBAでやっても6時間はかかりすぎな気がするが
マシンスペックとコード晒してみ

それ、計算式でやって再計算に1時間以上かかるのか?
当然試してるよな

マルチプロセスもどうやってやったのか気になるが
俺なら間違いなくDBにつっこんでSQLでやる

そういえばエクセルシートなりCSVなりに対してSQL投げる方法がいくつかあったけど
それは試したのか?

246 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 15:07:25.29 ID:2yUokYO9d.net]
>>239
ファイル名変更だから読む必要は無いだろ。
変更するだけでOK。

247 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 15:11:46.86 ID:BTTSshKd0.net]
>>244
おれもsubモジュール呼び出しはCallつけるようにしてる
他の言語いじったにあととかにVBAのその行みたらよくファッ!?って一瞬なるから

248 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 15:16:11.04 ID:2yUokYO9d.net]
>>245
SQLに投げるのは簡単だが、今回の問題でどういうSQLで出来るのかが分からんかった。
今でも思い付かんが。

計算式ではやってないな。
まあ、無駄なんで。
というか、本当にやる奴が出るとは思わんかったから、言わんかったが他にも制約は有ったんだわ。

それにしても>>236は速いな。
ちょっとおれも調べてみるか。
ちなみにこの仕事数年前なんで完全に憶えてるわけじゃない。

249 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 15:22:54.54 ID:2yUokYO9d.net]
マルチプロセスはExcel.Application8個(自分含めて)呼び出して、自分のブック開いて別CPUにやらせるプロシージャをApplication.OnTimeで呼び出したかSetTimerで呼び出したかだったんじゃないかな。

細かい連携しないで済むようにしてたと思う。
複雑なことはやってねえよ。

250 名前:220 (ワッチョイ 87cc-ERT+) mailto:sage [2020/07/05(日) 19:59:50 ID:Y6miK3VP0.net]
>>224
いろいろ試してダメだったらそうします

>>225
ありがとうございます。そうします



251 名前:デフォルトの名無しさん (スプッッ Sd4a-tYaB) mailto:sage [2020/07/05(日) 21:27:28 ID:2yUokYO9d.net]
>>236
う〜ん、分からん。
俺もやってみたんだが、同じような時間だった。
観測値はテキ卜一に0〜100をランダムで書き込み。
観測出来なかった値は当時の記憶を頼りに9999とした。
確か9998もあったけど変わらんだろう。

前に書いた制約というかは、1年分のファイルが50〜60個ぐらいだったということ。
つまり県ごとのファイルで観測地が多い所は複数ファイルって感じ。
だから実際は行頭に観測地名が入って、その後に何かの数値とかが幾つかあって日付、観測値という具合だった。
年ごとのファイルが完全に固定フォーマットで無かったか、俺が信用してなかったか、観測値名で検索してたと思う。
そこから365日分は連続してたと思うけど。

それでも6時間は掛からんような気がしてきた。
もっと複雑なことやってたのかなあ。

どっちにしても後だしで申し訳ない。

252 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 22:26:04.09 ID:ys79fvH60.net]
>>251
そもそもいつ頃の話よ
うろ覚えだけど2010あたりから計算式はめちゃめちゃ速くなってるぞ
あとでかいブックは64bit化の恩恵もあるし

253 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 22:29:31.22 ID:2yUokYO9d.net]
>>252
調べたらそんなに昔じゃ無かったな。
2016年だった。

254 名前:238 (ワッチョイ 872c-+ZV3) mailto:sage [2020/07/05(日) 22:43:00 ID:R1IME3L+0.net]
ファイル名の先頭に、2020_ を付けるぐらい、robocopy で出来ないのか?

255 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 22:49:17.55 ID:ys79fvH60.net]
2016ならよほど変なことをしてないと数時間とかかからんと思う

256 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 23:53:51.99 ID:C4Jqu0Op0.net]
2020_2020_2020_2020・・・・

257 名前:デフォルトの名無しさん (ワッチョイ ea24-bNAA) mailto:sage [2020/07/06(月) 00:43:25 ID:Cn1gvhVh0.net]
officeが32bitだったというオチは?

258 名前:デフォルトの名無しさん (オッペケ Sr23-aBdg) mailto:sage [2020/07/06(月) 06:39:12 ID:NN5xIHVpr.net]
workbookとworksheetって何が違うか。

259 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 07:15:30.65 ID:5mzvDM1u0.net]
キングジムファイルと綴じられてる一覧表って感じかな

260 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 08:12:33.04 ID:XvhlV03D0.net]
32bitと64bitで計算スピードの差は2倍もないような



261 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 08:39:32.35 ID:NN5xIHVpr.net]
Activesheet.cells(1.1).Activate
Activesheet.Paste

は上手くいくのに、

Activesheet.cells(1.1).Paste

は何でダメなんですか?

262 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 09:18:02.55 ID:Ag715axD0.net]
>>261
.pasteは、worsheetのメンバであってrangeやcellsのメンバじゃないから、かな?

263 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 09:49:31.89 ID:Smcv6rvz0.net]
パラメータ Destinationがあるから
ワイはPasteSpecialのほうが好き

264 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 12:08:40.63 ID:0NryXgvDd.net]
>>263
普通はCopyのDestinationでやるからな。
Paste使うのはRange以外のコピーの時かな。

265 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 18:39:32.80 ID:XttWreH00.net]
For
処理1
処理2
処理3
処理4
Next

よりも

For
処理1
Next

For
処理2
Next

For
処理3
Next

For
処理4
Next

の方が処理が早い傾向がありますが、そういうものですか?

266 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 19:08:39.04 ID:tFUllOPh0.net]
>>254
出来ないよ????
robocopy はファイル名の変更はできない。
robocopy したあと move するしかない。

…あ。こいつWSHスレを荒らしてたrubyおじさんじゃんww

267 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 19:10:33.89 ID:tFUllOPh0.net]
てか、もうRubyは徒花だったな。
人気もダダ下がりだし。

268 名前:デフォルトの名無しさん (スプッッ Sd4a-tYaB) mailto:sage [2020/07/06(月) 20:45:52 ID:0NryXgvDd.net]
>>266
よく分からんが、そもそも何でRubyが出て来るんだ?
VBAだってNameステートメントで一発なのに。

269 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 20:59:38.60 ID:aGu/2bZb0.net]
>>265
普通にかんがえて、前者のほうがループのオーバーヘッド分早いはずだが
その傾向ってのはどうやって調べたのか

270 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 21:12:06.08 ID:tFUllOPh0.net]
>>268
どこでもかしこでもRubyで書いて押し付けてきて、「出来だよ!」っていうオジサンがいるのよ。
WSHスレでは「Rubyおじさん」として有名だった。
が、自分よりスキルの上な奴がコードをうしたら黙り込む。
こんなところにまで出張いてるとはね…。

無視推奨。Rubyはオワコンだし。



271 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 21:13:16.26 ID:K1goXTAAa.net]
じゃあVBAはお爺ちゃんだろ

272 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 21:17:13.18 ID:tFUllOPh0.net]
>>271
VBAは「頼れるジジイ」だろ。何言ってんの?

273 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 21:29:12.52 ID:XvhlV03D0.net]
>>265
そんなのは処理による
コードが長くなったりループの中で扱うデータが増えるとメモリキャッシュがあふれて遅くなる可能性が高くなる

274 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 22:27:45.01 ID:33E9zFJO0.net]
Rubyの話がしたければRubyのスレ行けばいいのにね

275 名前:デフォルトの名無しさん (スプッッ Sd4a-tYaB) mailto:sage [2020/07/07(火) 12:27:17 ID:mk51G87Dd.net]
>>270
いや、それはRubyが優位と言いたいが為だろ。
全然優位じゃない所に出てくるのが分からん。

276 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 19:51:41.03 ID:CAdbpiIn0.net]
宣伝だろ

277 名前:デフォルトの名無しさん [2020/07/07(火) 20:15:33.65 ID:2cf+0s2v0.net]
音楽のmidiファイルを作りたい、つまりバイナリファイルを作りたい者です。で、
↓を試してみたいのですが、"C3"にバイナリの配列を書き込まなければいけません。
この場合、どうやってexcelのセルに、バイナリの配列データを書き込むのでしょうか?

https://oshiete.goo.ne.jp/qa/8402512.html
Sub test()
 TEMP = Worksheets("Sheet1").Range("C3")
 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 "1.BIN" For Binary As #1
 Put #1, , BIN
 Close #1
End Sub

278 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 20:25:40.74 ID:BPFgnJg70.net]
なんでVBAでやるの?

279 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 20:27:13.84 ID:z4TbLErcM.net]
VBAスレだから

280 名前:犬丸 [2020/07/07(火) 20:31:41.96 ID:2cf+0s2v0.net]
>>278
和音の構成音(ドレミ・・・)を1つづつセルに入れられるから。



281 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 20:33:47.85 ID:BPFgnJg70.net]
なんでdominoとか使わないの?

282 名前:デフォルトの名無しさん [2020/07/07(火) 20:34:49.08 ID:2cf+0s2v0.net]
あと、PCにインストールされてる開発系はexcelだけだから。

283 名前:277 [2020/07/07(火) 20:41:28.24 ID:2cf+0s2v0.net]
つか、改変させたいmidiファイルが300個位あって、それの欲しいデータのexcelファイルへの読み込みはもう終わったわけ。
あとは、そのデータをちょい改変して、同様な300個のmidiファイルを吐き出すだけなんですよ。

284 名前:277 [2020/07/07(火) 20:42:49.00 ID:2cf+0s2v0.net]
だから、excelでバイナルファイルを作りたいのです。

285 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 21:00:27.95 ID:yByKJQAn0.net]
読み込めたなら反対をやればいいんじゃないの

286 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 21:05:07.15 ID:CAdbpiIn0.net]
>>283
著作権的にどうなの?

287 名前:277 [2020/07/07(火) 21:10:37.49 ID:2cf+0s2v0.net]
>>285
日本語だってそうだろ。
読むのは簡単。 書くのは大変なんだよ。

>>286
ネットで買った和音だけの簡単なデータで改変したデータを自分だけで使うぶんには問題ありません。

288 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 21:13:27.88 ID:BPFgnJg70.net]
じゃあそうすればいいじゃない?

所詮16進数の文字の羅列(Byteの配列とかにはさすがに出来てるんやろ?)なんだから
最終的には好きに料理してファイルに吐き出せばいい
ただ、1つのセルにバイナリなんて入れたら手作業で編集なんてしずらくてしょうがないけどな
あとセルの文字数上限もあるだろうし
midiの規格書読んだことあるのかしらんが、よくチャンクとかバイナリいじって編集しようと思うな

289 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 21:13:57.80 ID:CAdbpiIn0.net]
>>287
ならmidiの編集ソフトが使った方がいいね

290 名前:277 [2020/07/07(火) 21:14:00.67 ID:2cf+0s2v0.net]
>>286
そもそも観賞するためのmidiデータではなく音楽制作に使うツールとしてのmidiデータなんだよね。



291 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 21:14:32.40 ID:/HMzap4UM.net]
>>282
C#やVB.NETもあるけど?w

292 名前:277 [2020/07/07(火) 21:22:41.71 ID:2cf+0s2v0.net]
>>288
> midiの規格書読んだことあるのかしらんが、よくチャンクとかバイナリいじって編集しようと思うな
基礎的な部分は把握してます。

> 所詮16進数の文字の羅列(Byteの配列とかにはさすがに出来てるんやろ?)
これがわからないんです。たとえば、4D 54 68 64という16進のデータをexcelの1つのセルに書き込む方法を教えて欲しいのです。

293 名前:277 [2020/07/07(火) 21:25:44.85 ID:2cf+0s2v0.net]
で、excelの"C3"に、4D 54 68 64を書き込んで>>277のソースを動かして試してみたいんです。

294 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 21:26:04.88 ID:CAdbpiIn0.net]
これなんか良いんじゃね
https://openmidiproject.osdn.jp/Sekaiju.html

295 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 21:29:51.89 ID:CAdbpiIn0.net]
midiの規格ってそんな簡単じゃないから素人が扱っても音が切れたりトラックがずれたりして
結局使えないだろ

296 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 21:32:34.47 ID:7cSgkxva0.net]
ExcelのRange#valueにバイト列なんか入るわけないんだから自分がわかりやすいように文字列か数値に勝手に変換して勝手に入れろとしか言えない

297 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 21:34:29.92 ID:MaHOmhaOM.net]
Excelでmidiデータを取り扱うなんて常人の発想ではない
たぶんあなた以外に誰も方法はわからないから頑張ってその道の第一人者になって欲しい

298 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 21:35:25.31 ID:BPFgnJg70.net]
>>292
セルに入れられるのはあくまで文字列ってこと理解してないの?

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

くっそ編集しずらいだろうけどな

299 名前:デフォルトの名無しさん [2020/07/07(火) 21:44:56.92 ID:tZSrRerM0.net]
前スレのテキストフルスキャンの発想とコード提示してくれた人
改めて言わせて貰う
職場の一大イベントを乗り切ったわこれで

300 名前:デフォルトの名無しさん [2020/07/07(火) 21:46:02.99 ID:tZSrRerM0.net]
改めて多大なるお礼を言わせて貰うが抜けてた

これのおかげですべての可能性が広がったわ



301 名前:277 [2020/07/07(火) 22:23:53.24 ID:2cf+0s2v0.net]
では、すみません。 >>277の質問はなしにして、↓の質問をお願いします。

1、変数に「4D 54 68 64」のバイナリデータを代入するソース
2、中身は「4D 54 68 64」だけのファイル
3、ファイル名は5ch.bin
こんなファイルを作るにはどのようなソースを書けばよいでしょうか?

302 名前:277 [2020/07/07(火) 22:29:17.16 ID:2cf+0s2v0.net]
>>228
allrenameというフリーソフトを使えばいいのじゃ。

303 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 22:32:51.69 ID:CAdbpiIn0.net]
>>301
バイナリ編集のソフト使えばいいんじゃね

304 名前:301 [2020/07/07(火) 22:42:26.54 ID:2cf+0s2v0.net]
>>303
すみません。 「VBAを使って」でした。

305 名前:デフォルトの名無しさん [2020/07/07(火) 22:43:37.27 ID:O/UE8zUS0.net]
もはやExcelを使うことが目的化してる

306 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 22:44:27.22 ID:yByKJQAn0.net]
それもう読み込んだデータ無意味やん
フォーマット知らんけどセルに書き出せたんならファイルにもいけるやろ

307 名前:301 [2020/07/07(火) 22:54:30.10 ID:2cf+0s2v0.net]
>>306
基礎になるソースさえ教えてもらえれば、そこに色々付け加えてって自分に必要なバイナリファイルが作れるんですよ。

308 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 22:57:06.69 ID:BPFgnJg70.net]
まず書く努力をしよう

309 名前:デフォルトの名無しさん [2020/07/07(火) 22:57:22.32 ID:0KBHODZEd.net]
>>307
そろそろ死ねや

310 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 23:05:51.69 ID:1TMQwlbY0.net]
Excelの設定もAppDataの中身も場所も変えて無いのに、
下記のように表示されてマクロが読めません!

「起動フォルダーにある個人用マクロブックは記録のために開かれた状態でなければなりません」



311 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 23:09:31.21 ID:exS2x9T+0.net]
>>310
そのままググった
https://xtech.nikkei.com/it/pc/article/NPC/20070719/277869/

312 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 00:06:04.08 ID:66yUE/saa.net]
>>301
「'4D 54 68 64'」シングルかダブルで囲えば良いのでは?
「"4D 54 68 64"」
あるいは
いったんタブ区切りファイルtmp.tsvを途中で
中間ファイルとして介在させたらいいんじゃないですか?

313 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 00:14:08.99 ID:4BPfKF9s0.net]
ソースくれくれ君だからひんとあろうが自分で書かないよ、こういうやつ

314 名前:301 (ワッチョイ 2301-6wWl) [2020/07/08(水) 01:45:46 ID:gPwSdoJG0.net]
>>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

315 名前:301 [2020/07/08(水) 01:49:45.50 ID:gPwSdoJG0.net]
つか、
ReDim BIN(Len(TEMP) / 2 - 1) As Byte
この部分が何だかわかんないんですよ。
まず、ReDimとは何だ?と。

316 名前:301 [2020/07/08(水) 02:05:21.42 ID:gPwSdoJG0.net]
目的は、
&H4D, &H54, &H68, &H54, &H68, &H64という6個のバイナリデータだけの、
1.BINというファイルを作りたい!
です。

317 名前:デフォルトの名無しさん (ワッチョイ cb63-jZ9g) mailto:sage [2020/07/08(水) 03:08:12 ID:F8fi/iH60.net]
Excelでやる事ではない
以上です

318 名前:デフォルトの名無しさん (ワッチョイ cb63-jZ9g) mailto:sage [2020/07/08(水) 03:11:39 ID:F8fi/iH60.net]
まずバイナリが何かすら分かってなさそうだしこの分だとmidiについても何も分かってなさそう

319 名前:デフォルトの名無しさん (ドコグロ MM43-jxlo) [2020/07/08(水) 03:24:41 ID:llacuNM3M.net]
ここで聞くより、「vba バイナリデータ」でググったほうが早そう

320 名前:デフォルトの名無しさん (アウアウウー Sa09-X/TW) mailto:sage [2020/07/08(水) 04:08:36 ID:a4KGuVW5a.net]
うちは会社のpcでバイナリ編集するのってセキュリティー的にアウトだし



321 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 05:18:34.50 ID:hKBgVgLRr.net]
この写真のように、例えば、3以下の数値をアクティブにする方法を教えて頂きたい

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

一発検索が望ましい。


https://i.imgur.com/EGujBbu.jpg

322 名前:デフォルトの名無しさん (アウアウエー Sa13-c9t6) mailto:sage [2020/07/08(水) 06:25:23 ID:yrsbI81qa.net]
>>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 ID:yrsbI81qa.net]
>>321> できれば、for next 構文はなしで

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

複数のセルを選択する
officetanaka.net/excel/vba/tips/tips126.htm

324 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 07:11:29.93 ID:x0V53xaA0.net]
つーかわざわざselectする意味あんの?

325 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 07:47:38.02 ID:8s/zJrIHa.net]
わからないで書いてたのか

326 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 07:58:30.68 ID:krt5VVG+d.net]
>>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

327 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 08:02:35.63 ID:krt5VVG+d.net]
>>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

328 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 08:09:09.54 ID:krt5VVG+d.net]
>>314
というかね、Variantとは何か、Byteは何かとか考えた方が良い。
扱える範囲が違うということはメモリ上のサイズが違うということ。
6個のバイナリって6Byteのファイルってことだろ。
Variant1個で16Byteだぞ。

329 名前:301 (ワッチョイ 2301-6wWl) [2020/07/08(水) 09:06:02 ID:gPwSdoJG0.net]
みなさんレスありがとうございます。 感謝します。

>>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

330 名前:301 (ワッチョイ 2301-6wWl) [2020/07/08(水) 09:09:44 ID:gPwSdoJG0.net]
あるいは、↓ですかね? ↑も↓も「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



331 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 09:23:12.29 ID:yuZwXh1F0.net]
>>330
>>307 > 基礎になるソースさえ教えてもらえれば、そこに色々付け加えてって自分に必要なバイナリファイルが作れるんですよ。
もういいやろ

332 名前:301 (ワッチョイ 2301-6wWl) [2020/07/08(水) 09:32:29 ID:gPwSdoJG0.net]
つか、 FreeFile関数ってのがあるんですね 知らなかったw

333 名前:301 (ワッチョイ 2301-6wWl) [2020/07/08(水) 09:38:09 ID:gPwSdoJG0.net]
じゃあ、↓のドコが悪いんだろ?

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

334 名前:デフォルトの名無しさん (ワッチョイ bdda-ucCN) mailto:sage [2020/07/08(水) 09:40:18 ID:R5JQxD1z0.net]
>>332
つか、知らないことの方が多いくせに知ったかすんな

335 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 10:17:02.56 ID:67N0qsNYr.net]
>>333
「どこが悪いんだろ」
ではなく、
「下記のソースで実行すると〜というエラーが出ます。
 調べたところこのエラーの意味は〜と理解していますが、〜と修正したら今度は〜というエラーが出ます。〜〜」
と言ったように、自分でなんとか解決したいという姿勢がないとサポートなんてしたくならないよ

本当は誰も君の相手なんかしなくてもいいんだ
君は人の時間をいただこうとしてることを考えること

336 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 10:25:36.83 ID:kC98LgO60.net]
みんなやさしいよね
どこまでも相手してあげてるんだから

337 名前:デフォルトの名無しさん [2020/07/08(水) 10:37:36.28 ID:vI+4Hlt3M.net]
ハゲてきました。
市販の育毛剤で試すとエラーが出ます。
調べたところミノキシジルタブレットが聞くと理解しましたが、それを買って飲んだら今度は心臓ドキドキの副作用がでて命が危険だそうです。
どうしたらいいでしょうか?

338 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 10:37:36.28 ID:yuZwXh1F0.net]
暇つぶしでしょ

339 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 10:38:40.26 ID:yuZwXh1F0.net]
時間丸被りとかあんのな

340 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 10:41:28.04 ID:Fq6DmaU+0.net]
>>333
C:\に変なもの置くな



341 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 10:53:24.76 ID:Ywdztm8P0.net]
つーか動的配列にする意味あんの?

342 名前:デフォルトの名無しさん [2020/07/08(水) 12:08:46.81 ID:lp5P2pBOM.net]
>>341
行間を読め

343 名前:デフォルトの名無しさん [2020/07/08(水) 16:22:19.40 ID:0tPjVu1x0.net]
だから最初に馬鹿はお断りしときゃいいんだよ

344 名前:301 [2020/07/08(水) 17:12:58.80 ID:gPwSdoJG0.net]
つか、書き込み先を、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

345 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 17:43:43.08 ID:4BPfKF9s0.net]
はい次の方

346 名前:301 [2020/07/08(水) 17:58:35.88 ID:gPwSdoJG0.net]
>>341
midiファイルというのはサイズが決まってないんですよ

347 名前:デフォルトの名無しさん [2020/07/08(水) 19:59:20.87 ID:7XVFoSLh0.net]
>>344
そりゃVBAではなく、VBですらなく
BASICの範疇だからな

基本過ぎてわざわざWEBに上げたりしない

348 名前:デフォルトの名無しさん (ワッチョイ a5ae-7/eX) [2020/07/08(水) 20:31:33 ID:cTUxRwdY0.net]
>>344
死ね

349 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 21:18:00.92 ID:J4iDAbFT0.net]
いつも馬鹿な質問ばかりで済みません。
Excelファイルをダブルクリックした際に他の人が先に開いていた場合、[読み取り専用]か、[通知]か聞かれます。
これをダイアログを出さずに最初から読専で開くようにすることは可能でしょうか?
(最初に開いた人は編集・保存できるという前提です)

外部から開く際のコントロールは簡単ですが、自分自身でコントロールするのは無理ですかね?
Workbook_Openでいろいろ試したのですが、どうもこのイベントよりも先にダイアログが発生しているようで、、、
無理だ、という回答でもいいです。ご意見ください。

350 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 21:25:31.07 ID:eeGZOJTWa.net]
>>349
https://www.shegolab.jp/entry/windows-excel-read-only



351 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 21:41:34.04 ID:eWJ0cHmK0.net]
>>349
まずちゃんと自分で調べよう
知識が伴ってないのにろくに調べもしないでは自分で解決どころか調べ方すら身に付かない

まぁ、はなから自分でやる気なんか無いのかもしれないが

352 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 21:42:45.60 ID:J4iDAbFT0.net]
>>350
情報ありがとうございます。
リンク先のものはだいたい既知の情報でした。
やっぱり自ファイルでの処理は難しそうですね。

353 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 21:46:48.09 ID:J4iDAbFT0.net]
>>351
いや、ここに書き込むときは相当調べて最後の頼みのつなで書き込んでます。
調べよう、と仰るということは、何かいい方法をご存じですか?

354 名前:蟻人間 mailto:sage [2020/07/08(水) 22:00:15.73 ID:wtc6YQgJ0.net]
>>353
ファイルの関連付けを変えて、マクロで迂回して。。。

。。。ここまで来るとウイルス判定かも(詳しい内容は自粛します)

355 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 22:05:22.90 ID:J4iDAbFT0.net]
>>354
う〜〜ん、あまり危ない橋は渡らないでおきます。

356 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 22:32:26.07 ID:R5JQxD1z0.net]
>>353
調べ方を調べてから言え

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

>>349とほぼ同じ内容ですが、これだけ書けばどこまでの理解で何を試したか読み取れますか?

358 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 23:40:00.14 ID:4BPfKF9s0.net]
てかそんなんできたらマルウェアの温床になるから出来ないって思っとけよ
共有化でも足りないんならあきらめろん

359 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 23:44:27.92 ID:J4iDAbFT0.net]
>>358
よくわかりませんが、わかりました。
本件Closeで。

360 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 00:12:21.12 ID:dz7PM5ALa.net]
>>346
midiはファイルの種類じゃない



361 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 00:12:27.29 ID:ylhvfSy00.net]
ファイルが書き込めない状態になってたら読み取り専用で開けばいいだけじゃん

362 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 00:13:47.48 ID:dz7PM5ALa.net]
>>357
きもい

363 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 00:17:27.90 ID:dz7PM5ALa.net]
社会で他の人も使うファイル勝手にいじるなよ

364 名前:デフォルトの名無しさん (ワッチョイ cbdd-7n2a) mailto:sage [2020/07/09(木) 00:44:28 ID:HzjnRl+40.net]
>>363
お前には聞いてないから大丈夫だよ。
じゃ、お休み。

365 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 02:16:40.71 ID:eQo6hEQpa.net]
>>364
おまえに言ってない

366 名前:デフォルトの名無しさん (ワッチョイ a58b-GkYD) mailto:sage [2020/07/09(木) 03:10:18 ID:rHxVo6X00.net]
IE制御のついての質問。
マクロでIE制御を使ってウェブ情報を取り込んでいるんですが、連続で作動させると稀に止まることがあります。
バグった時にタスクマネージャーの詳細をみると毎回「ielowutil.exe」のプロセスだけ残ってるんですよね。
タスクマネージャーでielowutil.exe を右クリックして強制終了させると、また上手く作動するんですが、この ielowutil.exe プロセスを強制的に終了させるコードとかないですかね。

ぐぐっても英語とか読めないのでわからない。誰か助けて
https://www.mrexcel.com/board/threads/vba-automation-error-2125463506-8150002e.1079769/

367 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 03:59:15.57 ID:uBlORkna0.net]
taskkill /im ielowutil.exe
なんでもかんでもExcelでやろうとするな

368 名前:301 (ワッチョイ 2301-6wWl) [2020/07/09(木) 05:30:09 ID:C69oBRyL0.net]
つか、>>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個ぐらい入れなきゃならないのです。

369 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 06:03:23.76 ID:hGjJ3XRlM.net]
ないです
次の方どうぞ

370 名前:デフォルトの名無しさん (スプッッ Sd93-56/R) mailto:sage [2020/07/09(木) 06:34:39 ID:pd2EiZRKd.net]
>>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



371 名前:301 (ワッチョイ 2301-6wWl) [2020/07/09(木) 06:37:41 ID:C69oBRyL0.net]
>>370
ありがとうございます。 感謝します。

372 名前:デフォルトの名無しさん (スプッッ Sd93-56/R) mailto:sage [2020/07/09(木) 06:38:57 ID:pd2EiZRKd.net]
文字列を使う方法2
h = "4D,54,68,54,68,64"
For i = 0 To 5
 btByte(i) = Val("&H" & Split(h, ",")(i))
Next

373 名前:デフォルトの名無しさん (アウアウウー Sa09-X/TW) mailto:sage [2020/07/09(木) 06:57:38 ID:150ctWWia.net]
エレガント?

374 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 07:48:49.30 ID:3iI6FAhKd.net]
>>368
そのエレガントな方法を考えるのがプログラミングなんじゃないの?
50個をコードでどうにかするなら、それをコードに書かにゃならんからエレガントにはならん。
別の所に持って良いなら別途ファイルを用意しとけば良い。
設定とか50個程度ならどっかのシートに書いとくとかでも良い。

375 名前:デフォルトの名無しさん (オッペケ Sra1-OOGl) mailto:sage [2020/07/09(木) 07:58:21 ID:8/Q//t/ar.net]
ほんとコードくれくれ君は自分で何も考えないな
あげる方も頭おかしいが

376 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 10:13:45.21 ID:tVMvaFoW0.net]
激しく同意する
ちなみにバイナリを作成するやり方で実行ファイルが作れるのでウイルシなんかも作れてしまうわけだが

377 名前:デフォルトの名無しさん (ワッチョイ cbb0-mXGD) mailto:sage [2020/07/09(木) 10:32:17 ID:VstlXiSO0.net]
モジュールから単体動作する関数を切り取って、別のモジュールにコピーしたのですが
変数の宣言がないとエラー表示されました。何度見ても宣言は正しくされているので?です。
新しく変数宣言して、置き換えると動作します。
こんなことあるのですか?

378 名前:デフォルトの名無しさん (ワッチョイ 2d7c-6wWl) mailto:sage [2020/07/09(木) 10:47:12 ID:ylhvfSy00.net]
>>377
変数?定数?

379 名前:デフォルトの名無しさん (ワッチョイ cbb0-mXGD) mailto:sage [2020/07/09(木) 10:48:52 ID:VstlXiSO0.net]
すみません。変数ではなく定数(const)でした。

380 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 10:53:22.69 ID:ylhvfSy00.net]
>>379
グローバルな定数?



381 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 11:12:09.02 ID:VstlXiSO0.net]
ローカルです。

382 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 11:19:56.91 ID:JYozEgDc0.net]
option explicitの有無は?

383 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 11:21:50.10 ID:DLLEuHaFa.net]
>>376
みんなわざわざ煙に巻いてるのに言っちゃ

384 名前:デフォルトの名無しさん (ワッチョイ cbb0-mXGD) mailto:sage [2020/07/09(木) 11:26:19 ID:VstlXiSO0.net]
>>382
option explicitはあります。

385 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 11:30:45.63 ID:ylhvfSy00.net]
>>384
稀に起こるが原因は不明
エラーになった定数の宣言行を切り取り貼り付けすればとりあえず治る

386 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 12:02:59.73 ID:JYozEgDc0.net]
コピペしたとき?
実行したとき?

387 名前:デフォルトの名無しさん (ワッチョイ cbb0-mXGD) mailto:sage [2020/07/09(木) 12:29:25 ID:VstlXiSO0.net]
>>385
問題の行をコメントアウトし、その下に同様の内容を書いたら動作しました!
稀に起きるのですか。初めて遭遇する現象です。

>>386
実行時です。

388 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 14:14:55.78 ID:VstlXiSO0.net]
>385>386
他の箇所でも同様のエラー起きましたが書き直せば動作しました。
ありがとうございました。

389 名前:デフォルトの名無しさん (ラクッペペ MMcb-0WwX) [2020/07/09(木) 18:37:42 ID:dhOVscThM.net]
>>376
バイナリだからウイルスって意味不明

マクロウイルスはソースが見えるからウイルスじゃないとでも言うつもりか?

390 名前:デフォルトの名無しさん (ワッチョイ 1b68-ucCN) mailto:sage [2020/07/09(木) 18:40:33 ID:WyUmT5e70.net]
>>389
その脳内変換が意味不明



391 名前:デフォルトの名無しさん (ラクッペペ MMcb-0WwX) [2020/07/09(木) 18:53:47 ID:dhOVscThM.net]
バイナリに謎の恐怖心を持っているんだろ?

そもそも2進数じゃなくて16進数だ

392 名前:デフォルトの名無しさん (ドコグロ MM93-65sm) mailto:sage [2020/07/09(木) 19:27:38 ID:0UE7wqUeM.net]
まあイチからバイナリ書き出しで実行ファイ作れるような人はこんな質問しないけどな

393 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 19:41:37.34 ID:WyUmT5e70.net]
>>391
その脳内変換が意味不明

394 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 19:50:25.19 ID:tq6y70T30.net]
元々の変な質問のせいでくだらない流れになった

はい次の方

395 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 20:05:26.54 ID:SKtauNRXM.net]
VBAに将来はありますか?

396 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 20:11:04.35 ID:F9SMopSBM.net]
>>395
Excelと共に生き続けるだろうね
Excelの将来と同じ

397 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 20:13:33.30 ID:K5359iyV0.net]
そういえばExcelにPython載るって話はどうなったの?

398 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 20:29:37.44 ID:Qt+epPmk0.net]
VBA
https://docs.microsoft.com/ja-jp/office/vba/api/overview/

VSTO
https://docs.microsoft.com/ja-jp/visualstudio/vsto/office-solutions-development-overview-vsto

Officeアドイン
https://docs.microsoft.com/ja-jp/office/dev/add-ins/overview/office-add-ins

399 名前:デフォルトの名無しさん (ワッチョイ 83ee-Bqa1) mailto:sage [2020/07/09(木) 21:13:12 ID:54FX1SKx0.net]
Dim objShell As Object  ←値参照
Dim objExec As Object

Sub ie_kill()

Set objShell = CreateObject("WScript.Shell")    ←これなに???なんで必要なの???
Set objExec = objShell.Exec("taskkill.exe /F /IM iexplore.exe")  ←iexplore.exeをタスクキル

400 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 21:27:01.41 ID:YMHQKg0aa.net]
>>399
CreateObjectまんまオブジェクトを創造してます



401 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 21:31:09.68 ID:36OHf5x10.net]
New使っちゃいなよ

402 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 21:42:49.37 ID:ylhvfSy00.net]
>>399
参照設定をしていればいらない

403 名前:デフォルトの名無しさん (ワッチョイ fdce-56/R) mailto:sage [2020/07/10(金) 10:20:58 ID:O0QgyOqq0.net]
>>397
OfficeやWindowsは開発者が妄想を公式ブログで垂れ流すのが恒例行事
それを公式発表だと世間が勝手に騒いでるだけ

404 名前:デフォルトの名無しさん (ワッチョイ 83ee-Bqa1) mailto:sage [2020/07/10(金) 13:53:04 ID:3B5Gxm0d0.net]
ExcelってIE制御からedge制御できるようになった?
未だにIEが一番使い勝手いいの?

405 名前:デフォルトの名無しさん (ワッチョイ 75f1-+b0N) [2020/07/10(金) 14:38:15 ID:91NkPSzZ0.net]
ExcelってChrome制御できるようになった?

406 名前:デフォルトの名無しさん mailto:sage [2020/07/10(金) 15:03:43.58 ID:DnP9bxpW0.net]
いまはExcelがブラウザを制御するのではなくてブラウザがExcelを制御する方向性が主流
VBAはあくまでExcel内で完結する作業に限定した言語であって外部との連携作業はOfficeアドイン(実体はJavaScriptなどのスクリプト言語)や
VSTO(VisualStdioで言語はC#が中心)で行なうのがMicrosoftの方針
Pytonはよく分からんけど上手くOfficeAPIを利用すれば出来るかもしれない
概要についてのドキュメントは>>398

407 名前:デフォルトの名無しさん mailto:sage [2020/07/10(金) 15:20:21.38 ID:TbXdOMZ+r.net]
てゆかブラウザ操作するよりAPI叩いたりスクレイピングするほうが主流よね、今は
ずっと昔はExcelで入力してIEに反映させるとかあったけど、今じゃレガシーすぎる

408 名前:デフォルトの名無しさん mailto:sage [2020/07/10(金) 17:42:22.09 ID:OUgIsXw30.net]
ウチはシステムが古くてAPIなんてものに対応してないので現役だわ。

409 名前:デフォルトの名無しさん mailto:sage [2020/07/10(金) 20:17:34.10 ID:R/wZjJlU0.net]
人間も古いからちょうどいい

410 名前:デフォルトの名無しさん (スップ Sd43-Cpkm) mailto:sage [2020/07/10(金) 21:41:25 ID:rd+FvU1jd.net]
>>407
API叩くのもスクレイピングも変わらんけどな。
何でやるかの違いくらい。
まあ、Chrome制御は出来んけどな。
WebDriver使えるから出来るとも言えるか。
何処から何処迄がExcelって話。



411 名前:デフォルトの名無しさん (スップ Sd43-Cpkm) mailto:sage [2020/07/10(金) 21:42:22 ID:rd+FvU1jd.net]
>>406
VSIOは寧ろ廃れてるような気がするが。

412 名前:デフォルトの名無しさん (スップ Sd43-Cpkm) mailto:sage [2020/07/10(金) 21:42:47 ID:rd+FvU1jd.net]
>>411
VSTOな。

413 名前:デフォルトの名無しさん mailto:sage [2020/07/10(金) 22:02:00.46 ID:c4ANmjzxa.net]
>>412
VIOな

414 名前:デフォルトの名無しさん [2020/07/10(金) 22:39:50.15 ID:91NkPSzZ0.net]
>>413
それはちん毛ちんこケツの穴のことだ

415 名前:デフォルトの名無しさん mailto:sage [2020/07/11(土) 00:41:33.92 ID:vLv3KjHj0.net]
あかん、モーむり
sendkeys使いすぎてるせいで
Numlockキーがオンになったりオフになったり・・・
かと言って必ずオンオフ切り替わるかというとそうでもないし
誰か絶対100%常にNumlockオンになるコード教えてくれえ

416 名前:デフォルトの名無しさん [2020/07/11(土) 01:11:16.23 ID:2VuM3xocM.net]
>>415
vbaでレジストリを操作できるから、そこに道があるかも知れない

417 名前:デフォルトの名無しさん (ワッチョイ 9bc9-ucCN) mailto:sage [2020/07/11(土) 02:13:29 ID:Eg2/WlgT0.net]
>>415
2 つ以上の SendKeys ステートメントが連続して実行されると、NumLock キーがオフになる

418 名前:デフォルトの名無しさん mailto:sage [2020/07/11(土) 02:29:45.71 ID:6j9f8L+G0.net]
>>415
https://santane.jp/wp/?p=355

419 名前:デフォルトの名無しさん mailto:sage [2020/07/11(土) 09:37:08.18 ID:vLv3KjHj0.net]
ありがとうございます
418の方法も試したんですが、なぜか一回目では適用されず
あと418の一番下にある、入力リストを展開するとは一体?

420 名前:デフォルトの名無しさん mailto:sage [2020/07/11(土) 10:30:37.96 ID:R2Hyt8Cad.net]
>>415
Sendkeys使う奴は糞。
絶対に使っちゃいけないと言った方が事故が起こらないくらい事故が起きても不思議じゃない所で使う奴がいる。



421 名前:デフォルトの名無しさん [2020/07/11(土) 10:36:45.99 ID:QNz3pRQ00.net]
糞!ですか

422 名前:デフォルトの名無しさん mailto:sage [2020/07/11(土) 10:40:32.24 ID:VwbCqtVvM.net]
何年前からのバグなんだろうねこれって

423 名前:デフォルトの名無しさん mailto:sage [2020/07/11(土) 10:45:18.55 ID:R2Hyt8Cad.net]
>>421
Sendkeysは基本的にコントロール出来ない。
他アプリを操作するにはもっとコントロール出来る方法がある。

どうにも出来ない時は仕方がないが、絶対に使わないつもりで、どうにもならない時だけ使うべきだね。

424 名前:デフォルトの名無しさん mailto:sage [2020/07/11(土) 10:51:22.16 ID:R2Hyt8Cad.net]
あと、危険は承知でちょろっと使う時はある。
お手軽だから。

でも、それで使うことを許容すると危険もしらず、ちょろっとで済まない所で使う奴が出てくる。

425 名前:デフォルトの名無しさん (ワッチョイ bdda-ucCN) mailto:sage [2020/07/11(土) 11:53:42 ID:vrrLv2a80.net]
Excelを頼りすぎ

426 名前:デフォルトの名無しさん mailto:sage [2020/07/11(土) 11:59:27.85 ID:8xOOoQBua.net]
Excelで恋愛相談から今晩のおかずまで

427 名前:デフォルトの名無しさん mailto:sage [2020/07/11(土) 12:25:50.11 ID:DdDKJrYh0.net]
sendkeysって手段としてしょうもなさすぎるんだよな
目的を整理すれば他にもっといいやり方があるはず

428 名前:デフォルトの名無しさん mailto:sage [2020/07/11(土) 12:40:05.09 ID:pqxpyZgt0.net]
キーワードによる予測変換機能っぽいのをやろうとしたときに、
いいコード無いか探してたら使ってたなsendkeys

429 名前:デフォルトの名無しさん (ワッチョイ 75f1-+b0N) [2020/07/11(土) 13:02:10 ID:QNz3pRQ00.net]
糞!

430 名前:デフォルトの名無しさん mailto:sage [2020/07/11(土) 13:57:47.97 ID:6j9f8L+G0.net]
確実にコントロールしたいならAPI
https://www.vba-ie.net/code/numlockon.php

まあAPIも万能じゃないんだけど、今回はとりあえず使える



431 名前:デフォルトの名無しさん mailto:sage [2020/07/11(土) 14:02:53.27 ID:R2Hyt8Cad.net]
>>430
いやいや、確かにSendkeysよりは良いけど、何でキーボードシュミレートしたいのよ。
オブジェクトに直接キーを送るとか、オブジェクトの動作そのものを実現するとかは無しか?

432 名前:デフォルトの名無しさん mailto:sage [2020/07/11(土) 18:21:43.63 ID:2M7rjl8q0.net]
大抵のアプリは外部からの要求を受けるのはマウスとキーボードだけだから

433 名前:デフォルトの名無しさん [2020/07/11(土) 18:52:58.44 ID:6knL1xMy0.net]
あ、ちょっと失礼。
ほんの少し前、テキストボックスに入力された数式をだったか
マクロだったかをプロシージャにして実行するってなことをやってたんだが
すっかり忘れてしまいました。
どうやるんでしたでしょうか。

OS;Windows 98
Excel 97

434 名前:デフォルトの名無しさん (ワッチョイ 05da-ucCN) mailto:sage [2020/07/11(土) 19:37:48 ID:Nux+IN340.net]
>>418
そんな不具合見たことないな。
VBA限定で、VBSから使うと出ないとか?

435 名前:デフォルトの名無しさん [2020/07/11(土) 20:21:11.98 ID:UiWBFlGj0.net]
>>433
死ね

436 名前:デフォルトの名無しさん (ワッチョイ bdda-ucCN) mailto:sage [2020/07/11(土) 23:15:56 ID:vrrLv2a80.net]
>>433
そのうち思い出すから

437 名前:デフォルトの名無しさん mailto:sage [2020/07/12(日) 08:33:32.60 ID:lihdyx4V0.net]
>>433
Application.Run

438 名前:デフォルトの名無しさん (オイコラミネオ MM51-aL1r) mailto:sage [2020/07/13(月) 14:37:54 ID:1lzMxcCPM.net]
sendkeys問題解決しました
ありがとう!create object wscript.shell.sendkeysでうまいこと行けた

439 名前:デフォルトの名無しさん [2020/07/14(火) 20:11:25.31 ID:zXCz2P4SM.net]
二つのieを起動して2つ目のieにpdfを表示させてそのpdfをexecwbのsaveasで名前をつけて保存したいのですが名前をつけて保存ダイアログに一つ目のieのファイルが保存項目として表示されてしまいます。どなたかわかる方教えてください。よろしくお願いします。

これがそのコードです getIE はシェル取得ファンクションです
長すぎると書き込めないので省略しました
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.navigate "book.impress.co.jp/appended3384/4-4.html"

Dim ie2 As InternetExplorer

Set ie2 = CreateObject("InternetExplorer.Application")

ie2.Visible = True

ie2.Navigate2 "C:\\Desktop\test.pdf", 1

Set ie2 = getIE("test")

Dim test As String

test = "c:\test\test.pdf"

ie2.ExecWB OLECMDID_SAVEAS, OLECMDEXECOPT_DONTPROMPTUSER, test


End sub

440 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 02:33:14.34 ID:ZAnqbcST0.net]
Excelでやることか?



441 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 04:42:17.63 ID:IqfNcqeZ0.net]
>>439
5ch では、同じ質問のマルチポストは禁止です!

もう1つのスレの方で、やってください!

442 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 05:05:59.66 ID:T7WU5W0H0.net]
Set ws1 = Worksheets(1)
Set ws2 = Worksheets(2)

n = ws2.Cells(Rows.Count, "E").End(xlUp).Row
n = n + 1

For i = 2 To ws1.Cells(Rows.Count, "A").End(xlUp).Row
j = 1

ws2.Cells(n, 5).Value = ws1.Cells(i, j).Value
n = n + 1
j = j + 1

ws2.Cells(n, 5).Value = ws1.Cells(i, j).Value
n = n + 1
j = j + 1

ws2.Cells(n, 5).Value = ws1.Cells(i, j).Value
n = n + 1
j = j + 1

ws2.Cells(n, 5).Value = ws1.Cells(i, j).Value
n = n + 1
j = j + 1

ws2.Cells(n, 5).Value = ws1.Cells(i, j).Value
n = n + 1
j = j + 1


これが10回ほど続くんですか簡潔にかけませんか?

443 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 05:28:08.89 ID:jQlbMrrka.net]
え?VBAって二重ループ出来ないの?


エクセルVBAの二重ループについて
https://oshiete.goo.ne.jp/qa/7136635.html

444 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 07:31:51.88 ID:e63KSG0L0.net]
再計算をオフにしていても、VlookupとかIndex/Matchで参照されているセルを削除すると初回だけ滅茶苦茶重くなる
二回目からはアンドゥしようが削除しようが一瞬になる
この初回も重くならないようにしたいんですけど、初回だけどこかで再計算か何かが裏で動いてるんでしょうか?

445 名前:デフォルトの名無しさん (ブーイモ MMa1-+2iy) mailto:sage [2020/07/15(水) 07:50:23 ID:XJ3hJcChM.net]
プリンタに接続してるんじゃね?

446 名前:デフォルトの名無しさん (ワッチョイ fabc-3crd) mailto:sage [2020/07/15(水) 08:49:05 ID:vPDzR3td0.net]
記念パピコ

447 名前:デフォルトの名無しさん (アウアウエー Sa02-l+/r) [2020/07/15(水) 09:01:25 ID:yrzZGj8Ca.net]
ちゅーちゅーちゅぶりらチュパカブラー

448 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 17:34:47.36 ID:vYR4+hKTa.net]
テーブルの特定列に入力されている値から選択できるドロップダウンリストを作りたいです

【要望】
・重複なし
・(できれば)空白は除く

449 名前:デフォルトの名無しさん [2020/07/15(水) 17:39:29.54 ID:yeW9Dlh/0.net]
>>448
そうか
頑張れよ
ここは日記お断りだぞ

450 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 17:39:30.37 ID:mQ5xmDA6a.net]
>>444
キャッシュのなら場合そういう動作が正常



451 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 19:30:17.20 ID:FYD4rmMFM.net]
>>448
これがゆとり世代だ

452 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 20:33:22.18 ID:1MtMgQ04F.net]
質問してるじゃん
俺は答えられないけど

453 名前:デフォルトの名無しさん [2020/07/15(水) 21:01:28.16 ID:XJthZBxP0.net]
「作りたいです」という決意表明だろ?
そう言えば誰かが勝手に手助けしてくれると思ってるのかね。
あ、本人かよ。

454 名前:デフォルトの名無しさん [2020/07/15(水) 21:25:35.44 ID:sBHz+ETb0.net]
平成生まれと昭和生まれは少々使用する言語が違う。
同じように日本語とは言うけれど。

455 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 21:35:02.16 ID:8IhCO+GMM.net]
ゆとり世代は誰かが助けてくれて当然と思っているからな

456 名前:デフォルトの名無しさん [2020/07/15(水) 21:38:36.33 ID:sBHz+ETb0.net]
そこら辺は見た目の影響も大きいんだよな。
イケメンだったり可愛かったりすると、助けてもらえるのが当たり前で生きてる。

一方、ちょっと残念な感じだと、助けてもらえることが無く生きてる。

そこら辺の感じ方が違うのは当然なんだよね。

457 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 22:18:05.17 ID:onU8sBQ+a.net]
俺じゃない誰かが助けてくれるんじゃね

458 名前:デフォルトの名無しさん [2020/07/15(水) 22:44:18.56 ID:ovUS+LpM0.net]
覚えてものにしようと断固たる決意でマクロを完成させたけど
最初の方に組んだプロシージャを今見てもほとんど覚えてないわ
メンテナンスだけはできるようにコメントつけてあるけど
これがネットで拾い集めて基礎を学ばない相変わらずの俺のダメスタイル

459 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 23:23:50.74 ID:xZi/KI4S0.net]
コメント残してるだけだいぶマシ

460 名前:デフォルトの名無しさん [2020/07/16(木) 00:53:10.42 ID:9MD/+BL5M.net]
個数や最終行などよく使う変数名は今後の為に統一させたほうがいいな
その時の気分でいろいろと変えると後で意味不明になる



461 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 02:52:22.64 ID:OfRWrGue0.net]
古いソースをコピペするからそうなる

462 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 09:14:27.30 ID:PzZafv3e0.net]
そして統一後気が変わって全て置換か

463 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 09:39:51.11 ID:6lIeM5zt0.net]
何の変数かコメント付けるだけで十分では

464 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 11:51:40.64 ID:iXWxOn5X0.net]
同じフォルダ内の"取引実績"ブックの"関東地区"シートのA列・B列・C列・J列・L列・AD列の
それぞれ2行目から最下行までを配列に入れる方法を教えてください

Workbooks.Open ThisWorkbook.Path & "\取引実績", ReadOnly:=True

i = Sheets("関東地区").Cells(Rows.Count,1).End(xlUp).Row

ReDim SiresakiArray(i -1, 6) As Variant
'代入するのはA,B,C,J,L,AD列のみ
SiresakiArray() = Range("A2:??????

ActiveWindow.Close

465 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 12:20:55.35 ID:Bld7disAr.net]
いらん列を消せば?

466 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 12:29:13.40 ID:GzNgEuWKM.net]
みんなvbaどうやって勉強してるの?
しっかり参考書とか買って、じっくり?
ちなみに自分は>>458に近いスタイル
必要に迫られたらネットで検索して、ちょっと弄ってって感じ
だからいつまでたっても上達しない・・・

467 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 12:41:43.01 ID:Bld7disAr.net]
消したらrange("a2").resize(i,6)

468 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 12:45:12.35 ID:6lIeM5zt0.net]
コピペするだけで身に付くわけがない…
そのコードが何をしてるのか理解できるまで調べて自分で使っていれば自然に身に付く

>>464
いらん列消すか、いる列の2行目から地道に入れる

469 名前:デフォルトの名無しさん [2020/07/16(木) 13:00:26.82 ID:jRyYUilTM.net]
これできるようにしてくれない?
これって自動でならない?
職場の糞どもの質問は完全に無視してる
テメーの昼休憩にずっと触ってるスマホで調べりゃ出てくるだろ
話しかけんな

470 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 13:38:13.07 ID:PzZafv3e0.net]
その人が楽するためなら何もしないな
あえて普段はどうやってるか聞いてみて嫌な顔一つしない感じならやる



471 名前:デフォルトの名無しさん [2020/07/16(木) 14:52:54.75 ID:2egBYvX50.net]
>>464
Sub hoge1()
Dim aa As Variant
aa = Range("a1:c3,e1:f3")
'結果:a1:c3までしか入らない。なるほどね。
End Sub


Sub hoge2()
i = Cells(Rows.Count, 1).End(xlUp).Row
ReDim siresakiarray(i - 1, 6) As Variant
retsu = Array("A", "B", "C", "J", "L", "AD")

For iic = 0 To UBound(retsu)
For iir = 2 To i
siresakiarray(iir - 2, iic) = Cells(iir, retsu(iic))
Next
Next
'
Worksheets.Add
Range("a1:m999") = siresakiarray

End Sub

一つずつ入れるならザックリこんな感じのロジックで。
他の方法として新しいシートにシートコピーして列を消して配列に挿入の方が
効率いいのかも どうだろう

472 名前:デフォルトの名無しさん (ワッチョイ dab5-t9FD) mailto:sage [2020/07/17(金) 00:37:14 ID:27Ma2AbZ0.net]
少し組んで改善するとまぁ評価はされるんだけど
他の人後でメンテナンスできるよな?
とか
マクロが壊れる心配ないよな?とか

テンプレートのように言われるけど知るかよ
読み取り専用で配布してるしプロシージャ弄れないようにしてあるし壊れねーっつーの
パスワードかけてないマスター版も社内サーバーに置いてあるから
いじりたきゃ学べや

あと配布した途端楽になったらその業務ばっかりやろうとするおっさん見苦しくてむかつく
配って損したわ

473 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 08:36:30.29 ID:KHrOLv580.net]
あれ?ここ日記帳だっけ?

474 名前:デフォルトの名無しさん (ワッチョイ 7663-NRU3) mailto:sage [2020/07/17(金) 09:55:37 ID:q+bHJv+q0.net]
みんなの日記帳だよ
君も自由に書き込んでいいよ

475 名前:464 (ワッチョイ 89cc-sTnA) mailto:sage [2020/07/17(金) 11:03:50 ID:lcXPd8bd0.net]
>>465,468,471
ありがとうございます。列を削除して取り込みます。

476 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 11:46:31.69 ID:lcXPd8bd0.net]
配列 ary(1,6)に年月日(2020/7/18)が入っていて、配列ary(1,7)には何らかの値が入っていることがあります
ary(1,6)を20日締で起算して、ary2(1,1)に"20_7"のような文字列を返す式を教えてください。
またary(1,7)に値が入っていれば翌月にずれるようにしたいです

ary(1,6)="2020/7/18"
ary(1,7)= ""
の場合ary2(1,1)="20_7"

ary(1,6)="2020/7/21"
ary(1,7)= ""
の場合ary2(1,1)="20_8"

ary(1,6)="2020/7/18"
ary(1,7)= "値"
の場合ary2(1,1)="20_8"

ary(1,6)="2020/12/20"
ary(1,7)= "1"
の場合ary2(1,1)="21_1"

477 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 12:02:43.77 ID:0sNlDakf0.net]
型はなんなの?
くそコードでもいいからひとつずつ考えて作ってみたの?

478 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 12:07:44.33 ID:NYWT4Zhl0.net]
の場合、とか言ってるんならif使えばいいだけだろ
アホなのか

479 名前:477 mailto:sage [2020/07/17(金) 12:46:43.52 ID:0sNlDakf0.net]
書いてみた
理解しなきゃ使えないと思うが


https://i.imgur.com/3Ynd7KW.png

https://i.imgur.com/5mFzai4.png

480 名前:476 mailto:sage [2020/07/17(金) 15:02:49.46 ID:lcXPd8bd0.net]
>>479

完成しました。ありがとうございました



dt = CDate(ary(1,6))

If Cint(Format(dt,"d")) > 20 Then '20日以降か

dt = DateAdd("m",1,dt)

End if

  '空欄でなければさらに1カ月繰り上げる

If AfuriArray(cnt-1,26) <> "" Then

Else

 dt = DateAdd("m",1,dt)

End If

ary(2,1) = Right(Format(dt, "yyyy"),2)&"_"& Format(dt,"m")



481 名前:デフォルトの名無しさん (ワッチョイ dab5-t9FD) mailto:sage [2020/07/17(金) 21:27:08 ID:27Ma2AbZ0.net]
来年の役員報告の課の改善発表の内容に
俺のマクロで作る事が既に組み込まれてるんだが
そもそもそこまでスキルないし年上のもっと給料もらってる奴にやらせろやカスが

482 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 23:08:06.59 ID:Bh4mGSGka.net]
って言えばいいじゃん

483 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 15:07:16.47 ID:aMbjCCwU0.net]
日本語環境でmiLANG_JAPANESEを指定してもbad languageのエラーが出るのは何故?

484 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 16:11:19.98 ID:gXGI8VY40.net]
敗戦国だから

485 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 18:26:41.44 ID:6ntZQZs40.net]
sheet"s1"にFunctionで処理したary2を貼り付けたいのですが、処理前のary1が貼り付けられます
Function後のary2を貼り付けるにはどうすればよいですか?

Sub test()
Dim endrow, r As Long
endrow = Sheets("rui").Cells(Rows.Count, 1).End(xlUp).Row
ReDim ary1(endrow - 1, 6)

ary1() = Sheets("rui").Range("A2:F" & endrow).Value
Sheets("sh1").Range("A2:F" & endrow) = ary2(ary1())
End Sub

Function ary2(ary1() As Variant) As Variant()
Dim en, r As Long
en = UBound(ary1())
For r = 1 To en
ary1(r, 1) = Application.Asc(ary1(r, 1))
ary1(r, 1) = StrConv(ary1(r, 1), vbUpperCase)
ary1(r, 1) = Replace(ary1(r, 1), " ", "")
Next r
End Function

486 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 19:22:36.82 ID:BZh66Ti/a.net]
>>485
そりゃあ貴方、ary2は関数ですと自分で宣言してるもの。
しかもary1に代入してますやんかー
プログラムは命令通りに動作してるだけじゃん。

ary2の配列を準備して処理してから
そのary2の内容をシートに展開すようにプログラムしなきゃ

487 名前:485 mailto:sage [2020/07/18(土) 20:24:50.23 ID:6ntZQZs40.net]
>>486
ありがとうございますFuntionの使い方を誤解していましたm(_ _)m

488 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 22:33:50.97 ID:6aEbh+KL0.net]
Function大魔王

489 名前:デフォルトの名無しさん [2020/07/18(土) 22:50:59.73 ID:GbMN9IfrM.net]
>>485
Functionの配列渡しは少しややこしい
まずは内容を単純化して正解の型を見つけた方がいいと思う

490 名前:デフォルトの名無しさん [2020/07/18(土) 23:52:10.32 ID:UVKbM6jvM.net]
>>485
単純化した一つの正解の型

Sub test()
Dim ary() As String
ary() = fnc
MsgBox ary(1)
End Sub

Function fnc() As String()
Dim ary(1) As String
ary(1) = "a"
fnc = ary()
End Function



491 名前:デフォルトの名無しさん mailto:sage [2020/07/19(日) 01:27:51.35 ID:YQjQ9IMi0.net]
配列の扱いや参照渡し以前の問題では・・・

492 名前:デフォルトの名無しさん [2020/07/19(日) 02:51:36.02 ID:b8b+mHAS0.net]
結局、馬鹿には無理なんだよ

493 名前:デフォルトの名無しさん mailto:sage [2020/07/19(日) 02:54:31.21 ID:MOwnlnDY0.net]
joinして受け渡ししてsplitで復元がシンプルでわかりやすいんじゃね?

494 名前:デフォルトの名無しさん mailto:sage [2020/07/19(日) 06:42:33.41 ID:xggXZiaY0.net]
もう企業ユーザーにはOffice Script解放されてるみたいですが試された方、使用感どんなもんですか?

495 名前:デフォルトの名無しさん mailto:sage [2020/07/19(日) 08:30:43.83 ID:du465xO70.net]
調査してる最中じゃねーの、あわてんな

496 名前:デフォルトの名無しさん mailto:sage [2020/07/19(日) 14:09:46.91 ID:4shkrYfWd.net]
>>485
ary2の宣言部分は正しい。
でもary2の内部でary2はどうなったの?
何もしてないよね。
ary2の内部でary2はこうなりましたって書かないと宣言した時点の空の配列が返るのが当然。

つまりary2のFunctionの最後にary2=の文が必要。

497 名前:デフォルトの名無しさん mailto:sage [2020/07/19(日) 14:11:26.48 ID:4shkrYfWd.net]
>>490のfnc=any()の文が正にそれ。

498 名前:デフォルトの名無しさん mailto:sage [2020/07/20(月) 12:06:47.51 ID:Dkhdkwhma.net]
excelなんだから配列はセルにいれときゃいいんじゃね

499 名前:デフォルトの名無しさん mailto:sage [2020/07/20(月) 18:29:09.95 ID:3yLiDe7EM.net]
速度気にしないなら

500 名前:デフォルトの名無しさん mailto:sage [2020/07/20(月) 23:22:10.32 ID:87nc/Vc+0.net]
全然気にしない



501 名前:デフォルトの名無しさん mailto:sage [2020/07/20(月) 23:52:01.41 ID:3H73W2vZ0.net]
配列は大量に入れるとメモリ不足になるのが嫌。
値以外のプロパティ持ってるセルの方がよっぽどメモリ喰うだろって思うけど、
仕様だから仕方がない。

502 名前:デフォルトの名無しさん mailto:sage [2020/07/21(火) 07:20:28.10 ID:s4f7WPjJd.net]
メモリ不足になるほど大量に入れることなんて殆ど無い。
不足するのは別の理由だと思うが。

503 名前:デフォルトの名無しさん mailto:sage [2020/07/21(火) 10:31:44.78 ID:8QcWJiTk0.net]
10万行のCSVとか配列で処理したくなるけどメモリ不足になるんで仕方なくワークシートに入れてる

504 名前:デフォルトの名無しさん mailto:sage [2020/07/21(火) 11:09:54.82 ID:GBbtTx0BM.net]
VBAは過去のしがらみが多いので64bit Excelでも変な制限があってびっくりする
最近経験したのはユーザー定義型の中の配列サイズ
Type T
A(33000) As Integer
End Type
Sub S
Dim X As T
End
ってやるだけで「動的なローカル変数が多すぎます」って言われる
A(32000) As Integer
なら問題ない

505 名前:デフォルトの名無しさん mailto:sage [2020/07/21(火) 11:43:12.61 ID:uXgtcpNna.net]
intの最大の32767だろうね

506 名前:デフォルトの名無しさん mailto:sage [2020/07/21(火) 12:27:55.57 ID:Z8jTNyVcM.net]
オフィススクリプト試したい…
個人ユーザーにも解放してくれ…

507 名前:デフォルトの名無しさん mailto:sage [2020/07/21(火) 13:35:34.68 ID:420tjBmwd.net]
csvを文字列形式のセルに取り込む時、値がない場合は""とemptyどっちにしておくべき?

508 名前:デフォルトの名無しさん [2020/07/21(火) 14:38:12.66 ID:zc+r4po80.net]
office田中の人が顔出しでYoutubeはじめたらしいが
おじいちゃんで偉そう。
実世界なら関わりたくないタイプ。

509 名前:デフォルトの名無しさん mailto:sage [2020/07/21(火) 19:47:20.41 ID:g0ULgQg00.net]
ネット上でも関わり合いになりたくないタイプだろ

510 名前:デフォルトの名無しさん mailto:sage [2020/07/21(火) 21:24:07.75 ID:fmBf+klc0.net]
自分の参考になるとこだけ聞いときゃいいんじゃないの?
その他アレコレ言うのはどうかと思うぞ



511 名前:デフォルトの名無しさん mailto:sage [2020/07/21(火) 22:50:12.29 ID:nbzaQebba.net]
>>503
1レコードずつシーケンシャルに処理できないの?

512 名前:デフォルトの名無しさん mailto:sage [2020/07/21(火) 23:00:00.64 ID:q3mQwKOX0.net]
複数の同じ形式で入力されたブックをマージしたんですが、テキストを連結する場合に区切り文字を「|」にしました
(「|」は入力時には使用していません)
ファイルが3つ(A.xlsx,B.xlsx,C.xlsx)、それぞれのブックの値をa,b,c(テキストのみ、数値なし)、セルの値は
空白可だとすると、マージ後のあるセルの文字列は

a|| a|b| a||c |b| |b|c ||c a|b|c |||

のいづれかになりますが、このうち左端及び右端の「|」は削除、連続する「|」は「|」ひとつに統合、すべて「|」の
場合はセルを空白にするにはどうすればいいでしょうか?余分なスペースを削るTrimのようなことを任意の文字でしたい、
という趣旨です。処理後は以下のようにしたいです

a a|b a|c b b|c c a|b|c 空白のセル

一旦「|」をスペースに置換してTrim関数で余分なスペースを削ってから再度スペースを「|」に置換すればできるんですが、
もうちょっとスマートな方法があるのかなということと、意図して連続したスペースを入力していたらTrimで消えてしまうので
そういった場合に備える意味も含めていい方法があれば教えてください

513 名前:デフォルトの名無しさん [2020/07/21(火) 23:08:39.79 ID:aJyp0F9S0.net]
Excel2019です
外部CSVをpowerqueryで取り込んで整形したのちシートに貼り付けてあるテーブルがありまして、
ファイルを立ち上げる度にこのテーブルを自動で更新させるところまではできました。
この後、更新完了後に自動的にCSVファイルを保存、終了させようと考えているのですが
更新完了のイベントがどうもわかりません(見当たりません)。

アドバイスをいただけないでしょうか
よろしくおねがいします。

514 名前:デフォルトの名無しさん mailto:sage [2020/07/21(火) 23:15:37.99 ID:rncf75Mgd.net]
>>513
スマートさは知らないが正規表現で置換するとか

515 名前:デフォルトの名無しさん mailto:sage [2020/07/21(火) 23:16:26.19 ID:rncf75Mgd.net]
間違えた
>>512

516 名前:デフォルトの名無しさん mailto:sage [2020/07/22(水) 01:35:45.12 ID:2/9nnKBr0.net]
>>507
null 値は文字列型じゃなく、
型もない、または、null型だから、空文字列ではないと思う

>>513
>このテーブルを自動で更新させるところまではできました
この処理の後に、やりたい処理を書けば?

517 名前:デフォルトの名無しさん (ワッチョイ 8b63-UE+f) mailto:sage [2020/07/22(水) 02:45:59 ID:V5aeR2xw0.net]
>>512
/^\|+|\|+$//
/\|+/|/

518 名前:デフォルトの名無しさん [2020/07/22(水) 03:16:01.58 ID:hQWVf2dN0.net]
>>517
v(^^)/~

519 名前:デフォルトの名無しさん mailto:sage [2020/07/22(水) 03:56:58.93 ID:F4KuFXOj0.net]
>>511
ファイル操作はセル操作以上に重いからできるだけまとめた方が速くなる

520 名前:デフォルトの名無しさん mailto:sage [2020/07/22(水) 08:03:26.55 ID:eX+7X9u9a.net]
>>519
そう?



521 名前:デフォルトの名無しさん (スッップ Sd33-Spa3) mailto:sage [2020/07/22(水) 08:33:57 ID:6gIpTQrUd.net]
>>503
10万を一気に配列に入れるの?
5000行ぐらいずつで処理できんの?

522 名前:デフォルトの名無しさん mailto:sage [2020/07/22(水) 08:40:56.01 ID:6gIpTQrUd.net]
>>512
1.連続する|を1つにする。
2.両端の|を消す。

523 名前:デフォルトの名無しさん [2020/07/22(水) 16:49:33.87 ID:aRPEdkhK0.net]
ExcelWebAddinっていうのを使ってWebフォームの入力を自動化しようとしていますが、ラジオボタンにチェックを入れるにはどのようなコマンドを入力すれば良いのでしょうか?

524 名前:デフォルトの名無しさん mailto:sage [2020/07/22(水) 17:06:35.37 ID:F072B1Mr0.net]
1人だけマクロ作って超楽に終わらせてるのがバレたわ
改善提案で出して8000円賞やるから他の奴らにも配って共有化してくれと言われた
まぁ仕方ない
でもまぁマクロはこっそり作って自分で運用するに限るね
次にそういうのできたら発表で使ってくれだと

525 名前:デフォルトの名無しさん mailto:sage [2020/07/22(水) 17:17:55.78 ID:nFYyDION0.net]
こっそり使わないと
マクロ適用できないように仕変されるよ

526 名前:デフォルトの名無しさん mailto:sage [2020/07/22(水) 17:25:20.04 ID:F072B1Mr0.net]
Excelを使った業務が95%くらいの職場だから問題ない
逆に使いにくいwordを俺が改善で駆逐していってたが今回のはみんなに配りたくなかったけどまぁ仕方ないか…
在宅の日なんて他の人が半日かかるのを5分だったのに…

527 名前:デフォルトの名無しさん mailto:sage [2020/07/22(水) 17:55:11.21 ID:vvOOySn70.net]
>>524
そういうのさあ、共有してあげてもいいけど、共有すると知的障害の人が仕様の異なるものに適用して失敗して文句言ってくるのが目に見えてるんだよね
だからといっていろんなケース想定してプログラミングするのはアホらしいし

528 名前:デフォルトの名無しさん mailto:sage [2020/07/22(水) 18:47:51.04 ID:urXipo8c0.net]
むしろあえて自分用に最適化して「共通部分以外はできません」でもいい

529 名前:デフォルトの名無しさん mailto:sage [2020/07/22(水) 19:56:15.37 ID:nFYyDION0.net]
いつのころからかマクロを忌み嫌い極限までVLOOKUPで済ませるようになった

530 名前:デフォルトの名無しさん mailto:sage [2020/07/22(水) 19:58:49.72 ID:ILXZvJ+B0.net]
index/matchは使わないのw



531 名前:デフォルトの名無しさん [2020/07/22(水) 20:03:08.77 ID:SXXgaLVH0.net]
オレオレ証明書でスムーズに使えるかと思ったら
証明書付けると逆に使えなくなったり
嫌がらせが半端じゃなかったしな
今では設定がどこにあるのかすら分からん

532 名前:デフォルトの名無しさん mailto:sage [2020/07/22(水) 21:55:35.93 ID:F4KuFXOj0.net]
XPの頃はオレオレ証明書を作ってたけど、そういや今は作らなくても動いてるな
何がどう変わったのか把握してないわ

533 名前:デフォルトの名無しさん mailto:sage [2020/07/22(水) 22:08:08.79 ID:Fc7dRB3XM.net]
今ならxlookupがある。

あと関係ないけど、スプシのquery関数輸入してくんないかなぁ…あんなのに特許とか無いでしょ?

534 名前:デフォルトの名無しさん (ワッチョイ 8b63-fOmF) mailto:sage [2020/07/23(木) 02:13:32 ID:Iky/Pkwz0.net]
あるだろう
使われてないけど

535 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 02:31:09.52 ID:KC5IdKq10.net]
シートのコード名をマクロから変更することはできますか?

536 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 02:32:42.56 ID:vlSabEZu0.net]
できるわけないだろ

537 名前:デフォルトの名無しさん (ワッチョイ 9909-RtpQ) mailto:sage [2020/07/23(木) 02:42:45 ID:KC5IdKq10.net]
まじか!

538 名前:デフォルトの名無しさん (アウアウエー Sae3-UreN) mailto:sage [2020/07/23(木) 02:44:48 ID:hi69YBSQa.net]
シートのコード名ってなんだ?

539 名前:デフォルトの名無しさん (ワッチョイ d1a2-K9d7) mailto:sage [2020/07/23(木) 02:46:02 ID:vlSabEZu0.net]
プロシージャ名じゃね
知らんけど

540 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 02:50:40.32 ID:hi69YBSQa.net]
設定を変更する必要はあるけど、VBproject を編集できるかもね



541 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 03:09:52.56 ID:u9f9fzuBr.net]
>>535
値取得のみ可
https://docs.microsoft.com/ja-jp/office/vba/api/excel.worksheet.codename

542 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 03:16:02.13 ID:togpUAVc0.net]
>>526
もしかして長文資料もExcelで作っちゃう系?
それはそれで絶対やめとけよ

543 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 03:21:02.63 ID:KC5IdKq10.net]
>>541
やっぱり値取得だけなんですね。
ありがとうございました。

544 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 07:12:45.90 ID:i+261XKMd.net]
>>543
何で変えたいの?

545 名前:デフォルトの名無しさん [2020/07/23(木) 07:16:32.96 ID:kdPZXO8Ra.net]
世の中が気に入らないから

546 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 07:23:13.06 ID:Rh3868Eja.net]
手入力でやれよ

547 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 07:35:31.90 ID:LqjC2Hh/0.net]
sendkeyでなんとか

548 名前:デフォルトの名無しさん (ワッチョイ 4149-5TCi) mailto:sage [2020/07/23(木) 10:55:22 ID:zKEjLf2X0.net]
>>517
ありがとうございます、休み明けに試してみます

549 名前:デフォルトの名無しさん [2020/07/23(木) 11:56:15.16 ID:5yzO6ql90.net]
Android版のアウトルックが操作方法また変わって、開こうとしたら削除されて、しかも削除済みのフォルダにもない。
どうしたら良いんだこれ。
メール消えてもうた。

550 名前:デフォルトの名無しさん [2020/07/23(木) 11:58:48.40 ID:qQzwkkHta.net]
>>549
スレチ



551 名前:デフォルトの名無しさん [2020/07/23(木) 11:59:14.78 ID:5yzO6ql90.net]
ロードに1分以上かかるのに、一見、ロードされているように見せかけるのも、問題があるように感じる。
人によっては、本文の無いメールが来たと思う人もいるだろう。

一見して高速にロードされるように見せかけるのは大した技術なんだろうけど、それ、ユーザーを騙すってことだよね?
実際にはクライアント側にデータを保存していないんだから。

552 名前:デフォルトの名無しさん [2020/07/23(木) 12:02:50.60 ID:5yzO6ql90.net]
高速にロードされるように見せかけているがために、まだデータをダウンロードできていないことをユーザーに知らせることが出来ない。
通信中であることを示すマークを出すと、高速で無いことがバレてしまう。
ここに矛盾を抱えてる。

553 名前:デフォルトの名無しさん [2020/07/23(木) 12:12:38.03 ID:5yzO6ql90.net]
しかもアウトルックドットコムはLinuxに慣れてる一般大衆からすると信じがたく重い。
サーバーからダウンロードしていることを隠すなら、高速なLinuxサーバーを使うべきでは?

554 名前:デフォルトの名無しさん [2020/07/23(木) 12:24:44.89 ID:5yzO6ql90.net]
先月まで開く動作だった左にスワイプが削除の動作に代わるって、とんでもない仕様変更だよ。

555 名前:デフォルトの名無しさん [2020/07/23(木) 12:26:28.82 ID:5yzO6ql90.net]
しかも、本文がロードされる前の時間帯では、削除済みのフォルダに入らない。

さすがにこれは仕様というよりバグなんじゃないのかな?

556 名前:デフォルトの名無しさん [2020/07/23(木) 12:31:43.83 ID:iL/DIdMFM.net]
officeTANAKAのおじいちゃんの動画見てる人いる?

557 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 13:19:56.66 ID:OedHhoi20.net]
>>555
死ね

558 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 17:49:45.58 ID:XAOqwh8/0.net]
>>556
WEBを流し見した方が早い
同じ内容なら動画は時間がもったいない

559 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 18:24:47.13 ID:otdPxTIka.net]
おじいちゃんよりperfect human NAKATAなら見るけど

560 名前:デフォルトの名無しさん [2020/07/23(木) 19:47:21.57 ID:9f0mDEOaM.net]
中田のは世界史/日本史やってるときはよかったが
範囲を広げすぎて見てるほうも興味ないしやってるほうも専門じゃないからおもしろくない



561 名前:デフォルトの名無しさん [2020/07/23(木) 19:47:32.61 ID:XyxsyJax0.net]
このスレは雑談スレで質問はVBAでもビジネスsoft板スレで聞いた方がいいのかな

562 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 20:23:47.73 ID:46il5rmY0.net]
課で全員が共有する色んなExcelのファイルがあるけど
xls→たいがいマクロ組んでないからそのままマクロ組むこともある
xlsm→作成者の作ったのを見て少しだけ弄ることはある
xlsx→手を出さない

563 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 20:32:21.34 ID:jBwCrw170.net]
subってプライベートにしないと何か良くないことあるんですか?

564 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 20:39:15.52 ID:FOonXAhZM.net]
>>561
雑談してるスレ住人達の興味を引くような質問なら答えてくれるかもな
あるいは答えることで承認要求が満たされそうな質問とかマウント取れそうな質問とか

565 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 20:40:34.07 ID:aUHqAsWY0.net]
>>563
目障りだ。消えろ!

566 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 20:52:02.29 ID:i+261XKMd.net]
>>563
プロシージャを沢山作るだろ。
その中にゃちょっとお試しのSub test1()なんてのが作られる。
で、同名のプロシージャとか作ると、色々問題が出る。
プライベートならモジュールが変われば問題無し。

そもそも、面倒くさいからわりと忘れがちだが、ちゃんとスコープや型を考えて作れない人のプログラムは出来も悪いことが多い。
バグも作りがちだね。

567 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 20:53:38.12 ID:LqjC2Hh/0.net]
ちゃんとクラス作んないとな

568 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 21:08:16.92 ID:togpUAVc0.net]
クラスとかよー分からん
オブジェクト指向の言語やるといいのかな?

569 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 21:14:07.35 ID:vlSabEZu0.net]
作らなくても何とかなってきたんだろ、だったら要らないよ。
どうせクラスとかインテリセンスに項目追加するぐらいの効果しかないでしょ。

570 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 22:12:35.10 ID:Ybp1dMGc0.net]
>>562
無能自慢はやめとけ



571 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 22:29:15.13 ID:lFUaLbQa0.net]
名前はクラスだけどやってることはほぼ構造体だしな

572 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 22:41:45.26 ID:bXbPEMrj0.net]
イベントを持った動的に生成するフォームはクラスでやるしかないのでは
と、思うのだが(´・ω・`)違ったらごめんね
クラスなんか要らない構造体で十分って言ってる奴、知的好奇心足りなさすぎでは

573 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 23:49:06.55 ID:i+261XKMd.net]
>>572
VBEにメニュー追加して、メニュー押した時のイベントにはクラスが必要だね。

VBAはクラス使わなくても組める言語だけど、時々クラスがピッタリ来る場合がある。
そういう場合はクラス使った方がメンテナンス性とか後々良いことがある。

574 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 23:54:31.71 ID:w5Kgum7s0.net]
ADOとかUIAutomationとか、長くなりそうなのは面倒だからクラス。

575 名前:デフォルトの名無しさん mailto:sage [2020/07/24(金) 07:38:12.69 ID:kDVWriuI0.net]
クラスの意味はわかるけど使うメリットがようわからんな
for eachで回せるくらいしか思い浮かばないんだが…
javaチックに全部クラスで作るのもなんか違う気がするし

576 名前:デフォルトの名無しさん mailto:sage [2020/07/24(金) 08:16:46.34 ID:4h264/iA0.net]
またVBAでクラスの話かよ…
せめてClass_Initializeに引数持てたらな…

577 名前:デフォルトの名無しさん mailto:sage [2020/07/24(金) 08:56:19.08 ID:qHYHRNzt0.net]
>>576
'Class_Initialize' イベントはサポートされなくなりました
https://docs.microsoft.com/ja-jp/dotnet/visual-basic/misc/bc42001

オブジェクト指向プログラミング (Visual Basic)
コンストラクター
https://docs.microsoft.com/ja-jp/dotnet/visual-basic/programming-guide/concepts/object-oriented-programming#constructors

578 名前:デフォルトの名無しさん mailto:sage [2020/07/24(金) 09:00:02.69 ID:ASBY7bf4M.net]
それVBAではなくて本家のVBの話だろ

579 名前:デフォルトの名無しさん mailto:sage [2020/07/24(金) 10:09:40.26 ID:4h264/iA0.net]
>>577
ここまで頭悪い奴も珍しいなw
https://i.imgur.com/xv7gdOM.jpg






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<158KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef