◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

Excel VBA 質問スレ Part67 ->画像>12枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1593104489/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1デフォルトの名無しさん (ワッチョイ 33da-3+hg)2020/06/26(金) 02:01:29.56ID:uDfmpksE0
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付ける

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

※前スレ
Excel VBA 質問スレ Part66
http://2chb.net/r/tech/1589085825/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

2デフォルトの名無しさん (ワッチョイ 3f01-bXJj)2020/06/26(金) 07:58:40.55ID:PIx3bjtD0
>>1
おちゅ

3デフォルトの名無しさん (ワッチョイ 8fba-x+MM)2020/06/26(金) 19:07:55.93ID:ZjxMZdyJ0
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デフォルトの名無しさん (ワッチョイ 8f01-Zl/h)2020/06/26(金) 20:08:11.16ID:SBXE4EMs0
・OpB1って何ですか?丁寧に書いて
・せめてoutputCellInfoのソースは全部書いて
・=thenがガチなのかタイポなのか分からんから直打ちじゃなくてコピペして

5デフォルトの名無しさん (ワッチョイ 3f01-bXJj)2020/06/26(金) 20:20:30.07ID:PIx3bjtD0
日本語訳:

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

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

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

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





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

6デフォルトの名無しさん (ワッチョイ 8fba-x+MM)2020/06/26(金) 20:26:55.66ID:ZjxMZdyJ0
>>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)2020/06/26(金) 20:40:26.18ID:nEhmFRZ4a
なんでElseに:ついてんだ?

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

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

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

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

11デフォルトの名無しさん (ワッチョイ 8f01-Zl/h)2020/06/26(金) 23:24:58.46ID:SBXE4EMs0
>>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デフォルトの名無しさん (ワッチョイ 8fba-U8IO)2020/06/26(金) 23:25:32.05ID:ZjxMZdyJ0
>>3です
無理やりですが自己解決しました
標準モジュール2にアウトプットのコードをさわったものをコピペして
コマンドボタンクリックしたときの動作をIfでCallするようにしたら出来ました

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

13デフォルトの名無しさん (ワッチョイ 8fba-U8IO)2020/06/26(金) 23:28:15.39ID:ZjxMZdyJ0
>>11修正ありがとうございます、提案されたやり方も試してみます!

14デフォルトの名無しさん (ワッチョイ 4f5f-fXbV)2020/06/26(金) 23:49:56.02ID:kQH1YyZn0
配列にすれば
あとやってるかとは思うけど自動計算と画面更新オフ

15デフォルトの名無しさん (ワッチョイ 8fba-U8IO)2020/06/26(金) 23:53:39.92ID:ZjxMZdyJ0
すみません、配列にするとはどういうことをすることですか?

16デフォルトの名無しさん (ワッチョイ 7fda-NJGG)2020/06/27(土) 00:17:07.69ID:KqbSykww0
Cells(1, 1).Value = "あ"
Cells(1, 2).Value = "い"
Cells(1, 3).Value = "う"
  ↓ ↓ ↓
Range("A1:C1").Value = Array("あ", "い", "う")

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

17デフォルトの名無しさん (ワッチョイ 8f01-Zl/h)2020/06/27(土) 02:29:31.12ID:gCUCp3Nd0
そこを高速化してもしかたないのでは・・・

18デフォルトの名無しさん (ワッチョイ cfda-NJGG)2020/06/27(土) 05:22:36.02ID:J5vHObt/0
他人にコード書かせて動かしたら遅いと文句言うのって人としてどうなの?

19デフォルトの名無しさん (ワッチョイ 8fba-8HP2)2020/06/27(土) 08:53:12.31ID:9qJBLgyD0
>>

20デフォルトの名無しさん (ワッチョイ 8ff1-of6p)2020/06/27(土) 09:24:13.86ID:YKskLwzM0
<<

21デフォルトの名無しさん (アウアウエー Sabf-PKxn)2020/06/27(土) 09:43:15.25ID:wwwZDyDia
ビットシフトとは各桁を 1 桁左や右にずらすことです。

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

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

22デフォルトの名無しさん (ワッチョイ cfce-htoQ)2020/06/27(土) 10:06:21.20ID:lV2RRwzl0
実行時エラー '6':

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

23デフォルトの名無しさん (ワッチョイ cf46-pKDl)2020/06/27(土) 10:49:37.32ID:gKvpRzl30
今日は、タイマー作ってます。
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デフォルトの名無しさん (ワッチョイ cf46-pKDl)2020/06/27(土) 10:55:33.95ID:gKvpRzl30
今日は、タイマー作ってます。
MsgBox 36000*24
はエラーにならないが
MsgBox 24*3600
は実行時エラーオーバーフローしました。
となります。

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

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

26デフォルトの名無しさん (ワッチョイ cfce-htoQ)2020/06/27(土) 11:13:07.90ID:lV2RRwzl0
釣りなのか本気なのか判断に困る質問だな

27デフォルトの名無しさん (ワッチョイ 3f7f-pPSV)2020/06/27(土) 11:48:36.47ID:P+1UXm0n0
ヤベーイ

28デフォルトの名無しさん (ワッチョイ cfda-NJGG)2020/06/27(土) 23:20:44.51ID:J5vHObt/0
動作がおかしいのは古いからじゃないかな

29デフォルトの名無しさん (ワッチョイ cfce-htoQ)2020/06/28(日) 00:22:47.53ID:/mLredfO0
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)2020/06/28(日) 07:42:30.13ID:sqW+tWgm0
>>29
へー面白いね

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

32デフォルトの名無しさん (ワッチョイ 3fef-NJGG)2020/06/28(日) 08:01:52.55ID:8pre44tM0
フォルダーの切り替え(黄色いフォルダの絵のアイコン) をクリック

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

34デフォルトの名無しさん (ワッチョイ 8f40-Zl/h)2020/06/28(日) 12:14:58.87ID:dFUOn9oJ0
適当なこと言っててワロタ

35デフォルトの名無しさん (ワッチョイ 7f8e-hynA)2020/06/28(日) 13:50:31.47ID:Gnbk8j2I0
>>34
何が適当なんだ?
言語仕様の基本だろう
>>33に俺を言うべき

36デフォルトの名無しさん (ワッチョイ 7f8e-hynA)2020/06/28(日) 13:50:52.16ID:Gnbk8j2I0
俺ではなくお礼

37デフォルトの名無しさん (ワッチョイ 0fac-G+5W)2020/06/28(日) 14:21:14.54ID:t+bqi6uL0

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

39デフォルトの名無しさん (アウアウエー Sabf-9ZHA)2020/06/28(日) 15:17:28.32ID:IDO0V0ZPa
dim 俺 as string

40デフォルトの名無しさん (アウウィフ FFd3-d3ZO)2020/06/28(日) 16:12:05.93ID:WMjrpZfvF
俺 = "童貞"

41デフォルトの名無しさん (ブーイモ MM0f-tZ42)2020/06/28(日) 16:56:51.40ID:69pcuKP2M
Const 俺 As String = "童貞"

42デフォルトの名無しさん (アウアウエー Sabf-PKxn)2020/06/28(日) 17:02:14.70ID:YhC9oGcZa
Do While 俺
俺 = 1
If 俺 > 1 Then
Exit Do
End If
Loop
MsgBox "happy"

43デフォルトの名無しさん (ワッチョイ 8f40-Zl/h)2020/06/28(日) 17:20:31.84ID:dFUOn9oJ0
>>35
式の中で最初に出てきた数字によって型が勝手に決められる → 嘘
32767以下の整数はInteger型 → 嘘
24& * 3600 (Double型) → 嘘
24# * 3600 (Long型) → 嘘

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

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

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

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

45デフォルトの名無しさん (ワッチョイ cfda-NJGG)2020/06/28(日) 19:11:04.99ID:LbQBFJ/O0
>>24
MsgBox 24 * 3600   
MsgBox 24 * 36000

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

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

47デフォルトの名無しさん (ワッチョイ cfda-NJGG)2020/06/28(日) 19:23:35.13ID:LbQBFJ/O0
Integer型 * Integer型 の計算結果が 32767を超えるとオーバーフローエラーがでる
Integer型 * Long型 の計算結果が 32767を超えてもエラーにならない

ってことじゃね

48デフォルトの名無しさん (ワッチョイ 0fda-H7K1)2020/06/28(日) 19:28:31.58ID:Vk36drdU0
win10でRS-232C使うとかなりの確率で
Set MSComm1 = New MSComm 
のところでエラーになります

どうにかなりませんか

49デフォルトの名無しさん (ワッチョイ cfda-NJGG)2020/06/28(日) 19:52:40.03ID:LbQBFJ/O0
>>48
EasyComm ってのに変えたほうがいいかも

50デフォルトの名無しさん (ワッチョイ cfda-NJGG)2020/06/28(日) 20:30:15.72ID:LbQBFJ/O0
>>46
変更後のファイル名が重複するんじゃね

51デフォルトの名無しさん (ワッチョイ cfda-NJGG)2020/06/28(日) 20:32:56.52ID:LbQBFJ/O0
>>46
あとファイルの種類によってはコメントが無いのもある

52デフォルトの名無しさん (アウアウエー Sabf-PKxn)2020/06/28(日) 20:35:06.31ID:+IGHtKO4a
イジカミジゴー

53デフォルトの名無しさん (ブーイモ MM0f-nmuj)2020/06/28(日) 20:39:46.50ID:yfJkjLDvM
>>48
Win32API直叩きしたら?
自分で全部管理できるし、枯れた技術で安定してる

54デフォルトの名無しさん (アウアウエー Sabf-9ZHA)2020/06/28(日) 21:16:46.93ID:yxdrwHPGa
>>52
B'z乙

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

56デフォルトの名無しさん (アウアウカー Sac3-jwjG)2020/06/29(月) 13:58:37.89ID:T8IL5X90a
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デフォルトの名無しさん (ドコグロ MMbf-AMYG)2020/06/29(月) 14:21:14.85ID:81b3XCdqM
二次元配列を一つずつ取り出すときはArray(上からの番号,1)
空白行までのコピーは
with worksheets(1)
.Range(.Cells(1,3) ,.Cells(1,3).End(xldown)).copy
end with

58デフォルトの名無しさん (ワッチョイ 3f01-bXJj)2020/06/29(月) 15:29:59.45ID:TB+oeC/70
どういう配列が作られたのかがそもそもわかんないって話でしょ?

デバッグの仕方覚えて、Arrayに何が入るかを確認できるようになったほうがいいわ
どういう配列が入ってるのかも確認できずに中身取り出すとかそもそも間違ってる
一行ずつ実行しながらローカルウィンドウで確認すれば
例えばこんな感じで配列が作られるのが確認できる
Excel VBA 質問スレ Part67 ->画像>12枚

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

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

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

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

62デフォルトの名無しさん (ワッチョイ 3f01-bXJj)2020/06/29(月) 17:04:47.20ID:TB+oeC/70
>>61
いわゆるキーボードモード(USB HID)になってるようなバーコードリーダーならそうなんだけどね

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

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

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

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

65デフォルトの名無しさん (アウアウエー Sabf-PKxn)2020/06/29(月) 17:37:54.02ID:6d9dL1u1a
それ、どっちがセキュアなんだかw

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

その先は知らん!

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

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

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

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

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

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

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

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

73デフォルトの名無しさん (オッペケ Sra3-5+Fh)2020/06/29(月) 18:57:10.02ID:2GVfwDQBr
>>70
通信パラメタ(とくにbps)は合わせたのか?
とりあえずシリアル通信についてちゃんと勉強してからやれ

74デフォルトの名無しさん (ワッチョイ 3f01-bXJj)2020/06/29(月) 19:27:50.46ID:TB+oeC/70
>>72
さんきゅ
目通してみる
>>73
パラメータはバーコードリーダのマニュアルに載ってたんでそれ使った

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

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

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

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

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

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

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

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

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

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

82デフォルトの名無しさん (ワッチョイ 3fb5-jCQM)2020/06/29(月) 22:50:58.30ID:R8I/2vyw0
一応タブ分けしてみた
一番左はデータを指定したシートに全部読み込む

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

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

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

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

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

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

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

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

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

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

89デフォルトの名無しさん (ワッチョイ cfda-NJGG)2020/06/30(火) 17:46:29.02ID:HFjntDoM0
普段からそういうの慣れてる人ならできるだろうが初心者に言っても無理だろ

90デフォルトの名無しさん (ワッチョイ 3fb5-jCQM)2020/06/30(火) 18:08:03.74ID:ulIgP7Tu0
>>87
ありがとう、かなり見やすくかるかも
そのやり方でも作ってみるよ

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

91デフォルトの名無しさん (ワッチョイ cfcc-pPzt)2020/06/30(火) 18:34:02.50ID:iUIa6Vpk0
配列の勉強中です
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デフォルトの名無しさん (ワッチョイ 4fe6-TKJB)2020/06/30(火) 18:39:14.24ID:Z3NkR/bn0
数式張り付けろや

93デフォルトの名無しさん (ワッチョイ 4f7c-H7K1)2020/06/30(火) 18:47:22.61ID:x94da/wE0
>>91
代入先がLastRow-1行1列の2次元なら配列もそうせんと

9491 (ワッチョイ cfcc-pPzt)2020/06/30(火) 19:05:07.51ID:iUIa6Vpk0
>>93
すみません。書き方を教えてください

95デフォルトの名無しさん (ワッチョイ 4f7c-H7K1)2020/06/30(火) 19:24:15.34ID:x94da/wE0
>>94
何の書き方?配列サイズを代入先セル範囲の行数と列数分用意するだけだぞ

9691 (ワッチョイ cfcc-pPzt)2020/06/30(火) 19:40:39.93ID:iUIa6Vpk0
↓ですか?
"インデックスが有効範囲にありません"のエラーがでます

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)2020/06/30(火) 19:42:59.95ID:s83lPCQk0
配列数クソめんどいからこれでいいよ
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)2020/06/30(火) 19:47:07.61ID:s83lPCQk0
range.valueからできる二次元配列の開始番号は0ではなく、1ですねえ

9991 (ワッチョイ cfcc-pPzt)2020/06/30(火) 20:10:45.24ID:iUIa6Vpk0
>>95,97,98
動きました!ありがとうございます。

100デフォルトの名無しさん (ワッチョイ 4f5f-fXbV)2020/06/30(火) 20:21:46.34ID:h7LW9tmr0
0番目のセルは無いのに0番目の配列要素はあるから面倒臭いよな

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

10291 (ワッチョイ cfcc-pPzt)2020/06/30(火) 20:44:53.74ID:iUIa6Vpk0
すみません勘違いをしていました。最終行の

「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デフォルトの名無しさん (ワッチョイ 4f7c-H7K1)2020/06/30(火) 20:53:49.15ID:x94da/wE0
>>102
入力先のセルは1列分なのにDayArrayは2列分あって2列目に年月日が入ってる
ReDimを見直せ

10491 (ワッチョイ cfcc-pPzt)2020/06/30(火) 21:20:49.01ID:iUIa6Vpk0
>>103

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

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

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

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

107デフォルトの名無しさん (ワッチョイ 4f7c-H7K1)2020/06/30(火) 22:14:31.69ID:x94da/wE0
>>105
keydownイベントで上下の時になんやかんやする

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

109デフォルトの名無しさん (ワッチョイ 3fb5-jCQM)2020/06/30(火) 22:39:03.05ID:ulIgP7Tu0
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デフォルトの名無しさん (オッペケ Sra3-gdfu)2020/06/30(火) 22:56:39.68ID:RrxBtxCBr
A列とB列にXYデータが書かれているファイルがある

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

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

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

113デフォルトの名無しさん (ワッチョイ bf7c-c9XW)2020/07/01(水) 16:38:43.05ID:ufrQ+5Zi0
新しい表示にしてから待機したらいいんでないの

114デフォルトの名無しさん (ワッチョイ 1ecc-VQSO)2020/07/01(水) 17:00:30.01ID:JVz0cdM50
DoEvents

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

116デフォルトの名無しさん (アウアウエー Sa82-qC4h)2020/07/01(水) 18:02:59.35ID:cdm/n45Wa
眺めるってw

117デフォルトの名無しさん (オッペケ Sr23-aBdg)2020/07/01(水) 18:14:23.56ID:BGy1oUher
A列に上から1万個くらいのデータがある。

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


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

118デフォルトの名無しさん (ワッチョイ bf7c-c9XW)2020/07/01(水) 18:21:37.82ID:ufrQ+5Zi0
>>117
作業列作ってある値以下なら1立てる→1でオートフィルタ→行削除

119デフォルトの名無しさん (ワッチョイ 87da-VQSO)2020/07/01(水) 18:24:14.85ID:g4YauoQu0
>>117
どうせ暇なんだろ、1万くらい手作業でやれよ

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

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

122デフォルトの名無しさん (ワッチョイ 1e61-LTdq)2020/07/01(水) 18:38:53.74ID:34UZRJ820
>>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デフォルトの名無しさん (ワッチョイ 87da-VQSO)2020/07/01(水) 19:21:24.82ID:g4YauoQu0
そして動かないとか言ってくる初心者

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

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

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

127デフォルトの名無しさん (ドコグロ MMc2-4eOZ)2020/07/01(水) 21:01:32.84ID:v34eJavmM
>>122
(r,”A”)<ある値
顔文字に見えたわw

128デフォルトの名無しさん (ワッチョイ 1eae-M/Ft)2020/07/01(水) 21:43:01.53ID:H9TCgnXe0
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デフォルトの名無しさん (ワッチョイ 1eae-M/Ft)2020/07/01(水) 22:17:29.48ID:H9TCgnXe0
Range(cells(a,1),cells(a,16)).Select
でやってみます

130デフォルトの名無しさん (アウアウウー Sacf-ewff)2020/07/01(水) 22:45:11.71ID:xxJ42X4qa
何故初心者はSelectしたがるのか

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

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

133デフォルトの名無しさん (オッペケ Sr23-aBdg)2020/07/02(木) 02:34:51.75ID:G8g1bCvWr
このメニューで、空白セルにチェック入れると空白セルを選択しますね。

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

Excel VBA 質問スレ Part67 ->画像>12枚

134デフォルトの名無しさん (ワッチョイ 27ea-c9XW)2020/07/02(木) 04:05:38.32ID:vmiMC9VK0
教えてください。
imagemsoの名称からfaceidに変換することは可能でしょうか?
もしくはmsoBarPopupでimagemsoを使用することは可能でしょうか?

135デフォルトの名無しさん (ワッチョイ 27ce-BXkI)2020/07/02(木) 06:28:30.74ID:PEAIWqln0
>>133
選んだセルをどうしたいかによるけど、オートフィルかけて選択とか

136デフォルトの名無しさん (アウアウエー Sa82-qC4h)2020/07/02(木) 08:20:19.52ID:yX39WODNa
他人の作ったコードはなぜ読む気がしないのか

137デフォルトの名無しさん (アウアウウー Sacf-z1wt)2020/07/02(木) 10:30:47.89ID:KAImZ3Owa
読む必要はないからな

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

「教えて」「助けて」

で始まる書き込みをする

139デフォルトの名無しさん (ワッチョイ 27ea-c9XW)2020/07/02(木) 13:06:37.09ID:vmiMC9VK0
>>138
馬鹿でもいいです。
じゃあ、模範的な質問の仕方を教えてください。

140デフォルトの名無しさん (アウアウウー Sacf-z1wt)2020/07/02(木) 15:30:35.30ID:NxUusdo6a
そんなものはない

141デフォルトの名無しさん (ワッチョイ 8aea-Qwhy)2020/07/02(木) 16:07:39.62ID:fLeksvw30
>>140
ありがとうごさいました。参考になります。

142デフォルトの名無しさん (ワッチョイ 6bda-BXkI)2020/07/02(木) 16:13:40.59ID:pSHiLlcA0
馬鹿の特徴

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

143デフォルトの名無しさん (ワッチョイ 5301-v7i8)2020/07/02(木) 17:04:38.40ID:2Xt/GnSW0
>>142
馬鹿でもいいです。
じゃあ、模範的な回答の仕方を教えてください。

144デフォルトの名無しさん (ワッチョイ 0a42-QTdV)2020/07/02(木) 17:44:48.44ID:Q59tEF0c0
そんなものはない

145デフォルトの名無しさん (アウアウエー Sa82-h0J+)2020/07/02(木) 17:45:12.17ID:q3lU8bAMa
そんなひとはいない

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

147デフォルトの名無しさん (ワッチョイ 5301-v7i8)2020/07/02(木) 21:49:51.56ID:2Xt/GnSW0
>>144
ありがとうございました。参考になります。

>>145
消えろ

148デフォルトの名無しさん (ワッチョイ 0b09-ERT+)2020/07/02(木) 22:51:02.52ID:7/3Aifl90
ここが上級者ばかり集う高尚なスレだと思っているのかWWWWWWWWWWWW
VBAごときでWWWWWWWWWw

149デフォルトの名無しさん (ワッチョイ deda-VQSO)2020/07/02(木) 23:33:21.68ID:0km7hKfU0
VBAを随分下に見てるねえ。
別にC#で回答してもいいよ?
VBAに脳内変換するから。

150デフォルトの名無しさん (ワッチョイ 87da-VQSO)2020/07/02(木) 23:47:09.16ID:Y/spJvDG0
上級者も馬鹿も両方いてあたりまえ
お前らそんなにマウントとりたいのかw

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

152 テトリス ◆SYKnw8OJpw 2020/07/03(金) 00:10:57.30
テスト

153デフォルトの名無しさん (ワッチョイ deda-VQSO)2020/07/03(金) 00:14:47.41ID:P5PHrlsB0
>>151
一休さんかコロンブスみたいな回答で良いなら出来る。
実際に全角文字や絵文字で書いてみな。

154デフォルトの名無しさん (ワッチョイ 8aef-VQSO)2020/07/03(金) 04:04:14.78ID:B7qpVotz0
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)2020/07/03(金) 12:58:30.06ID:KESc8IU30
そんなソース絶対読みたくないな

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

156デフォルトの名無しさん (アウアウウー Sacf-z1wt)2020/07/03(金) 13:30:11.45ID:hUamHkOVa
ハズキルーペ使えよw

157デフォルトの名無しさん (ワッチョイ 87cc-ERT+)2020/07/03(金) 21:14:38.38ID:mplhmvvw0
ワークシートの条件にあう行を削除して上に詰めるみたいなことを、配列内でしたいです。

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

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

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

159デフォルトの名無しさん (ワッチョイ 1bac-OmMV)2020/07/03(金) 21:31:07.37ID:DQKehNsV0
157,188
お互いに相手のコード相談しながら考えてあげればいいんじゃね
ちょうどよさげだわレベル

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

161デフォルトの名無しさん (ワッチョイ 27ce-BXkI)2020/07/03(金) 21:55:13.66ID:4NyCV/dB0
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デフォルトの名無しさん (ワッチョイ 87da-VQSO)2020/07/03(金) 22:17:41.55ID:aUU6z7Ir0
そもそもマクロ作るのって違うデータでも同じ処理をやりたいような場合じゃないのか
一回限りのデータ抽出ならわざわざマクロなんか作る意味ないんだけどな
無駄に時間を浪費したいのかな

163デフォルトの名無しさん (ワッチョイ a392-LTdq)2020/07/03(金) 22:37:42.83ID:qSqs6yG50
使い捨てマクロってのもありまして

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

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

166デフォルトの名無しさん (ワッチョイ 0a2f-+ZV3)2020/07/03(金) 23:06:05.89ID:KESc8IU30
>>158
それVBAじゃなくても計算式とワークの列使えばできると思うけど
なぜ素人がVBAでやろうと思うんだ

167デフォルトの名無しさん (ワッチョイ 8ab5-5DWS)2020/07/03(金) 23:26:37.07ID:Mxid+JS90
>>161
構文エラーでしたわ
>>166
VBAでやりたかったのです…

168デフォルトの名無しさん (アウアウエー Sa82-h0J+)2020/07/03(金) 23:27:55.78ID:8QUz9sdRa
確かに一回限りの作業なら
マクロ考えているよりやった方が終わってるかもな

169デフォルトの名無しさん (ワッチョイ deda-VQSO)2020/07/03(金) 23:35:20.76ID:P5PHrlsB0
>>157
配列内でやるならレコードセットだな。

170デフォルトの名無しさん (ワッチョイ 46f7-5RIT)2020/07/03(金) 23:42:57.67ID:9EQo/V7m0
一回きりだろうと同じ処理100回やるようなのもあるんだし

171デフォルトの名無しさん (ワッチョイ deda-VQSO)2020/07/03(金) 23:46:08.59ID:P5PHrlsB0
1回限りでも3行くらいで済むのは書くな。

172デフォルトの名無しさん (ワッチョイ bb1d-+upQ)2020/07/04(土) 00:48:12.93ID:KIBH4SNT0
まだ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デフォルトの名無しさん (ワッチョイ a392-LTdq)2020/07/04(土) 01:40:09.94ID:IOVEPry/0
一般論としては頻度の多い作業の方が自動化に向いてるのは確かだけど、
1回だけでも大量のデータを加工したり手作業でやるには時間のかかる作業もあり、
作業時間の方がコード書く時間より長くなる場合も多々もあるのでケースバイケースやね

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

175デフォルトの名無しさん (ワッチョイ 87da-VQSO)2020/07/04(土) 02:07:27.87ID:VMWug14q0
やるとは何を?

176デフォルトの名無しさん (ワッチョイ 5301-JCxG)2020/07/04(土) 02:09:15.54ID:42LT/T3f0
データの加工。

177デフォルトの名無しさん (ワッチョイ 87da-VQSO)2020/07/04(土) 02:10:42.23ID:VMWug14q0
加工すればいいんじゃね

178デフォルトの名無しさん (ワッチョイ 5301-JCxG)2020/07/04(土) 02:13:10.44ID:42LT/T3f0
いや、山田がやってくれないかなって。
だめ?

179デフォルトの名無しさん (ワッチョイ 87da-VQSO)2020/07/04(土) 02:16:03.66ID:VMWug14q0
だから山田がデータを加工すればいいんじゃね

180デフォルトの名無しさん (ワッチョイ 87da-VQSO)2020/07/04(土) 02:38:36.13ID:VMWug14q0
素人にやらせた場合間違った結果を出すかもしれんが
その場合頼んだ側にも責任があるけどそれでも山田にやらせるか?

181デフォルトの名無しさん (ワッチョイ 5301-JCxG)2020/07/04(土) 03:10:27.15ID:42LT/T3f0
田中のほうが良いかな?

182デフォルトの名無しさん (アウアウエー Sa82-h0J+)2020/07/04(土) 03:37:53.50ID:OxpkXjjxa
斎藤さんだぞ

183デフォルトの名無しさん (ワッチョイ 8a01-21HI)2020/07/04(土) 04:04:04.69ID:IjVZd7O90
山田ができるのは座布団運びだけだろ

