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


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

Excel VBA 質問スレ Part68



1 名前:デフォルトの名無しさん [2020/08/30(日) 11:55:27.33 ID:Oy/VxFsh0.net]
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付ける

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

※前スレ
Excel VBA 質問スレ Part67
https://mevius.5ch.net/test/read.cgi/tech/1593104489/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

2 名前:デフォルトの名無しさん mailto:sage [2020/08/30(日) 12:04:22.80 ID:y5djTSPl0.net]
IEの代わりは何使えばいいの?

3 名前:デフォルトの名無しさん mailto:sage [2020/08/30(日) 12:07:17.32 ID:IcnEVpl4a.net]


4 名前:デフォルトの名無しさん [2020/08/30(日) 12:41:50.27 ID:wybDtxdZd.net]
以下の特徴を持つ書き込みは無視するか罵倒されます。

・「教えて」「助けて」で始まる質問者の頭が悪いことが容易にわかる質問
・自分で考えるともせず全部作ってもらおうとする厚かましい質問
・VBA、マクロに関係ないExcelの質問
・自分のために利用するだけ利用してやろうと、後出しで条件を付け加える人

5 名前:デフォルトの名無しさん [2020/08/30(日) 20:36:42.00 ID:Cc0wen40a.net]
Testフォルダの中に複数のテキストファイルがあり、それぞれのテキストファイルの中身を1つのエクセルシートに取り込みたいのですが、うまくいきません。
test()をfunc()の中で使えないか考えています。
Sub fun()
Dim fso, file, files
Dim folderPath As String: folderPath = "G:\Test\"
Set fso = CreateObject("Scripting.FileSystemObject")
Set files = fso.GetFolder(folderPath).files

For Each file In files
Dim wb As Workbook
'Set wb = Workbooks.Open(file)

Dim ts As Object
Set ts = fso.OpenTextFile(file, ForReading)

'Call wb.Close(SaveChanges:=False)

Next file
End Sub

6 名前:デフォルトの名無しさん [2020/08/30(日) 20:37:09.10 ID:Cc0wen40a.net]
Sub test()
Dim folderPath As String: folderPath = "G:\Test\"
Dim textLine, fileName As String
Dim fileToOpen As Integer
Dim i As Integer
fileName = folderPath & "01.txt"
fileToOpen = FreeFile()

Open fileName For Input As fileToOpen

i = 1

While Not EOF(fileToOpen)
Line Input #fileToOpen, textLine
Cells(1, i).Value = textLine
i = i + 1
Wend
End Sub

7 名前:デフォルトの名無しさん [2020/08/30(日) 21:02:31.41 ID:Cc0wen40a.net]
すみません。何とか事故解決しました。
もしこう書けばより良いとアドバイス頂けたら幸いです。
Sub fun()
Dim fso, file, files
Dim folderPath As String: folderPath = "G:\Test\"
Set fso = CreateObject("Scripting.FileSystemObject")
Set files = fso.GetFolder(folderPath).files

Dim j As Integer

For Each file In files
Dim wb As Workbook
'Set wb = Workbooks.Open(file)

Dim ts As Object
Set ts = fso.OpenTextFile(file)
Dim i As Integer: i = 1
j = j + 1
Do Until ts.AtEndOfStream
Cells(j, i).Value = ts.ReadLine
i = i + 1
Loop
ts.Close
'Call wb.Close(SaveChanges:=False)
Next file
End Sub

8 名前:デフォルトの名無しさん (ワッチョイ 29e5-pBCo) mailto:sage [2020/08/30(日) 22:17:56 ID:dZGkK/a70.net]
入門レベルで横槍入れるようで申し訳ないのですが
forループ以前とループ内でのDim〜は何が違いますか?

9 名前:デフォルトの名無しさん mailto:sage [2020/08/30(日) 23:52:40.61 ID:RQLT4uuu0.net]
>>8
違いは見やすさだけ
機能はどこに書いても同じ
マイクロソフトは最初にまとめて書けと言ってる

10 名前:デフォルトの名無しさん mailto:sage [2020/08/30(日) 23:59:24.87 ID:RQLT4uuu0.net]
>>7
宣言と初期化を一度に書きたくなる気持ちはわかるけど、マルチステートメントはやめた方がいい



11 名前:デフォルトの名無しさん (ドコグロ MMca-ftwo) [2020/08/31(月) 00:06:45 ID:SE//WJVaM.net]
誰に言われるまでもなく上に全部まとめて宣言しているわ
違うプロシージャにそのままコピペで流用して使わないのは消すだけ

12 名前:デフォルトの名無しさん (ワッチョイ c13d-7m6G) mailto:sage [2020/08/31(月) 00:13:33 ID:TQg4kwht0.net]
>>7
Cellsの前にはワークシート名書いといた方が絶対にいいよ
CodeNameでいいから前に書いときな

13 名前:デフォルトの名無しさん mailto:sage [2020/08/31(月) 19:07:17.70 ID:Lt7FggAF0.net]
B列に"2020/8/1"のように日付が入っていて
B列に"発行日"&和暦を入力したいのですが、年・月・日がそれぞれ1桁の場合は頭に0が入ってしまします。
1桁の場合は、0の代わりに半角スペースにしたいのですがどう書けばいいですか

Dim r As Long

For r = 1 To Cells(Rows.Count,1).End(xlUp).Row
Cells(r,2).Value = Format(CDate(Cells(r,1)), "ggge年m月d日")
Next r

14 名前:デフォルトの名無しさん (アウアウウー Sa85-7m6G) mailto:sage [2020/08/31(月) 19:10:36 ID:ZuoShitIa.net]
>>13
Month関数使えば判定できるとか

15 名前:デフォルトの名無しさん (アウアウエー Sa0a-ifKp) [2020/08/31(月) 19:11:34 ID:0S1gXD8ua.net]
>>10
>>12
助言ありがとうございます。

16 名前:デフォルトの名無しさん mailto:sage [2020/08/31(月) 20:25:23.41 ID:Zj98ZIJ+0.net]
>>13
For r = 1 To Cells(Rows.Count, 1).End(xlUp).Row
  Cells(r, 2).Value = Replace(Replace(Format(CDate(Cells(r, 1)), "ggge年mm月dd日"), "年0", "年 "), "月0", "月 ")
Next r

17 名前:デフォルトの名無しさん mailto:13 [2020/08/31(月) 21:02:20.59 ID:Lt7FggAF0.net]
>>16
ありがとうございます

18 名前:デフォルトの名無しさん mailto:sage [2020/09/01(火) 16:02:43.57 ID:IEy7mEwuM.net]
vba実行時
実行時エラー2147467259(80004005)エラーを特定できません
が出ます。
半月前は出ませんでした。
どうすれば良いでしょうか。

具体的に申しますと
pdfをテキストにコンバートする関数に
入った直後に出ます。
Dim objAcroApp As New Acrobat.AcroApp
Dim id As Long
id=objAcroApp.Show←ここで出ます

事情がありスマホで手打ちしました。
見苦しくすみませんがよろしくお願い申し上げます

19 名前:デフォルトの名無しさん mailto:sage [2020/09/01(火) 19:54:21.29 ID:GHp5MfoEM.net]
小計シートのA列に日付があります
1.メニューシートでリストボックスを設置して、そこに小計シートのダブりを省いた日付を入れて選択できるようにしたいです
2.メニューシートの実行ボタンを押すと選択した日付の行全てを結果シートに出力したいです

どのような関数を使えば1、2を実現できるのでしょうか?

20 名前:デフォルトの名無しさん [2020/09/01(火) 20:49:46.16 ID:4J5+lU0z0.net]
神経衰弱を作っています
Image1~52を並べて全てのImageにクリックされた時の処理を記述しているのですがImageがクリックされた時の処理をひとつにまとめる方法はないでしょうか?



21 名前:デフォルトの名無しさん mailto:sage [2020/09/01(火) 21:43:46.76 ID:rkSCdRtt0.net]
>>20
1つにまとめて、どこをクリックされたかは座標で特定するとか。

22 名前:デフォルトの名無しさん mailto:sage [2020/09/01(火) 21:46:04.84 ID:rkSCdRtt0.net]
>>18
vbsでも同じエラー出る?

23 名前:デフォルトの名無しさん (ドコグロ MMca-yRqa) [2020/09/01(火) 21:59:11 ID:o1zup8QpM.net]
>>20
Imagename = Application.Caller
i = Mid(Imagename, 6)

あとは、Select Caseで割り振る

24 名前:デフォルトの名無しさん (ワッチョイ 0d7c-JMbW) mailto:sage [2020/09/01(火) 22:12:33 ID:0zlN/jAw0.net]
>>20
マクロ登録に引数を付けるかApplication.Callerを使う

25 名前:デフォルトの名無しさん (ワッチョイ 4d10-t21d) [2020/09/01(火) 22:24:18 ID:4J5+lU0z0.net]
Application.callerよさそうですね
使ってみます
ありがとうございました

26 名前:デフォルトの名無しさん mailto:sage [2020/09/02(水) 02:29:09.58 ID:wtN1DZWS0.net]
>>19
一気に答えがで関数があると思うな

27 名前:デフォルトの名無しさん mailto:sage [2020/09/02(水) 02:29:31.03 ID:wtN1DZWS0.net]


28 名前:デフォルトの名無しさん mailto:sage [2020/09/02(水) 04:35:56.53 ID:A3FRNSa90.net]
>>20
一度、VBA コントロール配列 あたりでググってみると良いかもしれない

29 名前:デフォルトの名無しさん (スププ Sd7f-2VA6) mailto:sage [2020/09/02(水) 06:20:17 ID:PYA1799od.net]
>>20
クラス作ってWithEventsおすすめ。

30 名前:デフォルトの名無しさん [2020/09/02(水) 20:49:21.06 ID:hWT8nCmb0.net]
神経衰弱を作っています
カードを2枚裏返して2枚の数字が同じだった
Image1.visible = falseで2枚を非表示にしています
ゲーム途中でコマンドボタンを押すと1から13までのランダムな数字の枚数だけ裏面のカードを表にしたいのですが今のコードだと既に非表示になっているカードまで表にする対象になってしまっていて13という数字を引いても5枚しかめくれないみたいな状態になってしまいます
どうすれば既に非表示になっているカードは除いて表面にする処理ができるようになるでしょうか?
ゲーム開始直後の状態であればちゃんと引いた数字分表面にすることができています



31 名前:デフォルトの名無しさん (スフッ Sd7f-7sgX) mailto:sage [2020/09/02(水) 20:58:13 ID:RVYxtb8Vd.net]
非表示の時は表示しなければいいのでは…

32 名前:デフォルトの名無しさん (ワッチョイ 5f1f-W64q) mailto:sage [2020/09/02(水) 21:06:16 ID:wVSDLDLi0.net]
For i = Lbound(arr) to ubound(arr)

next i
配列の中 ファイル名*書込文字。
(0)001*abc (1)001*bca (2)001*dca (3)002*fed の様な配列の処理を

(0)で001.xlsを開いて文字書き込み
(1)開いてあるから文字書き込み
(2)同様
(3)001閉じる002開く文字書き込み

こんな感じに開いてたら閉じる。違うファイルなら閉じて新たに開くってどうしたら
いいですか?

33 名前:デフォルトの名無しさん mailto:sage [2020/09/02(水) 21:08:43.99 ID:0x5o6h4cd.net]
>>32
その処理のどの部分で躓いてんの?

34 名前:デフォルトの名無しさん [2020/09/02(水) 21:43:27.34 ID:M5ACMng3M.net]
>>30
If Worksheets(シート名).Shapes("Image" & カード番号).Visible = False Then

35 名前:デフォルトの名無しさん mailto:sage [2020/09/02(水) 22:11:52.19 ID:0x5o6h4cd.net]
>>34
それだと非表示にしたカートまで表示される

36 名前:デフォルトの名無しさん (アウアウカー Sa9b-vRCQ) mailto:sage [2020/09/02(水) 22:44:34 ID:7eaUdZ9ha.net]
>>30
表裏の切り替えできてるなら裏かつvisibleだけ処理すりゃいいと思う

37 名前:デフォルトの名無しさん [2020/09/02(水) 23:26:58.04 ID:CEKOaVwIM.net]
>>35
じゃあ、trueに変えればいいじゃん

38 名前:デフォルトの名無しさん (ワッチョイ 7f63-3NJ+) [2020/09/02(水) 23:43:34 ID:4SR2iB8C0.net]
>>22
sはこれでエラーが出ませんでしたが
これでテストになっているのか疑問です。。(acrobatを操作しているように見えない
Sub ConvertFile()
Dim objAcroApp
Dim objAcroAVDoc
Dim objAcroPDDoc
Dim id
Dim js
Dim SaveName
id = objAcroApp.Show
id = objAcroAVDoc.Open("PDFへのパス", "")

ちなみに>>18のソースを本日数度起動してみたところ
1回だけ動作成功しましたww
プログラム以外のところに原因があるんでしょうか。

39 名前:デフォルトの名無しさん (ワッチョイ 7f63-3NJ+) mailto:sage [2020/09/02(水) 23:44:24 ID:4SR2iB8C0.net]
sはこれでエラーが出ませんでしたが

vbsは・・・
です。失礼しました。

40 名前:デフォルトの名無しさん mailto:sage [2020/09/02(水) 23:59:58.13 ID:86SCKcxdd.net]
>>37
カードの非表示状態を管理するなりしないと単純にvisibleだけ見ても意味ないよ



41 名前:デフォルトの名無しさん (スプッッ Sdff-W64q) mailto:sage [2020/09/03(木) 07:25:12 ID:VXBXo8cBd.net]
>>33
次のファイルが同一ならそのままで、違うファイルなら閉じて開くの処理の仕方が分かりません。

42 名前:デフォルトの名無しさん [2020/09/03(木) 09:49:18.05 ID:8vHUVo2kM.net]
>>40
visibleプロパティで管理してるんだから問題ないだろ

13回選んで4回裏が出たら17回選べばいいんだよ

43 名前:デフォルトの名無しさん (ワッチョイ 5f80-uomc) mailto:sage [2020/09/03(木) 10:06:52 ID:wpeUBEOu0.net]
>>41
ファイル名保持して、ファイル名が同一ならそのまま、違ったら閉じて開くだけ?isbookopen使うとか?

44 名前:デフォルトの名無しさん (ワッチョイ c7da-XrX+) mailto:sage [2020/09/03(木) 20:23:29 ID:xDfSE2i10.net]
>>38
CreateObject("AcroExch.App")
CreateObject("AcroExch.PDDoc")
しなきゃダメなんじゃ・・。
そういう問題ではない?

45 名前:デフォルトの名無しさん mailto:sage [2020/09/03(木) 20:28:15.84 ID:xDfSE2i10.net]
あと、1回だけ成功したのなら、
馬鹿馬鹿しいと思うかも知れないけど、
DoeventsかSleepを入れてみるとか。

46 名前:デフォルトの名無しさん (ラクッペペ MM8f-qH39) mailto:sage [2020/09/04(金) 12:46:00 ID:lx1E7kKYM.net]
csvをある列でフィルタし
結果を別のブックに貼り付け
csvとして保存したところ
日付+時刻(ゼロ時)の列すべて
5桁の数字になります
どうしたら日付+時刻のままで
いてくれますか

47 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 14:35:51.29 ID:cB2Mz28T0.net]
文字列として貼る

48 名前:デフォルトの名無しさん [2020/09/04(金) 16:31:17.78 ID:9qR3rveJ0.net]
>>46
VBAの話しか?

49 名前:デフォルトの名無しさん [2020/09/04(金) 17:16:17.55 ID:lx1E7kKYM.net]
>>48
はぃ、vbaでそういう処理を書きました

50 名前:デフォルトの名無しさん (アウアウクー MMbb-DxLX) mailto:sage [2020/09/04(金) 19:53:46 ID:F8mRPL3VM.net]
一定間隔でマクロ実行する方法はなんとなくわかるのですが、不規則な間隔(5秒〜90秒)でマクロ実行したいのですが
どんなやり方がありますか?



51 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 20:18:00.24 ID:1AlCas5O0.net]
>>46
日付が5桁の数字って、44078とかだろうけど、
多分フィルタもCSVも関係ない。
値貼り付けしちゃってる。