184デフォルトの名無しさん (ワッチョイ 8a01-5cl0)2020/07/04(土) 07:02:36.51ID:VZt6Ms3K0
do whileとかほとんど使わないわ
あれ試行錯誤してる最中に脱出条件間違えて固まるとイライラってするんで

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

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

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

186デフォルトの名無しさん (ワッチョイ 2780-2vUA)2020/07/04(土) 09:41:06.65ID:htrp3xgD0
>>157
配列に入れたら順番に書き込んで条件の時だけ書き込みスキップじゃ駄目なの?

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

188デフォルトの名無しさん (ワッチョイ 8a01-5cl0)2020/07/04(土) 11:47:27.20ID:VZt6Ms3K0
簡単だよな
セルにどういう風にデータが並んでるかで多少の工夫がいるかもしれんけど
加減乗除のみのワンパターン

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

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

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

192デフォルトの名無しさん (ワッチョイ 8a01-5cl0)2020/07/04(土) 13:05:03.59ID:VZt6Ms3K0
>>157
全要素forで回しながら
条件合うものだけを新しい配列newArrayにいれていけばいいじゃん
その後新しい配列から、データ空にしたシートに記入

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

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

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

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

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

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

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

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

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

199デフォルトの名無しさん (アウアウエー Sa82-qC4h)2020/07/04(土) 14:48:04.16ID:ZiXQ0AsVa
喧嘩はやめよう

200157 (ワッチョイ 87cc-ERT+)2020/07/04(土) 14:58:18.35ID:oup49XFx0
>>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デフォルトの名無しさん (オッペケ Sr23-OmMV)2020/07/04(土) 15:04:44.69ID:xhESn47nr
はい

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

203デフォルトの名無しさん (ワッチョイ 8a01-5cl0)2020/07/04(土) 15:31:40.93ID:VZt6Ms3K0
>>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)2020/07/04(土) 15:38:09.49ID:VZt6Ms3K0
それだけじゃないからな
redim preserve は、くせ者

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

206デフォルトの名無しさん (アウアウエー Sa82-qC4h)2020/07/04(土) 15:56:38.11ID:D9As6lACa
プロはとりあえず配列に格納するのが好きなんです

207デフォルトの名無しさん (スプッッ Sd4a-tYaB)2020/07/04(土) 16:03:39.61ID:DEQjmcqBd
>>187
>>190
やって見てから言えよw
問題は時間だ。

2000x365x24x3=52560000

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

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

208デフォルトの名無しさん (スププ Sdaa-bNAA)2020/07/04(土) 16:04:11.08ID:qCMIttGKd
十分な量を確保

あとで失敗するパターン

209デフォルトの名無しさん (アウアウエー Sa82-h0J+)2020/07/04(土) 16:09:00.53ID:MUUOvXMba
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デフォルトの名無しさん (ワッチョイ 1bac-OmMV)2020/07/04(土) 16:22:41.23ID:DNEaiqy30
おれならそもそも案件をRDBMSに移す提案をするわ
だめなら元データはどうせCSVやJsonかなにかだろうし、VBAから普通にRDBにいれてプロシージャ叩くとか
外部プログラムで直に処理するね

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

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

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

212デフォルトの名無しさん (スププ Sdaa-bNAA)2020/07/04(土) 16:35:45.74ID:qCMIttGKd
pythonでデータクリーニングさせれば?

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

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

215デフォルトの名無しさん (スプッッ Sd4a-tYaB)2020/07/04(土) 17:02:54.82ID:DEQjmcqBd
>>214
バーカw
やってから言え。
本当バカだなあ。

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

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

217200 (ワッチョイ 87cc-ERT+)2020/07/04(土) 17:35:53.50ID:oup49XFx0
>>203
おっしゃる通りでした。
IFに問題があったみたいです。ありがとうございました。

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

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

220デフォルトの名無しさん (ワッチョイ 87cc-ERT+)2020/07/04(土) 17:54:43.71ID:oup49XFx0
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デフォルトの名無しさん (スプッッ Sd4a-tYaB)2020/07/04(土) 18:14:15.70ID:DEQjmcqBd
>>219
出来もしないこと言ってるバカ?
それとも、それ迄のやり取りすら出来ないバカ?

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

222デフォルトの名無しさん (ワッチョイ 8a01-5cl0)2020/07/04(土) 19:58:17.09ID:VZt6Ms3K0
>>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デフォルトの名無しさん (アウアウエー Sa82-qC4h)2020/07/04(土) 20:07:02.00ID:ZiXQ0AsVa
こうやって実際にやってみる人は素晴らしいと思う

224デフォルトの名無しさん (ワッチョイ 46f7-5RIT)2020/07/04(土) 20:15:53.04ID:/OqMGH1W0
>>220
matchならともかくcountifは配列に対応してない
素直にセルを引数にしてやったほうがいいのでは

225デフォルトの名無しさん (アウアウウー Sacf-ewff)2020/07/04(土) 20:17:12.12ID:JHoncA5/a
countifじゃなくてloopでfindにすればよいのでは

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

227デフォルトの名無しさん (スプッッ Sd4a-tYaB)2020/07/04(土) 23:58:08.33ID:DEQjmcqBd
>>222
ちょっと見た感じほぼ、俺と同じ感じだね。

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

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

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

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

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

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

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

229デフォルトの名無しさん (ワッチョイ 87da-VQSO)2020/07/05(日) 00:51:15.79ID:C4Jqu0Op0
DOSコマンドでできる

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

231デフォルトの名無しさん (ワッチョイ bfe6-s8sF)2020/07/05(日) 01:59:51.75ID:S3+IlzuQ0
>>230
その程度vbaなら自由自在でしょ
バカにしないでください

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

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

233デフォルトの名無しさん (ワッチョイ 46f7-5RIT)2020/07/05(日) 03:08:45.12ID:EDU6Wt820
powershellでやれ

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

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

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

235デフォルトの名無しさん (スプッッ Sd4a-tYaB)2020/07/05(日) 07:16:23.84ID:2yUokYO9d
>>232
???
日本語が理解出来ないのか?

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

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

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

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

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

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


timer付けて一応測ってみた

@0.31秒
A32秒
B67秒

2000回だと12分ぐらいか?

CPU i5-4670
メモリ 24GB
Win7

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

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

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

238デフォルトの名無しさん (ワッチョイ 872c-+ZV3)2020/07/05(日) 07:57:11.74ID:R1IME3L+0
>>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

239234 (ワッチョイ 8a01-c9XW)2020/07/05(日) 08:01:08.68ID:Mq9FuBzw0
>>228
ファイルをバイナリで読み込んで、バイナリで書き出す、
で、書き出す際に、ファイル名に"2020"&、とすればいい。

240デフォルトの名無しさん (ワッチョイ 8a01-5cl0)2020/07/05(日) 08:01:41.62ID:VaIdJVAp0
>>234
うん
>>237
vba 関数 呼び出し

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

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

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

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

242234 (ワッチョイ 8a01-c9XW)2020/07/05(日) 08:05:40.42ID:Mq9FuBzw0
>>240
どうもです。

243234 (ワッチョイ 8a01-c9XW)2020/07/05(日) 08:06:29.51ID:Mq9FuBzw0
>>241
どうもです。

244デフォルトの名無しさん (ワッチョイ 8f5f-ewff)2020/07/05(日) 11:36:58.35ID:CJtrxhlB0
>>242
呼び出しは、可読性考慮すると文頭にCall書いた方がいいよ

245デフォルトの名無しさん (ワッチョイ 0a2f-+ZV3)2020/07/05(日) 13:58:43.83ID:U1BgWcwt0
>>207
VBAでやっても6時間はかかりすぎな気がするが
マシンスペックとコード晒してみ

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

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

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

246デフォルトの名無しさん (スプッッ Sd4a-tYaB)2020/07/05(日) 15:07:25.29ID:2yUokYO9d
>>239
ファイル名変更だから読む必要は無いだろ。
変更するだけでOK。

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

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

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

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

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

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

250220 (ワッチョイ 87cc-ERT+)2020/07/05(日) 19:59:50.06ID:Y6miK3VP0
>>224
いろいろ試してダメだったらそうします

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

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

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

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

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

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

253デフォルトの名無しさん (スプッッ Sd4a-tYaB)2020/07/05(日) 22:29:31.22ID:2yUokYO9d
>>252
調べたらそんなに昔じゃ無かったな。
2016年だった。

254238 (ワッチョイ 872c-+ZV3)2020/07/05(日) 22:43:00.48ID:R1IME3L+0
ファイル名の先頭に、2020_ を付けるぐらい、robocopy で出来ないのか?

255デフォルトの名無しさん (ワッチョイ 8a01-21HI)2020/07/05(日) 22:49:17.55ID:ys79fvH60
2016ならよほど変なことをしてないと数時間とかかからんと思う

256デフォルトの名無しさん (ワッチョイ 87da-VQSO)2020/07/05(日) 23:53:51.99ID:C4Jqu0Op0
2020_2020_2020_2020・・・・

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

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

259デフォルトの名無しさん (ワッチョイ 8a01-21HI)2020/07/06(月) 07:15:30.65ID:5mzvDM1u0
キングジムファイルと綴じられてる一覧表って感じかな

260デフォルトの名無しさん (ワッチョイ 27ce-BXkI)2020/07/06(月) 08:12:33.04ID:XvhlV03D0
32bitと64bitで計算スピードの差は2倍もないような

261デフォルトの名無しさん (オッペケ Sr23-aBdg)2020/07/06(月) 08:39:32.35ID:NN5xIHVpr
Activesheet.cells(1.1).Activate
Activesheet.Paste

は上手くいくのに、

Activesheet.cells(1.1).Paste

は何でダメなんですか?

262デフォルトの名無しさん (ワッチョイ 8aea-Qwhy)2020/07/06(月) 09:18:02.55ID:Ag715axD0
>>261
.pasteは、worsheetのメンバであってrangeやcellsのメンバじゃないから、かな?

263デフォルトの名無しさん (ワッチョイ 8749-OmMV)2020/07/06(月) 09:49:31.89ID:Smcv6rvz0
パラメータ Destinationがあるから
ワイはPasteSpecialのほうが好き

264デフォルトの名無しさん (スプッッ Sd4a-tYaB)2020/07/06(月) 12:08:40.63ID:0NryXgvDd
>>263
普通はCopyのDestinationでやるからな。
Paste使うのはRange以外のコピーの時かな。

265デフォルトの名無しさん (ワッチョイ 87cc-ERT+)2020/07/06(月) 18:39:32.80ID:XttWreH00
For
処理1
処理2
処理3
処理4
Next

よりも

For
処理1
Next

For
処理2
Next

For
処理3
Next

For
処理4
Next

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

266デフォルトの名無しさん (ワッチョイ 3aba-/RNd)2020/07/06(月) 19:08:39.04ID:tFUllOPh0
>>254
出来ないよ????
robocopy はファイル名の変更はできない。
robocopy したあと move するしかない。

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

267デフォルトの名無しさん (ワッチョイ 3aba-/RNd)2020/07/06(月) 19:10:33.89ID:tFUllOPh0
てか、もうRubyは徒花だったな。
人気もダダ下がりだし。

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

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

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

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

271デフォルトの名無しさん (アウアウエー Sa82-qC4h)2020/07/06(月) 21:13:16.26ID:K1goXTAAa
じゃあVBAはお爺ちゃんだろ

272デフォルトの名無しさん (ワッチョイ 3aba-/RNd)2020/07/06(月) 21:17:13.18ID:tFUllOPh0
>>271
VBAは「頼れるジジイ」だろ。何言ってんの?

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

274デフォルトの名無しさん (ワッチョイ 87da-VQSO)2020/07/06(月) 22:27:45.01ID:33E9zFJO0
Rubyの話がしたければRubyのスレ行けばいいのにね

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

276デフォルトの名無しさん (ワッチョイ 87da-VQSO)2020/07/07(火) 19:51:41.03ID:CAdbpiIn0
宣伝だろ

277デフォルトの名無しさん (ワッチョイ 8a01-c9XW)2020/07/07(火) 20:15:33.65ID:2cf+0s2v0
音楽の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デフォルトの名無しさん (ワッチョイ 1bac-OmMV)2020/07/07(火) 20:25:40.74ID:BPFgnJg70
なんでVBAでやるの?

279デフォルトの名無しさん (ブーイモ MMef-aKnn)2020/07/07(火) 20:27:13.84ID:z4TbLErcM
VBAスレだから

280犬丸 ◆MRCYWQz4rc (ワッチョイ 8a01-c9XW)2020/07/07(火) 20:31:41.96ID:2cf+0s2v0
>>278
和音の構成音(ドレミ・・・)を1つづつセルに入れられるから。

281デフォルトの名無しさん (ワッチョイ 1bac-OmMV)2020/07/07(火) 20:33:47.85ID:BPFgnJg70
なんでdominoとか使わないの?

282デフォルトの名無しさん (ワッチョイ 8a01-c9XW)2020/07/07(火) 20:34:49.08ID:2cf+0s2v0
あと、PCにインストールされてる開発系はexcelだけだから。

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

284277 (ワッチョイ 8a01-c9XW)2020/07/07(火) 20:42:49.00ID:2cf+0s2v0
だから、excelでバイナルファイルを作りたいのです。

285デフォルトの名無しさん (ワッチョイ de02-VQSO)2020/07/07(火) 21:00:27.95ID:yByKJQAn0
読み込めたなら反対をやればいいんじゃないの

286デフォルトの名無しさん (ワッチョイ 87da-VQSO)2020/07/07(火) 21:05:07.15ID:CAdbpiIn0
>>283
著作権的にどうなの?

287277 (ワッチョイ 8a01-c9XW)2020/07/07(火) 21:10:37.49ID:2cf+0s2v0
>>285
日本語だってそうだろ。
読むのは簡単。 書くのは大変なんだよ。

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

288デフォルトの名無しさん (ワッチョイ 1bac-OmMV)2020/07/07(火) 21:13:27.88ID:BPFgnJg70
じゃあそうすればいいじゃない?

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

289デフォルトの名無しさん (ワッチョイ 87da-VQSO)2020/07/07(火) 21:13:57.80ID:CAdbpiIn0
>>287
ならmidiの編集ソフトが使った方がいいね

290277 (ワッチョイ 8a01-c9XW)2020/07/07(火) 21:14:00.67ID:2cf+0s2v0
>>286
そもそも観賞するためのmidiデータではなく音楽制作に使うツールとしてのmidiデータなんだよね。

291デフォルトの名無しさん (ドコグロ MM7f-21HI)2020/07/07(火) 21:14:32.40ID:/HMzap4UM
>>282
C#やVB.NETもあるけど?w

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

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

293277 (ワッチョイ 8a01-c9XW)2020/07/07(火) 21:25:44.85ID:2cf+0s2v0
で、excelの"C3"に、4D 54 68 64を書き込んで>>277のソースを動かして試してみたいんです。

294デフォルトの名無しさん (ワッチョイ 87da-VQSO)2020/07/07(火) 21:26:04.88ID:CAdbpiIn0
これなんか良いんじゃね
https://openmidiproject.osdn.jp/Sekaiju.html

295デフォルトの名無しさん (ワッチョイ 87da-VQSO)2020/07/07(火) 21:29:51.89ID:CAdbpiIn0
midiの規格ってそんな簡単じゃないから素人が扱っても音が切れたりトラックがずれたりして
結局使えないだろ

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

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

298デフォルトの名無しさん (ワッチョイ 1bac-OmMV)2020/07/07(火) 21:35:25.31ID:BPFgnJg70
>>292
セルに入れられるのはあくまで文字列ってこと理解してないの?

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

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

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

300デフォルトの名無しさん (ワッチョイ 8ab5-5DWS)2020/07/07(火) 21:46:02.99ID:tZSrRerM0
改めて多大なるお礼を言わせて貰うが抜けてた

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

301277 (ワッチョイ 8a01-c9XW)2020/07/07(火) 22:23:53.24ID:2cf+0s2v0
では、すみません。 >>277の質問はなしにして、↓の質問をお願いします。

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

302277 (ワッチョイ 8a01-c9XW)2020/07/07(火) 22:29:17.16ID:2cf+0s2v0
>>228
allrenameというフリーソフトを使えばいいのじゃ。

303デフォルトの名無しさん (ワッチョイ 87da-VQSO)2020/07/07(火) 22:32:51.69ID:CAdbpiIn0
>>301
バイナリ編集のソフト使えばいいんじゃね

304301 (ワッチョイ 8a01-c9XW)2020/07/07(火) 22:42:26.54ID:2cf+0s2v0
>>303
すみません。 「VBAを使って」でした。

305デフォルトの名無しさん (ワッチョイ 0302-WfHi)2020/07/07(火) 22:43:37.27ID:O/UE8zUS0
もはやExcelを使うことが目的化してる

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

307301 (ワッチョイ 8a01-c9XW)2020/07/07(火) 22:54:30.10ID:2cf+0s2v0
>>306
基礎になるソースさえ教えてもらえれば、そこに色々付け加えてって自分に必要なバイナリファイルが作れるんですよ。

308デフォルトの名無しさん (ワッチョイ 1bac-OmMV)2020/07/07(火) 22:57:06.69ID:BPFgnJg70
まず書く努力をしよう

309デフォルトの名無しさん (スッップ Sdaa-DbYN)2020/07/07(火) 22:57:22.32ID:0KBHODZEd
>>307
そろそろ死ねや

310デフォルトの名無しさん (ワッチョイ 3a02-ERT+)2020/07/07(火) 23:05:51.69ID:1TMQwlbY0
Excelの設定もAppDataの中身も場所も変えて無いのに、
下記のように表示されてマクロが読めません!

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

311デフォルトの名無しさん (ワッチョイ bbe5-R5kl)2020/07/07(火) 23:09:31.21ID:exS2x9T+0

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

313デフォルトの名無しさん (ワッチョイ 65ac-OOGl)2020/07/08(水) 00:14:08.99ID:4BPfKF9s0
ソースくれくれ君だからひんとあろうが自分で書かないよ、こういうやつ

314301 (ワッチョイ 2301-6wWl)2020/07/08(水) 01:45:46.54ID:gPwSdoJG0
>>312
ありがとうございます。でも、「セルから変数を代入する」は止めました。で、>>277を変形してみたんですけど、↓のドコがまずいんですかね?

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

TEMP = Array(&H4D, &H54, &H68, &H54, &H68, &H64)
ReDim BIN(Len(TEMP) / 2 - 1) As Byte
For I = 1 To Len(TEMP) Step 2
BIN((I - 1) / 2) = Val("&H" & Mid(TEMP, I, 2))
Next I
Open "C:\1.BIN" For Binary As #1
Put #1, , BIN
Close #1
End Sub

315301 (ワッチョイ 2301-6wWl)2020/07/08(水) 01:49:45.50ID:gPwSdoJG0
つか、
ReDim BIN(Len(TEMP) / 2 - 1) As Byte
この部分が何だかわかんないんですよ。
まず、ReDimとは何だ?と。

316301 (ワッチョイ 2301-6wWl)2020/07/08(水) 02:05:21.42ID:gPwSdoJG0
目的は、
&H4D, &H54, &H68, &H54, &H68, &H64という6個のバイナリデータだけの、
1.BINというファイルを作りたい!
です。

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

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

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

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

321デフォルトの名無しさん (オッペケ Sra1-1RNA)2020/07/08(水) 05:18:34.50ID:hKBgVgLRr
この写真のように、例えば、3以下の数値をアクティブにする方法を教えて頂きたい

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

一発検索が望ましい。


Excel VBA 質問スレ Part67 ->画像>12枚

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

なので>>314のコードは全く意味がありません。

323デフォルトの名無しさん (アウアウエー Sa13-c9t6)2020/07/08(水) 06:49:42.97ID:yrsbI81qa
>>321> できれば、for next 構文はなしで

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

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

324デフォルトの名無しさん (ワッチョイ cb63-FYib)2020/07/08(水) 07:11:29.93ID:x0V53xaA0
つーかわざわざselectする意味あんの?

325デフォルトの名無しさん (アウアウエー Sa13-b2Fx)2020/07/08(水) 07:47:38.02ID:8s/zJrIHa
わからないで書いてたのか

326デフォルトの名無しさん (スプッッ Sd03-Cpkm)2020/07/08(水) 07:58:30.68ID:krt5VVG+d
>>316
簡単だろw
Dim btByte() As Byte
Dim lngFN As Long

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

lngFN=FreeFile
Open strPath For Binary As #lngFN
Put #lngFN, btByte
Close #lngFN

327デフォルトの名無しさん (スプッッ Sd03-Cpkm)2020/07/08(水) 08:02:35.63ID:krt5VVG+d
>>326
途中で送信しちまった。
スマホで書いてるからどっか間違ってるかも。

Dim btByte() As Byte
Dim lngFN As Long

Redim btByte(5) As Byte

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

lngFN=FreeFile
Open strPath For Binary As #lngFN
Put #lngFN, , btByte
Close #lngFN

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

329301 (ワッチョイ 2301-6wWl)2020/07/08(水) 09:06:02.86ID:gPwSdoJG0
みなさんレスありがとうございます。 感謝します。

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


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

ReDim btByte(5) As Byte

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

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


End Sub

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

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

ReDim btByte(5) As Byte

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

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


End Sub

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

332301 (ワッチョイ 2301-6wWl)2020/07/08(水) 09:32:29.70ID:gPwSdoJG0
つか、 FreeFile関数ってのがあるんですね 知らなかったw

333301 (ワッチョイ 2301-6wWl)2020/07/08(水) 09:38:09.26ID:gPwSdoJG0
じゃあ、↓のドコが悪いんだろ?

Sub test()
Dim btByte() As Byte
Dim lngFN As Long
ReDim btByte(5) As Byte
btByte(0) = &H4D
btByte(1) = &H54
btByte(2) = &H68
btByte(3) = &H54
btByte(4) = &H68
btByte(5) = &H64
lngFN = FreeFile
Open "C:\hogehoge.bin" For Binary As #lngFN
Put #lngFN, , btByte
Close #lngFN
End Sub

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

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

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

336デフォルトの名無しさん (ワッチョイ bd63-am2Z)2020/07/08(水) 10:25:36.83ID:kC98LgO60
みんなやさしいよね
どこまでも相手してあげてるんだから

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

338デフォルトの名無しさん (ワッチョイ 1b68-ucCN)2020/07/08(水) 10:37:36.28ID:yuZwXh1F0
暇つぶしでしょ

339デフォルトの名無しさん (ワッチョイ 1b68-ucCN)2020/07/08(水) 10:38:40.26ID:yuZwXh1F0
時間丸被りとかあんのな

340デフォルトの名無しさん (ワッチョイ cbcc-ucCN)2020/07/08(水) 10:41:28.04ID:Fq6DmaU+0
>>333
C:\に変なもの置くな

341デフォルトの名無しさん (ワッチョイ a562-vuhN)2020/07/08(水) 10:53:24.76ID:Ywdztm8P0
つーか動的配列にする意味あんの?

342デフォルトの名無しさん (ラクッペペ MMcb-0WwX)2020/07/08(水) 12:08:46.81ID:lp5P2pBOM
>>341
行間を読め

343デフォルトの名無しさん (ワッチョイ cb8e-edot)2020/07/08(水) 16:22:19.40ID:0tPjVu1x0
だから最初に馬鹿はお断りしときゃいいんだよ

344301 (ワッチョイ 2301-6wWl)2020/07/08(水) 17:12:58.80ID:gPwSdoJG0
つか、書き込み先を、D:\にしたら動いたwww
>>327さん、どうもありがとう!!!

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

Sub test()
Dim btByte() As Byte
Dim lngFN As Long
ReDim btByte(5) As Byte
btByte(0) = &H4D
btByte(1) = &H54
btByte(2) = &H68
btByte(3) = &H54
btByte(4) = &H68
btByte(5) = &H64
lngFN = FreeFile
Open "D:\hogehoge.bin" For Binary As #lngFN
Put #lngFN, , btByte
Close #lngFN
End Sub

345デフォルトの名無しさん (ワッチョイ 65ac-OOGl)2020/07/08(水) 17:43:43.08ID:4BPfKF9s0
はい次の方

346301 (ワッチョイ 2301-6wWl)2020/07/08(水) 17:58:35.88ID:gPwSdoJG0
>>341
midiファイルというのはサイズが決まってないんですよ

347デフォルトの名無しさん (ワッチョイ 2de6-0WwX)2020/07/08(水) 19:59:20.87ID:7XVFoSLh0
>>344
そりゃVBAではなく、VBですらなく
BASICの範疇だからな

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

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

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

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

350デフォルトの名無しさん (アウアウウー Sa09-90sC)2020/07/08(水) 21:25:31.07ID:eeGZOJTWa

351デフォルトの名無しさん (ワッチョイ 2d7c-6wWl)2020/07/08(水) 21:41:34.04ID:eWJ0cHmK0
>>349
まずちゃんと自分で調べよう
知識が伴ってないのにろくに調べもしないでは自分で解決どころか調べ方すら身に付かない

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

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

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

354蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ d501-ZaXI)2020/07/08(水) 22:00:15.73ID:wtc6YQgJ0
>>353
ファイルの関連付けを変えて、マクロで迂回して。。。

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

355デフォルトの名無しさん (ワッチョイ fdea-6wWl)2020/07/08(水) 22:05:22.90ID:J4iDAbFT0
>>354
う〜〜ん、あまり危ない橋は渡らないでおきます。

356デフォルトの名無しさん (ワッチョイ bdda-ucCN)2020/07/08(水) 22:32:26.07ID:R5JQxD1z0
>>353
調べ方を調べてから言え

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

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

358デフォルトの名無しさん (ワッチョイ 65ac-OOGl)2020/07/08(水) 23:40:00.14ID:4BPfKF9s0
てかそんなんできたらマルウェアの温床になるから出来ないって思っとけよ
共有化でも足りないんならあきらめろん

359デフォルトの名無しさん (ワッチョイ fdea-6wWl)2020/07/08(水) 23:44:27.92ID:J4iDAbFT0
>>358
よくわかりませんが、わかりました。
本件Closeで。

360デフォルトの名無しさん (アウアウウー Sa09-X/TW)2020/07/09(木) 00:12:21.12ID:dz7PM5ALa
>>346
midiはファイルの種類じゃない

361デフォルトの名無しさん (ワッチョイ 2d7c-6wWl)2020/07/09(木) 00:12:27.29ID:ylhvfSy00
ファイルが書き込めない状態になってたら読み取り専用で開けばいいだけじゃん

362デフォルトの名無しさん (アウアウウー Sa09-X/TW)2020/07/09(木) 00:13:47.48ID:dz7PM5ALa
>>357
きもい

363デフォルトの名無しさん (アウアウウー Sa09-X/TW)2020/07/09(木) 00:17:27.90ID:dz7PM5ALa
社会で他の人も使うファイル勝手にいじるなよ

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

365デフォルトの名無しさん (アウアウウー Sa09-X/TW)2020/07/09(木) 02:16:40.71ID:eQo6hEQpa
>>364
おまえに言ってない

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

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