52 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 20:24:24.36 ID:1AlCas5O0.net]
>>50
Rnd使うのが一般的なんだろうけど、アホな方法を挙げると、
誰かが作った不規則をパク

53 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 20:26:21.57 ID:1AlCas5O0.net]
ってくるとか。
例えばライブカメラの画像をDLして使うとか。

54 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 22:27:33.32 ID:awq2GZ8I0.net]
>>50
マクロの最後にApplication.OnTimeを書く
現在時刻に乱数で秒数を足す

55 名前:デフォルトの名無しさん [2020/09/04(金) 23:53:41.25 ID:3ZUt+s6n0.net]
モジュール1で定義した配列をモジュール2で使うにはどうすればいいですか?
モジュール1でdimではなくpublicで宣言すればいいのでしょうか?

56 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 23:56:30.81 ID:LK01+huQd.net]
なんでそれをやってみないの

57 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 00:15:03.09 ID:oZJVOAAi0.net]
>>51
すべてご推察のとおりです。ありがとうございます。
xlPasteValuesで張り付けてます。
xlPasteAllだと年が月日の後になってしまいます(5/31/2020 0:00)

>>47さんのおっしゃる
「文字列として」貼り付ける設定を発見できません。
""で囲めば文字列として貼り付けられるのでしょうか。

58 名前:デフォルトの名無しさん [2020/09/05(土) 00:15:37.71 ID:wG6iKMy+0.net]
最近また馬鹿が出てきた

59 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 00:20:53.60 ID:dEfSwWqXd.net]
>>57
セルの書式設定

60 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 07:07:58.26 ID:8ZVzqJQh0.net]
CSVで保存したら書式通りで保存されたっけ?



61 名前:デフォルトの名無しさん (ワッチョイ 27ce-n8ne) mailto:sage [2020/09/05(土) 08:05:59 ID:aR6FsABo0.net]
>>60
される

62 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 10:12:38.88 ID:LyoNVqbOr.net]
A1に3、B1に100といれ、実行すると、

3から100行までを非表示にするマクロお願いします

63 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 13:47:16.04 ID:CLMpHe/Q0.net]
基本技術の試験勉強してるのですが、

https://www.fe-siken.com/kakomon/30_aki/pm13.html

この過去問の設問3のマクロの文章の和訳というか、各行がどんな処理をしているのか日本語で説明できる方いませんか

あと、変数iなんですが、なぜiなんでしょう

よろしくお願いいたします

64 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 14:03:42.79 ID:4XqPsYsKd.net]
ループカウンタ用の変数名はとりあえずiにでもしとこうっていう昔からの名残
細かく言うと整数を表すIntegerのi
i、j、k〜nまで順によく使われる

65 名前:デフォルトの名無しさん (ワッチョイ 0701-zmOT) mailto:sage [2020/09/05(土) 14:08:56 ID:CLMpHe/Q0.net]
>>64
ありがとうございます
特にこだわる深い意味は無いのですね
助かります

66 名前:63 (ワッチョイ 0701-zmOT) mailto:sage [2020/09/05(土) 14:19:36 ID:CLMpHe/Q0.net]
何度もレスしてすいません。
問題の文章とVBAのマクロの文章を照らし合わせて回答をみると何となく答えがわかる気がしてきたのですが、

相対(a2,work_line,3)

がなぜ来店状況ワークシートのセルd列のことになるのか分かりません。
3列目なのでcだと思ったのですが…

67 名前:デフォルトの名無しさん (ササクッテロ Spbb-Yyeh) mailto:sage [2020/09/05(土) 14:51:37 ID:OBeOSrHnp.net]
>>64
indexかと思っていたんだが

68 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 15:12:53.61 ID:JRHWh/h7d.net]
>>66
列番号ではなくA列から相対的に数えて何個右の列かってことだろう

69 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 15:15:25.53 ID:jnQOfSyba.net]
>>66
問題見てもないけど、相対って書いてあるからB列から始めてるんじゃ?
と思ったけどレス見ると3次元配列っぽいしよくわからん

70 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 15:16:40.51 ID:YqeHmb95d.net]
相対(A2,work_line)も同じ考え方だぞ?



71 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 15:19:54.14 ID:Xd3OIwcX0.net]
>>63
fortran起源説

72 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 15:20:15.06 ID:YqeHmb95d.net]
vbaに直すとrange("A2").offset(work_line,3)

73 名前:63 mailto:sage [2020/09/05(土) 16:21:30.22 ID:zirZG8//r.net]
>>68
>>72
ありがとうございます!!
理解しました!

74 名前:63 mailto:sage [2020/09/05(土) 16:23:09.92 ID:ZUfl2WLX0.net]
>>70
すいません
そもそもそれもよく分かってなかったのです。
ちなみに良かったらどういう意味が教えて欲しいです。
聞いてばかりで申し訳ありません。

75 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 16:25:38.15 ID:STsU3nz1r.net]
>>64
インデックスじゃないの?

76 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 16:34:57.30 ID:BMRcPhN/d.net]
>>74
列がわかったなら行もわかるはずだが…

77 名前:デフォルトの名無しさん [2020/09/05(土) 17:24:34.57 ID:wG6iKMy+0.net]
>>74
そろそろ消えろ

78 名前:デフォルトの名無しさん [2020/09/05(土) 17:30:09.65 ID:k1PkCOGDM.net]
>>74
相対(a2,行,列)
0の場合は省略可なので
相対(a2,行)とか相対(a2,,列)でもいい

79 名前:デフォルトの名無しさん (スフッ Sd7f-7sgX) mailto:sage [2020/09/05(土) 17:54:39 ID:HmyJ6FBVd.net]
>>78
それはvbaのoffsetの構文であって設問の問題文とは関係ないな

80 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 18:10:48.71 ID:BBnzOe5t0.net]
>>62
の質問内容がひどすぎて
誰もくいつかないなw



81 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 18:23:56.02 ID:eBP4WmWUa.net]
お金が発生するわけでもないし

82 名前:63 (ワッチョイ 0701-zmOT) mailto:sage [2020/09/05(土) 18:58:31 ID:ZUfl2WLX0.net]
>>78
ありがとうございます。
とても助かりました。

83 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 20:42:59.70 ID:XhaSpdgL0.net]
>>62
Range(Rows(Range("A1").Value), Rows(Range("B1").Value)).Rows.Hidden = True

84 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 09:47:35.66 ID:cKQMszzk0.net]
>>57
値で貼り付けるなら、後から
.NumberFormatLocal = "yyyy/m/d h:mm;@"

85 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 09:49:52.25 ID:cKQMszzk0.net]
>>63
答えは簡単だが、質問が難しすぎる。

86 名前:63 mailto:sage [2020/09/06(日) 14:01:01.76 ID:spMqG8Fw0.net]
>>85
上手く質問できなくて申し訳ありません。

全体的な単語の一つ一つの意味が知りたかったのです。

お手隙ならばで構わないのですが、

https://www.fe-siken.com/kakomon/30_haru/pm02.html

この問題の設問3の重みパラメータというのがどう作用して出力Zの値になるのか教えて頂けないでしょうか。

87 名前:63 mailto:sage [2020/09/06(日) 14:02:20.47 ID:spMqG8Fw0.net]
あ、すみません。問題よく読んでませんでした。
これについてはレス直後理解しました。
ごめんなさい( ;ᯅ; )

88 名前:63 mailto:sage [2020/09/06(日) 14:27:55.58 ID:spMqG8Fw0.net]
https://www.fe-siken.com/kakomon/30_haru/pm03.html

この設問1の答えなんですが、この文でどうして結合とか保護者の氏名と住所を抽出するのですか?

89 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 14:33:06.47 ID:PpfBKGYq0.net]
>>84
これで出来ました
ありがとうありがとうありがとううううううううーー

90 名前:デフォルトの名無しさん (ワッチョイ 7f8e-+abr) [2020/09/06(日) 18:43:46 ID:Mql9n0EK0.net]
>>88
死ね



91 名前:デフォルトの名無しさん mailto:sage [2020/09/07(月) 05:30:38.87 ID:OoqPbQfP0.net]
>>90
お前が死ね
ゴミ山猿の屑野郎

92 名前:デフォルトの名無しさん (ワントンキン MMab-AmFM) mailto:sage [2020/09/07(月) 12:55:41 ID:ZbJzmFKoM.net]
>>91
内容も読まずに書くなよクズ。SQLのことだろうが。

93 名前:デフォルトの名無しさん mailto:sage [2020/09/07(月) 18:18:17.86 ID:R5ozSk7c0.net]
ここで質問したらダメだったみたいですね
該当スレとかあるのでしょうか

94 名前:デフォルトの名無しさん mailto:sage [2020/09/07(月) 18:26:10.30 ID:aZP2Fcscd.net]
>>93
egg.5ch.net/test/read.cgi/welfare/1598921138/

95 名前:デフォルトの名無しさん mailto:sage [2020/09/07(月) 18:43:17.53 ID:K46ocmR8a.net]
>>88
これをどこで聞けばいいのかもわからなかったらFE受かるの難しいよ…

96 名前:デフォルトの名無しさん mailto:sage [2020/09/07(月) 20:07:21.03 ID:Yu9E5X6OM.net]
VBA勉強しはじめて、ようやくOutlook連携とかzip圧縮とかやり始めたんだけど
Excelそのものの操作に関する情報と比べて、参考に出来る情報の質も量もガクッと落ちた気がする

やっぱ話題のpythonに切替えたほうが悩まずやれるのだろうか

97 名前:デフォルトの名無しさん mailto:sage [2020/09/07(月) 20:09:11.40 ID:Yu9E5X6OM.net]
質も量も、っていうのはノンプログラマーの自分が探せる範囲って意味です

98 名前:デフォルトの名無しさん [2020/09/07(月) 20:22:49.70 ID:sgrgY4Mk0.net]
zip.exe叩けばええやろ

99 名前:デフォルトの名無しさん (ワッチョイ 5f6d-4jJb) [2020/09/07(月) 20:51:37 ID:/DR3/4oV0.net]
目の前に答えが書いてあっても理解できない、答えだと気付けない
これが「馬鹿には無理」の意味

100 名前:デフォルトの名無しさん (テテンテンテン MM8f-Ccsn) mailto:sage [2020/09/07(月) 21:00:18 ID:Yu9E5X6OM.net]
半年ROMって勉強します押忍押忍押忍



101 名前:デフォルトの名無しさん mailto:sage [2020/09/07(月) 21:22:51.97 ID:JIC+p5t3M.net]
何をしたいかによるけど、Windowsの操作の自動化っていう範疇ならPowerShellおすすめ
Comオブジェクトも使えるよ

102 名前:デフォルトの名無しさん [2020/09/07(月) 21:38:02.53 ID:J1GBImUha.net]
なにがおかしいの?
Sub func()
Dim url As String: url = "https://e-hentai.org/g/1727798/1fbe77a0a2/"
Dim buffer As String: buffer = ""
Dim objLinks As Object
Dim objIE As InternetExplorer
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = False

objIE.navigate (url)
Do While objIE.Busy Or objIE.readyState <> READYSTATE_COMPLETE
DoEvents
Loop

Call WaitFor(3) ' wait for 3 seconds

objLinks = objIE.document.getElementsByClassName("gdtm").outerHTML

Cells(1, 1).Value = objLinks

objIE.Quit
Set objIE = Nothing
End Sub

Function WaitFor(ByVal second As Integer)
Dim futureTime As Date: futureTime = DateAdd("s", second, Now)
While Now < futureTime
DoEvents
Wend
End Function

103 名前:デフォルトの名無しさん mailto:sage [2020/09/07(月) 22:46:01.59 ID:qahfABoQ0.net]
IEはもう無くなるよ

104 名前:デフォルトの名無しさん mailto:sage [2020/09/07(月) 22:49:52.43 ID:744b2nM10.net]
>>102
Dim objLinks As String

105 名前:デフォルトの名無しさん mailto:sage [2020/09/07(月) 22:54:20.72 ID:VQNIMFGd0.net]
>>103
IEの代替え何使ったらいいの?

106 名前:デフォルトの名無しさん (ワッチョイ 27ce-n8ne) mailto:sage [2020/09/07(月) 23:07:32 ID:744b2nM10.net]
>>105
データをダウンロードするだけならブラウザを使わずに直接ネットアクセスした方が早くて簡単
色んな方法があるけどXMLHTTPとかWinHttpRequestとか調べてみ

107 名前:デフォルトの名無しさん (ワッチョイ bfc9-XrX+) mailto:sage [2020/09/07(月) 23:17:00 ID:VQNIMFGd0.net]
>>106
ありがとうございます


'JavaScriptを実行しFormを送る処理
objIE.Navigate "JavaScript:doAction('/文字列')"

みたいなことしないとアクセスできないサイトのデータが取得したいのですが
他に方法ありますか?

108 名前:デフォルトの名無しさん (ワッチョイ e7e6-n8ne) mailto:sage [2020/09/07(月) 23:22:23 ID:sgrgY4Mk0.net]
JavaScriptを読んで何やってるか調べろ

109 名前:デフォルトの名無しさん mailto:sage [2020/09/07(月) 23:49:39.86 ID:744b2nM10.net]
>>107
Form送信は単純なHTTPアクセスで代替できるケースが多いから、これもブラウザを使う必要はない
てか、WEBの構造はVBA関係ないし

110 名前:デフォルトの名無しさん mailto:sage [2020/09/07(月) 23:56:10.64 ID:UwONkXQv0.net]
エクセル2010です。
上書き保存時にすべてのシートでA1セルを選択するようにしたいのですが、
Ctrl+S時とボタンのクリックイベントで挙動が違うことにハマってます。
1枚目シートにactiveXコントロールのボタンを配置し、VBAの構成は以下です。
1. シートモジュール : ボタンのクリックイベントにThisworkbook.saveだけを書いています。
2. ThisWorkbookモジュール : beforeSaveイベントで3を呼び出し。
3. 標準モジュール : 全シートのA1セルを選択するSubプロシージャ。ForEachでまわすだけ。