367デフォルトの名無しさん (ワッチョイ cb63-jZ9g)2020/07/09(木) 03:59:15.57ID:uBlORkna0
taskkill /im ielowutil.exe
なんでもかんでもExcelでやろうとするな

368301 (ワッチョイ 2301-6wWl)2020/07/09(木) 05:30:09.44ID:C69oBRyL0
つか、>>344のソースの

> ReDim btByte(5) As Byte
> btByte(0) = &H4D
> btByte(1) = &H54
> btByte(2) = &H68
> btByte(3) = &H54
> btByte(4) = &H68
> btByte(5) = &H64
この部分で、btByteという変数に6個の16進数を代入していますが、もっとエレガントに代入する方法はないでしょうか?
実は定型文みたいのを50個ぐらい入れなきゃならないのです。

369デフォルトの名無しさん (アウアウクー MM21-jZ9g)2020/07/09(木) 06:03:23.76ID:hGjJ3XRlM
ないです
次の方どうぞ

370デフォルトの名無しさん (スプッッ Sd93-56/R)2020/07/09(木) 06:34:39.36ID:pd2EiZRKd
>>368
そういうのは、あらかじめ用意したバイナリファイルから読み込んだ方がいいと思うんだけど
どうしてもソースに大量の16進数を直接書きたいなら
配列を使う方法
h = Array(&H4D, &H54, &H68, &H54, &H68, &H64)
For i = 0 To 5
 btByte = h(i)
Next

文字列を使う方法
h = "4D,54,68,54,68,64"
For i = 0 To 5
 btByte(i) = Val("&H" & Mid(h, i * 3 + 1, 2))
Next

371301 (ワッチョイ 2301-6wWl)2020/07/09(木) 06:37:41.14ID:C69oBRyL0
>>370
ありがとうございます。 感謝します。

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

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

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

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

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

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

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

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

380デフォルトの名無しさん (ワッチョイ 2d7c-6wWl)2020/07/09(木) 10:53:22.69ID:ylhvfSy00
>>379
グローバルな定数?

381デフォルトの名無しさん (ワッチョイ cbb0-mXGD)2020/07/09(木) 11:12:09.02ID:VstlXiSO0
ローカルです。

382デフォルトの名無しさん (ワッチョイ bd49-OOGl)2020/07/09(木) 11:19:56.91ID:JYozEgDc0
option explicitの有無は?

383デフォルトの名無しさん (アウアウエー Sa13-c9t6)2020/07/09(木) 11:21:50.10ID:DLLEuHaFa
>>376
みんなわざわざ煙に巻いてるのに言っちゃ

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

385デフォルトの名無しさん (ワッチョイ 2d7c-6wWl)2020/07/09(木) 11:30:45.63ID:ylhvfSy00
>>384
稀に起こるが原因は不明
エラーになった定数の宣言行を切り取り貼り付けすればとりあえず治る

386デフォルトの名無しさん (ワッチョイ bd49-OOGl)2020/07/09(木) 12:02:59.73ID:JYozEgDc0
コピペしたとき?
実行したとき?

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

>>386
実行時です。

388デフォルトの名無しさん (ワッチョイ cbb0-mXGD)2020/07/09(木) 14:14:55.78ID:VstlXiSO0
>385>386
他の箇所でも同様のエラー起きましたが書き直せば動作しました。
ありがとうございました。

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

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

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

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

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

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

393デフォルトの名無しさん (ワッチョイ 1b68-ucCN)2020/07/09(木) 19:41:37.34ID:WyUmT5e70
>>391
その脳内変換が意味不明

394デフォルトの名無しさん (ワッチョイ 65ac-OOGl)2020/07/09(木) 19:50:25.19ID:tq6y70T30
元々の変な質問のせいでくだらない流れになった

はい次の方

395デフォルトの名無しさん (ラクッペペ MMcb-1Cui)2020/07/09(木) 20:05:26.54ID:SKtauNRXM
VBAに将来はありますか?

396デフォルトの名無しさん (ブーイモ MMeb-qwbb)2020/07/09(木) 20:11:04.35ID:F9SMopSBM
>>395
Excelと共に生き続けるだろうね
Excelの将来と同じ

397デフォルトの名無しさん (ワッチョイ 7592-jZ9g)2020/07/09(木) 20:13:33.30ID:K5359iyV0
そういえばExcelにPython載るって話はどうなったの?

398デフォルトの名無しさん (ワッチョイ a5da-EOHM)2020/07/09(木) 20:29:37.44ID:Qt+epPmk0

399デフォルトの名無しさん (ワッチョイ 83ee-Bqa1)2020/07/09(木) 21:13:12.39ID:54FX1SKx0
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デフォルトの名無しさん (アウアウエー Sa13-c9t6)2020/07/09(木) 21:27:01.41ID:YMHQKg0aa
>>399
CreateObjectまんまオブジェクトを創造してます

401デフォルトの名無しさん (ワッチョイ 1bf7-38vb)2020/07/09(木) 21:31:09.68ID:36OHf5x10
New使っちゃいなよ

402デフォルトの名無しさん (ワッチョイ 2d7c-6wWl)2020/07/09(木) 21:42:49.37ID:ylhvfSy00
>>399
参照設定をしていればいらない

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

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

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

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

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

408デフォルトの名無しさん (ワッチョイ 05da-ucCN)2020/07/10(金) 17:42:22.09ID:OUgIsXw30
ウチはシステムが古くてAPIなんてものに対応してないので現役だわ。

409デフォルトの名無しさん (ワッチョイ bdda-ucCN)2020/07/10(金) 20:17:34.10ID:R/wZjJlU0
人間も古いからちょうどいい

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

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

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

413デフォルトの名無しさん (アウアウエー Sa13-mWkt)2020/07/10(金) 22:02:00.46ID:c4ANmjzxa
>>412
VIOな

414デフォルトの名無しさん (ワッチョイ 75f1-+b0N)2020/07/10(金) 22:39:50.15ID:91NkPSzZ0
>>413
それはちん毛ちんこケツの穴のことだ

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

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

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

418デフォルトの名無しさん (ワッチョイ fdce-56/R)2020/07/11(土) 02:29:45.71ID:6j9f8L+G0

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

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

421デフォルトの名無しさん (ワッチョイ 75f1-+b0N)2020/07/11(土) 10:36:45.99ID:QNz3pRQ00
糞!ですか

422デフォルトの名無しさん (オイコラミネオ MM51-aL1r)2020/07/11(土) 10:40:32.24ID:VwbCqtVvM
何年前からのバグなんだろうねこれって

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

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

424デフォルトの名無しさん (スップ Sd43-Cpkm)2020/07/11(土) 10:51:22.16ID:R2Hyt8Cad
あと、危険は承知でちょろっと使う時はある。
お手軽だから。

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

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

426デフォルトの名無しさん (アウアウエー Sa13-c9t6)2020/07/11(土) 11:59:27.85ID:8xOOoQBua
Excelで恋愛相談から今晩のおかずまで

427デフォルトの名無しさん (ワッチョイ 65ac-OOGl)2020/07/11(土) 12:25:50.11ID:DdDKJrYh0
sendkeysって手段としてしょうもなさすぎるんだよな
目的を整理すれば他にもっといいやり方があるはず

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

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

430デフォルトの名無しさん (ワッチョイ fdce-56/R)2020/07/11(土) 13:57:47.97ID:6j9f8L+G0
確実にコントロールしたいならAPI
https://www.vba-ie.net/code/numlockon.php

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

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

432デフォルトの名無しさん (ワッチョイ 2301-65sm)2020/07/11(土) 18:21:43.63ID:2M7rjl8q0
大抵のアプリは外部からの要求を受けるのはマウスとキーボードだけだから

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

OS;Windows 98
Excel 97

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

435デフォルトの名無しさん (ワッチョイ cb8e-edot)2020/07/11(土) 20:21:11.98ID:UiWBFlGj0
>>433
死ね

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

437デフォルトの名無しさん (ワッチョイ 75d0-6wWl)2020/07/12(日) 08:33:32.60ID:lihdyx4V0
>>433
Application.Run

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

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

これがそのコードです getIE はシェル取得ファンクションです
長すぎると書き込めないので省略しました
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.navigate "http://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デフォルトの名無しさん (ワッチョイ 89da-YsWi)2020/07/15(水) 02:33:14.34ID:ZAnqbcST0
Excelでやることか?

441デフォルトの名無しさん (ワッチョイ 892c-dDBt)2020/07/15(水) 04:42:17.63ID:IqfNcqeZ0
>>439
5ch では、同じ質問のマルチポストは禁止です!

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

442デフォルトの名無しさん (ワッチョイ bd05-/Lr1)2020/07/15(水) 05:05:59.66ID:T7WU5W0H0
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デフォルトの名無しさん (アウアウエー Sa02-l+/r)2020/07/15(水) 05:28:08.89ID:jQlbMrrka
え?VBAって二重ループ出来ないの?


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

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

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

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

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

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

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

449デフォルトの名無しさん (ワッチョイ 768e-3Ffi)2020/07/15(水) 17:39:29.54ID:yeW9Dlh/0
>>448
そうか
頑張れよ
ここは日記お断りだぞ

450デフォルトの名無しさん (アウアウウー Sa39-o0Sj)2020/07/15(水) 17:39:30.37ID:mQ5xmDA6a
>>444
キャッシュのなら場合そういう動作が正常

451デフォルトの名無しさん (ワントンキン MMea-XQYI)2020/07/15(水) 19:30:17.20ID:FYD4rmMFM
>>448
これがゆとり世代だ

452デフォルトの名無しさん (アウウィフ FF39-CYJA)2020/07/15(水) 20:33:22.18ID:1MtMgQ04F
質問してるじゃん
俺は答えられないけど

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

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

455デフォルトの名無しさん (ワンミングク MMea-XQYI)2020/07/15(水) 21:35:02.16ID:8IhCO+GMM
ゆとり世代は誰かが助けてくれて当然と思っているからな

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

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

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

457デフォルトの名無しさん (アウアウウー Sa39-o0Sj)2020/07/15(水) 22:18:05.17ID:onU8sBQ+a
俺じゃない誰かが助けてくれるんじゃね

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

459デフォルトの名無しさん (ワッチョイ 7663-NRU3)2020/07/15(水) 23:23:50.74ID:xZi/KI4S0
コメント残してるだけだいぶマシ

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

461デフォルトの名無しさん (ワッチョイ 89da-YsWi)2020/07/16(木) 02:52:22.64ID:OfRWrGue0
古いソースをコピペするからそうなる

462デフォルトの名無しさん (ワッチョイ ae68-YsWi)2020/07/16(木) 09:14:27.30ID:PzZafv3e0
そして統一後気が変わって全て置換か

463デフォルトの名無しさん (ワッチョイ 717c-R8z5)2020/07/16(木) 09:39:51.11ID:6lIeM5zt0
何の変数かコメント付けるだけで十分では

464デフォルトの名無しさん (ワッチョイ 89cc-aTVc)2020/07/16(木) 11:51:40.64ID:iXWxOn5X0
同じフォルダ内の"取引実績"ブックの"関東地区"シートの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デフォルトの名無しさん (オッペケ Sr75-mKd1)2020/07/16(木) 12:20:55.35ID:Bld7disAr
いらん列を消せば?

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

467デフォルトの名無しさん (オッペケ Sr75-mKd1)2020/07/16(木) 12:41:43.01ID:Bld7disAr
消したらrange("a2").resize(i,6)

468デフォルトの名無しさん (ワッチョイ 717c-R8z5)2020/07/16(木) 12:45:12.35ID:6lIeM5zt0
コピペするだけで身に付くわけがない…
そのコードが何をしてるのか理解できるまで調べて自分で使っていれば自然に身に付く

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

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

470デフォルトの名無しさん (ワッチョイ ae68-YsWi)2020/07/16(木) 13:38:13.07ID:PzZafv3e0
その人が楽するためなら何もしないな
あえて普段はどうやってるか聞いてみて嫌な顔一つしない感じならやる

471デフォルトの名無しさん (ワッチョイ ee8c-aTVc)2020/07/16(木) 14:52:54.75ID:2egBYvX50
>>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)2020/07/17(金) 00:37:14.96ID:27Ma2AbZ0
少し組んで改善するとまぁ評価はされるんだけど
他の人後でメンテナンスできるよな?
とか
マクロが壊れる心配ないよな?とか

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

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

473デフォルトの名無しさん (ワッチョイ b602-u3Vd)2020/07/17(金) 08:36:30.29ID:KHrOLv580
あれ?ここ日記帳だっけ?

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

475464 (ワッチョイ 89cc-sTnA)2020/07/17(金) 11:03:50.73ID:lcXPd8bd0
>>465,468,471
ありがとうございます。列を削除して取り込みます。

476デフォルトの名無しさん (ワッチョイ 89cc-V+qA)2020/07/17(金) 11:46:31.69ID:lcXPd8bd0
配列 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デフォルトの名無しさん (ワッチョイ 8949-cgHx)2020/07/17(金) 12:02:43.77ID:0sNlDakf0
型はなんなの?
くそコードでもいいからひとつずつ考えて作ってみたの?

478デフォルトの名無しさん (ワッチョイ 71ba-+Pas)2020/07/17(金) 12:07:44.33ID:NYWT4Zhl0
の場合、とか言ってるんならif使えばいいだけだろ
アホなのか

479477 (ワッチョイ 8949-cgHx)2020/07/17(金) 12:46:43.52ID:0sNlDakf0
書いてみた
理解しなきゃ使えないと思うが


Excel VBA 質問スレ Part67 ->画像>12枚

Excel VBA 質問スレ Part67 ->画像>12枚

480476 (ワッチョイ 89cc-V+qA)2020/07/17(金) 15:02:49.46ID:lcXPd8bd0
>>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)2020/07/17(金) 21:27:08.31ID:27Ma2AbZ0
来年の役員報告の課の改善発表の内容に
俺のマクロで作る事が既に組み込まれてるんだが
そもそもそこまでスキルないし年上のもっと給料もらってる奴にやらせろやカスが

482デフォルトの名無しさん (アウアウウー Sa39-o0Sj)2020/07/17(金) 23:08:06.59ID:Bh4mGSGka
って言えばいいじゃん

483デフォルトの名無しさん (ワッチョイ 95da-YsWi)2020/07/18(土) 15:07:16.47ID:aMbjCCwU0
日本語環境でmiLANG_JAPANESEを指定してもbad languageのエラーが出るのは何故?

484デフォルトの名無しさん (ワッチョイ 752d-odhS)2020/07/18(土) 16:11:19.98ID:gXGI8VY40
敗戦国だから

485デフォルトの名無しさん (ワッチョイ 89cc-sTnA)2020/07/18(土) 18:26:41.44ID:6ntZQZs40
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デフォルトの名無しさん (アウアウエー Sa02-l+/r)2020/07/18(土) 19:22:36.82ID:BZh66Ti/a
>>485
そりゃあ貴方、ary2は関数ですと自分で宣言してるもの。
しかもary1に代入してますやんかー
プログラムは命令通りに動作してるだけじゃん。

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

487485 (ワッチョイ 89cc-sTnA)2020/07/18(土) 20:24:50.23ID:6ntZQZs40
>>486
ありがとうございますFuntionの使い方を誤解していましたm(_ _)m

488デフォルトの名無しさん (ワッチョイ 89da-YsWi)2020/07/18(土) 22:33:50.97ID:6aEbh+KL0
Function大魔王

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

490デフォルトの名無しさん (ドコグロ MMc2-brDT)2020/07/18(土) 23:52:10.32ID:UVKbM6jvM
>>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デフォルトの名無しさん (ワッチョイ 7d40-srtg)2020/07/19(日) 01:27:51.35ID:YQjQ9IMi0
配列の扱いや参照渡し以前の問題では・・・

492デフォルトの名無しさん (ワッチョイ 768e-3Ffi)2020/07/19(日) 02:51:36.02ID:b8b+mHAS0
結局、馬鹿には無理なんだよ

493デフォルトの名無しさん (ワッチョイ fabc-+TcB)2020/07/19(日) 02:54:31.21ID:MOwnlnDY0
joinして受け渡ししてsplitで復元がシンプルでわかりやすいんじゃね?

494デフォルトの名無しさん (ワッチョイ 694e-XNKV)2020/07/19(日) 06:42:33.41ID:xggXZiaY0
もう企業ユーザーにはOffice Script解放されてるみたいですが試された方、使用感どんなもんですか?

495デフォルトの名無しさん (ワッチョイ 89da-YsWi)2020/07/19(日) 08:30:43.83ID:du465xO70
調査してる最中じゃねーの、あわてんな

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

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

497デフォルトの名無しさん (スッップ Sdfa-Kk1B)2020/07/19(日) 14:11:26.48ID:4shkrYfWd
>>490のfnc=any()の文が正にそれ。

498デフォルトの名無しさん (アウアウウー Sa39-o0Sj)2020/07/20(月) 12:06:47.51ID:Dkhdkwhma
excelなんだから配列はセルにいれときゃいいんじゃね

499デフォルトの名無しさん (ブーイモ MM99-/wEX)2020/07/20(月) 18:29:09.95ID:3yLiDe7EM
速度気にしないなら

500デフォルトの名無しさん (ワッチョイ 89da-YsWi)2020/07/20(月) 23:22:10.32ID:87nc/Vc+0
全然気にしない

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

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

503デフォルトの名無しさん (ワッチョイ 69ce-zSg9)2020/07/21(火) 10:31:44.78ID:8QcWJiTk0
10万行のCSVとか配列で処理したくなるけどメモリ不足になるんで仕方なくワークシートに入れてる

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

505デフォルトの名無しさん (アウアウウー Sa39-o0Sj)2020/07/21(火) 11:43:12.61ID:uXgtcpNna
intの最大の32767だろうね

506デフォルトの名無しさん (アメ MMa9-XNKV)2020/07/21(火) 12:27:55.57ID:Z8jTNyVcM
オフィススクリプト試したい…
個人ユーザーにも解放してくれ…

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

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

509デフォルトの名無しさん (ワッチョイ 7663-NRU3)2020/07/21(火) 19:47:20.41ID:g0ULgQg00
ネット上でも関わり合いになりたくないタイプだろ

510デフォルトの名無しさん (ワッチョイ 05e5-ePvM)2020/07/21(火) 21:24:07.75ID:fmBf+klc0
自分の参考になるとこだけ聞いときゃいいんじゃないの?
その他アレコレ言うのはどうかと思うぞ

511デフォルトの名無しさん (アウアウエー Sa02-rGUB)2020/07/21(火) 22:50:12.29ID:nbzaQebba
>>503
1レコードずつシーケンシャルに処理できないの?

512デフォルトの名無しさん (ワッチョイ 6949-YsWi)2020/07/21(火) 23:00:00.64ID:q3mQwKOX0
複数の同じ形式で入力されたブックをマージしたんですが、テキストを連結する場合に区切り文字を「|」にしました
(「|」は入力時には使用していません)
ファイルが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デフォルトの名無しさん (ワッチョイ ee8c-sTnA)2020/07/21(火) 23:08:39.79ID:aJyp0F9S0
Excel2019です
外部CSVをpowerqueryで取り込んで整形したのちシートに貼り付けてあるテーブルがありまして、
ファイルを立ち上げる度にこのテーブルを自動で更新させるところまではできました。
この後、更新完了後に自動的にCSVファイルを保存、終了させようと考えているのですが
更新完了のイベントがどうもわかりません(見当たりません)。

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

514デフォルトの名無しさん (スププ Sdfa-T0G+)2020/07/21(火) 23:15:37.99ID:rncf75Mgd
>>513
スマートさは知らないが正規表現で置換するとか

515デフォルトの名無しさん (スププ Sdfa-T0G+)2020/07/21(火) 23:16:26.19ID:rncf75Mgd
間違えた
>>512

516デフォルトの名無しさん (ワッチョイ 812c-WQpp)2020/07/22(水) 01:35:45.12ID:2/9nnKBr0
>>507
null 値は文字列型じゃなく、
型もない、または、null型だから、空文字列ではないと思う

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

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

518デフォルトの名無しさん (ワッチョイ 29f1-4Yr4)2020/07/22(水) 03:16:01.58ID:hQWVf2dN0
>>517
v(^^)/~

519デフォルトの名無しさん (ワッチョイ 41ce-RnSF)2020/07/22(水) 03:56:58.93ID:F4KuFXOj0
>>511
ファイル操作はセル操作以上に重いからできるだけまとめた方が速くなる

520デフォルトの名無しさん (アウアウエー Sae3-UreN)2020/07/22(水) 08:03:26.55ID:eX+7X9u9a
>>519
そう?

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

522デフォルトの名無しさん (スッップ Sd33-Spa3)2020/07/22(水) 08:40:56.01ID:6gIpTQrUd
>>512
1.連続する|を1つにする。
2.両端の|を消す。

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

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

525デフォルトの名無しさん (ワッチョイ 8b63-fOmF)2020/07/22(水) 17:17:55.78ID:nFYyDION0
こっそり使わないと
マクロ適用できないように仕変されるよ

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

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

528デフォルトの名無しさん (ワッチョイ 7b68-5TCi)2020/07/22(水) 18:47:51.04ID:urXipo8c0
むしろあえて自分用に最適化して「共通部分以外はできません」でもいい

529デフォルトの名無しさん (ワッチョイ 8b63-fOmF)2020/07/22(水) 19:56:15.37ID:nFYyDION0
いつのころからかマクロを忌み嫌い極限までVLOOKUPで済ませるようになった

530デフォルトの名無しさん (ワッチョイ 414e-BRR5)2020/07/22(水) 19:58:49.72ID:ILXZvJ+B0
index/matchは使わないのw

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

532デフォルトの名無しさん (ワッチョイ 41ce-RnSF)2020/07/22(水) 21:55:35.93ID:F4KuFXOj0
XPの頃はオレオレ証明書を作ってたけど、そういや今は作らなくても動いてるな
何がどう変わったのか把握してないわ

533デフォルトの名無しさん (アメ MMfd-BRR5)2020/07/22(水) 22:08:08.79ID:Fc7dRB3XM
今ならxlookupがある。

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

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

535デフォルトの名無しさん (ワッチョイ 9909-RtpQ)2020/07/23(木) 02:31:09.52ID:KC5IdKq10
シートのコード名をマクロから変更することはできますか?

536デフォルトの名無しさん (ワッチョイ d1a2-K9d7)2020/07/23(木) 02:32:42.56ID:vlSabEZu0
できるわけないだろ

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

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

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

540デフォルトの名無しさん (アウアウエー Sae3-UreN)2020/07/23(木) 02:50:40.32ID:hi69YBSQa
設定を変更する必要はあるけど、VBproject を編集できるかもね

541デフォルトの名無しさん (オッペケ Sr85-LLbQ)2020/07/23(木) 03:09:52.56ID:u9f9fzuBr

542デフォルトの名無しさん (ワッチョイ 2992-HEZ1)2020/07/23(木) 03:16:02.13ID:togpUAVc0
>>526
もしかして長文資料もExcelで作っちゃう系?
それはそれで絶対やめとけよ

543デフォルトの名無しさん (ワッチョイ 9909-RtpQ)2020/07/23(木) 03:21:02.63ID:KC5IdKq10
>>541
やっぱり値取得だけなんですね。
ありがとうございました。

544デフォルトの名無しさん (スッップ Sd33-Spa3)2020/07/23(木) 07:12:45.90ID:i+261XKMd
>>543
何で変えたいの?

545デフォルトの名無しさん (アウアウエー Sae3-Ar/h)2020/07/23(木) 07:16:32.96ID:kdPZXO8Ra
世の中が気に入らないから

546デフォルトの名無しさん (アウアウウー Sa5d-2pPP)2020/07/23(木) 07:23:13.06ID:Rh3868Eja
手入力でやれよ

547デフォルトの名無しさん (ワッチョイ 7bf7-m+4H)2020/07/23(木) 07:35:31.90ID:LqjC2Hh/0
sendkeyでなんとか

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

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

550デフォルトの名無しさん (アウアウカー Sa15-Ar/h)2020/07/23(木) 11:58:48.40ID:qQzwkkHta
>>549
スレチ

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

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

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

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

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

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

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

556デフォルトの名無しさん (ブーイモ MMcb-4Yr4)2020/07/23(木) 12:31:43.83ID:iL/DIdMFM
officeTANAKAのおじいちゃんの動画見てる人いる?

557デフォルトの名無しさん (ワッチョイ 8b8e-TniB)2020/07/23(木) 13:19:56.66ID:OedHhoi20
>>555
死ね

558デフォルトの名無しさん (ワッチョイ 41ce-RnSF)2020/07/23(木) 17:49:45.58ID:XAOqwh8/0
>>556
WEBを流し見した方が早い
同じ内容なら動画は時間がもったいない

559デフォルトの名無しさん (アウアウエー Sae3-Ar/h)2020/07/23(木) 18:24:47.13ID:otdPxTIka
おじいちゃんよりperfect human NAKATAなら見るけど

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

561デフォルトの名無しさん (ワッチョイ fb8c-keh3)2020/07/23(木) 19:47:32.61ID:XyxsyJax0
このスレは雑談スレで質問はVBAでもビジネスsoft板スレで聞いた方がいいのかな

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

563デフォルトの名無しさん (ワッチョイ d901-s6lF)2020/07/23(木) 20:32:21.34ID:jBwCrw170
subってプライベートにしないと何か良くないことあるんですか?

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

565デフォルトの名無しさん (ワッチョイ d1e6-RnSF)2020/07/23(木) 20:40:34.07ID:aUHqAsWY0
>>563
目障りだ。消えろ!

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

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

567デフォルトの名無しさん (ワッチョイ 7bf7-m+4H)2020/07/23(木) 20:53:38.12ID:LqjC2Hh/0
ちゃんとクラス作んないとな

568デフォルトの名無しさん (ワッチョイ 2992-HEZ1)2020/07/23(木) 21:08:16.92ID:togpUAVc0
クラスとかよー分からん
オブジェクト指向の言語やるといいのかな?

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

570デフォルトの名無しさん (ワッチョイ 81da-5TCi)2020/07/23(木) 22:12:35.10ID:Ybp1dMGc0
>>562
無能自慢はやめとけ

571デフォルトの名無しさん (ワッチョイ 1342-h1M8)2020/07/23(木) 22:29:15.13ID:lFUaLbQa0
名前はクラスだけどやってることはほぼ構造体だしな

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

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

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

574デフォルトの名無しさん (ワッチョイ d9da-5TCi)2020/07/23(木) 23:54:31.71ID:w5Kgum7s0
ADOとかUIAutomationとか、長くなりそうなのは面倒だからクラス。

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

576デフォルトの名無しさん (ワッチョイ 1301-KHfa)2020/07/24(金) 08:16:46.34ID:4h264/iA0
またVBAでクラスの話かよ…
せめてClass_Initializeに引数持てたらな…

577デフォルトの名無しさん (ワッチョイ b9da-dPcv)2020/07/24(金) 08:56:19.08ID:qHYHRNzt0
>>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デフォルトの名無しさん (ラクッペペ MMeb-Sn4z)2020/07/24(金) 09:00:02.69ID:ASBY7bf4M
それVBAではなくて本家のVBの話だろ

579デフォルトの名無しさん (ワッチョイ 1301-KHfa)2020/07/24(金) 10:09:40.26ID:4h264/iA0
>>577
ここまで頭悪い奴も珍しいなw
Excel VBA 質問スレ Part67 ->画像>12枚

580デフォルトの名無しさん (ワッチョイ 7b68-5TCi)2020/07/24(金) 13:38:33.26ID:w9fToQCu0
わざわざ画像にしなくてもURLに書いてるし

581デフォルトの名無しさん (ラクッペペ MMeb-Sn4z)2020/07/24(金) 13:53:31.22ID:JpqyONWeM
VBAもVBも黒歴史になりつつある点では似たり寄ったりだけどね
Office ScriptsではTypeScriptが使われるようになるんだっけ?

582デフォルトの名無しさん (ワッチョイ 414e-BRR5)2020/07/24(金) 15:25:00.32ID:9v9Epd9J0
CodeLabとOffice Scriptsの違いが分からん

583デフォルトの名無しさん (ワッチョイ 4901-7yLj)2020/07/25(土) 00:45:14.24ID:JvyY8SZI0
クラスのメソッドで例外が起きた時、メソッド内の発生場所で止まるようにする方法はありませんか?
標準モジュール内のメソッドを呼んだ位置まで巻き戻って停止してしまい、デバッグしづらいです。

584デフォルトの名無しさん (ワッチョイ 81da-5TCi)2020/07/25(土) 03:30:34.71ID:XNRsY3fo0
止まったら何もできない

585デフォルトの名無しさん (ワッチョイ 414e-BRR5)2020/07/25(土) 03:47:33.86ID:vIjhxGJs0
>>583
デバッガでステップインすれば
https://docs.python.org/ja/3/library/pdb.html

586デフォルトの名無しさん (ワッチョイ 414e-BRR5)2020/07/25(土) 03:48:10.37ID:vIjhxGJs0
ごめんpythonのスレと間違えた

587デフォルトの名無しさん (ワッチョイ 8b8e-VaRO)2020/07/25(土) 03:52:26.30ID:ajAv/KNZ0
こことPythonのスレはどうしようもない馬鹿が来るよな

588デフォルトの名無しさん (ワッチョイ 2940-7yLj)2020/07/25(土) 10:50:18.42ID:JW+blTJS0
>>584
説明不足だったかもしれません。

標準モジュール内で例外が投げられると、発生した行の色が変わって停止します。
これをクラスのメソッド定義の中でもできるようにしたいんです。

589デフォルトの名無しさん (アウアウカー Sa15-2mKV)2020/07/25(土) 11:09:06.42ID:lCi24Eq2a
オプション→全般のエラートラップをクラスモジュールで中断にするとよい。

590デフォルトの名無しさん (ワッチョイ 2940-7yLj)2020/07/25(土) 11:33:18.16ID:JW+blTJS0
>>589
ありがとうございます

591デフォルトの名無しさん (ワッチョイ 2940-7yLj)2020/07/25(土) 11:36:14.62ID:JW+blTJS0
シェルスクリプトのことをシェルってゆうなってあるけど、どう違うの?

592デフォルトの名無しさん (ワッチョイ 2940-7yLj)2020/07/25(土) 11:36:22.19ID:JW+blTJS0
誤爆

593デフォルトの名無しさん (ワッチョイ fb8c-keh3)2020/07/26(日) 00:01:52.46ID:YUJGnmE80
シェルで使うスクリプト

594デフォルトの名無しさん (アウアウエー Sae3-Ar/h)2020/07/26(日) 00:13:48.38ID:PahVuP8ha
Excelで使うVBAに関する質問スレッド

595デフォルトの名無しさん (ワッチョイ 8b8e-VaRO)2020/07/26(日) 00:58:59.92ID:5SabrGL+0
馬鹿は勝手な略語を使う法則

596デフォルトの名無しさん (アウアウエー Sae3-Ar/h)2020/07/26(日) 01:28:13.97ID:PahVuP8ha
「Excel」とはマイクロソフト社が販売する代表的なコンピューター上で動作する表計算アプリケーションソフトウェアのひとつです。

「VBA」とは
(コンピュータ用語)で
読み方は【ぶいびーえー】と読みます。
VisualBasic for Applications【ぶぃじゅある べいしっく ふぉー あぷりけいしょん】の略です。
マイクロソフト社製の各Office製品に附属しています。
それぞれのアプリケーション(Excel、Accessなど)の操作に特化したVisualBasicの亜種です。

「質問」とは質疑問い合わせの事です。

「スレ」とはスレッドの略で掲示板のプロセス単位の事です。

「part」とは・・

597デフォルトの名無しさん (ワントンキン MMd3-TniB)2020/07/26(日) 01:30:01.34ID:uKzXRGWLM
>>596
「質問」とは質問だろ

598デフォルトの名無しさん (アウアウエー Sae3-Ar/h)2020/07/26(日) 01:38:30.83ID:PahVuP8ha
【パート】【パーツ】
部分、全体の一部、断片
小説の節、戯曲・詩などの部,編,巻,(連載物の)回や
楽器演奏者の役割、時間労働者、機械の部品
などがあります。

599デフォルトの名無しさん (ワッチョイ 81da-5TCi)2020/07/26(日) 01:52:49.28ID:sW/RrXzf0
死得るスクリプトを見たら最後

600デフォルトの名無しさん (ワッチョイ 1301-8Xcr)2020/07/26(日) 11:21:54.14ID:Jda+4IKu0
Cells(1, 1)に、5Fという文字が書かれてます。
Cells(1, 1)から、Dim b As Byte と宣言されたbにバイナリデータの5Fを代入するにはどうすればよいでしょうか?
↓を実行すると、b = Cells(1, 1).Valueのところで、「型が一致しません」となります。

Sub test()
Dim b As Byte
b = Cells(1, 1).Value
Debug.Print b
End Sub

601デフォルトの名無しさん (ワッチョイ 41ce-RnSF)2020/07/26(日) 11:27:03.08ID:DWe9vbm70
>>600
b = Val("&H" & Cells(1, 1).Text)

602デフォルトの名無しさん (ワッチョイ 8b8e-VaRO)2020/07/26(日) 11:28:35.60ID:5SabrGL+0
また馬鹿が戻ってきたか

603600 (ワッチョイ 1301-8Xcr)2020/07/26(日) 11:31:04.04ID:Jda+4IKu0
>>601
おお、ありがとうございます。 出来ました!

604デフォルトの名無しさん (ワッチョイ 9983-HEZ1)2020/07/26(日) 11:33:49.79ID:b0sneaTl0
なんで変数の型も理解してない輩がExcelでバイナリ扱ってるの?

605デフォルトの名無しさん (ワッチョイ 8b8e-VaRO)2020/07/26(日) 11:36:23.90ID:5SabrGL+0
>>604
midiでスレを検索しろ
全部丸投げで作って貰おうとしてる厚かましい馬鹿だ

606デフォルトの名無しさん (ワッチョイ d901-s6lF)2020/07/26(日) 11:48:03.95ID:xaHx8eK10
VBAごときでイキるなって

607デフォルトの名無しさん (ワッチョイ 8b63-UE+f)2020/07/26(日) 16:21:34.57ID:81ge+c7W0
馬鹿に馬鹿だと言ってるだけでVBAでイキっているわけではない
VBAスレに馬鹿が多いからそう見えるだけで

608デフォルトの名無しさん (ワッチョイ 4901-fOmF)2020/07/26(日) 16:41:47.78ID:MK3muVKT0
馬鹿に馬鹿と言ってなんの意味あんのよ

609デフォルトの名無しさん (ワッチョイ 81da-ecPg)2020/07/26(日) 17:52:03.33ID:sW/RrXzf0
意味なんか関係ない

610デフォルトの名無しさん (ワッチョイ b9df-h1M8)2020/07/26(日) 18:16:36.02ID:jictETsT0
5チャンネルはくだらない質問をすると、
張り倒されてぼこぼこにされて簀巻きにされて東京湾に沈められると聞いたので

がくがくしながら質問しています。
ちょぅとだけ質問していいですか?


Sub Main()
 Dim RowCnt As Long
 
 With ThisWorkbook.Sheets(1)
  RowCnt = 2
  Do
   If .Cells(RowCnt, 1).Value = "" Then Exit Do
   .Cells(RowCnt, 2).NumberFormatLocal = "@"
   .Cells(RowCnt, 2).Value = GetISBN(.Cells(RowCnt, 1).Value)
   RowCnt = RowCnt + 1
  Loop
 End With

についておしえてください。

611デフォルトの名無しさん (ワッチョイ b9df-h1M8)2020/07/26(日) 18:57:11.06ID:jictETsT0
間違えたここまでだった。

Sub Main()
 Dim RowCnt As Long
 
 With ThisWorkbook.Sheets(1)
  RowCnt = 2
  Do
   If .Cells(RowCnt, 1).Value = "" Then Exit Do
   .Cells(RowCnt, 2).NumberFormatLocal = "@"
   .Cells(RowCnt, 2).Value = GetISBN(.Cells(RowCnt, 1).Value)
   RowCnt = RowCnt + 1
  Loop
 End With
 
 amazonSearch2
 
End Sub

612デフォルトの名無しさん (ワッチョイ 81da-ecPg)2020/07/26(日) 19:53:49.36ID:sW/RrXzf0
日本語わかってないのかな

613デフォルトの名無しさん (ワッチョイ 53bc-23KC)2020/07/26(日) 20:06:40.41ID:aLsM3Hzz0
30分かかって気付いたミスはコードの貼り間違いだけかよw
質問なんなんだよw

614デフォルトの名無しさん (スッップ Sd33-VaRO)2020/07/26(日) 20:22:52.99ID:OH794sXtd
馬鹿ばっか

615デフォルトの名無しさん (アウアウエー Sae3-Ar/h)2020/07/26(日) 20:33:02.31ID:T8T+tUZ4a
>>610
質問の仕方を教えるにはどうしたらいいでしょう?
https://note.com/saiyo_shokunin/n/n3c34e30e00df

616デフォルトの名無しさん (ワッチョイ fb8c-keh3)2020/07/26(日) 20:53:16.35ID:YUJGnmE80
>>611
他にも続きがたくさんあるでしょ
全部のせないとわからない

617デフォルトの名無しさん (ワッチョイ 9983-HEZ1)2020/07/26(日) 20:57:58.22ID:b0sneaTl0
そもそも質問が無い

618610・611 (ワッチョイ b9df-h1M8)2020/07/26(日) 21:34:20.58ID:jictETsT0
他の掲示板で質問しているのでマルチポストになるとぶん殴られると聞いたので、
こっそりとしか質問できないので、、、