Ctrl+Sの際は2→3でうまくいきます。
ボタン押下の場合は、1→2→3と流れてはいるものの、なぜか各シートがactivateされなず、activeSheet.Range("A1").Selectが働きません。
1のクリックイベントから直接3を呼び出すのは、うまく行きます。

何故このような挙動になるのか分からず数日ハマってます。
どなたか、ご教示よろしくお願いします。



111 名前:デフォルトの名無しさん [2020/09/08(火) 02:03:49.70 ID:weDKADyMM.net]
>>110
for i= activeworkbook.worksheets.count to 1 step -1
apprication.goto activeworkbook.worksheets(i).range("a1")
next i
activeworkbook.save

スマホ打ちだから綴りミスはあるかも

112 名前:デフォルトの名無しさん mailto:sage [2020/09/08(火) 07:47:00.42 ID:vMdvrooDa.net]
>>110
For eachで全シート回してるならActivateしなくても、
sh.Range("A1")で行けないか?

113 名前:デフォルトの名無しさん mailto:sage [2020/09/08(火) 07:48:01.88 ID:vMdvrooDa.net]
>>112
間違えたsh.Range("A1").Selectだわ

114 名前:デフォルトの名無しさん (ワッチョイ 27da-XrX+) mailto:sage [2020/09/08(火) 10:40:31 ID:C66iYfBu0.net]
>>110
働かないという場合の原因で以下のことを調べてみ

1.実は働いていたがその後に別の動作をしたため働いていないように見える
2.働こうとしたが、なんらかの異常が出て失敗している
3.その処理が実行されていない(on errorやifの条件、イベント発生していないなど)

115 名前:デフォルトの名無しさん mailto:sage [2020/09/08(火) 11:03:00.55 ID:0vfIbeP00.net]
>>105
漏れは、yahoo のログインとか、
Ruby, Selenium Webdriver で、ブラウザを自動操作してる

単純なダウンロード・スクレイピングなら、RubyのNokogiri。
外部コマンドなら、curl, wget

116 名前:デフォルトの名無しさん (ラクッペペ MM8f-dQ4P) [2020/09/08(火) 11:52:57 ID:POT3YWITM.net]
Application.EnableEvents=Falseしてるとか?

117 名前:デフォルトの名無しさん mailto:sage [2020/09/08(火) 16:58:59.99 ID:qXkQmTRa0.net]
“>-1”&i
て書いたときに >-2, >-3... っていうふうに比較値が意図せず負に進むんだけど正の値に足したい場合ってどうすれば良いでしょうか。

118 名前:デフォルトの名無しさん mailto:sage [2020/09/08(火) 18:39:01.86 ID:p9XW8v7Na.net]
>>117
VBAの挙動の問題

-を文字列、1を数値として認識してる

そもそも、-1をダブルクォーテーションで括ってるのは文字列として-1を認識させたい時のみにするのが基本
なので、ダブルクォーテーションを取ってやれば意図通り動くはず

119 名前:デフォルトの名無しさん [2020/09/08(火) 19:07:42.80 ID:Pjd0b/NhM.net]
へー、そんな挙動するんだ。知らなかった

>-11
>-12
>-13
になると思ってたよ

120 名前:デフォルトの名無しさん mailto:sage [2020/09/08(火) 19:08:20.88 ID:E23V8S4o0.net]
>>113
activeじゃないシートはselectできないと思うが



121 名前:デフォルトの名無しさん mailto:sage [2020/09/08(火) 19:10:47.69 ID:E23V8S4o0.net]
>>110
Forの中身が間違ってるとか別のブックを見てるとか
ほんとに選択したいシートが選択されてるか確認した?

122 名前:デフォルトの名無しさん [2020/09/08(火) 20:06:33.41 ID:qXkQmTRa0.net]
>>118
クォーテーション外してやってみたけど上手くいかないです...

初心者なんで拙いですが、一応自分で書いたものをのせます。
既出のデータを整理して2次元チャートを作成する目的です。

Dim cnt As Integer
Dim x As Long
Dim y As Long
x = 0
y = 0

For x = 0 To 10
For y = 0 To 10

cnt = WorksheetFunction.CountIfs(Range("B2", Range("B2").End(xlDown)) "<=" 0 + x, Range("B2", Range("B2").End(xlDown)) ">= -1" & x, Range("C2", Range("C2").End(xlDown)) "<= 0" & y, Range("C2", Range("C2").End(xlDown)) ">= -1" & y)

Cells(x , y) = cnt

Next y
Next x

123 名前:デフォルトの名無しさん mailto:sage [2020/09/08(火) 20:34:38.38 ID:E23V8S4o0.net]
いつも人任せだな…
そのcountifの引数の中身が自分の意図した内容かなんで確認しないの?

124 名前:デフォルトの名無しさん (ワッチョイ 5fb5-/qgI) mailto:sage [2020/09/08(火) 21:43:07 ID:MiWYYVaX0.net]
もう30過ぎて勉強もなぁ…って手が進まない
VBAを知識をパンパンに詰め込んでああこれねって感じでカタカタと打ち込んでプロシージャ作りたいもんだわ

125 名前:デフォルトの名無しさん (ワッチョイ e77c-ALHH) mailto:sage [2020/09/08(火) 21:57:43 ID:E23V8S4o0.net]
考えることを人に丸投げしてるだけで勉強は関係がない

126 名前:デフォルトの名無しさん (ワッチョイ 5fb5-/qgI) mailto:sage [2020/09/08(火) 22:00:12 ID:MiWYYVaX0.net]
人に丸投げというかネットで拾ったものの組み合わせでいつも何とかしてしまう
知識がほとんど入らない
異動希望出してるしなぁ

127 名前:デフォルトの名無しさん mailto:sage [2020/09/08(火) 22:06:16.19 ID:aT8iqlgZ0.net]
エクセルの指定列から3列コピーしてその4列目に挿入して貼り付けた後セルに入ってる値を消すコードをRangeじゃなくてCellsでやりたいです。
clmtar=10
10〜13列をコピー
14列目に挿入
14〜17列目のセルの値クリア。

128 名前:デフォルトの名無しさん mailto:sage [2020/09/08(火) 22:11:08.52 ID:+kf0/gdp0.net]
>>127
コピー後の値を消すの?
元通りになるだけだと思うけど

129 名前:デフォルトの名無しさん mailto:sage [2020/09/08(火) 22:29:42.46 ID:C66iYfBu0.net]
>>126
愚痴る暇があったら入門書かって1ページでもいいから読んでろ

130 名前:デフォルトの名無しさん mailto:sage [2020/09/08(火) 22:34:56.39 ID:MiWYYVaX0.net]
>>129
すんません…なんか職場でおばちゃんがあれも作ってとか調子こいてるだけで
こりゃまた愚痴だわ
これぞ!っていう入門書ありますかね
イチからガチで鍛えてみるかな



131 名前:デフォルトの名無しさん mailto:sage [2020/09/08(火) 22:36:08.93 ID:8mxHLcBxa.net]
>>126
なんとかできてるならそれも実力のうちなのだと思うよ
楽しい、自分ならこうしてみたい、こうしたらどうなるのだろう
とかがないならそこまでだけど

132 名前:デフォルトの名無しさん mailto:sage [2020/09/08(火) 22:40:05.68 ID:MiWYYVaX0.net]
ネットで検索
プロシージャを組み合わせたり簡単なところをイジる
出きたと思ったら会社のメルアドにプロシージャ貼り付けたテキスト送る
会社で組み合わせる
UserFormのボタンに割り当て
これでごまかしつつやってきた
圧倒的な知識が欲しいなぁと

133 名前:デフォルトの名無しさん mailto:sage [2020/09/08(火) 22:47:12.09 ID:C66iYfBu0.net]
>>130
それすら他人に頼るようじゃいつまでたっても進まない

134 名前:デフォルトの名無しさん mailto:sage [2020/09/08(火) 22:50:54.91 ID:E23V8S4o0.net]
今までどおり困ったら初心者ですとか勉強中ですとかで知識ないアピールで人にやらせて突っ込まれたら謎の正当化とどうでもいい言い訳で誤魔化してやっていくんだろうな

135 名前:デフォルトの名無しさん mailto:sage [2020/09/08(火) 22:52:28.72 ID:MiWYYVaX0.net]
ネットで調べてなんとかなってしまう時代のせいだよね
俺は悪くない

136 名前:デフォルトの名無しさん (アウアウウー Sa8b-yCsQ) mailto:sage [2020/09/08(火) 23:27:06 ID:HhRrDF1oa.net]
そういう人が増えてきたからあんまり教えないようにしてる

137 名前:デフォルトの名無しさん [2020/09/09(水) 00:19:56.45 ID:akgtbWjMM.net]
ゆとり世代の特徴だぞ

138 名前:110 mailto:sage [2020/09/09(水) 00:23:30.44 ID:Lvk20igu0.net]
>110です。
書き込み後にいろいろググったところ、いくつかのサイトで
コードからの保存はbeforeSaveイベントが正常に働かない旨の記載がありました。
今回の事象もこれに当たるのかなと考えています。
そんな訳で、ボタンでの保存はenableEventsをfalseにして別処理にしました。
回答くださった皆様、ありがとうございました。

139 名前:デフォルトの名無しさん (ワッチョイ eab5-mjPJ) mailto:sage [2020/09/09(水) 00:53:57 ID:0o8c0VF10.net]
別にここで聞いても答えなんて返ってこないし期待してないのでご安心を

140 名前:デフォルトの名無しさん (ワッチョイ 39e6-Pwf7) [2020/09/09(水) 01:12:42 ID:VoppH/up0.net]
足し算がわかりませんとか言われても入門書でも読めとしか言えないよな



141 名前:デフォルトの名無しさん mailto:sage [2020/09/09(水) 04:06:45.89 ID:Y+JI74HRa.net]
入門書読めと言うとどの入門書がいいか聞いてくるよ

142 名前:デフォルトの名無しさん mailto:sage [2020/09/09(水) 08:19:04.77 ID:z9RILJ2v0.net]
入門書を紹介すると今度はどこで買えばいいか聞いてくるよ

143 名前:デフォルトの名無しさん mailto:sage [2020/09/09(水) 09:27:32.52 ID:8tppu1V70.net]
通販で買えって言うとお金がないって言ってくるよ

144 名前:デフォルトの名無しさん mailto:sage [2020/09/09(水) 09:43:27.85 ID:9AZapVJXM.net]
お金あげると姿をくらますよ

145 名前:デフォルトの名無しさん (ワッチョイ 397c-bL/7) mailto:sage [2020/09/09(水) 10:03:14 ID:I5K9tGVf0.net]
しかも捨て台詞付きで

146 名前:デフォルトの名無しさん mailto:sage [2020/09/09(水) 10:37:20.74 ID:KbsHkxtjM.net]
すみません。ちょっと長くなってしまうのですがTreeViewをいじっているうちに分からない事があったので教えて下さい。
TreeViewの子ノードをD&Dでリストボックスにコピーする動作を作っていたのですが、ドラッグ開始時点のSelectedItemを取得しようとすると1度子ノードをクリックした上でD&Dを行う必要がありました。
その為、既定引数のIPOS,yPOSを使ってHitTestをSelectedItemに代入しようとしました。
しかしそれが上手く動作せず色々調べた結果、
xとyに*15をすると言う記述を見つけ試してみたところ、思い通りの動作を得られました。

しかしながらこの15はなんの15なんだ。他の環境ではこの数値は変わるのか。変わるならば何を元に算出すれば良いのだろうか。
という疑問が浮かびました。
お手数をお掛け致しますがお分かりになる方がいらっしゃいましたらご教授頂けませんでしょうか。

147 名前:デフォルトの名無しさん (ワッチョイ 6a2f-sa+Q) mailto:sage [2020/09/09(水) 14:26:55 ID:dKuEV/F30.net]
まずその15をかけるってどこに書いてあったんだよ

148 名前:デフォルトの名無しさん (アウアウカー Sa55-hUiG) mailto:sage [2020/09/09(水) 16:31:31 ID:0Qh2iKtEa.net]
Windows標準のシステム解像度だとピクセルとTwipsの比率が1:15だからってスタックオーバーフローに書いてあった

149 名前:デフォルトの名無しさん (ラクッペペ MM3e-AH3D) [2020/09/09(水) 17:07:35 ID:cdbk3sfrM.net]
c言語のdefineに相当する文法は無いですか?
constだと違和感がありますので

150 名前:デフォルトの名無しさん (ブーイモ MM8e-+eY2) mailto:sage [2020/09/09(水) 17:36:02 ID:KbsHkxtjM.net]
>>148
助かります
ありがとうございました

という事は使用環境次第では正常に動作しない場合も有り得るって事なのですね。対策を検討してみます。



151 名前:デフォルトの名無しさん mailto:sage [2020/09/09(水) 17:50:55.91 ID:jCqtOC3ba.net]
>>149
どこに違和感があるのかを言わないと案を出せません

152 名前:デフォルトの名無しさん (ワッチョイ 2a1f-ah1O) mailto:sage [2020/09/09(水) 20:59:39 ID:ynJDkc680.net]
>>128
コピー後挿入したら隣に3列追加されてセルの長さもコピーした3列と同じになりますよね?

153 名前:デフォルトの名無しさん (ワッチョイ 397c-bL/7) mailto:sage [2020/09/09(水) 21:05:53 ID:I5K9tGVf0.net]
列幅をコピーすればいいのでは…

154 名前:デフォルトの名無しさん (ワッチョイ 3d3d-PnJR) mailto:sage [2020/09/09(水) 21:18:50 ID:Uey8EdNp0.net]
>>152
幅を一緒にしたいなら最初からそう書けば良かったのに

155 名前:デフォルトの名無しさん (ワッチョイ a95f-Sism) [2020/09/10(木) 00:02:31 ID:a+RPoaYl0.net]
>>149
あなたが思っているC言語のdefineの使い方は、コンパイラが置換するもので、定数の概念とは少し違いますよ?

156 名前:デフォルトの名無しさん [2020/09/10(木) 00:04:04.82 ID:a+RPoaYl0.net]
>>152
そもそも列の挿入操作が必須なのか?

157 名前:デフォルトの名無しさん [2020/09/10(木) 00:05:42.63 ID:a+RPoaYl0.net]
列の挿入なんてあちこちに影響するから、やりたがる理由がわからない。

158 名前:デフォルトの名無しさん (アウアウウー Sa21-zN8f) mailto:sage [2020/09/10(木) 01:40:18 ID:JZj4+m/Aa.net]
条件付き書式が壊れたりすると面倒

159 名前:デフォルトの名無しさん (ワッチョイ a95f-Sism) [2020/09/10(木) 02:24:17 ID:a+RPoaYl0.net]
自分の操作と同じ手順を踏みたいだけなんだろうね

プログラマではない素人感覚

160 名前:デフォルトの名無しさん [2020/09/10(木) 04:18:44.38 ID:026ADmyCa.net]
test



161 名前:デフォルトの名無しさん (ブーイモ MM8e-4twR) mailto:sage [2020/09/10(木) 07:50:51 ID:T4cQI13RM.net]
超初心者なんだけど
配列の中から指定値の近似値の座標を検索するのにいい感じの方法はないでしょうか
(以下、以上、完全一致全て含めての近似値)

162 名前:デフォルトの名無しさん [2020/09/10(木) 08:50:52.35 ID:l+lun8zfM.net]
どうせ大した数じゃないんだろ
総なめしろよ

163 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 09:29:12.78 ID:rdKJuFJTa.net]
>>161
for eachで比較対象値と指定値を全て比較して、結果出力してその中でMIN関数使えば

164 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 10:03:54.29 ID:QatXFD490.net]
>>161
前もってソートした配列作って二分探索か、
配列の値-指定値の絶対値が最小になる値を探す

165 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 10:32:25.89 ID:vUgEJ8vWd.net]
Min(Abs(配列-指定値))

166 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 12:18:21.67 ID:tJgZROmkM.net]
指定値と配列値の差分を絶対値にして比較した場合、
指定値が5だとして
配列  差分(ABS)
4     1
7     2
となり、最小の差分は1とわかる
座標を知りたいので指定値(5)-差分(1)=4となり、配列の中から4を検索して座標を調べればいいのかなって思ってたんだけど
絶対値で出てくると5-1か5+1どっちを検索すればいいか不明じゃないですか?
そこらへんを解決する方法があれば聞きたいです

167 名前:デフォルトの名無しさん [2020/09/10(木) 12:33:38.92 ID:l+lun8zfM.net]
ひとつに絞りたいならお前がルールを決めればいい
お前に決定権がないなら保護者に聞け

168 名前:デフォルトの名無しさん (ワッチョイ 7d01-pVuC) mailto:sage [2020/09/10(木) 12:50:19 ID:/arv21np0.net]
ExcelVBAのフレームワークってないんですか?

PHPやJavascriptはまずフレームワーク覚えるもんだと思うのですが
VBAだとそういうのが見当たらなくって・・・

169 名前:デフォルトの名無しさん (ブーイモ MM81-m2CW) mailto:sage [2020/09/10(木) 12:52:37 ID:sAyQhYLaM.net]
見よう見まねで結構大掛かりなマクロを作った
情シスには程遠い事務の部署で
改善賞1万円
うーんもうちょい欲しかった

170 名前:デフォルトの名無しさん (スフッ Sd0a-EJMP) mailto:sage [2020/09/10(木) 13:06:54 ID:PB4qSPsyd.net]
オフイスを便利に使うためのお手軽言語でフレームワークの勉強とかやってたら非効率な上に大したメリットもない



171 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 13:09:58.25 ID:4uvZuCuyM.net]
フレームワークという意味ではVBAそのものがVB6のOffice向けフレームワーク
さらに言えばExcel向けに特化したものがExcelVBA
他のOfficeソフトにもそれぞれのVBAがある

172 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 13:11:29.05 ID:XKC0VKf0M.net]
>>167
一つに絞りたいというか最も近しい値を知りたいのです
指定値が5のとき、配列が4と7なら4を、3と6なら6の座標を調べたい
1万行は超えるから総なめはちょっと…

173 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 13:21:59.05 ID:4mlwjCSed.net]
>>172
パソコンにとっては「たった」1万行だよ
総舐めが一番簡単だし、開発時間も含めれば一番早い

174 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 13:23:29.76 ID:4mlwjCSed.net]
総舐めでもここでグダグタ言ってる間に結果が出る

175 名前:デフォルトの名無しさん [2020/09/10(木) 13:38:32.36 ID:l+lun8zfM.net]
>>172
は? 質問は4と-4だろ?

もう俺が決めてやるよ
-4にしろ、はい解決

176 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 13:41:25.58 ID:Yq3PJL3D0.net]
セルを弄くり回すとかじゃなくて配列のまま総舐めするなら1万行ぐらいすぐ終わるでしょう
指定した値aの近似値が欲しいなら
If a-x<=Array(i) And a+x>=Array(i) Then
とかで引っ掛かる奴を引っ張り出すなりなんなりすりゃあ良い

177 名前:デフォルトの名無しさん [2020/09/10(木) 13:43:28.62 ID:l+lun8zfM.net]
あ、ごめん
俺が質問を勘違いしてたわ

178 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 13:48:20.19 ID:Yq3PJL3D0.net]
近似値の範囲が不定で最も近い値を探すって言うならRank関数とかLarge関数とかSmall関数使うのも手

179 名前:デフォルトの名無しさん [2020/09/10(木) 13:50:34.65 ID:l+lun8zfM.net]
>>168
各オブジェクトに多数のイベントが設定されているでしょ
windowsのプログラミングはイベントドリブンが基本
ブックが開いた、ボタンが押された、マウスが動いたなどのイベントに対するコードを書いていけばアプリケーションが完成する

180 名前:デフォルトの名無しさん (ワッチョイ 3dad-sCec) [2020/09/10(木) 18:35:00 ID:VdzBOqiR0.net]
すみません今宿題でこれやってるんですけど打ち込んでもなにも出ないのですがなぜでしょう



181 名前:デフォルトの名無しさん (ワッチョイ 3dad-sCec) [2020/09/10(木) 18:36:01 ID:VdzBOqiR0.net]
https://i.imgur.com/poQzyJO.jpg
これです

182 名前:デフォルトの名無しさん (ワッチョイ 6a42-vvkI) mailto:sage [2020/09/10(木) 19:09:29 ID:yo745YZ80.net]
打ち込んだだけで実行してないからじゃね

183 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 19:30:20.82 ID:L0+T18/AM.net]
どこに打ち込んだかも分からないしなんとも

184 名前:デフォルトの名無しさん [2020/09/10(木) 19:46:53.46 ID:cO3BfNoWM.net]
汚えコードだな

185 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 19:55:23.47 ID:T9YJeJvx0.net]
>>166
コードが汚すぎる

186 名前:デフォルトの名無しさん (ワッチョイ 11da-pVuC) mailto:sage [2020/09/10(木) 20:10:09 ID:QatXFD490.net]
>>181
セルの幅や高さは初期状態?

187 名前:デフォルトの名無しさん (ワッチョイ 11da-pVuC) mailto:sage [2020/09/10(木) 20:12:24 ID:QatXFD490.net]
あ、なんでもない

188 名前:デフォルトの名無しさん (ワッチョイ 11da-pVuC) mailto:sage [2020/09/10(木) 20:17:20 ID:QatXFD490.net]
普通に動いたんで入力ミスとか環境の問題かな

189 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 20:49:46.36 ID:Rp5mNNXSd.net]
パズルゲームを作ってます。

セルを奇数列から横2マス選択してドラッグさした場合に、移動先が同じ奇数列から始まる場所なら許可。偶数列から始まる場所に移動した場合は不可にして移動をキャンセルさせたいんですがどうしたら出来ますか?良いEVENTってあるんですかね?

190 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 21:52:44.31 ID:WalExY5Hd.net]
>>180
そのまま入力してちゃんと動いたから、問題文には間違いはない
https://i.imgur.com/kojc0gJ.png

それにしても学校の宿題だとしたらひどすぎるな
先生がこんなに汚いコードしか書けないとか生徒がかわいそう



191 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 21:54:41.31 ID:WalExY5Hd.net]
ああ最後の方に入力ミスあったわごめん

192 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 21:56:12.36 ID:WalExY5Hd.net]
>>189
SelectionChange

193 名前:デフォルトの名無しさん [2020/09/10(木) 21:56:18.66 ID:a+RPoaYl0.net]
>>181
コメント行の終わりにシングルクォーテーションが付いているのは初めて見たw

コメントというより、文字列リテラルに見えてくるw

194 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 21:57:24.01 ID:b8lNN7jK0.net]
>>190
こんな意図がこんなに読みづらいコード初めて見たわ

195 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 22:01:54.82 ID:qPrgFXQ2a.net]
>>181
先生変数宣言しないの?

196 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 22:06:42.97 ID:YMu2GFxia.net]
教師は必ずしもコード書いてた人じゃないししゃあないんちゃう

197 名前:デフォルトの名無しさん [2020/09/10(木) 22:22:10.32 ID:6Lj7sAI40.net]
>>180
馬鹿過ぎる帰れ

198 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 22:28:05.12 ID:WalExY5Hd.net]
>>193
HTMLみたいにコメントが改行で終わるとは限らない言語はまれによくあるけどな
それよりもインデントの汚さと、Cellsのパラメータにx, yを使ってるあたりがめちゃくちゃ気になる

199 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 22:28:20.02 ID:QatXFD490.net]
Kirakira1 のコードにそっくりなのが検索で見るかるけど
そっちでは変数宣言しているw

200 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 22:31:17.53 ID:/qwml5cpa.net]
これか
https://my-tax-nology.com/excel-vba-animation-rnd-function-cells-glitter
>>マクロ(Excel VBA)を使えば、簡単なアニメーションを作ることができます。
>>アニメーションを作っていると楽しいだけでなく、プログラミングのスキルアップに繋がります。

なるほど??



201 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 22:37:08.36 ID:uWh6vQvPa.net]
エクセルVBA は当分なくならないですかね

202 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 22:43:44.96 ID:WalExY5Hd.net]
>>200
VBAを教えてるサイトでコメントをシングルクォートで閉じたりカッコを全角で書くやつなんて世界に一人しかいない
本人ならDimやインデントはちゃんと書くはずだし、完全にパクリだな

203 名前:デフォルトの名無しさん [2020/09/10(木) 22:59:03.63 ID:VdzBOqiR0.net]
180ですなんとかできました。ド素人なんで申し訳ない
このコードはそんなできのいいものじゃないんですか?
先生凄く威圧的でいつもそんなんもわからんのかみたいな喋り方なんすけど

204 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 23:10:15.32 ID:8/CQSYne0.net]
すまん
wsfやhtaでvbs書くとき 'コメント' って書くわ
エディタの色付けがjs用だから

205 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 23:26:05.51 ID:8/CQSYne0.net]
>>203
「なんで乱数を整数化するのにRoundを使ってしまったんですか?」って聞いてみて

206 名前:デフォルトの名無しさん [2020/09/10(木) 23:27:44.84 ID:a+RPoaYl0.net]
他の言語でも行コメントで見出し風にするプロはそれなりにいる。

ただ、初心者に教える人間が行コメント構文を、ブロックコメント構文と同じ使い方をするのは、初心者を混乱させるだけで、何のメリットもない。

207 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 23:29:02.40 ID:b8lNN7jK0.net]
>>203
なんで変数宣言しないんですか?
なんでx1とかわかりづらい命名するんですか?
なんでx1とかを上書きするようなわかりづらい変数の使い方してるんですか?
インデントの使い方に意図はありますか?
6の意味が説明されないとわからないのは不親切ですね

などなど…色々質問してみたらいいよ

208 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 23:31:52.10 ID:ewRWdYKCd.net]
>>203
その先生は、少なくともVBAの知識だけは大したことないことは誰が見てもわかる
ほかの言語のエキスパートでVBAをバカにする人もいるけど、人に教えるんならちゃんとしろと思う

>>199
よく見つけたな

209 名前:デフォルトの名無しさん [2020/09/10(木) 23:31:53.48 ID:a+RPoaYl0.net]
>>205
それもなんか見ると気になるな。コードの順番も変だし、数値の精度やデータ型をわざとヘンテコにしているのかも謎。

210 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 23:33:45.89 ID:ATM2a6JOd.net]
>>205
Rndの定義から考えればIntを使うのが自然だけど、まあそこは100%間違いとは言い切れないからなあ



211 名前:デフォルトの名無しさん [2020/09/10(木) 23:33:50.53 ID:a+RPoaYl0.net]
その先生だと6は数値ではなく数字です!
マジックナンバーって何と言いそうw

212 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 23:34:53.46 ID:ATM2a6JOd.net]
コードのおかしさは、その先生よりコピペ元のサイトの責任だろ

213 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 23:37:35.65 ID:8/CQSYne0.net]
>>212
ドコモロは黙っててくれないか

214 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 23:43:13.95 ID:b8lNN7jK0.net]
>>212
教える側の立場として教材として使うかどうか判断したんだから元のところに責任はねーだろ
なんか改悪もしてるし

215 名前:デフォルトの名無しさん [2020/09/10(木) 23:50:48.35 ID:Q3JELDTy0.net]
ループの外でウエイトしてたら速すぎてキラキラしないんじゃ…。
紙に書いてある方。

216 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 23:52:06.33 ID:2cDIJpauM.net]
>>200
こいつもかなり怪しいな
i, jを宣言してないし、変数をゼロクリアしてるのも謎

217 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 23:53:08.37 ID:/1fuNzSOa.net]
>>215
確かに言われてみれば
キラキラの意味

218 名前:デフォルトの名無しさん (ワッチョイ a95f-Sism) [2020/09/11(金) 01:20:18 ID:66INGyZB0.net]
>>216
本業が税理士なのに、詳しくもないことをひけらかすやつだから、税理士としてもいまひとつの癖のあるやつだと思う。

219 名前:デフォルトの名無しさん (ワッチョイ a95f-Sism) [2020/09/11(金) 01:22:28 ID:66INGyZB0.net]
>>216 彼も他人のパクリなのかもね

220 名前:デフォルトの名無しさん (ワントンキン MM7a-nV8z) [2020/09/11(金) 01:27:34 ID:iTcJm+RBM.net]
ゆとり世代の馬鹿に教えるゆとりかよ



221 名前:デフォルトの名無しさん mailto:sage [2020/09/11(金) 08:33:42.89 ID:L6SxevYWd.net]
>>146
そいつはバグだと思うよ。
Mougで質問してた人がいて、俺も試したけどTreeViewでのD&Dで座標がバグってる。

で、15ってのはそのバグを何とか実情に合わせたものだと思う。
俺もその時似たようなことやって15っていう数字には覚えがある。

222 名前:デフォルトの名無しさん mailto:sage [2020/09/11(金) 09:37:00.89 ID:mn04Qg6+M.net]
>>221
>>146 です。色々調べた結果、TreeViewのMouseMoveやMouseDownのイベントで渡される座標が他のフォームとは異なりピクセルで渡される事が原因でした。
なのでGetDesktopWindow,GetDC,GetDeviceCapを用いてDPIを取得し、
取得した値で1440(1440twips=1Inch)を割り、
その値をピクセル数に掛ける事でポイントでの換算に成功しました。
標準の設定ですとDPIが96になるそうなので1440/96で15、となるようです。

223 名前:デフォルトの名無しさん mailto:sage [2020/09/11(金) 16:13:39.65 ID:qEgHhc430.net]
VB6だとScreen.TwipsPerPixelXってあったんだがなあ

VBAだとPointsToScreenPixelsXとかあるなと思ってみてみたけど、これ、つねに72DPIで計算するっぽいな

224 名前:デフォルトの名無しさん mailto:sage [2020/09/11(金) 18:44:31.89 ID:+9zmYtvxd.net]
>>192
それだと1回めの選択範囲で動いて、移動したら動きますよね?
1回目の行や列を記憶させて2回目で比較する感じですか?

225 名前:デフォルトの名無しさん mailto:sage [2020/09/11(金) 22:11:41.98 ID:L6SxevYWd.net]
>>222
>>223
うん、その辺みんな知ってるけどTreeViewの問題って違ってたと思うんだが。