こっそり質問してます。(`・ω・´)

'Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)
を64bitEXCEL(vba)で動かすためには、API宣言を変えないとダメだと聞いたのですが、

#If VBA7 Then
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr)
#Else
Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)
#End If

に変えてみたのですが、
実行時エラー'91':
オブジェクト変数またはWithブロック変数がしていされていません。

と出てまたダメでした。

どうすりゃいいですかね?

619デフォルトの名無しさん (ワッチョイ 8b8e-VaRO)2020/07/26(日) 21:43:35.53ID:F4Iawv3Z0
>>618
内容理解してないだろ
馬鹿かよ

620デフォルトの名無しさん (ワッチョイ d17c-8Xcr)2020/07/26(日) 22:01:17.25ID:NJflbSmf0
マルチポストが駄目と分かった上でもやるのは性質が悪すぎる

621デフォルトの名無しさん (ワッチョイ 81da-5TCi)2020/07/26(日) 23:11:04.71ID:sW/RrXzf0
東京湾に連れて行くのがめんどくさい

622デフォルトの名無しさん (ワッチョイ d9da-5TCi)2020/07/26(日) 23:53:25.41ID:FG7uH+9S0
>>610(たけし)は、本当はたけしじゃなくてタケルなのに、
お前たけしだろ!って言われて困惑している状態。

#If VBA7 Then
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr)
#Else
つまり

623デフォルトの名無しさん (アウアウエー Sae3-Ar/h)2020/07/27(月) 04:00:49.04ID:AjWs5F06a
スレチ

624デフォルトの名無しさん (オッペケ Sr85-FNIW)2020/07/27(月) 16:42:54.98ID:toMb+PQtr
セルをダブルクリックしたらセルの内容を削除(delete)キーを押した状態にしたいんだけど可能かな?

625デフォルトの名無しさん (ワッチョイ 8bcc-5TCi)2020/07/27(月) 17:43:54.17ID:uXQw94U/0
可能だよ
WorkSheetのBeforeDoubleClickイベントを使う
Deleteメソッドではないことに注意
それとは別に、普通にメソッドを実行するとUndoできなくなって危険だから、Sendkeysとか使った方がいいかも

626デフォルトの名無しさん (ワッチョイ 134f-FdLM)2020/07/27(月) 18:43:19.75ID:xLC4DZCW0
久しぶりにこのスレ来たけど
お前らが相変わらずで安心したわ

627デフォルトの名無しさん (ワッチョイ 4149-5TCi)2020/07/27(月) 19:20:33.66ID:Tsc1/eGu0
>>512 512です
>>517さんの正規表現が私の理解不足でうまく使えなかったため>>522さんのやり方で下記のコードを書きました。1ファイル100列×500行程度のものを3つマージした後で置換するのは問題なかったのですが、5つのファイルをマージ後に置換したところエラー6のオーバーフローが発生し、8行目の「r = Reg.Replace(r.Value, "|")」の行がハイライトされていました
Dim r As RangeをDim r As Variantにしてみても解決しなかったのですが、これは検索対象の文字数が多すぎてオーバーフローになるのでしょうか。また対策があれば教えてください、よろしくお願いします(改行が多いと書き込めないため見づらくてすみません)

Dim Reg
Dim r As Range
Set Reg = CreateObject("VBScript.RegExp")
With Reg
.Pattern = "\|+" '検索パターン 連続した「|」
.Global = True '文字列全体を検索
For Each r In ActiveSheet.UsedRange
r = Reg.Replace(r.Value, "|") '「|」ひとつに置換
Next r
End With
With Reg
.Pattern = "^\|" '検索パターン 先頭の「|」
.Global = True
For Each r In ActiveSheet.UsedRange
r = Reg.Replace(r.Value, "") '削除
Next r
End With
With Reg
.Pattern = "^|$" '検索パターン 末尾の「|」
.Global = True
For Each r In ActiveSheet.UsedRange
r = Reg.Replace(r.Value, "") '削除
Next r
End With
Set Reg = Nothing

628デフォルトの名無しさん (ワッチョイ d17c-8Xcr)2020/07/27(月) 19:35:23.16ID:qan76PHt0
>>627
文字数が多いのかもしれないと思ったなら少なくして試せばその考えが正しいのかどうか質問するまでもなく判明すると思うよ

629デフォルトの名無しさん (ワッチョイ 81da-5TCi)2020/07/27(月) 20:41:26.42ID:FDPJJmZc0
>>627
そのファイルがないと確認できない

630デフォルトの名無しさん (ワッチョイ d901-s6lF)2020/07/27(月) 20:53:58.84ID:MCUd8BVw0
typeって使うとなんかいいことある?
少しずつパラメータは違うけど処理が同じのを何回もやらなきゃならなくて
Rengeでベタうちの方が後で見てもわかりやすいんだけど
そうすると少しずつ違う処理を全部作らないといけないんだよなあ
かと言って変数で共通化するとわかりにくくて後でメンテが大変そうでさあ
継承とかあればいいのに

631デフォルトの名無しさん (ワッチョイ 81da-ecPg)2020/07/27(月) 22:43:35.72ID:FDPJJmZc0
コメント書いときゃいいんじゃね

632デフォルトの名無しさん (ワッチョイ 8b10-8Xcr)2020/07/27(月) 23:06:24.84ID:FGdyWgnW0
VBAマクロの質問になりますが、
Webブラウザ上で検索した結果、10件ごとに1ページずつ結果がされた後に、
マクロから2ページ目に遷移する為の"2"のボタンを押したいのですが、
ソースコードの表示でhtml上に2のnameやtypeが表示されない為、マクロから2ページ目以降を自動的にクリックできません。
どなたかお教え願います

633デフォルトの名無しさん (ワッチョイ fb8c-keh3)2020/07/28(火) 00:05:21.07ID:S0kilWhd0
ボタンを検索してそれが"2"やったら押したらええんやで

634デフォルトの名無しさん (ワッチョイ 8b10-8Xcr)2020/07/28(火) 00:11:20.83ID:blBd/uyT0
VBAのマクロ上でどう検索すればいいでしょうか

635デフォルトの名無しさん (ワッチョイ fb8c-keh3)2020/07/28(火) 00:22:36.19ID:S0kilWhd0
vba dom ボタン でググった最初のサイトに書いてるやないか

636デフォルトの名無しさん (ワッチョイ d1e6-RnSF)2020/07/28(火) 00:22:46.29ID:572xGNLz0
html上でまったく見分けがつかないなら無理だ
あきらめろ

637デフォルトの名無しさん (アウアウエー Sae3-Ar/h)2020/07/28(火) 00:25:17.81ID:p8KDyqHYa
絶対に押すな!ってコメント書いとけばいいんじゃない?

638デフォルトの名無しさん (ワッチョイ 8b10-8Xcr)2020/07/28(火) 00:26:19.28ID:blBd/uyT0
Web上からname属性やタグ等の情報が拾えない場合の画面上のボタンをクリックする方法が知りたいです

639デフォルトの名無しさん (ワッチョイ d1e6-l24t)2020/07/28(火) 00:31:40.60ID:572xGNLz0
違うよ、クリックされたときのイベントハンドラを知るべきだよ

640デフォルトの名無しさん (ワッチョイ 8b10-8Xcr)2020/07/28(火) 00:32:32.93ID:blBd/uyT0
VBAからchromeを起動して、googleでセルから拾ったwordの"りんご"を検索結果で表示させ、
htmlのソースコードが見れない状態で、2ページ目に遷移するボタンをクリックする方法になります

641デフォルトの名無しさん (ワッチョイ d1e6-l24t)2020/07/28(火) 00:39:14.92ID:572xGNLz0
見ろよ

642デフォルトの名無しさん (ワッチョイ 8b10-8Xcr)2020/07/28(火) 00:44:13.26ID:blBd/uyT0
>>641
vba domで検索したらそれらしきページがありました
ありがとうございます

643デフォルトの名無しさん (スプッッ Sd73-Spa3)2020/07/28(火) 08:00:54.71ID:cRv8WCzbd
>>627
Dim r As Variantにしても解決しなかったって、どうしてそれで解決すると思ったの?

というか、何でそんな頑張り?
Dim r As Range
Dim strData As String
Dim lngLen As Long

strData=r.Value
Do While lngLen<>Len(strData)
lngLen=Len(strData)
strData=Replace(strData,"||","|")
Loop
If Left(strData,1)="|" Then
strData=Mid(strData,2)
EndIf
If Right(strData,1)="|" Then
strData=Left(strData,Len(strData)-1)
EndIf

通勤中にスマホで書いたから試してないが、こんな感じでいけない?

644デフォルトの名無しさん (スプッッ Sd73-Spa3)2020/07/28(火) 08:08:15.26ID:cRv8WCzbd
>>640
ChromeでやるならSelenium系の話になるだろう。
IE系ならInternetExplorer.Application使ってできる。

属性については、Id、name、classnameあたりが無いならgetElementsByTagname使ってタグの何番目とか、そのオブジェクトの親、さらにその親あたりをId、name、classnameあたりで取得して、childnodesの何番目とやる。

645デフォルトの名無しさん (ワッチョイ b9cb-wJn/)2020/07/28(火) 16:38:18.39ID:1uHtckRe0
ワークシートに下記のコード書いたときには動作するんですが、標準モジュールに書いたときには動かないのはどうすればいいでしょうか?
やりたいことは、「NG」という文字があったときは、結果に「未」を、「済」の場合は、その時の列の名前を結果に表示したいです。すべて「済」なら「完了」と表示するという意図のコードです。

Excel VBA 質問スレ Part67 ->画像>12枚


Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Dim intR As Integer,intC As Integer,strW As String,LastCol As Integer

intR = Target.Row
intC = Target.Column
strW = Target.Text
LastCol = Cells(1, Columns.Count).End(xlToLeft).Column
If intR >= 3 And intC >= 3 Then
Select Case strW
Case "NG": Cells(intR, 2) = "未"
Case "済"
Select Case intC
Case Is = LastCol: Cells(intR, 2) = "完了"
Case Else: Cells(intR, 2) = Cells(1, intC)
End Select
End Select
End If
Application.EnableEvents = True
End Sub

646デフォルトの名無しさん (ワッチョイ b9cb-wJn/)2020/07/28(火) 16:44:46.31ID:1uHtckRe0
>>645
サブルーチンとして呼び出しをしたいと思っています

647デフォルトの名無しさん (ワッチョイ 132f-oJ29)2020/07/28(火) 17:11:42.28ID:LXXezy4S0
そりゃ標準モジュールではイベントは発生しないからな
処理そのものは標準モジュールにサブルーチン(つか言い方が古いw)として定義してもいいけど
イベントそのものはイベントが起こるところで拾って呼び出せ

648デフォルトの名無しさん (ワッチョイ b9cb-wJn/)2020/07/28(火) 17:54:35.95ID:1uHtckRe0
>>647
単純にワークシートの方に
Sub test ()
Call Worksheet_Change()
End Sub
こういう呼び出しをしてあげればいいということでしょうか

649デフォルトの名無しさん (ワッチョイ d17c-8Xcr)2020/07/28(火) 17:57:02.06ID:zYqweXz10
じゃあtestはどうやって呼び出すの

650デフォルトの名無しさん (ワッチョイ d901-s6lF)2020/07/28(火) 19:05:20.92ID:HNUdUhp40
気合

651デフォルトの名無しさん (ワッチョイ 1342-h1M8)2020/07/28(火) 19:15:09.19ID:jZfcEvn60
根性

652デフォルトの名無しさん (ワッチョイ 132f-oJ29)2020/07/28(火) 19:49:41.64ID:LXXezy4S0
まずイベント(イベントハンドラ)とは何かを学んで

653デフォルトの名無しさん (ワッチョイ 7bf7-m+4H)2020/07/28(火) 20:25:12.41ID:NP/CLywd0
ワークシートのイベントの中で標準モジュールのプロシージャを呼び出す
もしワークシートモジュールに一切コード書きたくないならクラス使うしかない

654デフォルトの名無しさん (ワッチョイ 4149-5TCi)2020/07/28(火) 23:43:33.18ID:7SbfIR+a0
>>643
ありがとうございます
教えていただいたコードで試してみました
そのままだと実行時エラー91になり「strData = r.Value」がハイライトされ、
「Set r = ActiveSheet.UsedRange」を足したところ実行時エラー13型が一致しません
となってやはり「strData = r.Value」がハイライトされたので
「For Each r In ActiveSheet.UsedRange 〜 Next」を足したところエラーは表示されず
ローカルウィンドウ上では「|」が置換されていくのですが、実際のセルの文字列は
置換されませんでした。これは何が問題なのでしょうか

Sub test()
Dim r As Range
Dim strData As String
Dim lngLen As Long
Set r = ActiveSheet.UsedRange
For Each r In ActiveSheet.UsedRange
strData = r.Value
Do While lngLen <> Len(strData)
lngLen = Len(strData)
strData = Replace(strData, "||", "|")
Loop
If Left(strData, 1) = "|" Then
strData = Mid(strData, 2)
End If
If Right(strData, 1) = "|" Then
strData = Left(strData, Len(strData) - 1)
End If
Next
End Sub

655デフォルトの名無しさん (アウアウウー Sa5d-ecPg)2020/07/28(火) 23:44:22.96ID:q9B0Ijiva
>>648
ワークシートの中を変更したらチェンジのイベントが起きるよね?

656デフォルトの名無しさん (ワッチョイ f15f-skXP)2020/07/29(水) 00:33:18.42ID:rQllrZ0M0
>>654
strDateはただの文字列の変数だから置換した結果をセルに入れ直さなきゃセルの中身は書き換わらんよ

657デフォルトの名無しさん (ワッチョイ 7949-xE3T)2020/07/29(水) 00:46:40.06ID:d6pTrFks0
>>656
あーなるほど。最後のところ
End If
r.Value = strData
Next
にしたらできました、ありがとうございます

658デフォルトの名無しさん (ワッチョイ d610-1vA1)2020/07/29(水) 01:00:46.72ID:X5Dn8QJR0
>>644
ありがとうございます

objIE.document.GetElementsByTagName("タグ名")(添え字)

上記の構文で該当のページに自動クリックするようになったのです

For p = 1 to 10
objIE.document.GetElementsByTagName("タグ名")(p)
Next p

上のような構文で最初は2ページにきちんと遷移するのですが、次は4ページ、次は2ページ、次は3ページと
うまくページ遷移が出来ません。
一応MsgBoxでpを参照すると1〜10の数字は格納されてるみたいなのですが
objIE.document.GetElementsByTagName("タグ名")(1)で2ページ目
objIE.document.GetElementsByTagName("タグ名")(2)で4ページ目
objIE.document.GetElementsByTagName("タグ名")(3)で3ページ目

上記のように変数の数字と同じページに進んでくれない処理になります。
For文を使用してインクリメントするのではなく、表示させたいページとそれに対応する添え字で処理をしてくしか方法はないのでしょうか

659デフォルトの名無しさん (ワッチョイ d663-uaxO)2020/07/29(水) 02:34:23.24ID:TpnjQV/H0
それでページ遷移したらバグを疑うが

660デフォルトの名無しさん (ワッチョイ 7a01-he4x)2020/07/29(水) 13:22:46.34ID:mS6Tz06p0
本社が作って社内システムにアップロードされてるVBAマクロが
マクロの記録をつなぎ合わせて作った酷いコードでつらい・・・
連続した1000行*5列ぐらいのコピペするだけなのにVBE50行ぐらい使っててつらい・・・

661デフォルトの名無しさん (スプッッ Sd7a-u4+4)2020/07/29(水) 13:57:55.28ID:MurrSo1vd
>>657
まず、最初の方にあるSet r = ActiveSheet.UsedRangeは意味が無いし、必要無い。
rはFor文の中でUsedRangeの中の1つ1つのセルを巡っていくのであって、UsedRangeそのものじゃない。

次に、元々のプログラムでも思ったのだが、書ける人は文字列を与えると変換する関数を作ることを考える。
それさえ出来てしまえばrにそれを与えるだけ。
Private Sub test()
Dim r As Range
For Each r In ActiveSheet.UsedRange
r.Value=ConvertString(r.Value)
Next
End Sub
Private Function ConvertString(strData As String) As String

Dim lngLen As Long
Do While lngLen<>Len(strData)
lngLen=Len(strData)
strData=Replace(strData,"||","|")
Loop
If Left(strData,1)="|" Then
strData=Mid(strData,2)
EndIf
If Right(strData,1)="|" Then
strData=Left(strData,Len(strData)-1)
EndIf

ConvertString=strData

End Function

662デフォルトの名無しさん (スプッッ Sd7a-u4+4)2020/07/29(水) 14:31:44.31ID:MurrSo1vd
>>658
クリックする命令が無いが、For文の中でクリックしているとして、

1.そのpの1〜10が正しく遷移出来るリンクのあるタグかどうか?

2.一旦、遷移したら場合にもよるがobjIEは遷移後のページになる。
とすれば、Document以下のソースが遷移後のぺージのソースになる。

3.遷移には時間がかかるが、それをきちんと待つことが考慮されている?

ぐらいは気になるね。

663デフォルトの名無しさん (ワッチョイ 99cc-UdrD)2020/07/29(水) 15:27:30.52ID:6iCm/sfN0
配列ary2の重複を削除して配列ary3にいれたいのですが
実行後ary3の値はすべて空欄になってしまいます
ary2には全て値が入っています

Option Base 1
Sub Test4()

Dim EndRow, cnt, cnt2 As Long
Dim flg As Boolean

EndRow = Cells(Rows.Count,1).End(xlUp).Row
ReDim ary2(EndRow)
ReDim ary3(EndRow)

664663 (ワッチョイ 99cc-UdrD)2020/07/29(水) 15:28:20.62ID:6iCm/sfN0
↓続きです

For cnt = 1 To EndRow 'ary2に値は入っています
ary2(cnt) = Cells(cnt,1)
End cnt

For cnt = 1 To UBound(ary2)
flg = False
For cnt2 = 1 To UBound(ary3)
If (ary2(cnt) = ary3(cnt2)) Then
flg = True
Exit For
End If
Next cnt2

If (flg = False) Then
ary3(UBound(ary3)) = ary2(cnt)
ReDim Preserve ary3(UBound(ary3) + 1)
End If
Next cnt

End Sub

665デフォルトの名無しさん (ワッチョイ 79ce-Xvfy)2020/07/29(水) 16:02:10.87ID:AAZ7Zxr30
>>663
Dimの型を省略するとVariantになる
全部Longにしたい時はこう書く
Dim EndRow As Long, cnt As Long, cnt2 As Long

666デフォルトの名無しさん (ワッチョイ 79ce-Xvfy)2020/07/29(水) 16:11:12.11ID:AAZ7Zxr30
>>663
ReDim ary3(EndRow) がおかしい
最小限直すなら ReDim ary3(1)

667デフォルトの名無しさん (ワッチョイ 017c-1vA1)2020/07/29(水) 17:54:47.23ID:OLLqLA300
>>663
変数の中身がどういう動きしてるか1行1行確認しよう

668663 (ワッチョイ 99cc-UdrD)2020/07/29(水) 18:28:53.19ID:6iCm/sfN0
>>665
勉強になりました。ありがとうございます

>>666
ご指摘の通りでした。ありがとうございます

>>667
確認しましたが、すべてのcntの時にary3が空になってしまっていました

669デフォルトの名無しさん (ワッチョイ 7a4f-1TqB)2020/07/29(水) 18:36:47.82ID:XMqoLN/00
>>664
ひょっとしてary2には値が入っていたけど
ary2(cnt) = Cells(cnt,1)
で、セル値を設定してて
セル値に値が入ってないとかいうオチだったりして

670デフォルトの名無しさん (ワッチョイ 6501-pXS1)2020/07/29(水) 19:15:26.15ID:pwxjYZ3c0
Mapに固定値設定してMapから取り出すってなんか意味ある?
直接固定値見てもいいんだけど

671デフォルトの名無しさん (ラクッペペ MMee-LxoB)2020/07/29(水) 19:38:04.93ID:/vJCggp/M
書いたやつに聞けよ

672デフォルトの名無しさん (ワッチョイ 017c-1vA1)2020/07/29(水) 20:52:19.99ID:OLLqLA300
>>668
どうして空になってるのか順に追って行かないと原因わからんでしょ・・・

673デフォルトの名無しさん (JP 0H62-5jfS)2020/07/30(木) 09:11:02.16ID:G1iLlMLAH
VBAの知識0なんですけど
・1000円以上買うごとに1口
・1ヶ月感の累計購入金額総額で抽選
この条件で最大300人に当たるキャンペーンやりたいんだけど
これをVBAで動かして抽出するのにどれくらいの手間がかかりますか?

口数は1人あたり0口から5000口(最大500万円想定)
対象人数は最大2万人を想定してます

ランダム関数でなんとか無理やり組もうとするとデータ多すぎてメモリたんなくなる・・・

674デフォルトの名無しさん (ワッチョイ 99da-xE3T)2020/07/30(木) 09:15:44.99ID:sgyBPyzj0
>>673
できる業者に委託する金だけだせばいいんじゃね

675デフォルトの名無しさん (テテンテンテン MMee-LTj5)2020/07/30(木) 09:20:25.92ID:oxoY3p6DM
そんなもんDBに投入してSQLで一発だろ

676デフォルトの名無しさん (ラクッペペ MMee-LxoB)2020/07/30(木) 09:23:42.54ID:JMS2FJh9M
一口ごとに1枚プリントアウト。この時なるべく小さい紙に印刷するのがポイント!
後は紙を穴の空いたボックスに詰めて目隠しした担当者が300枚を抜き出す

677デフォルトの名無しさん (ワッチョイ 7a01-he4x)2020/07/30(木) 09:36:09.05ID:tHevDqCo0
個人の氏名ごとに口数記録するじゃんね
口数の合計値をlongにいれるじゃんね
longの最大は21億〜だからいけるじゃんね
んでその合計値が例えば20万だったら
20万の中からRandomをうまいこと使って300個の数字を抽出すればいいだけじゃんね
各数字は氏名ごとに記録した口数を上から合計したときの数値と一致するわけじゃんね
簡単じゃんね

678デフォルトの名無しさん (ワッチョイ 7a01-he4x)2020/07/30(木) 09:43:40.24ID:tHevDqCo0
抽出するには、いろんな方法あるけど
位ごとに数字を選ぶみたいなのでもいいじゃんね

例えば合計値が232,984口だったとしたら
10万の位→2,1,0から1つえらぶ
1万の位→9,8,7,6,5,4,3,2,1,0から1つ選ぶ
千の位→9,8,7,6,5,4,3,2,1,0から1つ選ぶ
百の位→9,8,7,6,5,4,3,2,1,0から1つ選ぶ
10の位→9,8,7,6,5,4,3,2,1,0から1つ選ぶ
1の位→9,8,7,6,5,4,3,2,1,0から1つ選ぶ
これで1つの数字ができる
これを300回繰り返すんだけど
0になったり、重複したりしたら無効でやり直しするじゃんね

679デフォルトの名無しさん (ワッチョイ 7a01-he4x)2020/07/30(木) 09:44:36.17ID:tHevDqCo0
てかどういう風でもいいからゴリゴリやっていくのが面白いのにさー
スマートじゃなくてもいいからゴリゴリいこうぜぇー

680デフォルトの名無しさん (ドコグロ MM9a-Fc3l)2020/07/30(木) 09:48:09.38ID:P52O6TU4M
おまえら食いつきがいいな

681デフォルトの名無しさん (JP 0H62-5jfS)2020/07/30(木) 09:51:09.03ID:G1iLlMLAH
最初口数だして横に5000まで数字並べて
IF(1〜5000<口数,RAND(),"")って全部のセルに埋めてたら
20000×5000の関数が動くからフリーズして困ったんだよね・・・

これをやったあとMAX関数で一番でかい数字引っ張ってきて
それをソートして上から300人ってすれば重複当選もないし問題ないかと思ってた

まさか4〜500万購入ユーザーがいるなんて聞いてなかったから気軽に引き受けちゃったよ・・・

682デフォルトの名無しさん (JP 0H62-5jfS)2020/07/30(木) 09:53:13.58ID:G1iLlMLAH
取り敢えず2万人の口数を順番に足していったリスト作って
合計数からランダムに300個抜き出して
それを作ったリストと照らし合わせればいいのか
サンクス、突破口見えた気がする

VBAじゃなくてもいいのか・・・ありがとう

683デフォルトの名無しさん (ワッチョイ 7a01-he4x)2020/07/30(木) 09:56:06.13ID:tHevDqCo0
それなんも工夫ないじゃんね
つまらないじゃんね
のーたりんじゃんね

684デフォルトの名無しさん (ワッチョイ d540-Y3wz)2020/07/30(木) 10:27:51.92ID:EC4xcxw30
>>673
A列に人の名前なりIDなり入れる
B列に口数
C列は当選番号の割り振りで、C1はB1の値、CnはC(n-1)+Bnとし、C(n-1)+1〜CnがAnの当選番号
これと独立して300回ランダム*全口数+1で当選番号300個を作る
それを1つずつ誰のものか確認して当選者とする

685デフォルトの名無しさん (ワッチョイ 7a4f-1TqB)2020/07/30(木) 10:35:23.48ID:cH8Va6i20
じゃんね、ってどこの方言だろ
東京ではじゃんとは言うけど
じゃんねはあまり使わない
使ったとしてもここまで執拗に使わないじゃんね

686デフォルトの名無しさん (JP 0H62-5jfS)2020/07/30(木) 11:11:00.39ID:G1iLlMLAH
この方式だと重複当選しちゃうな・・・
2〜3回繰り返して重複当選除外してやるかいね
どうせ1回しかやらんし

687デフォルトの名無しさん (ワッチョイ 5d01-Dfq1)2020/07/30(木) 11:50:07.24ID:RHK/Swp/0
ああ、重複当選なしなのね
じゃあ300じゃなくて400ぐらいやっといて、301以降は順に重複時用の補欠にすればいい

688デフォルトの名無しさん (ワッチョイ d663-uaxO)2020/07/30(木) 11:50:49.23ID:A5neBprE0
2口の人は2回当選して然るべきでは?
口数ってそういうモノだと思うが

689デフォルトの名無しさん (JP 0H62-5jfS)2020/07/30(木) 11:58:26.01ID:G1iLlMLAH
複数当選してしまうと総額が景品表示法に引っかかってしまうんですよ・・・

690デフォルトの名無しさん (ワッチョイ ce8c-UdrD)2020/07/30(木) 12:09:03.16ID:LgbrNaJ+0
>>673
A列に個人名(もしくは個人コード)
B列に1回の購入金額

この形式で基礎データをもらえるものだと思っていいの?

691デフォルトの名無しさん (JP 0H62-5jfS)2020/07/30(木) 12:11:02.85ID:G1iLlMLAH
>>690
ユーザーIDと期間内の累計購入金額は貰えます
手元に前年同月のデータもあります

692デフォルトの名無しさん (ワッチョイ 79ce-Xvfy)2020/07/30(木) 12:18:53.15ID:AlO/S9Es0
>>689
その場合、複数応募者は口数に比例して当選確率を上げるアルゴリズムにしないと公平にならないけど
正直にやるか、手を抜いて全員の確率を同じにするかは運営側の気持ち次第

693デフォルトの名無しさん (ワッチョイ 99da-xE3T)2020/07/30(木) 12:58:00.60ID:sgyBPyzj0
知識0でやろうとするのが間違いだと思うが

694デフォルトの名無しさん (ワッチョイ 017c-1vA1)2020/07/30(木) 13:01:49.26ID:5b+GEPmC0
>>673
何の手間?

695デフォルトの名無しさん (JP 0H62-5jfS)2020/07/30(木) 13:20:10.92ID:G1iLlMLAH
VBAの基礎を学んで言われたことを遂行するための知識を得るための手間かな・・・ほんと知識0なんで必要ならこれを機に手を出してみようかなと

696デフォルトの名無しさん (ワッチョイ 4583-23Ku)2020/07/30(木) 13:41:23.22ID:/qyU4NXl0
なんか前もこんな奴居なかった?

697デフォルトの名無しさん (ワッチョイ 7a01-he4x)2020/07/30(木) 13:59:59.21ID:tHevDqCo0
ビール飲みながらすげー適当に組んでみたんだけどあげちゃだめなの?
てかコード貼ったら使えるレベルなん?
うちの3世代ぐらい前のi5のPCで300件で5分ぐらいかかりそうな感じだけど

698デフォルトの名無しさん (ワッチョイ 7a4f-1TqB)2020/07/30(木) 14:12:07.28ID:cH8Va6i20
>>697
いや、仕事しようよ

699デフォルトの名無しさん (オッペケ Sr05-/T2I)2020/07/30(木) 14:18:10.19ID:vzRw0yWJr
>>658
回答頂きましてありがとうございます

再度の質問になえうのですが

getelement.所属クラス.getelementbytagname("a")(インクリメント変数).length -1
messageボックスでouterhtml出力

上記で取得されてる要素を参照すると
1の時、label=page1 何だかcheck=true
2の時、label=page2 何だかcheck=false
3の時、label=page1 何だかcheck=false
4の時、label=page4 何だかcheck=false
5の時、label=page3 何だかcheck=false

上記のような要素取得がなされており、番号順にページ遷移がなされてないことがわかりました

タグ以外にラベルやタイプ等で特定要素を抽出する方法はありませんでしょうか

700デフォルトの名無しさん (ワッチョイ 7a01-he4x)2020/07/30(木) 14:23:09.16ID:tHevDqCo0
>>698
でしゅよねー(ろれつが回らない

701デフォルトの名無しさん (ワッチョイ 017c-1vA1)2020/07/30(木) 14:30:10.36ID:5b+GEPmC0
>>695
書き方だけならネットでいくらでも調べられる
言語知識よりやりたいことを実現するため計算方法を考える力が一番重要

702デフォルトの名無しさん (アウアウエー Sa22-DfbS)2020/07/30(木) 15:27:13.51ID:YhpZ6thja
>>673
知識ゼロならまず、実現する為の手順を箇条書きで書き出す。
それを皆んなに見てもらっていけそうになったら
その手順に従ってプログラミングする。

703デフォルトの名無しさん (ワッチョイ 5d01-Dfq1)2020/07/30(木) 15:33:07.63ID:zHAo07P50
Excel VBAの問題じゃなくてそれ以前の問題だよな

704デフォルトの名無しさん (スッップ Sd9a-nhZs)2020/07/30(木) 15:36:31.06ID:keIwCUAVd
perl,pythonスレに続く釣りなのかね?

705699 (オッペケ Sr05-/T2I)2020/07/30(木) 15:36:51.50ID:THFUAhsVr
innertextでクラス配下のaタグの行を1つずつ抽出でfor eachでページ番号のラベルに引っ掛けて処理するっていうのは可能でしょうか

706デフォルトの名無しさん (オッペケ Sr05-/T2I)2020/07/30(木) 17:31:34.81ID:THFUAhsVr
すいませんある程度自己解決しましたが、取得した要素にouterhtmlで抽出したところ番号順にタグ情報が取得出来たのですが、outerhtmlに続けて.clickだとエラーになります
一旦変数に格納しないとクリック出来ませんでしょうか

707デフォルトの名無しさん (スプッッ Sd7a-u4+4)2020/07/30(木) 19:05:02.57ID:GYhlOBUpd
>>706
まずさ、OuterHtmlの型は何か考えてみようよ。
これでピンと来ないようなら、色々勉強する必要がある。

708デフォルトの名無しさん (ワッチョイ d610-1vA1)2020/07/30(木) 23:18:28.10ID:i0KpmXdS0
>>707
すいません

Dim table_date As MSHTML.HTMLDocument

上の宣言でまずouterhtmlの取得要素を格納する変数を宣言する必要があると思いますが
ユーザー定義型エラーが出てしまい、調べたところ参照設定で[Microsoft HTML Object Library]を有効にしないと使えないという事ですが、
上記のHTMLDocumentオブジェクトで宣言したマクロを他のPCのエクセルでも使用する場合、イチイチ参照設定を有効にしないと使えないのでしょうか

あともう1つの質問になりますが、

table_date = getelementclass(objie,"所属class名").outerhtml

上記でまず対象のタグが所属するclassの全要素を変数に格納したあと

for i = 0 to 10
table_date.getelementsbytag("a")(i).click
next

変数に格納されたhtml文のaタグ要素を一行ずつ取り出してボタンクリックしたいのですが、
この構文で可能でしょうか

709デフォルトの名無しさん (ワッチョイ fa63-uaxO)2020/07/30(木) 23:22:34.48ID:b3ddbfY40
ちゃんもリファレンスを読んで返り値の型を確認しようね

710デフォルトの名無しさん (ワッチョイ d68e-nhZs)2020/07/31(金) 00:01:53.71ID:sBpjKr+V0
>>708
そろそろ死ねよ

711デフォルトの名無しさん (アウアウウー Sa09-4GEq)2020/07/31(金) 06:14:13.92ID:mPBeAG88a
>>708
まず自分で考えるくせを付けたほうがいいよ

712デフォルトの名無しさん (ワッチョイ 4102-UD9X)2020/07/31(金) 07:35:13.13ID:Seq7lwgB0
ソルバーを使おうと思ってまずは機能するか簡単なものを作ってみたんですが、
与える値によって解があるにも関わらず機能したりしなかったりするんですが何がおかしいのでしょうか
A2 9
A3 15
A4 30
B2 空白
B3 空白
B4 空白
C2 =SUMPRODUCT(A2:A4,B2:B4)
として、値45で実行すると正しく解が見つかるのですが
値60で実行すると解が見つけられないのです。
45の場合
Excel VBA 質問スレ Part67 ->画像>12枚
Excel VBA 質問スレ Part67 ->画像>12枚
60の場合
Excel VBA 質問スレ Part67 ->画像>12枚
Excel VBA 質問スレ Part67 ->画像>12枚

713デフォルトの名無しさん (アウアウエー Sa22-DfbS)2020/07/31(金) 08:36:27.75ID:BJAFpQuia
>>712
は?ちょと、なに言ってのかわからない
何もおかしくないじゃない!?
ちゃんと54て出てんじゃん!

714デフォルトの名無しさん (ワッチョイ fa63-uaxO)2020/07/31(金) 09:39:24.31ID:j4Q2HRqw0
局所最適なんだから初期値によって結果が異なるのは自明です

715デフォルトの名無しさん (ワッチョイ fa2f-SLIs)2020/07/31(金) 11:33:16.53ID:QyaenPE80
で、それのどこにVBAが関係してるんだ?

716デフォルトの名無しさん (スプッッ Sd7a-u4+4)2020/07/31(金) 12:13:10.42ID:QmvWOqJdd
>>708
OuterHtmlの型は文字列。
ということは
Dim strA As String
strA="abc"
strA.Click
と同じことしようとしてる。

717デフォルトの名無しさん (ワッチョイ 7a4f-1TqB)2020/07/31(金) 12:28:54.85ID:TQ16TWaV0
質問です
シェイプを回転させたくて
シェイプのRotationX,RotationY,RotationZを弄ってみたのですが、
Z軸は上手く行くのですが、X軸、Y軸はその軸に併せて縮小するだけで全く奥行きが出ません。

これは設定するプロパティが足りないのでしょうか?
それともこういうものなんでしょうか?

718デフォルトの名無しさん (アウアウエー Sa22-DfbS)2020/07/31(金) 13:03:40.39ID:qhJJRQ9da
2.5Dとか擬似 3Dに過ぎないからでしょ

719デフォルトの名無しさん (ワッチョイ 4102-UD9X)2020/07/31(金) 20:02:27.14ID:Seq7lwgB0
>>713-714
エクセルに問題がないなら問題があるのは私ということで考えてみたら
与えた命令を根本的に勘違いしていたみたいです
同じ値を複数回選択することもできると思っていました
もともと想定していた目的には問題なく使えますし、
もし複数選択させたい場合は同じ値を複数入れて対応します
スレ違いにも関わらず温かくご回答いただきありがとうございました

>>715
スレ違いだったみたいで申し訳ないです
ご迷惑おかけしました

720デフォルトの名無しさん (ワッチョイ 65da-xE3T)2020/08/01(土) 08:39:00.72ID:kuObS2ra0
>>717
透視投影?
確かにマクロの自動記録でもそこだけ変わらないな。

しかしこれ何に使うんだろうな。
重すぎてポリゴンゲーは作れないしな。
スターフォックスレベルでも無理だろ。

721デフォルトの名無しさん (ワッチョイ 4583-23Ku)2020/08/01(土) 09:22:34.54ID:wQymbaU60
部屋の模様替え後のレイアウトをExcelで作ろうとしてた人はいたな

722デフォルトの名無しさん (ブーイモ MMbe-PQMy)2020/08/01(土) 09:31:20.60ID:znOplMqnM
一軒家の建築図面をExcelで作ろうとしてる人もいるかもしれない

723デフォルトの名無しさん (ワッチョイ 1602-xE3T)2020/08/01(土) 11:11:05.09ID:Y2rZE5zP0
セルの色で絵を描くおじいちゃんがいる

724デフォルトの名無しさん (ワッチョイ 79ce-Xvfy)2020/08/01(土) 11:15:30.51ID:qSPnGZZQ0
15年ぐらい前に、セルに色を塗ってゲームやアニメを作るのがはやった

725デフォルトの名無しさん (アウアウカー Sa5d-DfbS)2020/08/01(土) 11:19:29.08ID:biQ1QRTHa
Excelで 3Dモデル表示は出来るぞ?

ホーム
わかできブログ
ExcelやWordでも3Dモデルが扱えるというので試してみた

https://www.wakarutodekiru.com/blog/tips/673.html

Excel VBA 質問スレ Part67 ->画像>12枚

726デフォルトの名無しさん (ワッチョイ 79ce-Xvfy)2020/08/01(土) 11:33:13.92ID:qSPnGZZQ0
できるかできないかじゃなくて、表示パフォーマンスや製作コストが実用レベルかどうかが重要では

727デフォルトの名無しさん (アウアウカー Sa5d-DfbS)2020/08/01(土) 11:39:41.69ID:biQ1QRTHa
>>717の目的は
【シェイプを回転させたくて 】
なので回転出来るんだからそれで達成できてる

728デフォルトの名無しさん (ワッチョイ 5d01-UdrD)2020/08/01(土) 11:47:14.76ID:bRba9mah0
エクセルを禁止しないと日本のITは韓国に追いつけない。

エクセルのせいで数学がわからない子供たちが増えている。

Ubuntuを使うべき。

729デフォルトの名無しさん (ワッチョイ 99da-xE3T)2020/08/01(土) 12:06:15.89ID:51ANSeyq0
EXCELとの因果関係を証明せよ

730デフォルトの名無しさん (ワッチョイ 4583-23Ku)2020/08/01(土) 12:21:54.41ID:wQymbaU60
そもそも子供はExcel使ってねーだろ
なんか電波でも出してるのか?

731デフォルトの名無しさん (アウアウカー Sa5d-DfbS)2020/08/01(土) 12:29:20.74ID:biQ1QRTHa
ソロバンから電卓に代わってもそうゆう人って一定数いるよね
小学生からExcel使えるなら
FAXで集計してるコロナ関係者よりマシ

732デフォルトの名無しさん (ワッチョイ 1d02-pXIf)2020/08/01(土) 12:35:20.61ID:GdrGS70y0
そうゆうとか言ってる人はVBAの前に日本語勉強したほうがいいよ

733デフォルトの名無しさん (ワッチョイ 5d01-UdrD)2020/08/01(土) 12:49:17.09ID:bRba9mah0
小学生のIT教育でUbuntuのインストールを教えるべきでは?

734デフォルトの名無しさん (アウアウカー Sa5d-DfbS)2020/08/01(土) 12:59:14.62ID:biQ1QRTHa
すいませんすみませんあーざーっす
「なんで、そーゆーこと言うの?」さおいふ
オッハーマヨチュチュ
タイガーアッパっパー
「こちらの方でよろしかったですか?」
「おにぎり温めなかったほうで大丈夫ですか?」
「お買い物袋はお持ちでありませんでかまいませんか?」

735デフォルトの名無しさん (ワッチョイ 2590-roBb)2020/08/01(土) 13:03:30.83ID:cAfu1ZYc0

736デフォルトの名無しさん (ワッチョイ 5d01-UdrD)2020/08/01(土) 13:04:03.06ID:bRba9mah0
UbuntuはスパコンのOSにも使われているので、数学に強いです。

エクセルは禁止にするべきです。

737デフォルトの名無しさん (ワッチョイ 7a4f-1TqB)2020/08/01(土) 13:50:27.99ID:VVRkNkWF0
>>736
金持ちLinuxおじさんこっちに来てまで迷惑掛けるなよ

738デフォルトの名無しさん (ワッチョイ d6b3-UD9X)2020/08/01(土) 17:35:39.71ID:l0aqZI9e0
マクロ実行ボタン1を押すとマクロ実行ボタン1が消えて
新しいマクロ実行ボタン2が出現。ボタン2を押すとマクロ実行ボタン3が出現するような
繰り返し動作を行いたいのですが可能でしょうか?
コードを教えていただきたく、よろしくお願いします。

739デフォルトの名無しさん (ワッチョイ cd92-23Ku)2020/08/01(土) 17:45:47.31ID:BG2/nyCb0
>>738
つVisible

740デフォルトの名無しさん (ワッチョイ 7aef-xE3T)2020/08/01(土) 18:55:56.93ID:7hgxy1yb0
>>738
少し違うけど、こうした方が楽

With マクロ実行ボタン
Select Case .Caption
Case "マクロ実行ボタン2"
マクロ2
.Caption = "マクロ実行ボタン3"
Case "マクロ実行ボタン3"
マクロ3
.Caption = "マクロ実行ボタン1"
Case Else
マクロ1
.Caption = "マクロ実行ボタン2"
End Select
End With

741デフォルトの名無しさん (ワッチョイ 6501-pXS1)2020/08/01(土) 18:58:42.53ID:B3d0/RPj0
一つのボタンにいろんな機能を詰め込むのはどうかと思うの

742デフォルトの名無しさん (ドコグロ MM9a-LWbo)2020/08/01(土) 19:43:27.83ID:0WCKoTHWM
>>738
最近そう言うUI多いけど昔のように押せない時はグレーアウト(.Enabled)する方がわかりやすいと思うのは俺だけ?

743デフォルトの名無しさん (アウアウエー Sa22-Vs42)2020/08/01(土) 20:04:46.26ID:xQeMvl7Qa
もう少し背景が分かるとね

インストーラの [次へ] みたいならこうだとか、有意義な回答が得られそうだけど

744デフォルトの名無しさん (ワッチョイ 1602-xE3T)2020/08/01(土) 20:14:10.47ID:Y2rZE5zP0
ボタン1が押される
表示をボタン2に変える
無効にする
ボタン1の処理する
処理終わる
有効にする

これならまぁ押された時の表示によって分岐もありかな

745デフォルトの名無しさん (ワッチョイ 99da-xE3T)2020/08/02(日) 00:24:11.20ID:fhoRH5wU0
>>743
その場合はシートの移動のほうがスッキリする

746デフォルトの名無しさん (テテンテンテン MMee-DfbS)2020/08/02(日) 04:27:47.15ID:yz3gxwYFM
ラウンドワンとかゲームセンターに置いてある
「動体視力ゲーム」みたいなのじゃないの?
数字ボタンがランダムな位置に出現して
押したら次のボタンが別の位置に現れるヤツ

747デフォルトの名無しさん (ワッチョイ 4e06-LqCg)2020/08/02(日) 12:51:46.72ID:i29UoGb/0
>>673
エクセルのほうが簡単だと思います。
A列:1〜20000までの連番
B列:口数
C列:∔B1/B列合計 (以下コピー)
D列:1行目は0、2行目 +C1、3行目以降は=+D2+C2をコピー
E列:+A1(以下コピー)
F列:=RAND()(以下コピー)
G列:=VLOOKUP(+F1,D$1:E$20000,2)を300行目までコピー
300/20000なら大口がいないと重複しなさそう。
重複があったらシートコピーして当選行を削除。

748デフォルトの名無しさん (ワッチョイ 7a01-he4x)2020/08/02(日) 13:42:27.44ID:7JTul7vs0
俺らそういうのいやだから
重複しなさそうとか認めないし

749デフォルトの名無しさん (ワッチョイ 4e06-LqCg)2020/08/02(日) 14:04:53.69ID:i29UoGb/0
ベースモデル考えて確率的に速い手段を選ぶだけ。
コード書くのが好きなら計算結果を配列に入れて、既定カウントに達するまで回せばいいけど、時間の無駄。

750デフォルトの名無しさん (ワッチョイ f102-Y3wz)2020/08/02(日) 14:52:01.85ID:6ZNrYs7D0
条件にもよるけど今回の話の場合は1回目重複覚悟でやってから重複分だけ再度重複なしの方法でやるのが速そうだね

751デフォルトの名無しさん (ワッチョイ 7a01-he4x)2020/08/02(日) 15:17:38.22ID:7JTul7vs0
時間かかるってそんなの5分で終わるし

752デフォルトの名無しさん (ワッチョイ 4e06-hU8h)2020/08/02(日) 18:40:53.06ID:i29UoGb/0
>>751
ワッチョイって何かわかる?

753デフォルトの名無しさん (ワッチョイ 7a01-he4x)2020/08/02(日) 19:11:50.62ID:7JTul7vs0
>>752
実際にコード書いたから5分かかるっていってんだろぼけなす
てめぇみたいに他人のワッチョイに執着する気持ちの悪いはげおやじじゃねぇんだよぉ

754デフォルトの名無しさん (ワッチョイ 5d01-UD9X)2020/08/02(日) 22:26:59.52ID:RZU5Rxbr0
>>747
A列:連番
B列:口数
C列:当選確率 = 口数/口数の合計
D列:点数 = 当選確率*RAND()
これでソートかけたほうが簡単じゃね
300番付近のボーダーラインで点数の重複が生じたら
重複者のみを対象に再度抽選
まだ重複者がいたらさらに再度抽選(・・・)

再抽選回数が0〜300と未定だけども現実的には多くても数回で終わるだろうよ

755デフォルトの名無しさん (ワッチョイ 4e06-LqCg)2020/08/02(日) 22:40:10.04ID:i29UoGb/0
>>754
そちらの方がいいですね。

756デフォルトの名無しさん (ワッチョイ 79ce-Xvfy)2020/08/03(月) 02:34:06.94ID:R5x2YJ6L0
それだと当選確率が公平にならない気がする
まあコーディングの手間と計算時間と公平さとどっちを取るかだな

757デフォルトの名無しさん (ワッチョイ 99da-xE3T)2020/08/03(月) 05:36:57.74ID:Z9mi6E360
一回の抽選ごとに当選者を省いていけばいとおもうが

758デフォルトの名無しさん (ワッチョイ 79ce-Xvfy)2020/08/03(月) 06:39:58.48ID:R5x2YJ6L0
数学的に「当選者を除外しながら次を抽選」で公平になる

A列に応募者を一列に並べて、2口応募なら2回並べて、存在するデータの行数*RAND()+1で抽選すれば、自動的に口数に比例して当選確率が上がる
当選者はどこかに覚えておいて、A列から除外してから次を抽選

300人の抽選なんて1秒もかからないし、プログラムもきわめて単純、作業列も必要ない

759デフォルトの名無しさん (ワッチョイ 017c-1vA1)2020/08/03(月) 11:15:41.27ID:n1hXaiTs0
>>756
当選の公平さを取らないと企業として問題あるよ

760デフォルトの名無しさん (テテンテンテン MMee-DfbS)2020/08/03(月) 11:17:37.07ID:uwp3oPMnM
5ちゃんに書き込んでる時点でお察し

761デフォルトの名無しさん (ワッチョイ 017c-1vA1)2020/08/03(月) 11:20:43.87ID:n1hXaiTs0
もう無理して数式でなんとかしようとするよりVBAでさっさと作った方がややこしくないし手っ取り早いんじゃないの
それなら処理時間なんか気にする必要も無し

762デフォルトの名無しさん (アウアウエー Sa22-9tPT)2020/08/03(月) 12:19:51.87ID:nPrsNj3oa
や〜い、お察しお察し〜

763デフォルトの名無しさん (アウアウウー Sa09-4GEq)2020/08/03(月) 12:31:15.20ID:rYhmIRt7a
いぜん懸賞の雑誌で架空の人物に当選したとかやってたな

764デフォルトの名無しさん (ラクッペペ MMee-LxoB)2020/08/03(月) 12:34:55.84ID:Dbk7eCCQM
発表は発送をもってかえさせろってのは
みんなインチキだよ

運ちゃんがボスジャン着ていたのは役得

765デフォルトの名無しさん (アウアウカー Sa5d-skXP)2020/08/03(月) 12:41:50.97ID:1eg4GQBHa
抽選システムなんて大概再使用されるだろうから手作業で当選者除去とかやらないといけないならVBAで組んじゃったほうがいいだろうな

766デフォルトの名無しさん (ワッチョイ fa2f-LqCg)2020/08/03(月) 13:54:58.27ID:QvK0nIgr0
つかVBAの乱数とか公平といえるんかね
本当に公平な抽選は第三者立ち合いで見えるようにやるんだが

767デフォルトの名無しさん (ワッチョイ 017c-1vA1)2020/08/03(月) 14:42:43.98ID:n1hXaiTs0
プログラムによる抽選が不正扱いなら全国の企業が謝罪案件になるが・・・

768デフォルトの名無しさん (ワッチョイ fa63-uaxO)2020/08/03(月) 14:57:06.86ID:wycAObPT0
第三者立ち合いで乱数生成を!?

769デフォルトの名無しさん (アウアウウー Sa09-4GEq)2020/08/03(月) 15:12:09.39ID:7WhWwh2+a
パチンコ屋はあやしい

770デフォルトの名無しさん (ワッチョイ 1602-xE3T)2020/08/03(月) 15:30:38.22ID:2tn2jJCj0
立会人を選定するための立会人が必要になるな

771デフォルトの名無しさん (ワッチョイ 99da-xE3T)2020/08/03(月) 18:38:47.21ID:Z9mi6E360
立会人って居るだけじゃねーの

772デフォルトの名無しさん (ワッチョイ d68e-nhZs)2020/08/03(月) 18:41:49.78ID:cM5/PGxb0
座って接待を受けるだけの誰にでも出来る仕事

773デフォルトの名無しさん (ワッチョイ d6b3-UD9X)2020/08/03(月) 20:25:24.18ID:YOfHflqE0
Sheet2で使うユーザーフォームにSheet1から参照したデータをコンボボックスに表示させ
CMBBox1の入力内容に合わせCMBBox2を連動させたいのですが

CMBbox1はこんな感じでデータを拾っています。
CMBBox1.RowSource = "Sheet1! H3:H" & Worksheets("Sheet1").Range("H" & Rows.Count).End(xlUp).Row

CMBBox2にCMBBox1が入力されると、参照列(H列)の4つ右のセルを表示させるにはどうしたらよいでしょうか
(CNBBox1にSheet1のH3が入力されると、CMBBox2のリストにSheet1のL3が表示される)



似たようなコードを拾ってきたのですがこれを弄って使えるようにしたいです。
Private Sub CMBBox1_Change()
Set ws = Worksheets("Sheet1")
Col = CMBBox1.ListIndex + 12
品名CMB2Box.Clear
For i = 1 To ws.Cells(Rows.Count, Col).End(xlUp).Row
CMBBox2.AddItem ws.Cells(i, Col).Value
Next
End Sub

よろしくお願いします

774デフォルトの名無しさん (ワッチョイ 01e6-LxoB)2020/08/03(月) 21:06:03.90ID:ukM+b7An0
リストに1件だけ表示っておかしくね?
そのデザインは却下だ

775デフォルトの名無しさん (オッペケ Sr05-bwEi)2020/08/03(月) 21:11:33.10ID:/CvXaagwr
listindexとoffset使えばいけんじゃね?

776デフォルトの名無しさん (ワッチョイ 5d01-UdrD)2020/08/03(月) 21:37:39.33ID:nPxqefQu0
A列最終行の次の行から、下方向150行に本日の日付を表示させたいのですが、
どう記述して良いのかわかりません。
ぐぐって最終行取得のコードまでは見つけたのですが、指定範囲に日付表示のコードを
見つけることが出来ませんでした。
お手数をおかけしますが、ご教授をお願いします。

777デフォルトの名無しさん (ワッチョイ fa2f-LqCg)2020/08/03(月) 21:49:07.37ID:QvK0nIgr0
>>773
自分で考える気なさそうだな
その拾ってきたコードのどこが分からんのだよ?

それが出来てそのあとどうする気か知らんが
CMBbox2.Clear
CMBbox2.AddItem (Sheet1.Cells(CMBbox1.ListIndex + 3, "L").Value)
これで、二度と来るな

778デフォルトの名無しさん (ワッチョイ d68e-nhZs)2020/08/03(月) 21:53:06.72ID:cM5/PGxb0
また馬鹿が出てきた

779デフォルトの名無しさん (アウアウエー Sa22-gQbI)2020/08/03(月) 23:28:33.53ID:lnWa4YOga
>>776
簡単なのはループで入れる。

r=最終行 + 1 to 最終行 + 150
cells ( r, 1)= date
next r

780779 (アウアウエー Sa22-gQbI)2020/08/03(月) 23:29:45.08ID:lnWa4YOga
for とか、変数宣言とか抜けてるけど、そこはがんばって補完して。

781デフォルトの名無しさん (ドコグロ MM9a-kmLJ)2020/08/03(月) 23:40:17.65ID:hUMORhdPM
forなんて使わなくてもいいんじゃね

Sub test()
Dim i As Long
i = Cells(Rows.Count, 1).End(xlUp).Row
Range(Cells(i + 1, 1), Cells(i + 150, 1)) = Date
End Sub

782779 (アウアウエー Sa22-gQbI)2020/08/03(月) 23:44:27.96ID:lnWa4YOga
なるほど、それはそうだ。
失礼しました。

783デフォルトの名無しさん (ワッチョイ 5d01-UdrD)2020/08/04(火) 00:12:45.83ID:brj+kH5Y0
>>780
ありがとうございます!
あとは自力で頑張ってみます!

784デフォルトの名無しさん (ワッチョイ 5d01-UdrD)2020/08/04(火) 00:17:38.16ID:brj+kH5Y0
>>781
解答ありがとうございます!
1つの答えに対し複数のコードがあるって面白いですね!
初歩的なコードが書けるよう頑張ってみます。

785デフォルトの名無しさん (ワッチョイ 017c-1vA1)2020/08/04(火) 00:51:16.26ID:EtqCKuKj0
そういう感想が出るってことは、答えを出すための手順を全く自分で考えたことがないのでは…

786デフォルトの名無しさん (ワッチョイ d68e-nhZs)2020/08/04(火) 01:06:00.92ID:8QweQuKX0
>>784
死ねよ

787デフォルトの名無しさん (ワッチョイ 79ce-Xvfy)2020/08/04(火) 02:59:27.48ID:o+2T/J1u0
RNDやRAND関数は疑似乱数だから公平じゃない
そもそもコンピューターで乱数を生成するのは不可能

知識としては知ってるけど、代替手段を考えるのも面倒だしみんなRNDを使ってるから別にいいんだよ、ってこと

788デフォルトの名無しさん (ワッチョイ 99da-xE3T)2020/08/04(火) 05:51:29.11ID:HcyQwD6H0
そのための乱数シードってのがある

789デフォルトの名無しさん (ワッチョイ 794e-wQ/k)2020/08/04(火) 06:07:40.64ID:vydsY05j0
同じシード与えたら同じ乱数列吐くよね。
で?何のためにあるって?

790デフォルトの名無しさん (ブーイモ MM69-23Ku)2020/08/04(火) 06:08:47.59ID:k3XyFiOUM
もう最大限のことも自分で考えない馬鹿には答えなくて良くね?
多分何度も聞きに来るぞ

791デフォルトの名無しさん (ブーイモ MM69-23Ku)2020/08/04(火) 06:09:01.26ID:k3XyFiOUM
最低限ねw

792デフォルトの名無しさん (ワッチョイ 99da-xE3T)2020/08/04(火) 06:22:53.51ID:HcyQwD6H0
>>789
同じシードを与えないためだろ、使い方知らんのか?

793デフォルトの名無しさん (ワッチョイ 7a4f-1TqB)2020/08/04(火) 07:55:02.77ID:aUyBUHRY0
>>787
コンピュータという広域の括りであれば
乱数を発生させるのは不可能ではないよ

794デフォルトの名無しさん (ワッチョイ 5d01-UD9X)2020/08/04(火) 09:23:33.17ID:Lx6h4ngm0
数式で「真の乱数」を発生させることは不可能でしょ
何かしらの雑音を外部から取り入れるならあり得るけど

しかし真の乱数と区別できない疑似乱数というのはある
たかだか数万個の乱数を発生させる程度なら普通にRANDで構わんよ
コンピューター空間内(例えば64bit)なら32bitの疑似乱数を発生させ得る

795デフォルトの名無しさん (アウアウウー Sa09-4GEq)2020/08/04(火) 09:36:35.85ID:PJZofGaLa
excel起動時のシードが同じだから変えたほうがいいとおもう

796デフォルトの名無しさん (ワッチョイ 7a4f-1TqB)2020/08/04(火) 12:47:00.19ID:aUyBUHRY0
>>794
数式で真の乱数を発生させることが出来ないのは多分そう。ただ、それでも真の乱数は発生出来る。

ただ、かなり特殊な環境で言語的にもかなり特殊なのでVBAだけやってる人にはまぁ分からないだろう。

ただそれは、一度世界で最も出回ったハードであり言語でもあって、それでは乱数を求めるのに至極当たり前の方法でもあったから
このスレにいるおじいちゃんにはひょっとして知ってる人もいるかも知れない。

797デフォルトの名無しさん (ブーイモ MMbe-QJFZ)2020/08/04(火) 12:54:38.56ID:2b7giDdtM
乱数こそこのスレで教えてくれた最高の武器
15個〜20個しか評価してないデータを50個に乱数使ってn増ししてるわ
プロシージャ名は乱れ雪月花にしといた

798デフォルトの名無しさん (JP 0H62-3SEW)2020/08/04(火) 13:32:34.79ID:Z82jJjcAH
学術の巨大掲示板群 - アルファ・ラボ http://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など

simulationライブラリで純粋な関数式プログラミングをする
UIライブラリ (C#, 2D) を作ったよ
連続と離散を統一した!
4Dエンジン
matrixのライブラリ
ある強力なFor関数
SQLライブラリ

☆ VM + ASM を書いた (C#, DX) * x86 ではない!
http://up.x0000.net/files/TSimulang.zip
☆ malloc / free を実装してみた (C#)
http://up.x0000.net/files/TMallocTest.zip

799デフォルトの名無しさん (ワッチョイ fa7f-pv2R)2020/08/04(火) 20:23:21.05ID:/v2mWUPK0
2016使ってるけど、いつの間にかSORTBYとかFILTERとか使えるようになってるのな。

800デフォルトの名無しさん (ワッチョイ fa42-8P+6)2020/08/04(火) 20:58:22.81ID:ExHQkzho0
そもそも乱数に偏りがあろうと応募者が狙った並びでない時点で機会は公平だけどな

801デフォルトの名無しさん (ワッチョイ 99da-xE3T)2020/08/04(火) 21:08:04.57ID:HcyQwD6H0
決まった番号がでるとわかっているからその番号に身内を入れて置けるわな

802デフォルトの名無しさん (アウアウウー Sa55-TvuW)2020/08/05(水) 07:02:57.17ID:JB7qoIQVa
>>797
偏差値低くね?

803デフォルトの名無しさん (ワッチョイ 99da-e++8)2020/08/06(木) 11:58:31.88ID:ix60cQMV0
乱数で疑似データをつくるとばらつきが均等になるから偏差を求めたときに不自然に広がるよね

804デフォルトの名無しさん (ワッチョイ ebcc-e++8)2020/08/06(木) 13:28:48.79ID:LOZz8PJN0
乱数2つ使うといいぞ

805デフォルトの名無しさん (バットンキン MM2d-6wop)2020/08/07(金) 19:45:16.94ID:Gk+vywdrM
スレチだったらスマソだけど、excelのスピル?のせいで、ver違うexcel間で共有してたファイルが勝手に配列やら@やら数式が変換されてバグってんだけど、これ無効にできないの?

806デフォルトの名無しさん (アメ MM75-cUya)2020/08/07(金) 20:09:47.44ID:l761nrW2M
>>805
キミにピッタリな格言を贈ろう。
It is no use crying over spilt milk

807デフォルトの名無しさん (ワッチョイ eb63-FoHg)2020/08/07(金) 20:45:55.98ID:Ojdjt83K0
できないの?

808デフォルトの名無しさん (ワッチョイ 134f-RXr9)2020/08/07(金) 20:47:34.25ID:SPZQdxGT0
>>807
最近追加されたアレね
分からん。田中先生にでも聞いたら?

809デフォルトの名無しさん (バットンキン MM2d-6wop)2020/08/07(金) 21:11:23.51ID:Gk+vywdrM
え・・・まじで無理なん?
おわってんな

810デフォルトの名無しさん (ワッチョイ 6192-tlsv)2020/08/07(金) 21:38:31.44ID:CC9P+z2z0
最近の機能の不具合だから知らねってことやろ

811デフォルトの名無しさん (ワッチョイ 0101-FoHg)2020/08/07(金) 22:08:09.38ID:TxGR6Whm0
旧バージョンの配列式に勝手に@が付くのは仕様じゃねえの
旧verの {=a1:a3} が新verでは =@a1:a3 に変換される
新verのスピル式 =a1:a3 は旧verでは {=a1:a3} に

VBA的にはFormulaプロパティとFormula2プロパティを使い分けることによって新旧verどっちにするかを指定できる

812デフォルトの名無しさん (JP 0Ha3-3Z56)2020/08/08(土) 13:26:33.40ID:LUeSHsN4H
パーフェクトExcelVBAの初版本の正誤表とサンプルコードってどこかにありませんか?

813デフォルトの名無しさん (ワッチョイ 297c-2X+j)2020/08/08(土) 14:27:44.52ID:KW6vxjpw0
出版社に聞いたら

814デフォルトの名無しさん (ワッチョイ 311a-3Z56)2020/08/08(土) 15:27:34.88ID:QEOcQPDQ0
>>813
たし蟹

815デフォルトの名無しさん (ワッチョイ 6961-5k5c)2020/08/09(日) 10:06:54.07ID:IyDcd9Ex0
コレクションにaddしたシートだけを一発で選択するにはどうしたら良いですか?

816デフォルトの名無しさん (ワッチョイ 59ce-IIsV)2020/08/09(日) 10:50:04.26ID:Krh2xN+N0
>>815
addしたあとから調べる方法はないからaddする時に変数に覚えておくしかない

817デフォルトの名無しさん (ワッチョイ 13ad-e++8)2020/08/09(日) 13:28:26.53ID:w6SyFcxE0
セルA1~A5に1~5が入っていて、5個のaverage=3ですが、
1) 複数の連続セルを選択することで同じ動作をするfunction
2) function 自作平均値(セルを1個指定する as ???, 上のセル数 as byte, 下のセル数 as byte) as double
で、=自作平均値(A3, 2, 2) としたら同じ結果を得る関数
ってそれぞれどう書けばよいでしょうか。
値を直接入力する予定はなく、セルアドレスを取得できれよいかと思いますが、
方法がわかりません。
参考urlでかまいませんので教えてください。

818デフォルトの名無しさん (ワッチョイ 59ce-IIsV)2020/08/09(日) 13:55:27.58ID:Krh2xN+N0
>>817
自作の関数の中で、ワークシート関数とまったく同じ結果が欲しいなら、Application.WorkSheetfunctionを使うのが一番確実

参考サイトに基本的な作り方は書いてあるから、計算式の部分だけ自分で作り直せばいい
https://kokodane.com/tec3_3.htm

819デフォルトの名無しさん (ワッチョイ 311a-3Z56)2020/08/09(日) 21:56:13.30ID:KZ1iPV5I0
ITに疎いクライアントのために
デモ用のVBAが動作しているところ録画して見せたいのですが
そのために向いているツールとかありますか?

820デフォルトの名無しさん (ワッチョイ 6192-tlsv)2020/08/09(日) 22:02:16.81ID:CWT5uO5H0
まずは標準のステップ記録ツールでダメな点を書けよ

821デフォルトの名無しさん (ワッチョイ 1b8c-Ea0s)2020/08/09(日) 23:01:18.40ID:1ZjA1+PB0
>>817
Function 自作平均値(セルを1個指定するAs Range, 上のセル数, 下のセル数)
自作平均値 = Application.WorksheetFunction.Average(セルを1個指定する.Offset(-上のセル数).Resize(上のセル数 + 下のセル数 + 1).Value)
End Function

文章が意味不明なんだけどこんな感じでいいの?

822デフォルトの名無しさん (ワッチョイ 59ce-IIsV)2020/08/10(月) 01:01:45.89ID:rZUUjilg0
>>819
Excelの画面をビデオ録画する操作はExcelを起動してから田+Alt+R
ただしVBEのウィンドウは開いても重ねても録画されないので、ワークシート上にマクロの起動ボタンを置いておく必要がある

823デフォルトの名無しさん (ワッチョイ d101-Piju)2020/08/10(月) 06:44:41.63ID:2p1s3ccJ0
>>819
win10なら標準で画面録画ツールあるよ
win+rだったかな

824デフォルトの名無しさん (ワッチョイ a15f-3YTp)2020/08/10(月) 08:03:08.52ID:RlCz4Cin0
822で解決してる内容を間違って紹介するの巻

825デフォルトの名無しさん (ブーイモ MM85-tlsv)2020/08/10(月) 08:12:31.43ID:3XgF7vK3M
>>820の時点で普通は調べりゃわかる

826デフォルトの名無しさん (ワッチョイ 8191-hkmR)2020/08/10(月) 08:49:14.88ID:BA9+NJPC0
>>815
そういう時はDictionaryにすれば良いんでね?

827デフォルトの名無しさん (ワッチョイ 8191-hkmR)2020/08/10(月) 08:51:12.59ID:BA9+NJPC0
>>819
そのVBAを自動実行するVBAを書く。

828デフォルトの名無しさん (アウアウウー Sa55-h0ig)2020/08/11(火) 02:22:17.18ID:w/eGi/vSa
VBAの知識は全く無いけど無駄な事は少しでも省きたい
そこで質問なのですが、複数の結合されたセルの値を一括でクリアしたい時
Range(“A1”).MergeArea.ClearContents
Range(“A2”).MergeArea.ClearContents
Range(“A3”).MergeArea.ClearContents
Range(“A4”).MergeArea.ClearContents
ひたすら続く

これを短くするにはどうすれば良いでしょうか?

829デフォルトの名無しさん (ワッチョイ eb63-QZCj)2020/08/11(火) 02:42:12.83ID:biGjq8v+0
A1:A1000

830デフォルトの名無しさん (アウアウウー Sa55-h0ig)2020/08/11(火) 03:03:48.27ID:w/eGi/vSa
あーっとすみません
AはBと連結していますのでそれぞれが横に連結しています

831デフォルトの名無しさん (ワッチョイ eb8e-bBGy)2020/08/11(火) 03:10:45.62ID:iwyIkneF0
>>830
死ね

832デフォルトの名無しさん (ワッチョイ 59ce-IIsV)2020/08/11(火) 03:24:29.64ID:gr6gl0bw0
>>828
まずセルの結合が無駄の元だから禁止するのが一番の早道

833デフォルトの名無しさん (アウアウウー Sa55-h0ig)2020/08/11(火) 03:32:11.78ID:w/eGi/vSa
>>832
やはりそうですよねぇ
既存のフォーマットに寄せようと思うとどうしても結合セルが必要に...
色々試行してみます。

834デフォルトの名無しさん (ワッチョイ 0101-vCTi)2020/08/11(火) 07:15:12.76ID:MYNVwvse0
悪いけどこの程度のこと質問するようじゃ手でやったほうが早いと思う
該当セルを全部選択して右クリックから値のクリア

835デフォルトの名無しさん (ワッチョイ 895f-gCeJ)2020/08/11(火) 07:29:46.25ID:QzKTaZ840
>>834
それをマクロの記録で記録するのが一番楽だわな

836デフォルトの名無しさん (ワッチョイ 0101-zaql)2020/08/11(火) 09:13:15.51ID:MYNVwvse0
>>835
この程度なら、毎回やるにしてもマクロ使わずに手でやって余裕でできるレベルだろ

837デフォルトの名無しさん (ワッチョイ 9b02-e++8)2020/08/11(火) 09:43:23.03ID:Y2BcIsaJ0
できるかできないかじゃないのがわからない奴

838デフォルトの名無しさん (アウアウウー Sa55-g1pd)2020/08/11(火) 10:26:55.02ID:XBdR516ja
>>828
きったないコードの書き方になるが
Din i as Long
For i =1 to 最後の数
Range(”A” & i).以下略
Next i
で簡素化

839デフォルトの名無しさん (ワッチョイ 297c-2X+j)2020/08/11(火) 12:32:13.53ID:Tr96IgUh0
range("a1:最後").value=emptyじゃだめなのか

840デフォルトの名無しさん (ワッチョイ 9b90-e++8)2020/08/11(火) 12:34:29.17ID:LWJewwPf0
>>828
Dim i    As Long
Dim lngMaxRow As Long

'/// 最終行取得
lngMaxRow = ActiveSheet.Range("A65000").End(xlUp).Row

'/// ループ処理
For i = 1 To lngMaxRow
ActiveSheet.Range("A" & i).MergeArea.ClearContents
Next i

841デフォルトの名無しさん (スプッッ Sda3-IIsV)2020/08/11(火) 14:42:39.58ID:GML8Ehqkd
.Clear と .ClearContents と .Value=Empty の違いがわからん
これをマウスやキーボードで再現する方法も
たとえばセルを選択してDeleteキーはどれに相当?

842デフォルトの名無しさん (ワッチョイ 1302-2X+j)2020/08/11(火) 15:03:15.53ID:3p+RdAeo0
Clearはセルに入力されてる数式や値、そして設定されてる書式もすべて消す
.ClearContents は数式と値のみクリア、書式は残る
.Value=Emptyはニュアンスが逆で"何も無いを入力"、つまり消す。.ClearContentsと同じ

deleteキーは.ClearContentsや.Value=Emptyと同じ

843デフォルトの名無しさん (ブーイモ MM85-HICl)2020/08/11(火) 15:15:55.64ID:KT452e/aM
不規則な結合セルがあると .MergeArea.ClearContentsはエラーになるけど .Value = Emptyなら動くから>>828はRange("A:A").Value = Emptyの一行で解決ってこと

844デフォルトの名無しさん (ワッチョイ 9bf7-ADi0)2020/08/11(火) 15:48:36.99ID:QMl7gTyj0
foreachやればええやん

845デフォルトの名無しさん (ワッチョイ 2e7b-PxzN)2020/08/12(水) 02:04:20.40ID:ArSORnRx0
>>834-844 ありがとうございます!
皆さんが言うように全くの知識ゼロですが色々検索してなんとか思った通りのボタンが完成しました。
しかし全角やらスペースやら分かり辛いプログラムって難しいですね...

846デフォルトの名無しさん (ワッチョイ ade6-p0wA)2020/08/12(水) 20:55:54.61ID:qkNQ+uZ00
赤線先生が手取り足取り教えてくれるのに何が不満だと申すのかこのガキは

847デフォルトの名無しさん (ワッチョイ 4549-p5K4)2020/08/12(水) 23:02:53.31ID:Akz/zcS80
n行ごとにデータを拾って少し文字列等を足してからほかのシートに貼り付ける、
という作業を現在For文でやっています。行数が多いと多少時間がかかることも
あるので、配列でできないかと思い試してみたのですが、「n行ごと」の部分が
うまくいきません

Dim tmpArr(), tmp As Variant
Dim rowIndex, colIndex As Long

tmpArr = Worksheets(1).Range("A3:C101").Value
For rowIndex = 1 To UBound(tmpArr) - 2 Step 3
For colIndex = 1 To UBound(tmpArr, 2)
tmp = tmpArr(rowIndex, colIndex) & "結合データ"
tmpArr(rowIndex, colIndex) = tmp
Next
Next

Worksheets(2).Range("A3:C35").Value = tmpArr

上記の場合3行ごとに元の値に「結合データ」という文字列を足すことはできて
いるのですが、貼り付け先のシートに全行貼り付いてしまいます
3行ごとの場合に要らない2行目、3行目を除外して
Sheet1 1行目→Sheet2 1行目、Sheet1 4行目→Sheet2 2行目…
というように貼り付けるにはどこを変更したらいいでしょうか

貼り付けたあと要らない行を削除してみたのですが、却って時間がかかって
しまったため、それ以外の解決方法があれば教えてください、よろしくお願いします

848デフォルトの名無しさん (ワッチョイ 623d-KAoe)2020/08/12(水) 23:09:52.81ID:J7mAx2fT0
>>847
tmparrの要素数見てみ
もう1つ別に、貼り付け用のVariant型配列用意して新しく格納していかないとそりゃ空白行できるよ

それと、stepよりmodで条件分岐スキップさせる方がスマートじゃないかい

849デフォルトの名無しさん (ワッチョイ 45ce-p0wA)2020/08/12(水) 23:38:22.31ID:neehvUDc0
>>847
こういうこと
あと、Dimの書き方もこうしないとだめ

Sub Macro1()
  Dim tmpArr() As Variant, tmp As Variant
  Dim rowIndex As Long, colIndex As Long
  Dim arrIndex As Long  ' 配列用のインデックス

  tmpArr = Worksheets(1).Range("A3:C101").Value
  arrIndex = 0
  For rowIndex = 1 To UBound(tmpArr) - 2 Step 3  ' セルアドレスは3ずつ増やす
    For colIndex = 1 To UBound(tmpArr, 2)
      tmp = tmpArr(rowIndex, colIndex) & "結合データ"
      tmpArr(arrIndex, colIndex) = tmp
    Next
    arrIndex = arrIndex + 1  ' 配列のインデックスは1ずつ増やす
  Next

  Worksheets(2).Range("A3:C35").Value = tmpArr
End Sub

850デフォルトの名無しさん (アウアウウー Saa5-KAoe)2020/08/13(木) 00:14:44.45ID:6VU/YWxoa
>>849
その書き方だとRowが大きいやつ排除されずに新しいシートに貼り付けられません?
それともC35までで出力は終わりだからいいんですかね?
メンテナンスしづらいかと思います

851デフォルトの名無しさん (ワッチョイ 45ce-p0wA)2020/08/13(木) 00:25:56.44ID:87HjPNaJ0
>>850
そういう時はセル範囲を変数にして、どっちかのインデックスを3で割るか掛けるかすればいいんだよ
それならメンテは一箇所で済む
データの範囲をxlUpとかUsedRangeなどで調べたりテーブル化すれば全自動にもできる

852デフォルトの名無しさん (ワッチョイ 4549-p5K4)2020/08/13(木) 01:36:11.66ID:cxZ8EfEa0
>>849
ありがとうございます
最初インデックスが有効範囲にないとエラーがでたので「arrIndex = 0」を
「arrIndex = 1」に変えたらできました
配列なので0から始まるということなのかと思ったんですが、1にしても
大丈夫なんでしょうか?出力した結果はForのものと同じだったので
貼り付け後に1行ずれるということはなさそうなんですが…

しかし確かに速いですね、配列
データを5000行×3列にしてテストしたら
For 約2.7秒
配列 約0.03秒
といった感じでした

>>850,851
コピー元のセル範囲は変数にして見出し行引いてnで割ったりして貼り付け先の
範囲を出してます
今回は決まった数字の方がいいかなと思って99行を3行ごとで33行、みたいに
してみました

853デフォルトの名無しさん (ワッチョイ ad7c-s47K)2020/08/13(木) 01:59:57.87ID:KWfn8cHZ0
>>852
tmpArrにセル内容入れた時のインデックスを確認すればわかる

854デフォルトの名無しさん (ワッチョイ 451c-p0wA)2020/08/13(木) 11:07:02.86ID:rrpNLQgi0
環境
windows 10 64bit
office 365 64bit
string型変数strにスペースを埋める単純なコードです。

Sub test()
Dim num_i As Integer
Dim num_l As Long
Dim num_ll As LongPtr
Dim str As String

Debug.Print "integer"; Len(num_i); TypeName(num_i)
Debug.Print "long"; Len(num_l); TypeName(num_l)
Debug.Print "longptr"; Len(num_ll); TypeName(num_ll)

num_i = 16: num_l = 16: num_ll = 16

str = Space(num_i): Debug.Print ">>"; str; "<<"
str = Space(num_l): Debug.Print ">>"; str; "<<"

''動かない
'str = Space(num_ll): Debug.Print ">>"; str; "<<"
''動く
str = Space(CLng(num_ll)): Debug.Print ">>"; str; "<<"
End Sub

このように64bitに対応していない組み込み関数って結構あるんのだろうか・・・
いつからか忘れたけど、 64bit推奨しているなら、これぐらい対応しろよ、毎糞がぁぁあ
excelの64bit環境って現状こんなものなの?

855デフォルトの名無しさん (ワッチョイ 4549-p5K4)2020/08/13(木) 11:30:36.17ID:cxZ8EfEa0
>>853
インデックスを確認したところ
rowIndex 1→1→1→4→4→4→7→7→7
colIndex 1→2→3→1→2→3→1→2→3
arrIndex 1→1→1→2→2→2→3→3→3
というように変化していきましたので大丈夫そうです、ありがとうございました

856デフォルトの名無しさん (ワッチョイ e5da-p5K4)2020/08/13(木) 11:34:45.35ID:25tyhxYJ0
コンパイルエラーじゃねーか、何を問題にしているのかわからん

857デフォルトの名無しさん (ワッチョイ c22f-178q)2020/08/13(木) 12:50:45.70ID:2SQEG+lQ0
試してないから知らんけど
64ビット長の文字列とかサポートされてないから当然だと思うけどな

つか今のEXCELついに64ビットが規定になったのか

858デフォルトの名無しさん (ワッチョイ ad7c-s47K)2020/08/13(木) 13:00:55.28ID:KWfn8cHZ0
>>855
いや、なんでインデックス0だとエラーになるかって話・・・

859デフォルトの名無しさん (ワッチョイ 4549-p5K4)2020/08/13(木) 14:08:49.69ID:cxZ8EfEa0
>>858
あ、そっちでしたか
エラーが出た状態のそれぞれのインデックスは
rowIndex 1
colIndex 1
arrIndex 0
でしたので、
tmpArr(arrIndex, colIndex) = tmp
のところが
tmpArr(0, 1) = tmp
になってエラー、ですかね?

860デフォルトの名無しさん (ワッチョイ ad7c-s47K)2020/08/13(木) 14:16:56.76ID:KWfn8cHZ0
>>859
tmpArrにインデックス0は存在しないのに指定するからエラーが出ていて、セル範囲を代入した時は1から始まることを知らなくても変数の状態をチェックすればすぐわかることだが、もしかしてローカルウィンドウとかを知らないパターン

861デフォルトの名無しさん (ワッチョイ 4549-p5K4)2020/08/13(木) 14:35:55.00ID:cxZ8EfEa0
>>860
あんまり使いこなせてはいないですがローカルウィンドウは表示させています
849さんが教えてくれたコードの中でarrIndexを「0」に指定しているのにはなにか
理由があるんじゃないかと思ったんですが、書き間違いとかでしょうか?

862デフォルトの名無しさん (ワッチョイ ad7c-s47K)2020/08/13(木) 14:49:25.52ID:KWfn8cHZ0
>>861
意図は知らない

863デフォルトの名無しさん (ワッチョイ e5da-p5K4)2020/08/13(木) 18:33:06.86ID:25tyhxYJ0
>>861
そういうのスルーできないとこの先進まんよ

864デフォルトの名無しさん (ワッチョイ 2e10-s47K)2020/08/14(金) 07:43:46.87ID:whfJUs+50
VLOOKUPについての質問なんですが、

検索キー 検索範囲1 検索範囲2    産地
りんご    りんご     ぶどう      岡山産
        みかん    りんご      岡山産
        いちご     もも       岡山産
        りんご     ぶどう      山梨産
        みかん     なし       山梨産
        いちご     りんご      山梨産


りんごから別セルの検索範囲1を見た後に検索範囲2を見にいって産地の戻り値を得る関数を作りたいのですが、
検索キーのヒットで産地が重複した場合は表示を1度だけにして、期待する結果として「岡山県 山梨県」とだけ得られるような関数を作りたいです
VLOOKUPを&で繋げると「岡山県岡山県」と列の一番初めの戻り値しか得られません
VLOOKUP以外でもやり方があれば教えて頂ければ助かります

865デフォルトの名無しさん (ワッチョイ 4290-p5K4)2020/08/14(金) 11:35:06.45ID:DbBU1lOD0
>>864 マクロ作りました。
最大100件までヒット可能です。
長くなって申し訳ありません。
ご参考までに。(1/3)

Option Explicit
'/// 変数定義
Public j As Long 'ヒット件数
Public strArray(99) As String 'ヒットした産地の配列

Sub Main()

Call 初期化
Call 検索処理("B", 2)
Call 検索処理("C", 1)
Call メッセージ

End Sub

866デフォルトの名無しさん (ワッチョイ 4290-p5K4)2020/08/14(金) 11:35:39.43ID:DbBU1lOD0
Sub 初期化() '///グローバル変数の初期化  (2/3)
'/// 変数定義

Dim i As Long 'カウンタ
j = 0
For i = 0 To 99
strArray(i) = ""
Next i
End Sub

Sub 検索処理(pCol As String, pMovNum As Long)
'/// 変数定義
Dim i As Long 'カウンタ
Dim lngMaxRow As Long '処理数
Dim strKey As String '検索値
Dim strSanchi As String 'ワーク変数

'/// キー
strKey = ActiveSheet.Range("A2").Value
'/// 処理数
lngMaxRow = ActiveSheet.Range("B1000").End(xlUp).Row
'/// ループ
For i = 2 To lngMaxRow
If strKey = ActiveSheet.Range(pCol & i).Value Then
strSanchi = ActiveSheet.Range(pCol & i).Offset(0, pMovNum).Value
If 重複チェック(strSanchi, strArray()) = False Then
strArray(j) = strSanchi
j = j + 1
End If
End If
Next i
End Sub

867デフォルトの名無しさん (ワッチョイ 4290-p5K4)2020/08/14(金) 11:36:01.63ID:DbBU1lOD0
Function 重複チェック(pSanchi As String, pArray() As String) As Boolean(3/3)
'/// 変数定義
Dim i As Long 'カウンタ

'/// ループ
For i = 0 To 99
If pSanchi = pArray(i) Then
重複チェック = True
Exit Function
End If
Next i
重複チェック = False
End Function

Sub メッセージ()
'/// 変数定義
Dim i As Long 'カウンタ
Dim strAnswer As String 'ワーク変数

strAnswer = strArray(0)
'/// メッセージ出力
For i = 1 To j
If strArray(i) <> "" Then
strAnswer = strAnswer & "," & strArray(i)
End If
Next i
'/// 1件でもあれば表示
If j > 0 Then
MsgBox (strAnswer)
End If
End Sub

868デフォルトの名無しさん (ワッチョイ ad7c-s47K)2020/08/14(金) 12:26:16.36ID:RMq/G2m80
Dim obj As Object
Dim rng As Range

Set obj = CreateObject("Scripting.Dictionary")
For Each rng In Range(検索範囲)
 If rng.Value = Range("a2").Value Then
  With Cells(rng.Row, "d")
   If obj.exists(.Value) = False Then obj.Add .Value, 0
  End With
 End If
Next
Range("e1").Resize(obj.Count).Value = WorksheetFunction.Transpose(obj.keys)
Set obj = Nothing

869865〜867 (ワッチョイ 4290-p5K4)2020/08/14(金) 12:40:48.74ID:DbBU1lOD0
>>868
おお!流石です。

870デフォルトの名無しさん (ワッチョイ 6eda-p0wA)2020/08/16(日) 00:23:38.07ID:oP+sOQXV0
>>864
構造体使えば簡単に作れそうだけどね。

871デフォルトの名無しさん (ワッチョイ e5da-p5K4)2020/08/16(日) 13:39:49.06ID:6OTbxtgn0
質問しないで自力でできるようになるのがまず先だろう

872デフォルトの名無しさん (ワッチョイ 9f40-JHA7)2020/08/19(水) 20:44:10.60ID:1ghAy1sC0
スレ全否定で草

873デフォルトの名無しさん (ワッチョイ 7fd3-ri+I)2020/08/20(木) 01:09:34.68ID:Qa4rAQro0
シート1のプルダウンから選択した結果(テキスト)を
シート2の任意のセルに表示させるにはどうすればいいですか?

874デフォルトの名無しさん (ワッチョイ 7f42-KCZZ)2020/08/20(木) 07:05:04.54ID:UH//ZFwI0
リンクするセルに指定しておけば

875デフォルトの名無しさん (スプッッ Sd1f-POXI)2020/08/24(月) 18:59:52.50ID:ga12x2Hwd
A列には数字を手入力
B列には●があったりなかったり

B列に●がある場合A列に数字を(例えば100)入力するとメッセージボックス?がでて
「●があるから入力しちゃ駄目よ!どうしても"100"を入力したいの!?」
「OK」「キャンセル」
みたいにしたいんですがどーすればいいですか?

876デフォルトの名無しさん (ワッチョイ ff02-YpYZ)2020/08/24(月) 19:07:40.74ID:k+YcXwpu0
Worksheet_Changeイベントを使えばいいです

877デフォルトの名無しさん (ワッチョイ 1f7c-u2+K)2020/08/24(月) 19:26:54.83ID:w4ZB1tmF0
>>875
データの入力規則のエラーメッセージ

878デフォルトの名無しさん (ワッチョイ 7f42-KCZZ)2020/08/24(月) 20:16:24.02ID:pfMfCN200
1を入力した時点でメッセージボックスが出ると思うんだが10まではセーフで100だと確認のほうが良いのか

879デフォルトの名無しさん (スップ Sd1f-5gYb)2020/08/24(月) 20:27:42.41ID:N/ceNi6Ud
>>875だけどいい忘れてました
0を入力した場合はメッセージ出さずにそのまま0と入力
0以上(例えば200)を入力した場合は「●なんだから入力すんなボケ!どうしても"200"って入力したいの?」
「OK」「キャンセル」
みたいなね

880デフォルトの名無しさん (スプッッ Sd9f-5gYb)2020/08/24(月) 20:34:28.35ID:ZbbapVPTd
OK押したらそのまま200がセルに入力される
キャンセル押したら""ね

881デフォルトの名無しさん (ワッチョイ 9f8e-NwtD)2020/08/24(月) 20:35:32.06ID:C0VIZWNb0
馬鹿は条件を後で付け加える

882デフォルトの名無しさん (スプッッ Sd9f-5gYb)2020/08/24(月) 20:36:54.05ID:ZbbapVPTd
>>881
誹謗中傷?

883デフォルトの名無しさん (ラクッペペ MM4f-NoNb)2020/08/24(月) 20:42:38.20ID:hwq7Y5YHM
メッセージボックスはうっとおしいからセルの色を変えるぐらいのほうが喜ばれるよ

884デフォルトの名無しさん (スプッッ Sd9f-5gYb)2020/08/24(月) 20:46:47.07ID:ZbbapVPTd
>>883
それでも入力する奴がいるんだもん
IF(B2:B10000=●,"入力すんな","")
これでも駄目

885デフォルトの名無しさん (ワッチョイ 1f7c-u2+K)2020/08/24(月) 20:56:49.89ID:w4ZB1tmF0
数字以外を入力したら?

886デフォルトの名無しさん (スプッッ Sd1f-5gYb)2020/08/24(月) 20:59:38.82ID:KH3D74B7d
>>885
数字以外入力しません

887デフォルトの名無しさん (ワッチョイ 1f7c-u2+K)2020/08/24(月) 21:02:06.67ID:w4ZB1tmF0
自主的にしないのなら入力規則をユーザ設定にしてエラースタイルを注意でいいじゃんかと思うんだが

888デフォルトの名無しさん (スッップ Sd9f-5gYb)2020/08/24(月) 21:19:01.81ID:hykwk2E+d
>>887
そうか
やってみようかな
ちなみにVBAだとどう書くの?

889デフォルトの名無しさん (ワッチョイ 1f7c-u2+K)2020/08/24(月) 21:58:37.53ID:w4ZB1tmF0
●があるあったらダイアログ表示するだけ

890デフォルトの名無しさん (ワッチョイ 1f7c-u2+K)2020/08/24(月) 21:58:57.09ID:w4ZB1tmF0
●があったら

891デフォルトの名無しさん (ドコグロ MM7f-a78p)2020/08/24(月) 22:34:30.60ID:6Nxhc9klM
個性的な物を作りたいのなら図形を使えば色も形も自由自在に作れる

892デフォルトの名無しさん (ワッチョイ ff63-3Lde)2020/08/25(火) 07:27:56.68ID:Dix5Myuw0
Win10で、VBAを作っています。
テキストファイルをLine関数で1行ずつ読み込み
読んだ行にてInStr関数で円マーク(\)を検索
しています。
InStr(1, 検索対象, "\")
と書いています。
しかし\が無い行で「ある」と判定されているようです。
\にはエスケープ文字が必要だからではないかと思いますが
どう書いたら良いかわからず途方に暮れています。
どなたかご教示ください。
(文字コードで指定すれば良いようですが
他の担当者が理解できない可能性もあるので
別の方法も把握したく存じます)

893デフォルトの名無しさん (ワッチョイ ff02-YpYZ)2020/08/25(火) 09:38:34.28ID:UEyqjSRY0
無いのにあると判定される行の文字列を教えて下さい

894デフォルトの名無しさん (ワッチョイ 7f80-6SBr)2020/08/25(火) 09:40:05.96ID:j61R6fge0
instr特に問題なさそうですが。
ウォッチ式の想定外時検索対象文字列は晒せないのですか?
instr使わずに1文字ずつ取るとか?

895デフォルトの名無しさん (ワッチョイ 1f7c-u2+K)2020/08/25(火) 10:33:08.00ID:JyPo3Qi40
>>892
されてるようですじゃなくてちゃんと確認して

896デフォルトの名無しさん (テテンテンテン MM4f-Is5t)2020/08/25(火) 10:41:04.86ID:8u+D4XfyM
>>893
海砂利水魚の水行末\n

897デフォルトの名無しさん (ワッチョイ ff02-YpYZ)2020/08/25(火) 11:01:09.56ID:UEyqjSRY0
>>896
次の人どうぞ

898デフォルトの名無しさん (テテンテンテン MM4f-Is5t)2020/08/25(火) 11:14:02.60ID:HdlOc3e6M
>>893
[壁]_・)_シン・シンギュラリティ¥n

899デフォルトの名無しさん (ラクッペペ MM4f-pqEW)2020/08/25(火) 12:47:56.13ID:LoAGT2GVM
>>893
会社の住所です
一文字目が全角郵便マーク
2文字目が全角スペース
三文字目から半角数字で郵便番号です。
\と半角ハイフンの間を取り出す処理を
書いたところ
郵便番号最初の3桁、
ハイフンの手前まで
が取り出されますので
全角スペースが\マークとして
扱われてると思ってます

900デフォルトの名無しさん (テテンテンテン MM4f-Is5t)2020/08/25(火) 12:58:49.60ID:KRGfI1UYM
>>893
「\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
\と半角ハイフンの間を取り出す処理
を全角スペースが\マークとして扱われてると思ってます
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-」

901デフォルトの名無しさん (ワッチョイ 7f2f-3Lde)2020/08/25(火) 13:03:59.81ID:at7FUvm30
>>899
そもそもVBAにエスケープ文字とかないから
お前のコードがバグってるか、テキストがちゃんと読めてないかどっちかだろ

とりあえずコードと読み込んだデータ晒せ

902デフォルトの名無しさん (ワッチョイ ff02-YpYZ)2020/08/25(火) 13:39:05.50ID:UEyqjSRY0
>>899
その説明だとコード晒してもらわないとわからん
住所そのまま晒してって言ってるんじゃなくて
別の文字に置き換えていいから同じフォーマットで
処理前後でどうなってほしい所がどうなってしまうのか書いてもらわないとわからない

903デフォルトの名無しさん (ワッチョイ 1f7c-u2+K)2020/08/25(火) 13:53:58.00ID:JyPo3Qi40
>>900
なんで想像するだけで実際の中身を確認ようとしないの

904デフォルトの名無しさん (ワッチョイ 1f7c-u2+K)2020/08/25(火) 13:54:35.07ID:JyPo3Qi40

905デフォルトの名無しさん (JP 0Hc3-n+O8)2020/08/25(火) 14:14:41.86ID:NinLgEivH
プログラムってのはなあ、思った通りには動かないもんなんだよ
いつでも書いた通りに動くだけ

906デフォルトの名無しさん (ワッチョイ 1fda-YpYZ)2020/08/25(火) 14:23:43.06ID:QWQtRQIZ0
タブとか改行(CR+LF)とかバイナリデータが混ざっているとか機種依存文字とか
文字コードの違いとか色々あるからな

907デフォルトの名無しさん (ワッチョイ 7f2f-3Lde)2020/08/25(火) 14:28:30.69ID:at7FUvm30
まあ一番怪しいのは、文字コード関係でテキストがちゃんと読めてない
ちゃんと読みこんだデータのバイナリ確認してみろ

908デフォルトの名無しさん (ワッチョイ 1f7c-u2+K)2020/08/25(火) 14:43:48.86ID:JyPo3Qi40
line inputはSJISで読み込む
バイナリ確認しなくても元ファイルがSJISであればそれでいい

909デフォルトの名無しさん (ラクッペペ MM4f-pqEW)2020/08/25(火) 15:50:41.61ID:LoAGT2GVM
すみません892です
デバッガで見たら
全部の行で1を返してました
つまり全行、先頭は\マークみたいです
1文字目は無視するようにしたら
意図通りの動きになりました

910デフォルトの名無しさん (ワッチョイ ff02-YpYZ)2020/08/25(火) 16:00:19.40ID:UEyqjSRY0
>>909
それ完全にその場しのぎでしかないから
他の担当者が後々困る絶対

911デフォルトの名無しさん (ワッチョイ 1f7c-u2+K)2020/08/25(火) 16:23:37.10ID:JyPo3Qi40
先頭が\かどうかすらも確認しないのか…

912デフォルトの名無しさん (オッペケ Sr73-rg60)2020/08/25(火) 17:36:53.32ID:Lm28KJF/r
VBAからPowerShellで外部コマンドを実行して出力内容を加工したいのですが、うまくいきません
現在は、Execの引数に下記のように書いてます
powershell -Command "& Invoke-Expression 'コマンドのパス\コマンド.exe' -option1 -option2 "foo bar" >>'一時ファイル.txt'"

どうしたらよいでしょうか

913デフォルトの名無しさん (アウアウウー Sa63-3MaI)2020/08/25(火) 18:00:08.63ID:YUvg5uyAa
>>909
1件目でも入っているのかな?

914デフォルトの名無しさん (アウアウカー Sa13-tqqx)2020/08/25(火) 18:12:08.06ID:mPnhNdWta
テキスト全行読み込みしてsplitしてる説
んで\rでsplitして\nが先頭に来てるんじゃね

915デフォルトの名無しさん (ワッチョイ 9f40-JHA7)2020/08/25(火) 20:46:10.83ID:+ct4ya2Y0
>>912
Exec("powershell -Command Invoke-Expression 'コマンドのパス\コマンド.exe' -option1 -option2 'foo bar' >> '一時ファイル.txt'")

916デフォルトの名無しさん (ラクッペペ MM4f-NoNb)2020/08/25(火) 20:53:13.85ID:4vNIHvGrM
shell でいいのにわざわざ外部オブジェクト使う人っているよね

917デフォルトの名無しさん (アウアウウー Sa63-/2iM)2020/08/25(火) 21:28:28.78ID:n9RIifSya
>>914
改行コードは別に文字列としての\が入ってる訳じゃないだろ

918デフォルトの名無しさん (オッペケ Sr73-rg60)2020/08/25(火) 22:12:02.97ID:Lm28KJF/r
>>915
ありがとうございます
もう一点よろしいでしょうか
標準出力にUnicodeで吐き出すコンソールアプリの出力を、Wscript.Shell.ExecのStdOutを使用して読み込みたいのですが、文字化けします
個人情報を扱うのでできれば一時ファイルを作らずに作業したいのですが、Unicodeの標準出力を直接読み込む方法は無いでしょうか

919デフォルトの名無しさん (テテンテンテン MM4f-Is5t)2020/08/25(火) 22:59:12.42ID:8Q4E/UJjM
>>899
>>903なるほど特殊文字が16進数表記で¥マークってことか>>909
〒 〒 \03012 郵便マーク

920デフォルトの名無しさん (ワッチョイ 118e-WkEz)2020/08/26(水) 01:37:45.74ID:zCSTsYdn0
>>918
スレチだろ、厚かましい

921デフォルトの名無しさん (ワッチョイ 452c-VQ5f)2020/08/26(水) 02:00:19.04ID:BpaQECb00
>>918
オプションなどで、文字コードを指定できないの?

922デフォルトの名無しさん (ワッチョイ 7901-yRqa)2020/08/26(水) 02:56:47.46ID:oEB3gdtA0
これから新規に作る形式の文字コードは、UTF-8とGB18030の二択じゃないでしょうかね。

923デフォルトの名無しさん (オッペケ Sr51-cLD7)2020/08/26(水) 11:13:08.29ID:DBm/bRJ+r
>>921
調べたところわかりませんでした
Unicodeの文字が欠落するのでSJISに変換して流すのも避けたいです
一晩考えてPowerShell側でBase64エンコードしてからVBA側でデコードしてみようと考え直しました
失礼しました

924デフォルトの名無しさん (オッペケ Sr51-cLD7)2020/08/26(水) 11:25:02.41ID:DBm/bRJ+r
ちなみに、Wscript.Shell.Execに渡せるコマンドラインって255文字までのような制限があるのでしょうか
コンソール側で動いたコマンドラインがExecからだと動かなかったりするので

925デフォルトの名無しさん (ワッチョイ 61da-1etN)2020/08/26(水) 19:01:16.17ID:vVfdbk8D0
>>924
状況がわからないので超エスパー回答すると、
32bitじゃないと動かないものを64bitで実行しようとしている。

926デフォルトの名無しさん (ワッチョイ 61da-1etN)2020/08/26(水) 19:03:04.71ID:vVfdbk8D0
powershellか。
ごめん、関係ないわ。

927デフォルトの名無しさん (オッペケ Sr51-cLD7)2020/08/26(水) 19:09:15.11ID:DBm/bRJ+r
>>926
ありがとうございます。
PowerShell上で動作を確認したワンライナースクリプトをExecで実行したら動かなかったもので、特に根拠があって疑ってる訳じゃないです。
こちらはPS1ファイルを用意して実行することにしました。

928デフォルトの名無しさん (オッペケ Sr51-cLD7)2020/08/26(水) 19:15:01.39ID:DBm/bRJ+r
ところで、ADODB.Streamに書き込んだテキストをCSVとしてパースしてRecordSetに読み込む方法をどなたかご存知ないでしょうか
一時ファイルを保存すればいいのですがオンメモリでやれたらそちらの方がありがたいです
同じADODBクラスなので方法がありそうだなと思い調べてみたのですが…

929デフォルトの名無しさん (ワッチョイ 118e-WkEz)2020/08/26(水) 20:35:45.89ID:zCSTsYdn0
>>928
厚かましいスレチはいい加減にしろ

930デフォルトの名無しさん (ワッチョイ ae02-1etN)2020/08/26(水) 20:40:23.56ID:SKzt3LIS0
ノイズが発生してるけど無視していいよ
知ってて答えたい人が答えると思うし

931デフォルトの名無しさん (ワッチョイ 61da-1etN)2020/08/26(水) 22:47:53.03ID:vVfdbk8D0
>>928
ちょっと意味が分からない。
そこまで知っていて出来ないというのは、どこで躓いているのか。

932デフォルトの名無しさん (ワッチョイ 0de6-xiBb)2020/08/26(水) 22:50:24.69ID:Xm7NIhRp0
できないわけじゃない
1文字づつ解析とか馬鹿らしくてやってられないから一発でできる方法を聞いておる

933デフォルトの名無しさん (ワッチョイ 02b5-lmXr)2020/08/26(水) 22:52:29.85ID:FaIObZsK0
一年他部署に応援行ってて戻ってきたが
その間に転属されてた人に

これがあれば一覧のデータを一気に出力できるからマクロの使い方だけは覚えてね
マクロとかわかる?とにかく使い方おぼえて
と言われた
俺が応援行く前に作って課に展開したマクロやんけ…

934デフォルトの名無しさん (ベーイモ MM16-4W6K)2020/08/27(木) 10:45:53.98ID:M3gK7ks0M
strconvで文字列"試験"をUnicodeに変換すると、変な文字に変換されるんだけど解決策ありますか?

StrConv(StrConv("試験",vbUnicode),vbFromUnicode)
の結果が、"試験"であってほしいんだけど、別のよくわからない文字に変換される

935デフォルトの名無しさん (オッペケ Sr51-cLD7)2020/08/27(木) 10:56:45.12ID:EdbkG5X3r
>>931
情報小出しですみません。

UTF8で標準出力に個人情報含むCSVを吐き出すコンソールアプリがありまして、それを一時ファイルを使用せずにVBAに読み込むのが目的です。

Wscript.Exec.StdOutを使用したところUTF8が文字化けしてしまい、PowerShell上でByte配列化→Base64エンコードして吐き出すことで、VBAでCSVのStringを得るところまではできました。

936デフォルトの名無しさん (ワッチョイ 0d7c-JMbW)2020/08/27(木) 10:58:22.12ID:W5jLLhyA0
>>934
shiftjisで表示してんじゃないの

937デフォルトの名無しさん (オッペケ Sr51-cLD7)2020/08/27(木) 11:04:53.94ID:EdbkG5X3r
VBAでBase64デコードしたByte配列をADODB.Streamにバイナリ書き込み・UTF8読み込みすることでString変数に収めるところまでは行けました。
ここから、ADODB.Connectionを使用してADODB.Streamの内容をCSVとしてパースしたいのですが、ネットで見られるサンプルコードはファイルを読み込むものばかりです。
試しにADODB.Connection.Open ADODB.Streamとしてみましたが、うまく行きません。
現在ADODBのリファレンスに目を通していて、関係の有りそうなプロパティを見て回っているのですが、方法をご存知の方いらっしゃればご教示いただけるとありがたいです。

938デフォルトの名無しさん (ワッチョイ ae02-1etN)2020/08/27(木) 11:29:45.37ID:h0aAGvNz0
>>934
試験のバイナリと
よくわからない文字のバイナリ比較してみたら

939デフォルトの名無しさん (ワッチョイ 452c-VQ5f)2020/08/27(木) 11:35:18.54ID:UMnMnU6h0
WSH は、CP932 だけじゃないの?
もうWSHは、Microsoft もサポートしていないのでは?

WSH, VBScript のスレのスレ主、ピッコロ大魔王に聞けば?

漏れは、Ruby スクリプトをダブルクリックで起動したい場合に、WSHを使っているけど、
その際、Ruby側で、CP932・UTF-8 を変換している。
または、NKF というモジュールもある

940デフォルトの名無しさん (ドコグロ MM22-YRmH)2020/08/27(木) 11:58:06.46ID:tH7sxKPhM
>>934
そりゃそうだろ…
Unicode文字列をShift-JISだと思ってUnicodeに変換して、それを更にUnicodeだと思ってShift-JISに変換して何をしたいんだ?
やりたいのは
StrConv(StrConv("試験", vbFromUnicode), vbUnicode)
かな?

941デフォルトの名無しさん (ベーイモ MM16-4W6K)2020/08/27(木) 12:21:37.52ID:M3gK7ks0M
AddDllDirectory関数の引数にパスを渡したい
この関数の引数はUnicode文字列をである必要があるから、StrConvでUnicode変換してから渡す
変換がうまく行く文字だけのパスなら、AddDllDirectory関数は成功するが、変換がうまくいかない文字が含まれるパスだと失敗する

942デフォルトの名無しさん (ワッチョイ 0d7c-JMbW)2020/08/27(木) 12:24:57.51ID:W5jLLhyA0
>>941
vbUnicodeのstrconvだけじゃいかんの

943デフォルトの名無しさん (ベーイモ MM16-4W6K)2020/08/27(木) 12:31:49.04ID:M3gK7ks0M
>>942
それが失敗するから、vbFromUnicodeでもう戻したら案の定変になってた

944デフォルトの名無しさん (ワッチョイ ae02-1etN)2020/08/27(木) 12:49:42.68ID:h0aAGvNz0
変換がうまくいく文字列
変換がうまくいかない文字列
それぞれ教えてよ

似たような流れ多い?

945デフォルトの名無しさん (ワッチョイ 822f-VQ5f)2020/08/27(木) 13:18:08.14ID:XBcyB/ra0
なぜうまくいかないというコードを出さないのか

とりあえずEXCEL関係ないしVBA何でもスレ行けや

946デフォルトの名無しさん (ベーイモ MM16-4W6K)2020/08/27(木) 13:21:23.95ID:M3gK7ks0M
・成功
 日本、解析、実
 あ~む、ア~ミ、濁音、半濁音

・失敗
 試験、行、め~ん、ム~ン、ゃゅょ、ャュョ

947デフォルトの名無しさん (ワッチョイ 0d7c-JMbW)2020/08/27(木) 13:28:24.20ID:W5jLLhyA0
strconvが失敗するって時点で、何かの勘違いがあるとしか思えない

948デフォルトの名無しさん (ワッチョイ ae02-1etN)2020/08/27(木) 14:18:18.49ID:h0aAGvNz0
あぁ空目してた>>940でいいやん
引数が間違ってる
てか試そうよ

949デフォルトの名無しさん (ベーイモ MM16-4W6K)2020/08/27(木) 17:02:04.95ID:DiWyHVVAM
AddDllDirectory(StrConv(パス,vbUnicode))ってコールしたときに
パスに特定文字が含まれると失敗、含まれないと成功

文字の例は>>946のとおり
明らかにStrConvの文字コード変換がおかしいと思うんだけど

ちなみに第2引数をvbFromUnicodeにすると、どんな文字列でもAddDllDirectoryは失敗する
StrConvを噛ませずに、パスを渡した場合も必ず失敗する

950ななし (ワッチョイ 822f-VQ5f)2020/08/27(木) 18:30:06.72ID:XBcyB/ra0
AddDllDirectoryの引数をポインタでとって文字列のポインタ渡せば動く気がする

951デフォルトの名無しさん (ワッチョイ 61da-1etN)2020/08/27(木) 19:32:16.28ID:nk+dwtaU0
>>935
やっぱわからん。
「UTF8で標準出力に個人情報含むCSV」って、既にその時点でCSVなんじゃないの?
CSVなのにカンマ区切りじゃなくてCSVとして扱えないとか?(何じゃそりゃ)
UTF8が問題ならschema.ini作って回避できない?
schema.ini使う時点で一時ファイルだわって言われたらそれまでだけど。

952デフォルトの名無しさん (ドコグロ MM55-YRmH)2020/08/27(木) 21:54:27.65ID:M2V0MDYQM
>>949
とりあえずAddDllDirectoryのDeclare定義と呼び出してる部分のコード晒してよ
Unicode文字列の渡し方って1つじゃないから定義がわからないとなんとも言えん

953デフォルトの名無しさん (オッペケ Sr51-cLD7)2020/08/28(金) 03:17:22.48ID:0Wmy1rK2r
>>951
CSVファイルではなく、CSVの文字列になります
これをファイルに保存することなくパースしたかったのですが、方法が見つかりませんでした。
セル内カンマやセル内改行も含むCSVでしたので、自分でパースするのもちょっと大変でした。
MITライセンスのコードを見つけたのでそれを組み込んで処理しようと思います。
ありがとうございました。

954デフォルトの名無しさん (ワッチョイ ae02-1etN)2020/08/28(金) 09:32:14.87ID:WbcjPKym0
>>949
明らかにおかしいのはStrConv以外だから
元々使い方間違ってただけで変換に問題はない
最少構成でやってみたらわかるはず

955デフォルトの名無しさん (ワッチョイ 452c-VQ5f)2020/08/28(金) 10:58:16.31ID:CzRmvnjE0
Ruby なら標準で、CSV モジュールが付いている。
他にも、JSON, YAML などもパースできる

プログラミングするなら、ちゃんとしたプログラミング言語を使わないと、ダメ!
汎用的な機能を、自作して使うと、バグってばかりで仕事にならない

956デフォルトの名無しさん (ワッチョイ 822f-25h5)2020/08/28(金) 12:55:46.61ID:dgSTJFNK0
そもそもここ最強のcsvパーサEXCELのVBAすれなんだが

957デフォルトの名無しさん (テテンテンテン MM66-nUCc)2020/08/28(金) 13:14:57.90ID:RBhGMmXKM
確かにExcelは世界一利用者の多いCSVパーサかも

958デフォルトの名無しさん (ワッチョイ 6e63-VQ5f)2020/08/28(金) 23:36:31.47ID:KRJ+x4lY0
エクセル2010を使ってます。
ファイル名の先頭に前月の年と月を付けたいと思い
下のような式を書きました。
本日動かすと「202007」と付きます。
しかし先頭の20を削除し2007としたいです。
式をどのようになおしたら良いか自力ではわかりません。
お恥ずかしいですがご教示いただきたく。
newfilename = Format(Year(DateSerial(Year(Date), Month(Date) - 1, Day(Date))), "00") _
& Format(Month(DateSerial(Year(Date), Month(Date) - 1, Day(Date))), "00") _
& currentfilename

959デフォルトの名無しさん (ワッチョイ 0d7c-JMbW)2020/08/28(金) 23:42:18.02ID:6tfEVBvr0
>>958
ヘルプでformatの書式見た?

960デフォルトの名無しさん (ワッチョイ 06c9-1etN)2020/08/28(金) 23:47:50.15ID:X3zZxqmk0
newfilename = Format(DateSerial(Year(Now), Month(Now) - 1, 1), "yymm")

961デフォルトの名無しさん (ワッチョイ 52ee-yRqa)2020/08/29(土) 00:17:46.05ID:58gyTBSb0
来年でIEなくなるんか?
IE制御で作ったVBAファイルはどうなってしまうん

https://news.livedoor.com/article/detail/18778408/

962デフォルトの名無しさん (ワッチョイ 6e63-VQ5f)2020/08/29(土) 00:20:59.98ID:M2c3GV/+0
>>959
ヘルプといいますが色々なサイトを見ましたが私の頭では理解できず・・
やむを得ずお伺いしました
>>960
この式で出来ました!本当にありがとうございます!

963デフォルトの名無しさん (ラクッペペ MM66-i8JQ)2020/08/29(土) 00:54:05.51ID:OUCG9mQHM
00014500-1
のような、数字以外が入ってる文字列から
前ゼロを取りたいです。
どうすれば良いでしょうか
ゼロは先頭以外にもあるので
replaceで削除するのは無理です。

964デフォルトの名無しさん (ワッチョイ 118e-WkEz)2020/08/29(土) 01:26:16.94ID:uG4P+RAn0
>>963
自分の意思で呼吸を30分止めてご覧
それができなければVBAを使う資格なし

965デフォルトの名無しさん (ワッチョイ a5ce-xiBb)2020/08/29(土) 01:42:59.60ID:haGEh7ED0
>>963
020-040 は 20-40 にすればいいの?

966デフォルトの名無しさん (ラクッペペ MM66-i8JQ)2020/08/29(土) 04:49:38.60ID:OUCG9mQHM
>>965
はぃ、それで良いです
言葉足らずですみません

967デフォルトの名無しさん (ブーイモ MMf6-xiBb)2020/08/29(土) 05:11:12.22ID:nRBZReLEM
>>966
Sub Macro1()
  Dim s1 As String
  Dim s2 As String
  Dim s3 As String
  Dim c As String
  Dim i As Integer
  s1 = "001100-004400-007700" '入力
  s2 = ""
  s3 = ""
  For i = 1 To Len(s1)
    c = Mid(s1, i, 1)
    If "0" <= c And c <= "9" Then
      s2 = s2 & c
    Else
      If s2 <> "" Then
        s3 = s3 & s2 * 1 & c
        s2 = ""
      Else
        s3 = s3 & c
      End If
    End If
  Next
  If s2 <> "" Then
    s3 = s3 & s2 * 1
  End If
  Debug.Print s3 '出力
End Sub

968デフォルトの名無しさん (ワッチョイ 45da-1etN)2020/08/29(土) 05:37:03.41ID:IjPanbf80
入力データにピリオドが入ることはないのか?

969デフォルトの名無しさん (ワッチョイ 45da-1etN)2020/08/29(土) 05:42:52.81ID:IjPanbf80
あ、平気か

970デフォルトの名無しさん (ワッチョイ 6101-u5JS)2020/08/29(土) 06:40:50.33ID:VAMGDei30
そんな難しいことしなくてもこれでよくないか

Sub test()

Dim testStr As String
Dim rtnStr As String
Dim cnvNm As Long

testStr = "000070-00100-01230"

For i = 1 To Len(testStr) + 1

s = Mid(testStr, i, 1)

'数値か判定
If (IsNumeric(s)) Then
strNum = strNum + s
Else
'数値に変換
cnvNm = Val(strNum)
rtnStr = rtnStr + Trim(str(cnvNm)) + s
strNum = ""
End If
Next
End Sub

971デフォルトの名無しさん (ワッチョイ 6101-u5JS)2020/08/29(土) 06:44:47.53ID:VAMGDei30
区切り文字が-だけならsplitして終わる気もするけど
何が入ってるかわからんなら1文字ずつみるしかないのかな

972デフォルトの名無しさん (ラクッペペ MM66-i8JQ)2020/08/29(土) 07:17:10.36ID:OUCG9mQHM
区切りはハイフンだけです
すみません
分けて各々数字扱いすれば良かったですね
書いてみます

973デフォルトの名無しさん (ワッチョイ 6101-u5JS)2020/08/29(土) 08:56:00.81ID:VAMGDei30
デリミタが"-"だけならもっと簡単になるね

Sub test2()

Dim strArray() As String
Dim rtnStr As String

testStr = "000070-00100-01230"

strArray = Split(testStr, "-", , vbTextCompare)

For i = 0 To UBound(strArray)

rtnStr = rtnStr + Trim(str(Val(strArray(i))))

If(i <> UBound(strArray)) Then rtnStr = rtnStr + "-"
Next

End Sub

文字列で連結して返す必要なければsplitして数値変換でおわり

974デフォルトの名無しさん (ワッチョイ 4549-1etN)2020/08/29(土) 09:09:11.49ID:dZuEnb/K0
しかし今の子はこの程度も分からないほど論理的思考がないのか、
それともこのスレの住民を試そうとしているのか

975デフォルトの名無しさん (ワッチョイ 2992-Lsvc)2020/08/29(土) 09:45:04.26ID:SoqUgBeq0
使う関数提示するくらいで解決できなきゃ放置でいいんじゃね?

976デフォルトの名無しさん (ワッチョイ 45cc-pyQU)2020/08/29(土) 10:00:53.07ID:pUlaC/XX0
For r = 1 To 12000
処理
PDF出力

という処理をしているのですが、これだとPDFが12000ファイルになって、全て出力した後で結合するのですが
これを12000枚程度をPDF1ファイルで出力する方法をおしえてください

977デフォルトの名無しさん (ブーイモ MMf6-xiBb)2020/08/29(土) 10:07:03.64ID:m9X9gCs/M
Sub test2()
  Dim strArray() As String
  Dim testStr As String
  Dim rtnStr As String
  testStr = "000070-00100-01230"
  strArray = Split(testStr, "-")
  For i = 0 To UBound(strArray)
    strArray(i) = strArray(i) * 1
  Next
  rtnStr = Join(strArray, "-")
  Debug.Print rtnStr
End Sub

978デフォルトの名無しさん (ワッチョイ 61da-1etN)2020/08/29(土) 10:19:55.18ID:wR6MYEok0
>>976
元データが何なのか知らんけど、
シート上のデータなら、12000ページを1シートにまとめてから出力。

979デフォルトの名無しさん (ワッチョイ 4549-1etN)2020/08/29(土) 10:47:19.93ID:dZuEnb/K0
12000ページのPDF・・・
ほんとに聞きたい事なの?これ

980デフォルトの名無しさん (ワッチョイ 0201-YRmH)2020/08/29(土) 10:47:46.31ID:lHm5nrxO0
>>973
Split使うならJoinも使おうよ…
Sub test2()

Dim strArray() As String
Dim rtnStr As String

testStr = "000070-00100-01230"

strArray = Split(testStr, "-", , vbTextCompare)

For i = 0 To UBound(strArray)
strArray(i) = Cstr(Val(strArray(i)))
Next

rtnStr = Join(strArray, "-")

End Sub

981980 (ワッチョイ 0201-YRmH)2020/08/29(土) 10:48:58.87ID:lHm5nrxO0
ってすでに書かれてたわ… Orz

982デフォルトの名無しさん (ブーイモ MM4d-xiBb)2020/08/29(土) 10:55:28.99ID:jdj2nRjtM
>>979
何かの文書ならともかく、ExcelのPDF化で1万ページは非現実的だよね
自分の会社で使うだけならDB化するのが普通だし
役所に提出する測定資料とかかな?

983デフォルトの名無しさん (ワッチョイ 21d2-vZRt)2020/08/29(土) 11:18:02.61ID:ebvcDddx0
ある言語だと
"00-001-02"split("-")map(asNumber)join("-")println

984デフォルトの名無しさん (アウアウウー Sa85-7m6G)2020/08/29(土) 11:19:35.12ID:0Ji7S1+0a
>>976
for
処理
PDF
Next
にしてるってこと?
ならPDFをNextの後に書けば良いんだけど

985976 (ワッチョイ 45cc-pyQU)2020/08/29(土) 13:57:00.39ID:pUlaC/XX0
>>978
1シートにはまとめられません。

>>979
日々の取引をデータベースに入力していて、そのデータベースから出力されたデータを取引伝票としてPDF化したいのですが
データベースソフトに取引伝票の書式が設定されていないので、エクセルで作ろうと思います。
1ページごと出力してフリーソフトで結合すると、12時間くらいかかっていたので、エクセルのPDF結合だとAcrobatPro
が必要になるそうなので、この方法もできません。

>>984
シート上に帳票を作り、その帳票をページごとに書き換えています。試していませんが、1シートだと行数が足りないです。
それと、ページごとに罫線とかの書式を作るのはつらいです。

986デフォルトの名無しさん (ワッチョイ 4549-1etN)2020/08/29(土) 14:17:55.39ID:dZuEnb/K0
>>985
12時間かけて作った12000ページのPDFは実用に耐えてるの?
それ、手段の一つが目的になっちゃってない?

987デフォルトの名無しさん (ワッチョイ 11b3-u9FC)2020/08/29(土) 14:32:50.04ID:D+h94FkM0
>>985
よくわからないけど、何とかデータをエクセルの表にして、ワードの差し込み印刷でやる、とかはどう?

988デフォルトの名無しさん (アウアウエー Sa0a-Rexm)2020/08/29(土) 14:38:51.56ID:fy0wFynXa
PDF1ファイルにする理由はあるの?
120ファイルぐらいに分けるでしょ普通

989デフォルトの名無しさん (ワッチョイ 822f-8BP0)2020/08/29(土) 14:42:09.88ID:1Tm3n33G0
伝票とかだと保存義務とかあったりして、出力しておいておかないとダメな時もある

1シートで収まらないならある程度で分割してやるしかないし
罫線とか決まったフォーマットならコピーするだけ

が、EXCELでやるのが間違ってるな
ちゃんとした帳票ツール買って対応する言語使えよ

990デフォルトの名無しさん (ワッチョイ 4d63-gth/)2020/08/29(土) 16:14:59.78ID:EjHgD7140
PDF化って言われても実コマンド書かなきゃアドバイスのしようもないわな

991デフォルトの名無しさん (ワッチョイ 0d7c-JMbW)2020/08/29(土) 19:10:04.48ID:91aO+zvA0
シートにまとめられない理由は?
まとめないとして、12000シート作れるスペックはあるのか?

992デフォルトの名無しさん (ワッチョイ 06c9-1etN)2020/08/29(土) 22:40:12.57ID:LkUYL8wZ0
>>961
これ、マジで困るわ・・・


lud20200829233428
このスレへの固定リンク: http://5chb.net/r/tech/1593104489/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「Excel VBA 質問スレ Part67 ->画像>12枚 」を見た人も見ています:
Excel VBA 質問スレ Part66
Excel VBA 質問スレ Part68
Excel VBA 質問スレ Part61
Excel VBA 質問スレ Part49
Excel VBA 質問スレ Part50
Excel VBA 質問スレ Part70
Excel VBA 質問スレ Part65
Excel VBA 質問スレ Part69
Excel VBA 質問スレ Part71
Excel VBA 質問スレ Part37
Excel VBA 質問スレ Part62
Excel VBA 質問スレ Part60
Excel VBA 質問スレ Part59
Excel VBA 質問スレ Part64
Excel VBA 質問スレ Part47
Excel VBA 質問スレ Part75
Excel VBA 質問スレ Part77
Excel VBA 質問スレ Part72
Excel VBA 質問スレ Part74
Excel VBA 質問スレ Part76
Excel VBA 質問スレ Part54
Excel VBA 質問スレ Part51
Excel VBA 質問スレ Part57
Excel VBA 質問スレ Part63
Excel VBA 質問スレ Part56
Excel VBA 質問スレ Part58
Excel VBA 質問スレ Part53
Excel VBA 質問スレ Part48 [無断転載禁止]
Excel VBA 質問スレ Part82 (22)
Excel Python 質問スレ
Excel VBA 質問スレ Part80(ワッチョイあり) (88)
Excel ピボット Power Pivot DAX関数 質問スレ
DELL SC4x0 T10x 質問スレ Part1
Angel Love Online 質問スレ Part27
【TESO】The Elder Scrolls Online 質問スレ Part27
【RIFT】 Rift: Planes of Telara 質問スレ Part5
Le Ciel Bleu ル・シエル・ブルー 質問スレ Part13
【TESO】The Elder Scrolls Online 質問スレ Part24
Access VBA 質問スレ Part1
Access VBA 質問スレ Part2
【FM】Football Manager 質問スレ 36
【FM】Football Manager 質問スレ 37
【FM】Football Manager 質問スレ 34
Counter-Strike: Global Offensive 質問スレ Part3
Tasker 質問スレ 17
gdi++.dll 質問スレ 1px
d払い 質問スレ Part1
PSVita 質問スレ part2
PSVita 質問スレ part5
PSVita 質問スレ part3
PSVita 質問スレ part4
PSVita 質問スレ part7
PSVita 質問スレ part8
PSVita 質問スレ part6
PSVita 質問スレ part1
Warframe 質問スレ RANK32
ポケモンGo 質問スレ Lv.44
11:29:56 up 23 days, 12:33, 2 users, load average: 10.00, 9.16, 9.15

in 0.030096054077148 sec @0.030096054077148@0b7 on 020601