226 名前:デフォルトの名無しさん [2020/09/12(土) 08:12:41.83 ID:cGm6fMBf0.net]
動的配列に値を追加していきたいのですが要素番号を0ではなく1から始める方法はありませんか?

227 名前:デフォルトの名無しさん mailto:sage [2020/09/12(土) 08:24:59.90 ID:OyGZa+nz0.net]
Sub testtttt()
Dim arr() As Variant

ReDim arr(1 To 1)
arr(1) = 10
ReDim Preserve arr(1 To 2)
arr(2) = 20
ReDim Preserve arr(1 To 3)
arr(3) = 30

MsgBox arr(1) & " " & arr(2) & " " & arr(3)
End Sub

ちょっとはぐぐれよな
https://www.relief.jp/docs/excel-vba-shift-array-index-to-1-start.html

228 名前:デフォルトの名無しさん mailto:sage [2020/09/12(土) 08:28:00.30 ID:FkIM4E0+M.net]
『[ VBA ]「Option Base 1」使うなよな!反論は聞かない!』

229 名前:デフォルトの名無しさん mailto:sage [2020/09/12(土) 15:06:14.92 ID:X8G1U5XY0.net]
アレイリスト使うほうがかんたんじゃね?

230 名前:デフォルトの名無しさん mailto:sage [2020/09/12(土) 20:26:44.99 ID:+6u/uPRn0.net]
先頭を1にするのはセンスないね



231 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 18:06:26.03 ID:YLQY1Qz5r.net]
i++とか+=使えないのマジで不便だな
前置インクリメントもできないし一行でもend ifとかloop書かなきゃいかんしめんどくさくね?
この言語もうちょい進化しないの?

232 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 18:10:50.73 ID:CnoY9xmOM.net]
1行でEnd If書きたくないならThenの後に半角スペースいれたら改行しないで処理書いてみ

++とかは禿同

233 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 18:13:56.53 ID:YLQY1Qz5r.net]
>>232
おおこんなことが、、、
ありがとう!

234 名前:デフォルトの名無しさん [2020/09/14(月) 18:15:50.60 ID:LbAMjRkX0.net]
>>231
馬鹿は死ねよ

235 名前:デフォルトの名無しさん [2020/09/14(月) 19:51:50.83 ID:ZpzZ2vr50.net]
ガイジ君ブチ切れw

236 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 19:57:09.34 ID:lPVfhwtb0.net]
ざわ・・ざわ・・

237 名前:デフォルトの名無しさん [2020/09/14(月) 20:46:20.36 ID:LbAMjRkX0.net]
+=使えるだろうが

238 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 20:54:32.80 ID:P2Bbq2Qk0.net]
使えません

239 名前:デフォルトの名無しさん [2020/09/14(月) 20:56:59.34 ID:LbAMjRkX0.net]
あー、VB.Netスレだと思ってた。スマン、死んでくる。

240 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 21:01:00.11 ID:P2Bbq2Qk0.net]
逝かないで



241 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 21:01:06.64 ID:K/D9SivKp.net]
制御構造は、キーワードの選び方がやや独特だけど、基本的なものについては、概ね他の言語と同等のことはできると思う。
どちらかというと、変数の宣言・定義が一緒にできないとか、配列・コレクションの要素参照が角括弧でなく丸括弧だとか、プロシージャ呼び出しの丸括弧の要否とかの方が不便さを感じるかな。まぁ、これらも慣れと言われればそれまでだが。

242 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 22:06:22.62 ID:9LhT2bwK0.net]
gotoとラベルでできるっちゃあできるけどcontinueとbreakが欲しい

243 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 22:20:37.59 ID:8aASiVNY0.net]
breakは、一応Exit 〜が概ね対応しているのでは(While〜Wendでは使えないけど)?
脱出するループを明示的に指定するので、breakより便利な場合もごくたまにある。もっとも、二重のForループから抜ける場合などは結局GoToに頼ることになるので中途半端ではあるけど。

244 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 23:27:12.72 ID:EMg7ooaX0.net]
俺もたまにラベルでcontinueするけどめちゃくちゃ見栄え悪くて嫌

245 名前:デフォルトの名無しさん mailto:sage [2020/09/15(火) 08:35:58.25 ID:Ny+/GOwEd.net]
>>232
>>233
基本、それは使わないな。
読みやすさとか構造の分かり易さ優先。
勿論、時と場合による。

246 名前:デフォルトの名無しさん mailto:sage [2020/09/15(火) 09:16:48.30 ID:Ty4jOAMY0.net]
ユーザーフォームの2つリストボックスで選択された値を変数に代入する方法を教えてください

■Module1
Public str As String

■ThisWorkbook
Sub tes1()

UserForm1.Show vbModeless
Range("A1").Value = str
End Sub

Sub tes2()
Range("A2").Value = str
End Sub

247 名前:デフォルトの名無しさん mailto:sage [2020/09/15(火) 09:17:03.49 ID:Ty4jOAMY0.net]
■UserForm1
Private Sub UserForm_Initialize()
Dim r As Long
For r = Year(Date) - 1 To Year(Date) + 2
UserForm1.ListBox1.AddItem r & "年"
Next r
For r = 1 To 12
UserForm1.ListBox2.AddItem r & "月"
Next r
UserForm1.Show vbModeless
End Sub

Private Sub OKbtn_Click()
str = Replace(UserForm1.ListBox1.Text, "年", "") & "_" & Replace(UserForm1.ListBox2.Text, "月", "")
Unload UserForm1
End Sub

テストで変数strをA1・A2に入れたいのですが、この方法だとどちらも入りません。

248 名前:デフォルトの名無しさん mailto:sage [2020/09/15(火) 09:33:07.65 ID:q5KWnXWXM.net]
ボタン押してstrに代入するところModule1.strじゃないとダメなんじゃないの

249 名前:246 mailto:sage [2020/09/15(火) 09:45:50.10 ID:Ty4jOAMY0.net]
>>248
試しましたがだめでした

追記
ブックを開いたまま、tes1を2回目に実行するとA1には書き込みますが、
ブックを開いて、1回目のtes1実行ではA1には書き込まれないようです。

250 名前:デフォルトの名無しさん mailto:sage [2020/09/15(火) 09:57:04.92 ID:q5KWnXWXM.net]
モードレスだから
ボタン押した時にUnload UserForm1する前にModule1.tes2を呼び出さないとだ

Sub tes1()
UserForm1.Show vbModeless
End Sub

Sub tes2()
Range("A1").Value = str
Range("A2").Value = str
End Sub



251 名前:246 mailto:sage [2020/09/15(火) 11:27:58.65 ID:Ty4jOAMY0.net]
>>250
ありがとうございました。解決しました

252 名前:デフォルトの名無しさん mailto:sage [2020/09/15(火) 18:56:31.81 ID:Nzz3069/0.net]
AccessVBAを使用しているのですが、標準モジュールを変数に格納する方法がわかりません。
フォームコントロールの様に変数に入れて扱う方法はありませんでしょうか。

253 名前:デフォルトの名無しさん [2020/09/15(火) 19:29:57.34 ID:pZ4d9dfu0.net]
ありません

254 名前:デフォルトの名無しさん [2020/09/16(水) 00:02:05.57 ID:chmz5kZM0.net]
Sub test()
MsgBox Me.TextBox1.Value
Me.Name="a"
Me.Name="Sheet1"
End Sub

1回目の実行 OK
2回目の実行 MsgBoxでエラー
3回目の実行 OK
4回目の実行 MsgBoxでエラー

なんでやねん!

255 名前:デフォルトの名無しさん mailto:sage [2020/09/16(水) 01:13:07.34 ID:fUx+IXsk0.net]
>>254
F8 でステップ実行してみ、あとエラーの内容くらい書いてもよくね?

256 名前:デフォルトの名無しさん mailto:sage [2020/09/16(水) 10:04:16.38 ID:HoY0/Pv80.net]
>>253
ありがとうございます。
フォームを格納できるなら標準モジュールも出来るのかと思って質問しました。
標準モジュール内に書かれた関数の引数として参照先の標準モジュールを渡したかったのですが、別の方法を考えてみます。

257 名前:デフォルトの名無しさん mailto:sage [2020/09/16(水) 18:43:38.23 ID:DJD3HHCL0.net]
動画ファイル(拡張子 mp4,avi等々)の長さ(時間)をvbaで得ること出来ませんかね。
動画用のプログラムでは出ているから何らか手段はあると思うのだけど。

258 名前:デフォルトの名無しさん mailto:sage [2020/09/16(水) 19:23:25.54 ID:u7LyhgECM.net]
>>257
できる
はい、次

259 名前:デフォルトの名無しさん mailto:sage [2020/09/16(水) 19:55:21.82 ID:KOE6L/fW0.net]
>>257
拾い物、動くかどうかは知らん

Sub ボタン1_Click()
Dim Shell, Folder
Set Shell = CreateObject("Shell.Application")
Set Folder = Shell.Namespace(Range("A1").Value)
Fil = Dir(Range("a1").Value & "\*.*")
Rows("5:65536").ClearComments
i = 5
Do While Fil <> ""
For j = 0 To 40
Cells(i, j + 1).Value = Folder.GetDetailsOf(Folder.ParseName(Fil), j)
Next
i = i + 1
Fil = Dir()
Loop
Set Folder = Nothing
Set Shell = Nothing
End Sub

260 名前:デフォルトの名無しさん mailto:sage [2020/09/16(水) 20:18:38.96 ID:pG4LN1Ne0.net]
手を抜くんじゃない!
まじめにヘッダー読み込んで解析しろよ



261 名前:デフォルトの名無しさん mailto:sage [2020/09/16(水) 20:21:47.41 ID:0zA9ovKo0.net]
ファイルのプロパティからは取れない場合もあるよ

262 名前:デフォルトの名無しさん mailto:sage [2020/09/16(水) 21:31:45.86 ID:chmz5kZM0.net]
>>255
今環境ないんだけど、
アプリケーションの定義何とかか、
インデックス何とかか、
オートメーション何とかのどれか。
何か変なものがSetされちゃってるのかと思ったけど、
MeじゃMeしかないよね?

263 名前:デフォルトの名無しさん mailto:sage [2020/09/16(水) 22:10:00.45 ID:jvSIB85Td.net]
>>260
昔、解析したことがある。
aviとかは割と簡単だね。

264 名前:デフォルトの名無しさん mailto:sage [2020/09/16(水) 23:12:03.30 ID:dsrVDQ5Z0.net]
すごく初歩的な質問ですみません

&演算子で文字列と数字をつないで文字列を作った時に
出来上がった文字列に""を付けなくていいのはなぜなのですか?

MsgBox "あいうえお" は""を付ける必要がある
MsgBox "A" & hoge は文字列扱いのはずなのに""を付けて MsgBox ""A" & hoge"のようにしなくていいのが解せません

265 名前:デフォルトの名無しさん mailto:sage [2020/09/16(水) 23:23:17.92 ID:0zA9ovKo0.net]
&とhogeは文字列ではなく演算子と変数

266 名前:デフォルトの名無しさん mailto:sage [2020/09/16(水) 23:24:34.57 ID:0zA9ovKo0.net]
""で囲ったら演算子でも変数でもないただの& hogeという文字列にしかならない

267 名前:デフォルトの名無しさん mailto:sage [2020/09/16(水) 23:48:53.36 ID:dsrVDQ5Z0.net]
ありがとうございます

>""で囲ったら演算子でも変数でもないただの& hogeという文字列にしかならない
なるほど確かにです

では、&演算子でつなぐと文字列扱いになるという認識が間違っているのでしょうか?
それとも文字列扱いにはなるけど上記の理由から外すことになっているという感じでしょうか?

268 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 00:09:43.18 ID:pIQJoJyT0.net]
>>267
その場合、
hogeは文字列として認識してください
という命令を出している
つまり
文字列(”A”) と(&) 文字列(hogeという変数に入っている文字列) を繋ぎ合わせて表示してください
というのが”A” & hoge

269 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 00:09:48.11 ID:MJVBSNKC0.net]
ダブルクォートには引数の囲むような意味はない
引数を囲む記号は丸括弧になる
たとえば X = msgbox("a" & hoge) みたいな書き方になる
返り値をとらない場合は()が省略可能ってだけ

270 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 00:11:18.08 ID:D84tTl8o0.net]
リテラルと変数について調べると理解できるかも



271 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 00:13:09.47 ID:ncMNPksn0.net]
>>267
hoteの型は何なんだ

272 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 00:21:16.12 ID:0EHVBisp0.net]
値に型ってのがあるのを理解しよう
表示したいのは、"A"という値と変数hogeの値(を連結したもの)だろ

&演算子でつなぐと文字列扱いになるってのは、演算対象を文字列に変換して結合するってこと
この場合、hogeの値が文字列以外でも文字列に変換して評価するってことだ

基本を理解したいなら、なんの説明もなく&でつなぐと文字列扱いとかいう教え方するところは避けたほうが良いかな
とりあえず動けばいいってならまあすきにすればいいけど

273 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 02:20:25.53 ID:c2bYLY/G0.net]
MsgBoxの第1引数は文字列型の値である必要があり、文字列型の値を表す式として典型的なのは、@文字列リテラルか、A文字列型の値が格納されている変数(文字列型変数)の参照。二重引用符は、文字列リテラルの表記方法に過ぎない。
&演算子は、本来、2つの文字列型の値を被演算数とする演算子だが、被演算数が文字列型の値と数値型の値であるような場合等は、適宜数値の方を文字列型の値に自動変換した上で本来の演算を行う……ということかと。重複になるが。

274 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 04:55:16.59 ID:PzgKRL2g0.net]
数値を文字に変換するなら CSTR がある

275 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 07:47:55.65 ID:iixTl117d.net]
>>267
法則を暗記するからそうなる。
法則の仕組みを覚えるんだ。

276 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 11:44:40.11 ID:1/N+zsdG0.net]
同じフォルダにある"〇〇"というCSVを開いて、そのシートの最終行を取得したいのですが
「インデックスが有効範囲にありません」というメッセージでとまります

Sub salegrp()
Workbooks.Open ThisWorkbook.Path & "\〇〇", ReadOnly:=False
MsgBox Sheets("〇〇").Cells(Rows.Count, 1).End(xlUp).Row
End Sub

他のブックの最終行を表示する方法を教えてください
(A列には最終行まで値が入っています)

277 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 11:54:47.91 ID:DZPRMbPmM.net]
csv開いたてからActiveWork ook.ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Rowすれば

278 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 12:14:37.64 ID:qGYgSA/Y0.net]
>>276
必要なのは最終行に入ってるデータの内容?行数を知りたいだけ?
全データをワークシートに入れる必要がなければテキストファイルとして開いた方が早いかも

279 名前:デフォルトの名無しさん [2020/09/17(木) 12:24:52.75 ID:D1QZID39M.net]
Workbooks.Openの返り値をとってそれを操作する

なおRows.Countも省略せずにシート指定する

280 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 13:03:15.94 ID:1/N+zsdG0.net]
>>277
できました。



281 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 16:10:59.23 ID:mN4YvgPv0.net]
>>267
Sub tessstttt()
Dim str1 As String
Dim str2 As String

str1 = "あいうえお"
str2 = "かきくけこ"

MsgBox str1 & str2 '結果「あいうえおかきくけこ」

MsgBox str1 & "かきくけこ" '結果「あいうえおかきくけこ」

MsgBox "あいうえお" & "かきくけこ" '結果「あいうえおかきくけこ」
End Sub

282 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 16:17:02.54 ID:mN4YvgPv0.net]
>>279

VBA続けるつもりならこっちでやれるようにした方が

283 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 16:44:05.17 ID:T9Rqn+gv0.net]
他のbookやsheet絡むととたんに冗長になるんだよなぁ
Range(.Cell(a,b))とか .Cellの前にもブックやシート指定しないとならんし

284 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 17:02:14.36 ID:pIQJoJyT0.net]
>>283
むしろ1シートだけしか使わない場合でも、実効中に人がシート変更とかしても大丈夫なようにブック明記した方がいい

285 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 17:07:16.63 ID:N0wmq1hya.net]
ブックとシート明示してworksheetオブジェクトの変数作ってそれ経由でアクセスさせるのが鉄板かね〜

286 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 17:41:26.80 ID:dgD4TP5z0.net]
csvの最終行だったらテキスト形式でEOFまで吸い上げてってやった方が動作時間的には良さそうな気がした

287 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 18:04:52.95 ID:aPn4iHhdM.net]
CSVの読み込みをしっかりやるならPowerQuery使おうみたいな話もあったりなかったり

288 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 18:51:11.07 ID:1zO/WKqm0.net]
>>285
てか、基本でしょ

289 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 18:59:48.75 ID:DNVG/ozSa.net]
>>288
鉄板と基本の違い教えて

290 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 19:13:46.34 ID:ncMNPksn0.net]
シート明示してないコードほんと多い
よくやるわ



291 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 19:55:58.19 ID:iixTl117d.net]
>>279
俺なんて、必ずBookから書くぜ。
WithとSetを多用することになるが。

292 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 19:56:59.36 ID:iixTl117d.net]
>>283
その例ならRangeの前にも"."が必要。

293 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 19:58:31.27 ID:iixTl117d.net]
>>286
うん、CSVはLine Inputで1行ずつ+Splitで分解にすることが多い。

294 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 20:23:48.98 ID:dgD4TP5z0.net]
VBA覚えたての頃はいちいちアクティブシート切り替えてシート指定省いてたけど
Sheet1.Cells(a,b)って書く癖は絶対つけといた方が良いって今は思ってる
可読性が段違いだもん
暫く同じシートのセルをいじくりたおすならWithで目立つように囲ってやりゃあ良いし

295 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 20:32:12.03 ID:0EHVBisp0.net]
>>286
項目中に改行含むcsvとかも存在するからなぁ
汎用的なcsvを真面目にパースするとかなり面倒
そしてEXCELは最強のCSVパーサ(笑)

296 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 20:38:51.87 ID:23KXp+DW0.net]
なんつーレベルの高い話だよ
初心者が覚えようと思ってどんなもんかとスレを見たのが大間違いか

297 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 21:39:36.45 ID:ncMNPksn0.net]
この先いつまで初心者を名乗るつもりか知らないがいちいちアピールしない方がいいよ

298 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 21:45:39.26 ID:DqUtQRPA0.net]
>>294
可読性以前に怖いんだよな。
アクティブシートが切り替わっちゃったらどうしようって。
実行中の操作とかで。
DoEvents挟まなきゃ絶対切り替わらないってならいいんだけど。

299 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 22:36:46.26 ID:qGYgSA/Y0.net]
可読性も考慮するならオブジェクト変数に入れたりWithで囲んだり、頻出する構文なら別Functionに飛ばすという手もある
めんどくさいけどバグを出すよりはマシ

300 名前:デフォルトの名無しさん mailto:sage [2020/09/18(金) 01:50:57.23 ID:V3SekzLi0.net]
そもそもオブジェクト指定のないCellsがいつでもActiveSheetを参照すると思うなよ

シートモジュールに書いたCellsはそのシートを参照するんだぜ



301 名前:デフォルトの名無しさん mailto:sage [2020/09/18(金) 10:32:05.02 ID:68qBgcmgH.net]
VBAというよりVBSかもしれませんが
いろいろ試したのですが正規表現の(肯|否)定(先|後)読みに対応していないようなのですが認識に相違ありませんか?
また、擬似的に(肯|否)定(先|後)読みに対応させたコードを誰か公開していませんか?

302 名前:デフォルトの名無しさん mailto:sage [2020/09/18(金) 14:09:52.14 ID:1dkG1MHP0.net]
>>301
多くのアプリで、正規表現はWindowsに標準で内蔵されてるDLLを使ってる
独自の仕様やバグがあるのは既知だから、それが気に入らない時は別のライブラリを見つけてくるしかない

303 名前:デフォルトの名無しさん mailto:sage [2020/09/18(金) 17:55:04.61 ID:vGT+RG4a0.net]
VBSはスレ違いになるんだろうけどさー
今、仕事でそれで書かれたコード見てるんだよねー
VB.NetからVBAに戻るとそのインテリセンスの効かなさに辟易するけど
VBSで書かれたものはその比じゃないねー

参照もなーんも効かないところに持ってきて
インデントも正しく書いてないし
綺麗にスパゲティーコードになってるの見ると
殺意を覚えるわー

まぁVBS自体は同じファイルの中に
複数のクラスが書けたりするところは
VBAよりいいのかな?

304 名前:デフォルトの名無しさん mailto:sage [2020/09/18(金) 20:53:29.32 ID:Ej6zlwK4a.net]
見てるだけで殺意はないだろ
自分で分かりやすく直していけばいい

305 名前:デフォルトの名無しさん mailto:sage [2020/09/18(金) 20:57:08.45 ID:E6dIN4Hja.net]
どんな人が書いたコードでも理解できるのがプロ

306 名前:デフォルトの名無しさん mailto:sage [2020/09/18(金) 20:57:17.16 ID:nL5nIenz0.net]
C列に"2007/3/26"などのような書式で年月日が入っていますが
それをC=年、D列=月、E列=日にしたいのですが

↓だと年が1905,月が1、日が26日のように変換されてしまいます。

Dim r As Long, dt As date
For r = 2 To 435
dt = CDate(cells(r,3))
Cells(r, 3) = Year(dt)
Cells(r, 4) = Month(dt)
Cells(r, 5) = Day(dt)
Next r

307 名前:デフォルトの名無しさん mailto:sage [2020/09/18(金) 21:01:25.47 ID:vGT+RG4a0.net]
>>306
最初date型で取ってやれば確か年や月や日を取る関数が有ったと思うよー
じゃあねー

308 名前:デフォルトの名無しさん mailto:sage [2020/09/18(金) 21:05:10.29 ID:3fDNLBctH.net]
>>302
私が気に入りそうなものはありますか?
肯定先読み肯定後読み以上に高度な機能は求めていないのですが

309 名前:デフォルトの名無しさん mailto:sage [2020/09/18(金) 21:10:13.79 ID:vGT+RG4a0.net]
ていうかそうしてんじゃん
出力先のセルの書式はどうなってるの?
コードを見た感じじゃ少なくとも3列目は
日付型みたいだけど

310 名前:デフォルトの名無しさん mailto:sage [2020/09/18(金) 21:14:07.50 ID:Kp8J/oyZ0.net]
>>306
year、month、dayの引数のdtの中身は2007/3/26ではない



311 名前:デフォルトの名無しさん mailto:sage [2020/09/18(金) 21:16:37.69 ID:Kp8J/oyZ0.net]
または3、4、5列目の表示形式をそれぞれy、m、dにしてる

312 名前:デフォルトの名無しさん mailto:sage [2020/09/18(金) 21:29:41.49 ID:LhaPjq300.net]
>>306
考えなしに書くからセンス皆無なコードだけど3列目の日付が文字列で入ってるならこんなんどうよ

Dim Ary(2 to 435,1 to 3) As Long,r As Long, a As String
For LBound(Ary,1) to UBound(Ary,1)
a = Sheet1.Cells(r,3).Value
Ary(r,0) = Split(a,“/“)(0)
Ary(r,1) = Split(a,“/“)(1)
Ary(r,2) = Split(a,“/“)(2)
Next

Range(Sheet1.Cells(2,3),Sheet1.Сells(435,5)) = Ary

313 名前:デフォルトの名無しさん mailto:sage [2020/09/18(金) 22:40:09.47 ID:1dkG1MHP0.net]
>>306
Sub Macro1()
  Range("C2:C435").Copy
  Range("D2:E435").Select
  ActiveSheet.Paste
  Range("C2:C435").NumberFormatLocal = "yyyy"
  Range("D2:D435").NumberFormatLocal = "m"
  Range("E2:E435").NumberFormatLocal = "d"
End Sub

314 名前:デフォルトの名無しさん mailto:sage [2020/09/18(金) 22:48:07.19 ID:mNDgEDOXa.net]
>>313
くそこーどを貼るのはやめてあげて

315 名前:デフォルトの名無しさん mailto:sage [2020/09/18(金) 23:02:36.64 ID:V3SekzLi0.net]
>>306
セルに表示されている文字とセルの値は別だって理解が必要

おそらく
C列の表示形式が日付になっているが、そこの値を数値の2007にした
数値の2007は日付にすると1905/6/29 その年だけが表示されている
同様に数値の3は1900/1/3、数値の26は1900/1/26

まあ、想定とは違うかもしれんが正しく動いてると思われるな
解決策は、表示したいのは数値なのか日付なのかちゃんと決めて然るべき値と書式を設定しろ

316 名前:デフォルトの名無しさん mailto:sage [2020/09/18(金) 23:05:29.99 ID:V3SekzLi0.net]
つヵ、C列の値でC列に書き換えるとかしないで
元の値を別の列にもっとけば、VBAなしで関数だけで出来るだろうけど

317 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 04:14:23.53 ID:JSd39pzr0.net]
C,D,E列に表示させたいのは「数値」であるにも関わらず
「日付」の表示形式になっているからおかしくなる

C,D,E列の書式設定→表示形式を日付から標準にする
こうするとC列は39167のような形で表示されることになるが
お構いなしにマクロを動かせば、意図した通りの動きになる

でどう?

318 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 07:38:40.10 ID:kGiNzl5D0.net]
>>305
理解出来るからこそ腹立たしいこともあるよー
例えばaとbとcってBooleanの変数を定義して
a = b = c とか書いてるやつ

まぁbとc が同じならaにTrueが、
違えばFalseが入るってことを期待して
書いてるなら見づらいけどまだ許せるよ
でもcにbが代入されてそのままaにbが
代入されるとか思って書いてたらしく
システムバグらせてそのままにしてたりとか
テストどうしてたんだとか思うよねー

正直こんなのに関わりたくないけど
仕事だからやるって感じだねー

319 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 07:43:05.72 ID:kGiNzl5D0.net]
あ、逆だった
bにcが代入されてaにbが代入されると
思ってたらしいってことね

まぁこの4日間は連休だし
そうじゃなくてもテレワークだから
気楽に適当にやるつもりだよー

320 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 07:51:21.74 ID:oBjg4zik0.net]
仕事の内容でそのソースを直せってことなら書き直せばいいんじゃねーの
そのまま残すと後任者に同じように思われるんだぜ



321 名前:257 mailto:sage [2020/09/19(土) 10:25:54.04 ID:fwfEHGdP0.net]
>>259
遅くなってしまいましてごめん。自分の欲しかった情報がこれで取れる
事ができました。

ありがと!

322 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 15:00:02.54 ID:TN+kKyJDd.net]
>>320
その判断は結構難しい。
今動いてるものは、そのままにしておくというのが通常だ。

Accessでレコードセットループで回してる最中にその値でもって別のレコードセット開いたりを7、8回やって10分かけてデータ作ってるプログラムが有るんだけど、コレ、クエリ1つで出来るんじゃね?と思って試しに作ったら一瞬で出来る。

それでも、正式に変更することになるかと言えばならない。
こっちだってその辺は分かってる。
何かの時に、きちんと作り直しましょうという話になるまで置いとくもんで、むしろそんな話にならずにずっ―とそのままというのが殆ど。

323 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 15:56:27.98 ID:nGfYM+wGM.net]
>>322
なら
> でもcにbが代入されてそのままaにbが
> 代入されるとか思って書いてたらしく
> システムバグらせてそのままにしてたりとか
> テストどうしてたんだとか思うよねー
とか書くなよ
どうせ盛々で語ってるだけだろw

324 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 15:59:42.46 ID:TN+kKyJDd.net]
>>323
いやいや、俺はその人じゃないから。

325 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 16:24:18.56 ID:oBjg4zik0.net]
>>322
重要な変更とは別で、こまかい高速化や最適化として変更するんだよ
それができないなら他人のコードを悪くいってはいけない

326 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 18:06:32.97 ID:kGiNzl5D0.net]
そうかーみんなそんな具合に考えてるのかー
でも悪いけどその場でチャチャっと直すことはしないよ
もちろん上に話を通すのは当然だけど
こんなぐちゃぐちゃな行き当たりばったりのコード書いてんだから直すんなら他への影響調査の時間貰う
まぁ当たり前だよねー

327 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 18:37:26.04 ID:e5zvgWAXM.net]
>>324
本人でもないのに
> でもcにbが代入されてそのままaにbが
> 代入されるとか思って書いてたらしく
> システムバグらせてそのままにしてたりとか
> テストどうしてたんだとか思うよねー
に対して
> 今動いてるものは、そのままにしておくというのが通常だ。
って言うの?
アホの上塗りにしかなってないけど… w

328 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 18:39:28.33 ID:DdZzGNwy0.net]
>>319
実際にそういう動きをする言語もあるからな

>>325
それは開発方法とフェーズによる
いつでも好き勝手コード弄れるような環境ばかりではない
まあ、VBAではあまりないだろうけど

329 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 18:41:22.13 ID:HTxR1ogMM.net]
>>326
お前の会社のレベルが低いだけだろ
まあそんな会社にしかいられない自分を省みたほうがいいなw

330 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 20:51:03.26 ID:kGiNzl5D0.net]
>>329
ふーん
そっちの会社ではそういうの見つけたら
調べないでチャチャっと直しちゃうのかー
よっぽど優秀なんだねー
俺みたいな無能にはとても怖くて出来ないやーw



331 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 21:40:33.28 ID:b3MmLDI3M.net]
>>326
お前以外にチャッチャッと直すなんて言ってる奴いないんだけどw

レベルの話は
> こんなぐちゃぐちゃな行き当たりばったりのコード書いてんだから
の部分な

332 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 22:13:23.39 ID:TN+kKyJDd.net]
>>325
いや、そうじゃなくて…
そうか、確かにVBAはそれでメシ食ってる奴は少ないから分からんかもしれんな。

ウォーターフォールでやってて、プロジェクトの目的が決まってるのに、いくら高速化しても余計なことすれば怒られるのが当然なんだよ。
それが原因で不具合が出てみろ。
大変なことになるんだから。

確かに、思いつきでどんどん改変してく仕事も結構やったことある。

333 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 22:16:29.20 ID:TN+kKyJDd.net]
>>327
開発全般によくある話として言ったまで。
cとかbとかの話に参加したわけじゃない。

動いてるなら、触らないというのはよくあることだ。

334 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 22:21:26.21 ID:TN+kKyJDd.net]
>>328
確かに少ないかもね。
考えてみれば俺も今の職場で初めて。

でも他言語じゃよく聞く話だよな。

335 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 22:26:15.60 ID:cNAZP0Op0.net]
>>333
話の流れが読めないバカということはよくわかった

336 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 22:48:23.19 ID:RlUx9i/e0.net]
どんなに簡単な修正でも、思い込みやミスは誰にでもある
うっかりエンバグする可能性があるから、先方から高速化などの要求がない限りは動いてる物を勝手に修正はしないのが基本かなあ

337 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 23:01:33.58 ID:Q45ivJBB0.net]
修正するか確認してからじゃないとしないな

338 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 01:28:31.38 ID:Hljg9CcL0.net]
>>332
それは逆だ、今のコードが悪いかのを直したせいで不具合がおきるのは直し方が悪いせい
自分できちんと直す能力もない奴が今のコードが悪いとか語るなよ

339 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 01:34:05.40 ID:Hljg9CcL0.net]
というのは言い過ぎなのかもしれんな、直せる自信がないなら直さないでいいんじゃね

340 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 01:38:55.36 ID:Hljg9CcL0.net]
俺から見れば細かい変更もできない人が重要な処理を変更する方が不具合が起きるだろって思うが



341 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 03:34:03.51 ID:G6tFT8m8M.net]
なんで動いてるものの話になってるのかわからんけど元々の話は
> システムバグらせてそのままにしてたりとか
> テストどうしてたんだとか思うよねー
だから、修正ありきだろ
修正の手順はその組織で違うだろうけど

342 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 08:02:49.76 ID:MxR9qqIJa.net]
ここの会話見てると仕事してる時に戻ったみたいでイヤになる

343 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 08:29:09.75 ID:lYpGB0SB0.net]
技術的に可能(can)なのと
プロジェクトとして可能(may)なのはべつだって言ってるんだが

VBA使いを悪く言う気はないが
まともなプロジェクトでやってないから理解できないんだろうな

344 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 09:11:52.63 ID:jB/qzKKfa.net]
内製なら結構気軽に弄るもんだよ
俺は以前はSIにいて今は自社サービス兼社内SEだから両方の立場がわかるけど、
システムって君のような外の人が思ってるほど重要なものでも神聖なものでもない

345 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 09:13:39.89 ID:WRa/xy2u0.net]
だれも技術的に可能かどうかなんて言ってないのに意味不明なことを言い出してて笑う

346 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 10:58:42.70 ID:uHe9qv/N0.net]
企業や仕事がどういうものかを理解していない馬鹿ばっかりで草

347 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 11:39:55.26 ID:bN/HvUsh0.net]
内製でも気軽に弄らないなぁ

348 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 12:04:24.67 ID:WRa/xy2u0.net]
自分とか周りの数人しか使わないとかならリファクタリングで弄るケースもあるし全社レベルのシステムとかなら影響調査からってケースもあるわな
そのプログラムがおかしくなった時の影響度とかも関係するし
要はケースバイケース

349 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 16:05:38.71 ID:Q2tD94P+d.net]
>>338
>>339
先のAccessの話なら直せる自信ならある。
というか、ここにいる奴で俺が出来ないんだったら出来る奴はいないと思うぜ。
それぐらい自信ならある。

ただし、まとも奴なら誰でも言うがバグを出さない自信は無い。

350 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 16:13:52.61 ID:WRa/xy2u0.net]
ふと、

日本人のできません
韓国人のできます
中国人のできました

を信用しちゃダメ
って言うのを思い出した… w



351 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 16:52:11.86 ID:qZo3Wq6A0.net]
>>348
だよな、さすがに自分とか周りの数人しか使わないとかなら
時間見て許可取ってリファクタリングするわ
自分が作ったツールやシステムなら空き時間見て少しづつリファクタリングだな

さすがに全社レベルのシステムで勝手にリファクタリングはないな
そもそも許可取るのが大変

352 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 20:23:41.76 ID:r+WJtgDsM.net]
VBAの後継言語がExcelに標準搭載されると知識も勉強時間も無駄になる
と考えてしまいVBAの学習が捗らないのですが、どうしたらよいでしょうか

353 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 20:29:51.63 ID:w1btmlsr0.net]
開発する能力と言語の習熟は別と考えた方がいいと思うよ
弘法筆を選ばずって言うし

354 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 20:39:12.03 ID:Q2tD94P+d.net]
>>352
そんな風に考えたことは無いなあ。
その時に必要だから覚えるんだよ。

355 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 20:46:14.34 ID:IR23Mwdta.net]
VBAなんて勉強するもんじゃなくて使っていくうちにわかるもんだし

356 名前:デフォルトの名無しさん [2020/09/20(日) 20:55:59.15 ID:6QmidxOBa.net]
セルの中身が
--------------------------
あああ325gsdsが|
aaaojgwe |
33333 |
|
いいksが |
bbb93502g |
^^^^^^^ |
|
|
888っふぁふぁ |
aaawopfjw |
f−bgんlsgさ |
-------------------------|
のような感じの際、「あああ325gsdsが」や「aaaojgwe」のように1行づつ取得する方法はあるでしょうか?

357 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 21:02:07.06 ID:bN/HvUsh0.net]
vblfで分割

358 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 21:04:12.62 ID:w1btmlsr0.net]
セル内の改行コードはCRとLFとCRLFがあるのでどれかに統一して
統一した改行コードでsplitすれば

359 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 21:09:38.60 ID:ce1O3kmIH.net]
VBAやっててもオブジェクト指向が全然身につかないんだけどどうしよう

360 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 21:30:48.40 ID:Q2tD94P+d.net]
>>358
セル内の改行はLFだよ。
キーボード入力ならの話だけど。



361 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 21:31:49.13 ID:Q2tD94P+d.net]
>>359
VBAとは別にオブジェクト志向に親和性のある言語勉強すれば?

それがVBAにも役に立つよ。

362 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 21:35:54.17 ID:w1btmlsr0.net]
>>360
よそからコピペしたりするとLF以外も混じるよ
念のため統一する方が安心

363 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 22:02:19.77 ID:BARJaSzG0.net]
>>359
オブジェクト指向を身につけるためにVBAをやっているのか?

364 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 22:16:21.98 ID:ce1O3kmIH.net]
>>361
>>363
フローチャートは書けても
オブジェクト指向というものがあるということがなんとなく判っていても
じゃあオブジェクト指向できっちり設計しようという発想が浮かばないというかまだ怖さがあるんだよね
MVCって言葉もネットサーフィンをして先週巡り合ったくらいの素人だから
とりあえず新たな設計手法を試そうと思っても
何に手をつければいいかわからん

365 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 22:48:07.21 ID:lUm0Ft460.net]
=EVALUATE()を使ったらマクロだよって保存するときに言われた。
見た目関数なのに実はマクロっていうものが他にどんなのがあるか知りたいんだけど、こういうのなんて言うの?
検索ワードが思い付かないんだけど知ってたら教えて。

366 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 22:53:39.67 ID:Q2tD94P+d.net]
>>364
いや、VBAはあまりオブジェクト志向とは親和性がないんだよ。
VBAそのものの根幹はオブジェクトそのものを扱うし親和性も有るんだけど、それで何かを作る時には俺はあまりオブジェクト志向で作らないな。

それでも、感覚的にピッタリ来るときもある。
そういう感覚の為にも他言語の経験が役に立つ。

でも、VBAでオブジェクト志向って上級者じゃないとピッタリ来ないんじゃないかな。

367 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 23:22:55.87 ID:szIFBvS40.net]
>>365
Excel 4.0 マクロ

368 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 23:26:29.37 ID:lUm0Ft460.net]
>>367
さんきゅー

369 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 23:28:59.95 ID:bN/HvUsh0.net]
>>358
crでセル内改行はしない

370 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 23:29:16.08 ID:pX+ICxi/0.net]
フレームワークどうするよ



371 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 23:30:38.40 ID:szIFBvS40.net]
そもそもVBAが古いMS-BASICの言語仕様をほとんどそのまま踏襲してるもんだからオブジェクト指向との親和性はあんまり高くない
まだVB.netの方が色々やりやすい

372 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 23:38:32.30 ID:wTyEOUZY0.net]
>>369
セルをアクティブにするとCRでも改行するらしいよ
自分はそういうよくわからない挙動に振り回されたく無いから変換するよ

373 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 23:40:59.31 ID:XhiE7Cxv0.net]
>>372
らしいよ

374 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 23:44:11.30 ID:wTyEOUZY0.net]
LFとCRLFが混在するのは確かめたよ
なので片方に寄せてる
CRも混ざる可能性はあるのでついでに処理してるよ

375 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 23:47:19.77 ID:GTzW+qv5H.net]
>>366
なるほどそうなんですね
別言語で勉強してみます

376 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 23:51:14.87 ID:bN/HvUsh0.net]
セル内で改行するとlfが入る
テキストファイルとかでcrlfで改行されたものをセルにコピペすればcrlfがそのまま貼り付けられるが、lf部分が改行されるだけでcrは無視される

377 名前:デフォルトの名無しさん [2020/09/21(月) 23:04:27.19 ID:lAfdaJg/0.net]
もともとマック用のソフトウェアだから、改行コードが揃っていないんだ。

378 名前:デフォルトの名無しさん mailto:sage [2020/09/22(火) 09:46:47.28 ID:9vuxubOza.net]
で、そのままの仕様で残すんだろ

379 名前:デフォルトの名無しさん mailto:sage [2020/09/22(火) 09:47:44.43 ID:9vuxubOza.net]
変に直すと他で問題が起きるかもしれんし

380 名前:デフォルトの名無しさん mailto:sage [2020/09/23(水) 18:03:19.32 ID:a1crOWFAM.net]
今開いてるエクセル3つを左右で3分割させるマクロとかありますか?



381 名前:デフォルトの名無しさん mailto:sage [2020/09/23(水) 18:23:33.24 ID:18wwGwYm0.net]
表示→整列じゃだめなのか?

382 名前:デフォルトの名無しさん mailto:sage [2020/09/23(水) 19:23:23.78 ID:nN1KQy3b0.net]
あるけど、マクロっていうかWindowsAPIで画面サイズ調整だろうな。
3画面用意する方が楽かも。

383 名前:デフォルトの名無しさん mailto:sage [2020/09/23(水) 20:26:43.04 ID:kiC/kEHG0.net]
Windows.Arrange ArrangeStyle:=xlVertical

384 名前:デフォルトの名無しさん mailto:sage [2020/09/23(水) 20:34:38.55 ID:Dfniq8Ns0.net]
>>381
ありがとう
>>383
本当にありがとう

馬鹿すぎる質問して親切に教えてくれて本当に感謝
教えてくれたコードの方を頂きます
3画面揃ったときについでに分割させたら良い動きしてくれました

めちゃくちゃ後付けですみませんが
これを一番右でこいつは真ん中とか
任意の配置は流石に無理ですか?
出来そうなら自分でも何とか調べてみます

385 名前:デフォルトの名無しさん mailto:sage [2020/09/23(水) 21:30:49.65 ID:kiC/kEHG0.net]
>>384
できる

386 名前:デフォルトの名無しさん [2020/09/23(水) 22:06:19.89 ID:gKXTj3UI0.net]
こういう馬鹿の特徴は、少し教えるとつけあがって自分で考えることもせずあれもこれもとねだること
少しは頭を使えよ

387 名前:デフォルトの名無しさん mailto:sage [2020/09/23(水) 22:26:51.67 ID:uvIhcfbN0.net]
特徴っていうかこれいつもの人

388 名前:デフォルトの名無しさん mailto:sage [2020/09/25(金) 20:09:48.08 ID:48EvNsnc0.net]
accdb   → 問題なく型指定出来る。
csv    → schema.iniで型指定出来る。
自シート → どうすんの? IMEX=1も利いたり効かなかったりで当てにならん。

389 名前:デフォルトの名無しさん mailto:sage [2020/09/25(金) 21:07:06.86 ID:1nrszLVg0.net]
そういう報告はいらないです

390 名前:デフォルトの名無しさん mailto:sage [2020/09/25(金) 21:36:41.69 ID:WSuN06d1F.net]
罫線の所属するセルについて質問です

セルの値を条件にして罫線の種類を変えようと考えているのですが、
隣合うセルの境界線はどちらのセルの罫線が優先されて表示されるのでしょうか?
よろしくお願いします



391 名前:デフォルトの名無しさん mailto:sage [2020/09/25(金) 22:18:01.90 ID:JBJKUwWVM.net]
>>390
実験して報告よろしく

392 名前:デフォルトの名無しさん mailto:sage [2020/09/25(金) 22:34:46.55 ID:48EvNsnc0.net]
後から指定した方だな。
思いっきり拡大すれば、線が2本引いてあるのが見えるのかと思ったが、そんなことはなかった。
ちなみに、ストIIで2人同時に投げ技をかけた場合、どちらが優先されるのかはランダムで50%/50%らしい。

393 名前:デフォルトの名無しさん mailto:sage [2020/09/25(金) 23:34:29.90 ID:3gugGrYy0.net]
>>390
これ、たしか罫線の種類で、基本ごっつい順に優先順位があったはず
ついでに、セルの書式設定で罫線設定すると、隣のセルの罫線設定も消えたり変わったりする

394 名前:デフォルトの名無しさん mailto:sage [2020/09/26(土) 11:57:49.22 ID:aYgi9d/P0.net]
太いほうだった(Excelばーじょん2016)
https://i.imgur.com/kfSAyHL.png

印刷境界とかは分けて認識されてるから、なんだかんだ自分のコードを検証したほうがいいな

395 名前:デフォルトの名無しさん mailto:sage [2020/09/26(土) 13:23:27.50 ID:aYgi9d/P0.net]
あ、宣言とかしときながらシート指定するん忘れてやがる

396 名前:デフォルトの名無しさん mailto:sage [2020/09/26(土) 19:01:46.19 ID:J5kcfwi60.net]
ワラタ

397 名前:デフォルトの名無しさん mailto:sage [2020/09/26(土) 20:07:30.98 ID:wDXyaCpN0.net]
getElementBy飽きたんだけど、RPA的制御じゃなくて、htttp通信を駆使してどうにかする、みたいのない?
APIとか使えない古いシステムに対して。

398 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 07:29:13.82 ID:KJpIeh7z0.net]
htttp通信がわからんがセキュリティー的に問題起きるんじゃね

399 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 15:17:02.78 ID:a7rnW+2W0.net]
htttpは、ハイパー・トンマ・トンチンカン・タコ・( ´,_ゝ`)プッの略かな

400 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 15:27:50.06 ID:o5RjmHqkd.net]
>>397
アセンブラやりたいってこと?
というのと同じ話。
InternetExplorer.Applicationじゃ無くてもみんなgetElementBy使う。

こういう便利なものを放棄するならhtmlのソースを自前テキスト処理で頑張るしかないと思うが。

普通はmsxml2.xmlhttpとかでソース取得して、それをDocumentに入れてgetElemetsByだな。



401 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 17:34:22.53 ID:V5qiYsAI0.net]
>>397
その辺は自作ライブラリでビブラートに包めばOK

402 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 18:37:04.65 ID:ZqjiPey8M.net]
>>401

> >>397
> その辺は自作ライブラリでビブラートに包めばOK

震わせてどうすんのさ。オブラートだろって釣られた

403 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 18:40:59.82 ID:6iq7bspN0.net]
>>400
マジか!
xmlがどうとか、APIがないとダメなんだと思ってたわ。

404 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 18:44:20.59 ID:6iq7bspN0.net]
ん?
それだと、逆に何のためにGUI操作(IE制御)の方法があるの?
初心者用?

405 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 07:43:08.08 ID:VRZutR0gd.net]
>>403
勘違いしてる。
別のAPI使ってるということだ。
で、別のAPIにもgetElemetByが出てくると言ってる。

406 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 13:09:33.23 ID:LAwWa5+y0.net]
RPA的制御がなにかよくわからんが
getElementしたくなかったら、API利用してxml取得しろみたいな話を言われたんじゃないか
それでAPI使えないけどgetElementしない方法ないの?と

取得できるものがhtmlなら、すなおにgetElementしとけ 以上
ちなみにxmlだろうとhtmlだろうとcsvだろうと、それは多くの場合httpで取得してるだろうがな

407 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 15:51:42.57 ID:m7hqrCGdM.net]
>>402
オブラートに包んでもおかしくないか
普通ラップするとかカプセル化するとか言うんじゃ・・・

>>404
どれもhttp通信でデータを取得できる共通点があるだけで、目的はそれぞれ違う

IEクラスはブラウザを操作する為のコンポーネントの一部
mshttpクラスはIEがスクリプトでhttp通信をするためのコンポーネントの一部
WinHttpRequestクラスはWindowsがhttp通信をするためのコンポーネントの一部
(コンポーネントっていうのはプログラムの部品として使うのが想定されている小さいプログラムのこと)

それぞれ色んなシステムで使えるようにCOMインターフェースっていう取説のようなものが実装されていて、VBAはそのおかげで間借り出来てるだけ
どれもVBAの為だけに作ったプログラムではない

ちなみにIEクラスの利点として、ブラウザ上でjsが実行されているページにアクセスすることができる点がある

408 名前:デフォルトの名無しさん [2020/09/28(月) 16:26:17.24 ID:gMLgNw+wd.net]
それをVBAでやる意味は何?
もっと他に簡単に出来る言語でやれは?

409 名前:デフォルトの名無しさん [2020/09/28(月) 16:37:22.01 ID:oE/worxcM.net]
結果をexcelで扱うならVBAが最適では?

410 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 18:37:13.13 ID:jqaTJ4CpM.net]
CSVで吐いてExcelで開くだけだろう



411 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 19:21:37.82 ID:JyFvX52s0.net]
あーい
あーい
ああああーい

412 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 21:25:16.14 ID:d76PIxro0.net]
質問させていただきます

ユーザーフォームのテキストボックスにフォーカスがあたってる(入力状態)でwindowsのデスクトップがアクティブもしくは他アプリケーションがアクティブを検知することはできますでしょうか?
タッチパネルなどでユーザーフォーム外をタッチしてしまった時を検出したいです。
できるのであればご教授願いたい…

413 名前:デフォルトの名無しさん [2020/09/29(火) 00:06:40.59 ID:bEee4vhd0.net]
Windowオブジェクトにどんなプロパティがあるんだっけ

414 名前:デフォルトの名無しさん mailto:sage [2020/09/29(火) 00:29:27.68 ID:zU8eGPuC0.net]
フォームのdeactivateイベント拾ってテキストボックスのフォーカス状態見て処理するとかどうかな

415 名前:デフォルトの名無しさん mailto:sage [2020/09/29(火) 00:32:40.28 ID:zjqvAHva0.net]
deactivateは用途が違う

416 名前:デフォルトの名無しさん mailto:sage [2020/09/29(火) 00:49:54.82 ID:Iz7+ZlTk0.net]
HTML, XML, CSV などのスクレイピングなら、
Ruby で、Nokogiri, Selenium Webdriver などが簡単

curl, wget でも、ファイルをダウンロードできるし

Rubyで、nokogiri, curl を使った例

require 'nokogiri'

html = `curl www.example.com/`

doc = Nokogiri::HTML( html )

elements = doc.css( "h1" )
puts elements.first.content #=> Example Domain

417 名前:デフォルトの名無しさん [2020/09/29(火) 06:58:50.11 ID:iE38wEdU0.net]
外部プロセスの起動、待機、出力の取り込みまで実装してくださいよ

418 名前:デフォルトの名無しさん mailto:sage [2020/09/29(火) 09:56:21.75 ID:UZS7qkIf0.net]
Rubyの自動運転は使いやすかったけど
早々にサポート切られたから印象悪い

419 名前:デフォルトの名無しさん mailto:sage [2020/09/29(火) 11:55:53.23 ID:NIgnBYPca.net]
>>413
調べて見ましたがそれっぽいものは発見できませんでした…

>>414
>>415さんのおっしゃる通りブックやユーザーフォームのDeactivateイベントでは機能しませんでした。

420 名前:デフォルトの名無しさん mailto:sage [2020/09/29(火) 23:34:39.45 ID:Rcn+G4xKd.net]
VBAでやる意味?
VBA以外だとアホな操作が必要だぞ。

1.Excelを閉じる。
2.他言語で実行。
3.csvをExcelで開く。

全くアホらしい。
運用についての考え方がまるで違う。

他言語でやる場合ってのはバッチ処理なのか?
それしか無いのか?
そういうブツ切りでデータ加工していくというなら寧ろExcelなんぞ使わん。



421 名前:デフォルトの名無しさん [2020/09/30(水) 00:00:14.29 ID:BPaZHsLq0.net]
>>407
jsしたかったらIEするしかないのね。
今時のHPほぼ全滅じゃん。

422 名前:デフォルトの名無しさん mailto:sage [2020/09/30(水) 00:36:25.50 ID:5bnpK3a00.net]
>>419
WINAPIでポーリング
https://i.imgur.com/NQMR2Km.png

423 名前:デフォルトの名無しさん mailto:sage [2020/09/30(水) 06:50:20.08 ID:RkFeWfqX0.net]
イルカのカイル

424 名前:デフォルトの名無しさん [2020/09/30(水) 16:18:36.41 ID:7F4wikGt0.net]
>>419
そのマルチタスク、マルチウィンドウを否定したい理由は何なの?

425 名前:デフォルトの名無しさん mailto:sage [2020/09/30(水) 16:57:41.88 ID:QOxpj5qw0.net]
>>424
フォームのテキストボックスに機器の計測値が入るようになっており
テキストボックスにフォーカスがあたってない状態で計測値が送られてくると値が取れないのでおじーちゃんたちにも気づくようにフォーカスが離れた時に警告ユーザーフォームを出したいのです。他アプリケーションなどを立ち上げる事も想定されます。

>>422
情報ありがとうございます
画像の通りやってみましたがイルカさんは働いてくれませんでした…

426 名前:デフォルトの名無しさん mailto:sage [2020/09/30(水) 20:43:21.94 ID:2p9V72Q+M.net]
>>425
アホとしか言えんわ
そもそも設計が間違えてる

427 名前:デフォルトの名無しさん mailto:sage [2020/09/30(水) 21:46:10.98 ID:d9KXZKY60.net]
>>425
値を入れる部分を直せよ

428 名前:デフォルトの名無しさん mailto:sage [2020/09/30(水) 22:51:09.04 ID:wQcBlxXT0.net]
RPAとか使ったらこんなおぞましいものができたりするのかな?
でも普通はExcelぐらいサポートしてるよな。。。

429 名前:デフォルトの名無しさん mailto:sage [2020/09/30(水) 23:05:33.83 ID:FnwBo45S0.net]
むしろRPA向きの案件だと思う

430 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 01:07:42.33 ID:lGabW6tFM.net]
>>425
> フォームのテキストボックスに機器の計測値が入るようになっており
wの前にデータ取得しとるわなw

>テキストボックスにフォーカスがあたってない状態で計測値が送られてくると値が取れない
wそんな業務データを取りこぼすとか意味不明w

>のでおじーちゃんたちにも気づくように
wなんだ?老害か?w



431 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 01:18:01.34 ID:eVzeZjSn0.net]
意味がわからないなら黙ってればいいじゃない

432 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 07:38:17.90 ID:v/kjpRq5M.net]
業務用ツール作るのってホント大変よな……
使いたい人向けに配信するんじゃなくて、使わされる人に使ってもらうツールだからどんなに優しいUIにしても平気で想像を上回るイレギュラーな操作して動かなくなった!ポンコツめ!みたいなクレーム出してくる人もいるし
単純に新しい物を使いたくないからってワザとメチャクチャな操作したりもしてるんだろうけど
ツールを要求してくる上の人達は現状の環境で対応出来るようにしたいからExcelのマクロでどうにかしてよ!とか言ってくるし、VBAはなんでも出来る魔法のツールだと思ってるし

長々と愚痴ってスマンな
スレチだよな

433 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 07:49:06.10 ID:H0TKMoBwd.net]
Windowsの標準のユーザーインターフェイスを意識しないと、使いやすいと思ったものが結局つかいにくくなる。

フォーカスがあたってなくても計測値が取れるように作るという発想が無いのが厳しい。
そんなこと出来ないなら根本から違うユーザーインターフェイスを採用すべき。

こういう処理でユーザーに何かさせる必要は無い筈。

434 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 10:04:49.32 ID:+ML6JMtp0.net]
初心者がツール作るように言われたら大変なんだろうな、俺は大変だと思ったことないが

435 名前:デフォルトの名無しさん [2020/10/01(木) 10:34:23.83 ID:6DJ6J+GDM.net]
タブレットでバーコードリーダーのキーボード入力モードでも使ってるんだろうなと想像

COMで操作できるライブラぐらい付いているだろうからそれ使えば解決

436 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 16:54:34.45 ID:Ld5Ou2iR0.net]
>>435
まさにおっしゃる通りで作業進捗をバーコードで管理するものを作りました。
次は工程内のチェックシートと計測値などのトレーサビリティです禿げそう
とりあえず計測器具も試用で借りてる段階なのでメーカーにライブラリの事聞いてみます…

437 名前:デフォルトの名無しさん [2020/10/01(木) 17:12:49.41 ID:W6bAQtLIM.net]
>>431
知ってた

438 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 18:58:16.32 ID:9Yax9dsIa.net]
>>434
かっけぇ

439 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 21:36:53.69 ID:dM4yb7Ap0.net]
罫線で囲われてたり、色塗りされたりするセルをマウスでドラッグ移動した時移動した場所は何もなくるなるのを罫線のみを残す方法ってありませんか?
簡単に言うと罫線で作った表の形式を保持したい。

440 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 21:50:29.37 ID:5ESnmk3DM.net]
>>439
テンプレートを隠しシートに保存しておいて、
ボタン押下で書式をコピペしてくるってどう?



441 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 22:00:05.10 ID:gLHdGUpR0.net]
>>439
切り貼りじゃなくてコピーアンドペーストした後に元のところの数式と値をクリア(右クリック+N)すればよいのでは

442 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 23:26:28.37 ID:ywfP0KwV0.net]
changeイベントで常に罫線引くことしか思いつかん

443 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 23:48:07.63 ID:2OGRwJxy0.net]
移動できないようにする

444 名前:デフォルトの名無しさん [2020/10/02(金) 01:42:30.77 ID:MWdBgx4Q0.net]
セルをマウスでドラッグって何だよ?
エクセルで将棋でもやるの?

445 名前:デフォルトの名無しさん [2020/10/02(金) 01:43:49.39 ID:ChxT/cO/0.net]
>>425
それExcel VBAでやるものではない。
自分のやりたいようにやりたければ、Windows SDKでの開発をしてください。

446 名前:デフォルトの名無しさん [2020/10/02(金) 01:49:29.59 ID:ChxT/cO/0.net]
>>439
そもそも手順というものを考えた方がいい。
移動する前の情報を移動先には持ってくるが、移動元にはその情報を適用しないのはなぜ?

447 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 10:09:18.16 ID:A7BNHAQE0.net]
指定したフォルダ内の全てのCVSファイルを配列に追記していき対のですが、コードを教えてください
配列の0列目(1次元目)にはそれぞれのCSVファイルのファイル名をいれたいです。

Sub Sptyou()

Dim FolderPath As String, buf As String, TargetDate As String

'■フォルダを指定する
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = 0 Then
MsgBox "キャンセルされました。"
Exit Sub
End If
FolderPath = .SelectedItems(1)
End With
'■指定されたフォルダ内の全てのCSVファイルを開いて、そのファイルA列からGH列を配列に入れていく
ReDim BiforeArraybar(1, 190) As Variant

448 名前:447 mailto:sage [2020/10/02(金) 10:09:56.74 ID:A7BNHAQE0.net]
つづき

buf = Dir(FolderPath & "*.csv")

Do While buf <> ""
Open buf For Input As #1 'インプットモードでファイルを開く
Line Input #1, TargetDate
Do Until EOF(1) 'ファイルの終点まで
Line Input #1, Tardt '開いたファイルを上から順に読み込んでいき、変数TargetDateに代入していく
If Split(TargetDate, ",")(1) = "" Then Exit Do
'配列に追記する
ReDim Preserve BiforeArray(Ubound(BiforeArray) + 1 To ??, 1 To 190) = Sprit(TargetDate,",")
Loop
Close #1
buf = Dir()
Loop

End Sub

449 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 10:42:45.10 ID:cHoSzh9XM.net]
ReDim Preserveで操作可能なのは最右端の次元だけだから2次元配列で1次元目に使いたいなら一旦反転させた状態で操作して出力時にWorksheetfunction.transpose使って吐き出す必要があるぞ
いまいち最終目的が分からなかったから取り合えず読んでて気になった所だけ

450 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 10:56:02.65 ID:ooD45Zz30.net]
Linux のcat なら、複数のファイルを連結できるけど



451 名前:デフォルトの名無しさん [2020/10/02(金) 12:25:22.61 ID:XdHW2/g2M.net]
win dosならcopyで連結できるけど

452 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 12:29:54.55 ID:a296oIK60.net]
>>448
内側のLoop内で Tardt ってのが気になった

453 名前:447 mailto:sage [2020/10/02(金) 13:32:21.66 ID:A7BNHAQE0.net]
>>449

右端にファイル名を入れるにはどうしたらいいですか?

それと、配列のUpperをどう設定したらいいですか?

454 名前:デフォルトの名無しさん [2020/10/02(金) 15:56:01.43 ID:7/1+1goB0.net]
また馬鹿な質問者か。それともいつもの厚かましい馬鹿か?

455 名前:デフォルトの名無しさん [2020/10/02(金) 16:13:26.37 ID:XdHW2/g2M.net]
右端の次元と右端の列では話の次元が違うけどわざとやってんのかなー?

excelなんだからとりあえずシートに格納すればいいと思うんだけどなー
配列に1行づつ追加するよりはやいんじゃね?
VBは動的配列無いんだからパフォーマンス出すには頭を使わにゃいかんよ
行数をキーにしたDictionaryもいいかもね






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<123KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef