Excel VBA 質問スレ Part68
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん (ワッチョイ dbda-8BP0)
垢版 |
2020/08/30(日) 11:55:27.33ID:Oy/VxFsh0
!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
0004デフォルトの名無しさん (スッップ Sd22-WkEz)
垢版 |
2020/08/30(日) 12:41:50.27ID:wybDtxdZd
以下の特徴を持つ書き込みは無視するか罵倒されます。

・「教えて」「助けて」で始まる質問者の頭が悪いことが容易にわかる質問
・自分で考えるともせず全部作ってもらおうとする厚かましい質問
・VBA、マクロに関係ないExcelの質問
・自分のために利用するだけ利用してやろうと、後出しで条件を付け加える人
0005デフォルトの名無しさん (アウアウエー Sa0a-ifKp)
垢版 |
2020/08/30(日) 20:36:42.00ID:Cc0wen40a
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
0006デフォルトの名無しさん (アウアウエー Sa0a-ifKp)
垢版 |
2020/08/30(日) 20:37:09.10ID:Cc0wen40a
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
0007デフォルトの名無しさん (アウアウエー Sa0a-ifKp)
垢版 |
2020/08/30(日) 21:02:31.41ID:Cc0wen40a
すみません。何とか事故解決しました。
もしこう書けばより良いとアドバイス頂けたら幸いです。
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
0011デフォルトの名無しさん (ドコグロ MMca-ftwo)
垢版 |
2020/08/31(月) 00:06:45.91ID:SE//WJVaM
誰に言われるまでもなく上に全部まとめて宣言しているわ
違うプロシージャにそのままコピペで流用して使わないのは消すだけ
0013デフォルトの名無しさん (ワッチョイ 45cc-pyQU)
垢版 |
2020/08/31(月) 19:07:17.70ID:Lt7FggAF0
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
0015デフォルトの名無しさん (アウアウエー Sa0a-ifKp)
垢版 |
2020/08/31(月) 19:11:34.92ID:0S1gXD8ua
>>10
>>12
助言ありがとうございます。
0018デフォルトの名無しさん (ラクッペペ MM66-i8JQ)
垢版 |
2020/09/01(火) 16:02:43.57ID:IEy7mEwuM
vba実行時
実行時エラー2147467259(80004005)エラーを特定できません
が出ます。
半月前は出ませんでした。
どうすれば良いでしょうか。

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

事情がありスマホで手打ちしました。
見苦しくすみませんがよろしくお願い申し上げます
0019デフォルトの名無しさん (アウアウクー MM11-1Npq)
垢版 |
2020/09/01(火) 19:54:21.29ID:GHp5MfoEM
小計シートのA列に日付があります
1.メニューシートでリストボックスを設置して、そこに小計シートのダブりを省いた日付を入れて選択できるようにしたいです
2.メニューシートの実行ボタンを押すと選択した日付の行全てを結果シートに出力したいです

どのような関数を使えば1、2を実現できるのでしょうか?
0020デフォルトの名無しさん (ワッチョイ 4d10-t21d)
垢版 |
2020/09/01(火) 20:49:46.16ID:4J5+lU0z0
神経衰弱を作っています
Image1~52を並べて全てのImageにクリックされた時の処理を記述しているのですがImageがクリックされた時の処理をひとつにまとめる方法はないでしょうか?
0023デフォルトの名無しさん (ドコグロ MMca-yRqa)
垢版 |
2020/09/01(火) 21:59:11.19ID:o1zup8QpM
>>20
Imagename = Application.Caller
i = Mid(Imagename, 6)

あとは、Select Caseで割り振る
0025デフォルトの名無しさん (ワッチョイ 4d10-t21d)
垢版 |
2020/09/01(火) 22:24:18.51ID:4J5+lU0z0
Application.callerよさそうですね
使ってみます
ありがとうございました
0030デフォルトの名無しさん (ワッチョイ e710-t/Jd)
垢版 |
2020/09/02(水) 20:49:21.06ID:hWT8nCmb0
神経衰弱を作っています
カードを2枚裏返して2枚の数字が同じだった
Image1.visible = falseで2枚を非表示にしています
ゲーム途中でコマンドボタンを押すと1から13までのランダムな数字の枚数だけ裏面のカードを表にしたいのですが今のコードだと既に非表示になっているカードまで表にする対象になってしまっていて13という数字を引いても5枚しかめくれないみたいな状態になってしまいます
どうすれば既に非表示になっているカードは除いて表面にする処理ができるようになるでしょうか?
ゲーム開始直後の状態であればちゃんと引いた数字分表面にすることができています
0032デフォルトの名無しさん (ワッチョイ 5f1f-W64q)
垢版 |
2020/09/02(水) 21:06:16.30ID:wVSDLDLi0
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開く文字書き込み

こんな感じに開いてたら閉じる。違うファイルなら閉じて新たに開くってどうしたら
いいですか?
0034デフォルトの名無しさん (ドコグロ MM1f-th+2)
垢版 |
2020/09/02(水) 21:43:27.34ID:M5ACMng3M
>>30
If Worksheets(シート名).Shapes("Image" & カード番号).Visible = False Then
0037デフォルトの名無しさん (ドコグロ MM1f-aCGe)
垢版 |
2020/09/02(水) 23:26:58.04ID:CEKOaVwIM
>>35
じゃあ、trueに変えればいいじゃん
0038デフォルトの名無しさん (ワッチョイ 7f63-3NJ+)
垢版 |
2020/09/02(水) 23:43:34.57ID:4SR2iB8C0
>>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
プログラム以外のところに原因があるんでしょうか。
0042デフォルトの名無しさん (ラクッペペ MM8f-dQ4P)
垢版 |
2020/09/03(木) 09:49:18.05ID:8vHUVo2kM
>>40
visibleプロパティで管理してるんだから問題ないだろ

13回選んで4回裏が出たら17回選べばいいんだよ
0046デフォルトの名無しさん (ラクッペペ MM8f-qH39)
垢版 |
2020/09/04(金) 12:46:00.80ID:lx1E7kKYM
csvをある列でフィルタし
結果を別のブックに貼り付け
csvとして保存したところ
日付+時刻(ゼロ時)の列すべて
5桁の数字になります
どうしたら日付+時刻のままで
いてくれますか
0048デフォルトの名無しさん (ワッチョイ 7f8e-+abr)
垢版 |
2020/09/04(金) 16:31:17.78ID:9qR3rveJ0
>>46
VBAの話しか?
0049デフォルトの名無しさん (ラクッペペ MM8f-qH39)
垢版 |
2020/09/04(金) 17:16:17.55ID:lx1E7kKYM
>>48
はぃ、vbaでそういう処理を書きました
0055デフォルトの名無しさん (ワッチョイ e710-t/Jd)
垢版 |
2020/09/04(金) 23:53:41.25ID:3ZUt+s6n0
モジュール1で定義した配列をモジュール2で使うにはどうすればいいですか?
モジュール1でdimではなくpublicで宣言すればいいのでしょうか?
0057デフォルトの名無しさん (ワッチョイ c763-3NJ+)
垢版 |
2020/09/05(土) 00:15:03.09ID:oZJVOAAi0
>>51
すべてご推察のとおりです。ありがとうございます。
xlPasteValuesで張り付けてます。
xlPasteAllだと年が月日の後になってしまいます(5/31/2020 0:00)

>>47さんのおっしゃる
「文字列として」貼り付ける設定を発見できません。
""で囲めば文字列として貼り付けられるのでしょうか。
0058デフォルトの名無しさん (ワッチョイ 7f8e-+abr)
垢版 |
2020/09/05(土) 00:15:37.71ID:wG6iKMy+0
最近また馬鹿が出てきた
0064デフォルトの名無しさん (スフッ Sd7f-7sgX)
垢版 |
2020/09/05(土) 14:03:42.79ID:4XqPsYsKd
ループカウンタ用の変数名はとりあえずiにでもしとこうっていう昔からの名残
細かく言うと整数を表すIntegerのi
i、j、k〜nまで順によく使われる
006663 (ワッチョイ 0701-zmOT)
垢版 |
2020/09/05(土) 14:19:36.48ID:CLMpHe/Q0
何度もレスしてすいません。
問題の文章とVBAのマクロの文章を照らし合わせて回答をみると何となく答えがわかる気がしてきたのですが、

相対(a2,work_line,3)

がなぜ来店状況ワークシートのセルd列のことになるのか分かりません。
3列目なのでcだと思ったのですが…
007463 (ワッチョイ 0701-zmOT)
垢版 |
2020/09/05(土) 16:23:09.92ID:ZUfl2WLX0
>>70
すいません
そもそもそれもよく分かってなかったのです。
ちなみに良かったらどういう意味が教えて欲しいです。
聞いてばかりで申し訳ありません。
0077デフォルトの名無しさん (ワッチョイ 7f8e-+abr)
垢版 |
2020/09/05(土) 17:24:34.57ID:wG6iKMy+0
>>74
そろそろ消えろ
0078デフォルトの名無しさん (ドコグロ MM1f-aCGe)
垢版 |
2020/09/05(土) 17:30:09.65ID:k1PkCOGDM
>>74
相対(a2,行,列)
0の場合は省略可なので
相対(a2,行)とか相対(a2,,列)でもいい
008663 (ワッチョイ 0701-zmOT)
垢版 |
2020/09/06(日) 14:01:01.76ID:spMqG8Fw0
>>85
上手く質問できなくて申し訳ありません。

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

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

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

この問題の設問3の重みパラメータというのがどう作用して出力Zの値になるのか教えて頂けないでしょうか。
008763 (ワッチョイ 0701-zmOT)
垢版 |
2020/09/06(日) 14:02:20.47ID:spMqG8Fw0
あ、すみません。問題よく読んでませんでした。
これについてはレス直後理解しました。
ごめんなさい( ;ᯅ; )
0090デフォルトの名無しさん (ワッチョイ 7f8e-+abr)
垢版 |
2020/09/06(日) 18:43:46.86ID:Mql9n0EK0
>>88
死ね
0096デフォルトの名無しさん (テテンテンテン MM8f-Ccsn)
垢版 |
2020/09/07(月) 20:07:21.03ID:Yu9E5X6OM
VBA勉強しはじめて、ようやくOutlook連携とかzip圧縮とかやり始めたんだけど
Excelそのものの操作に関する情報と比べて、参考に出来る情報の質も量もガクッと落ちた気がする

やっぱ話題のpythonに切替えたほうが悩まずやれるのだろうか
0098デフォルトの名無しさん (ワッチョイ e7e6-dQ4P)
垢版 |
2020/09/07(月) 20:22:49.70ID:sgrgY4Mk0
zip.exe叩けばええやろ
0099デフォルトの名無しさん (ワッチョイ 5f6d-4jJb)
垢版 |
2020/09/07(月) 20:51:37.54ID:/DR3/4oV0
目の前に答えが書いてあっても理解できない、答えだと気付けない
これが「馬鹿には無理」の意味
0102デフォルトの名無しさん (アウアウエー Sa1f-yOpk)
垢版 |
2020/09/07(月) 21:38:02.53ID:J1GBImUha
なにがおかしいの?
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
0107デフォルトの名無しさん (ワッチョイ bfc9-XrX+)
垢版 |
2020/09/07(月) 23:17:00.84ID:VQNIMFGd0
>>106
ありがとうございます


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

みたいなことしないとアクセスできないサイトのデータが取得したいのですが
他に方法ありますか?
0110デフォルトの名無しさん (ワッチョイ e761-Mi9Z)
垢版 |
2020/09/07(月) 23:56:10.64ID:UwONkXQv0
エクセル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を呼び出すのは、うまく行きます。

何故このような挙動になるのか分からず数日ハマってます。
どなたか、ご教示よろしくお願いします。
0111デフォルトの名無しさん (ドコグロ MM7b-aCGe)
垢版 |
2020/09/08(火) 02:03:49.70ID:weDKADyMM
>>110
for i= activeworkbook.worksheets.count to 1 step -1
apprication.goto activeworkbook.worksheets(i).range("a1")
next i
activeworkbook.save

スマホ打ちだから綴りミスはあるかも
0114デフォルトの名無しさん (ワッチョイ 27da-XrX+)
垢版 |
2020/09/08(火) 10:40:31.23ID:C66iYfBu0
>>110
働かないという場合の原因で以下のことを調べてみ

1.実は働いていたがその後に別の動作をしたため働いていないように見える
2.働こうとしたが、なんらかの異常が出て失敗している
3.その処理が実行されていない(on errorやifの条件、イベント発生していないなど)
0116デフォルトの名無しさん (ラクッペペ MM8f-dQ4P)
垢版 |
2020/09/08(火) 11:52:57.99ID:POT3YWITM
Application.EnableEvents=Falseしてるとか?
0118デフォルトの名無しさん (アウアウウー Sa8b-vi+Z)
垢版 |
2020/09/08(火) 18:39:01.86ID:p9XW8v7Na
>>117
VBAの挙動の問題

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

そもそも、-1をダブルクォーテーションで括ってるのは文字列として-1を認識させたい時のみにするのが基本
なので、ダブルクォーテーションを取ってやれば意図通り動くはず
0119デフォルトの名無しさん (ラクッペペ MM8f-dQ4P)
垢版 |
2020/09/08(火) 19:07:42.80ID:Pjd0b/NhM
へー、そんな挙動するんだ。知らなかった

>-11
>-12
>-13
になると思ってたよ
0122デフォルトの名無しさん (ワッチョイ 0701-biH0)
垢版 |
2020/09/08(火) 20:06:33.41ID:qXkQmTRa0
>>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
0127デフォルトの名無しさん (ワッチョイ 5f1f-W64q)
垢版 |
2020/09/08(火) 22:06:16.19ID:aT8iqlgZ0
エクセルの指定列から3列コピーしてその4列目に挿入して貼り付けた後セルに入ってる値を消すコードをRangeじゃなくてCellsでやりたいです。
clmtar=10
10〜13列をコピー
14列目に挿入
14〜17列目のセルの値クリア。
0132デフォルトの名無しさん (ワッチョイ 5fb5-/qgI)
垢版 |
2020/09/08(火) 22:40:05.68ID:MiWYYVaX0
ネットで検索
プロシージャを組み合わせたり簡単なところをイジる
出きたと思ったら会社のメルアドにプロシージャ貼り付けたテキスト送る
会社で組み合わせる
UserFormのボタンに割り当て
これでごまかしつつやってきた
圧倒的な知識が欲しいなぁと
0134デフォルトの名無しさん (ワッチョイ e77c-ALHH)
垢版 |
2020/09/08(火) 22:50:54.91ID:E23V8S4o0
今までどおり困ったら初心者ですとか勉強中ですとかで知識ないアピールで人にやらせて突っ込まれたら謎の正当化とどうでもいい言い訳で誤魔化してやっていくんだろうな
0137デフォルトの名無しさん (ワントンキン MM7a-nV8z)
垢版 |
2020/09/09(水) 00:19:56.45ID:akgtbWjMM
ゆとり世代の特徴だぞ
0138110 (ワッチョイ 5961-RQWs)
垢版 |
2020/09/09(水) 00:23:30.44ID:Lvk20igu0
>110です。
書き込み後にいろいろググったところ、いくつかのサイトで
コードからの保存はbeforeSaveイベントが正常に働かない旨の記載がありました。
今回の事象もこれに当たるのかなと考えています。
そんな訳で、ボタンでの保存はenableEventsをfalseにして別処理にしました。
回答くださった皆様、ありがとうございました。
0140デフォルトの名無しさん (ワッチョイ 39e6-Pwf7)
垢版 |
2020/09/09(水) 01:12:42.60ID:VoppH/up0
足し算がわかりませんとか言われても入門書でも読めとしか言えないよな
0146デフォルトの名無しさん (ブーイモ MM8e-+eY2)
垢版 |
2020/09/09(水) 10:37:20.74ID:KbsHkxtjM
すみません。ちょっと長くなってしまうのですがTreeViewをいじっているうちに分からない事があったので教えて下さい。
TreeViewの子ノードをD&Dでリストボックスにコピーする動作を作っていたのですが、ドラッグ開始時点のSelectedItemを取得しようとすると1度子ノードをクリックした上でD&Dを行う必要がありました。
その為、既定引数のIPOS,yPOSを使ってHitTestをSelectedItemに代入しようとしました。
しかしそれが上手く動作せず色々調べた結果、
xとyに*15をすると言う記述を見つけ試してみたところ、思い通りの動作を得られました。

しかしながらこの15はなんの15なんだ。他の環境ではこの数値は変わるのか。変わるならば何を元に算出すれば良いのだろうか。
という疑問が浮かびました。
お手数をお掛け致しますがお分かりになる方がいらっしゃいましたらご教授頂けませんでしょうか。
0149デフォルトの名無しさん (ラクッペペ MM3e-AH3D)
垢版 |
2020/09/09(水) 17:07:35.99ID:cdbk3sfrM
c言語のdefineに相当する文法は無いですか?
constだと違和感がありますので
0155デフォルトの名無しさん (ワッチョイ a95f-Sism)
垢版 |
2020/09/10(木) 00:02:31.06ID:a+RPoaYl0
>>149
あなたが思っているC言語のdefineの使い方は、コンパイラが置換するもので、定数の概念とは少し違いますよ?
0156デフォルトの名無しさん (ワッチョイ a95f-Sism)
垢版 |
2020/09/10(木) 00:04:04.82ID:a+RPoaYl0
>>152
そもそも列の挿入操作が必須なのか?
0157デフォルトの名無しさん (ワッチョイ a95f-Sism)
垢版 |
2020/09/10(木) 00:05:42.63ID:a+RPoaYl0
列の挿入なんてあちこちに影響するから、やりたがる理由がわからない。
0159デフォルトの名無しさん (ワッチョイ a95f-Sism)
垢版 |
2020/09/10(木) 02:24:17.86ID:a+RPoaYl0
自分の操作と同じ手順を踏みたいだけなんだろうね

プログラマではない素人感覚
0160デフォルトの名無しさん (アウアウエー Sa52-psz/)
垢版 |
2020/09/10(木) 04:18:44.38ID:026ADmyCa
test
0162デフォルトの名無しさん (ラクッペペ MM3e-Pwf7)
垢版 |
2020/09/10(木) 08:50:52.35ID:l+lun8zfM
どうせ大した数じゃないんだろ
総なめしろよ
0166デフォルトの名無しさん (ブーイモ MMc9-4twR)
垢版 |
2020/09/10(木) 12:18:21.67ID:tJgZROmkM
指定値と配列値の差分を絶対値にして比較した場合、
指定値が5だとして
配列  差分(ABS)
4     1
7     2
となり、最小の差分は1とわかる
座標を知りたいので指定値(5)-差分(1)=4となり、配列の中から4を検索して座標を調べればいいのかなって思ってたんだけど
絶対値で出てくると5-1か5+1どっちを検索すればいいか不明じゃないですか?
そこらへんを解決する方法があれば聞きたいです
0167デフォルトの名無しさん (ラクッペペ MM3e-Pwf7)
垢版 |
2020/09/10(木) 12:33:38.92ID:l+lun8zfM
ひとつに絞りたいならお前がルールを決めればいい
お前に決定権がないなら保護者に聞け
0175デフォルトの名無しさん (ラクッペペ MM3e-Pwf7)
垢版 |
2020/09/10(木) 13:38:32.36ID:l+lun8zfM
>>172
は? 質問は4と-4だろ?

もう俺が決めてやるよ
-4にしろ、はい解決
0176デフォルトの名無しさん (ワッチョイ 6aad-+eY2)
垢版 |
2020/09/10(木) 13:41:25.58ID:Yq3PJL3D0
セルを弄くり回すとかじゃなくて配列のまま総舐めするなら1万行ぐらいすぐ終わるでしょう
指定した値aの近似値が欲しいなら
If a-x<=Array(i) And a+x>=Array(i) Then
とかで引っ掛かる奴を引っ張り出すなりなんなりすりゃあ良い
0177デフォルトの名無しさん (ラクッペペ MM3e-Pwf7)
垢版 |
2020/09/10(木) 13:43:28.62ID:l+lun8zfM
あ、ごめん
俺が質問を勘違いしてたわ
0179デフォルトの名無しさん (ラクッペペ MM3e-Pwf7)
垢版 |
2020/09/10(木) 13:50:34.65ID:l+lun8zfM
>>168
各オブジェクトに多数のイベントが設定されているでしょ
windowsのプログラミングはイベントドリブンが基本
ブックが開いた、ボタンが押された、マウスが動いたなどのイベントに対するコードを書いていけばアプリケーションが完成する
0180デフォルトの名無しさん (ワッチョイ 3dad-sCec)
垢版 |
2020/09/10(木) 18:35:00.61ID:VdzBOqiR0
すみません今宿題でこれやってるんですけど打ち込んでもなにも出ないのですがなぜでしょう
0184デフォルトの名無しさん (ラクッペペ MM3e-Pwf7)
垢版 |
2020/09/10(木) 19:46:53.46ID:cO3BfNoWM
汚えコードだな
0189デフォルトの名無しさん (スップ Sdea-ah1O)
垢版 |
2020/09/10(木) 20:49:46.36ID:Rp5mNNXSd
パズルゲームを作ってます。

セルを奇数列から横2マス選択してドラッグさした場合に、移動先が同じ奇数列から始まる場所なら許可。偶数列から始まる場所に移動した場合は不可にして移動をキャンセルさせたいんですがどうしたら出来ますか?良いEVENTってあるんですかね?
0193デフォルトの名無しさん (ワッチョイ a95f-Sism)
垢版 |
2020/09/10(木) 21:56:18.66ID:a+RPoaYl0
>>181
コメント行の終わりにシングルクォーテーションが付いているのは初めて見たw

コメントというより、文字列リテラルに見えてくるw
0197デフォルトの名無しさん (ワッチョイ 668e-0TEw)
垢版 |
2020/09/10(木) 22:22:10.32ID:6Lj7sAI40
>>180
馬鹿過ぎる帰れ
0198デフォルトの名無しさん (スフッ Sd0a-7JDO)
垢版 |
2020/09/10(木) 22:28:05.12ID:WalExY5Hd
>>193
HTMLみたいにコメントが改行で終わるとは限らない言語はまれによくあるけどな
それよりもインデントの汚さと、Cellsのパラメータにx, yを使ってるあたりがめちゃくちゃ気になる
0202デフォルトの名無しさん (スフッ Sd0a-7JDO)
垢版 |
2020/09/10(木) 22:43:44.96ID:WalExY5Hd
>>200
VBAを教えてるサイトでコメントをシングルクォートで閉じたりカッコを全角で書くやつなんて世界に一人しかいない
本人ならDimやインデントはちゃんと書くはずだし、完全にパクリだな
0203デフォルトの名無しさん (ワッチョイ 3dad-IT/D)
垢版 |
2020/09/10(木) 22:59:03.63ID:VdzBOqiR0
180ですなんとかできました。ド素人なんで申し訳ない
このコードはそんなできのいいものじゃないんですか?
先生凄く威圧的でいつもそんなんもわからんのかみたいな喋り方なんすけど
0206デフォルトの名無しさん (ワッチョイ a95f-Sism)
垢版 |
2020/09/10(木) 23:27:44.84ID:a+RPoaYl0
他の言語でも行コメントで見出し風にするプロはそれなりにいる。

ただ、初心者に教える人間が行コメント構文を、ブロックコメント構文と同じ使い方をするのは、初心者を混乱させるだけで、何のメリットもない。
0207デフォルトの名無しさん (ワッチョイ 3d3d-PnJR)
垢版 |
2020/09/10(木) 23:29:02.40ID:b8lNN7jK0
>>203
なんで変数宣言しないんですか?
なんでx1とかわかりづらい命名するんですか?
なんでx1とかを上書きするようなわかりづらい変数の使い方してるんですか?
インデントの使い方に意図はありますか?
6の意味が説明されないとわからないのは不親切ですね

などなど…色々質問してみたらいいよ
0208デフォルトの名無しさん (スップ Sd0a-7JDO)
垢版 |
2020/09/10(木) 23:31:52.10ID:ewRWdYKCd
>>203
その先生は、少なくともVBAの知識だけは大したことないことは誰が見てもわかる
ほかの言語のエキスパートでVBAをバカにする人もいるけど、人に教えるんならちゃんとしろと思う

>>199
よく見つけたな
0209デフォルトの名無しさん (ワッチョイ a95f-Sism)
垢版 |
2020/09/10(木) 23:31:53.48ID:a+RPoaYl0
>>205
それもなんか見ると気になるな。コードの順番も変だし、数値の精度やデータ型をわざとヘンテコにしているのかも謎。
0211デフォルトの名無しさん (ワッチョイ a95f-Sism)
垢版 |
2020/09/10(木) 23:33:50.53ID:a+RPoaYl0
その先生だと6は数値ではなく数字です!
マジックナンバーって何と言いそうw
0215デフォルトの名無しさん (ワッチョイ 7dda-SnFp)
垢版 |
2020/09/10(木) 23:50:48.35ID:Q3JELDTy0
ループの外でウエイトしてたら速すぎてキラキラしないんじゃ…。
紙に書いてある方。
0218デフォルトの名無しさん (ワッチョイ a95f-Sism)
垢版 |
2020/09/11(金) 01:20:18.01ID:66INGyZB0
>>216
本業が税理士なのに、詳しくもないことをひけらかすやつだから、税理士としてもいまひとつの癖のあるやつだと思う。
0219デフォルトの名無しさん (ワッチョイ a95f-Sism)
垢版 |
2020/09/11(金) 01:22:28.25ID:66INGyZB0
>>216 彼も他人のパクリなのかもね
0220デフォルトの名無しさん (ワントンキン MM7a-nV8z)
垢版 |
2020/09/11(金) 01:27:34.96ID:iTcJm+RBM
ゆとり世代の馬鹿に教えるゆとりかよ
0221デフォルトの名無しさん (スップ Sd0a-4Ha4)
垢版 |
2020/09/11(金) 08:33:42.89ID:L6SxevYWd
>>146
そいつはバグだと思うよ。
Mougで質問してた人がいて、俺も試したけどTreeViewでのD&Dで座標がバグってる。

で、15ってのはそのバグを何とか実情に合わせたものだと思う。
俺もその時似たようなことやって15っていう数字には覚えがある。
0222デフォルトの名無しさん (ブーイモ MM81-+eY2)
垢版 |
2020/09/11(金) 09:37:00.89ID:mn04Qg6+M
>>221
>>146 です。色々調べた結果、TreeViewのMouseMoveやMouseDownのイベントで渡される座標が他のフォームとは異なりピクセルで渡される事が原因でした。
なのでGetDesktopWindow,GetDC,GetDeviceCapを用いてDPIを取得し、
取得した値で1440(1440twips=1Inch)を割り、
その値をピクセル数に掛ける事でポイントでの換算に成功しました。
標準の設定ですとDPIが96になるそうなので1440/96で15、となるようです。
0226デフォルトの名無しさん (ワッチョイ 7910-lSnV)
垢版 |
2020/09/12(土) 08:12:41.83ID:cGm6fMBf0
動的配列に値を追加していきたいのですが要素番号を0ではなく1から始める方法はありませんか?
0231デフォルトの名無しさん (オッペケ Srbd-o3hV)
垢版 |
2020/09/14(月) 18:06:26.03ID:YLQY1Qz5r
i++とか+=使えないのマジで不便だな
前置インクリメントもできないし一行でもend ifとかloop書かなきゃいかんしめんどくさくね?
この言語もうちょい進化しないの?
0234デフォルトの名無しさん (ワッチョイ 668e-0TEw)
垢版 |
2020/09/14(月) 18:15:50.60ID:LbAMjRkX0
>>231
馬鹿は死ねよ
0235デフォルトの名無しさん (ワッチョイ 7910-lSnV)
垢版 |
2020/09/14(月) 19:51:50.83ID:ZpzZ2vr50
ガイジ君ブチ切れw
0237デフォルトの名無しさん (ワッチョイ 668e-0TEw)
垢版 |
2020/09/14(月) 20:46:20.36ID:LbAMjRkX0
+=使えるだろうが
0239デフォルトの名無しさん (ワッチョイ 668e-0TEw)
垢版 |
2020/09/14(月) 20:56:59.34ID:LbAMjRkX0
あー、VB.Netスレだと思ってた。スマン、死んでくる。
0241デフォルトの名無しさん (ササクッテロレ Spbd-jNRp)
垢版 |
2020/09/14(月) 21:01:06.64ID:K/D9SivKp
制御構造は、キーワードの選び方がやや独特だけど、基本的なものについては、概ね他の言語と同等のことはできると思う。
どちらかというと、変数の宣言・定義が一緒にできないとか、配列・コレクションの要素参照が角括弧でなく丸括弧だとか、プロシージャ呼び出しの丸括弧の要否とかの方が不便さを感じるかな。まぁ、これらも慣れと言われればそれまでだが。
0243デフォルトの名無しさん (ワッチョイ 393d-jNRp)
垢版 |
2020/09/14(月) 22:20:37.59ID:8aASiVNY0
breakは、一応Exit 〜が概ね対応しているのでは(While〜Wendでは使えないけど)?
脱出するループを明示的に指定するので、breakより便利な場合もごくたまにある。もっとも、二重のForループから抜ける場合などは結局GoToに頼ることになるので中途半端ではあるけど。
0246デフォルトの名無しさん (ワッチョイ 11cc-QmsY)
垢版 |
2020/09/15(火) 09:16:48.30ID:Ty4jOAMY0
ユーザーフォームの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
0247デフォルトの名無しさん (ワッチョイ 11cc-QmsY)
垢版 |
2020/09/15(火) 09:17:03.49ID:Ty4jOAMY0
■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に入れたいのですが、この方法だとどちらも入りません。
0249246 (ワッチョイ 11cc-QmsY)
垢版 |
2020/09/15(火) 09:45:50.10ID:Ty4jOAMY0
>>248
試しましたがだめでした

追記
ブックを開いたまま、tes1を2回目に実行するとA1には書き込みますが、
ブックを開いて、1回目のtes1実行ではA1には書き込まれないようです。
0252デフォルトの名無しさん (ワッチョイ 799c-m1Uj)
垢版 |
2020/09/15(火) 18:56:31.81ID:Nzz3069/0
AccessVBAを使用しているのですが、標準モジュールを変数に格納する方法がわかりません。
フォームコントロールの様に変数に入れて扱う方法はありませんでしょうか。
0253デフォルトの名無しさん (ワッチョイ 6de5-Pwf7)
垢版 |
2020/09/15(火) 19:29:57.34ID:pZ4d9dfu0
ありません
0254デフォルトの名無しさん (ワッチョイ 97da-GUw/)
垢版 |
2020/09/16(水) 00:02:05.57ID:chmz5kZM0
Sub test()
MsgBox Me.TextBox1.Value
Me.Name="a"
Me.Name="Sheet1"
End Sub

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

なんでやねん!
0256デフォルトの名無しさん (ワッチョイ f79c-b3rt)
垢版 |
2020/09/16(水) 10:04:16.38ID:HoY0/Pv80
>>253
ありがとうございます。
フォームを格納できるなら標準モジュールも出来るのかと思って質問しました。
標準モジュール内に書かれた関数の引数として参照先の標準モジュールを渡したかったのですが、別の方法を考えてみます。
0259デフォルトの名無しさん (ワッチョイ b7e5-cmNC)
垢版 |
2020/09/16(水) 19:55:21.82ID:KOE6L/fW0
>>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
0262デフォルトの名無しさん (ワッチョイ 97da-Cup9)
垢版 |
2020/09/16(水) 21:31:45.86ID:chmz5kZM0
>>255
今環境ないんだけど、
アプリケーションの定義何とかか、
インデックス何とかか、
オートメーション何とかのどれか。
何か変なものがSetされちゃってるのかと思ったけど、
MeじゃMeしかないよね?
0264デフォルトの名無しさん (ワッチョイ 5701-Cup9)
垢版 |
2020/09/16(水) 23:12:03.30ID:dsrVDQ5Z0
すごく初歩的な質問ですみません

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

MsgBox "あいうえお" は""を付ける必要がある
MsgBox "A" & hoge は文字列扱いのはずなのに""を付けて MsgBox ""A" & hoge"のようにしなくていいのが解せません
0267デフォルトの名無しさん (ワッチョイ 5701-Cup9)
垢版 |
2020/09/16(水) 23:48:53.36ID:dsrVDQ5Z0
ありがとうございます

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

では、&演算子でつなぐと文字列扱いになるという認識が間違っているのでしょうか?
それとも文字列扱いにはなるけど上記の理由から外すことになっているという感じでしょうか?
0268デフォルトの名無しさん (ワッチョイ 973d-lnJt)
垢版 |
2020/09/17(木) 00:09:43.18ID:pIQJoJyT0
>>267
その場合、
hogeは文字列として認識してください
という命令を出している
つまり
文字列(”A”) と(&) 文字列(hogeという変数に入っている文字列) を繋ぎ合わせて表示してください
というのが”A” & hoge
0269デフォルトの名無しさん (ワッチョイ bff7-Rz2h)
垢版 |
2020/09/17(木) 00:09:48.11ID:MJVBSNKC0
ダブルクォートには引数の囲むような意味はない
引数を囲む記号は丸括弧になる
たとえば X = msgbox("a" & hoge) みたいな書き方になる
返り値をとらない場合は()が省略可能ってだけ
0272デフォルトの名無しさん (ワッチョイ 9f2f-qc2B)
垢版 |
2020/09/17(木) 00:21:16.12ID:0EHVBisp0
値に型ってのがあるのを理解しよう
表示したいのは、"A"という値と変数hogeの値(を連結したもの)だろ

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

基本を理解したいなら、なんの説明もなく&でつなぐと文字列扱いとかいう教え方するところは避けたほうが良いかな
とりあえず動けばいいってならまあすきにすればいいけど
0273デフォルトの名無しさん (ワッチョイ f73d-luBG)
垢版 |
2020/09/17(木) 02:20:25.53ID:c2bYLY/G0
MsgBoxの第1引数は文字列型の値である必要があり、文字列型の値を表す式として典型的なのは、@文字列リテラルか、A文字列型の値が格納されている変数(文字列型変数)の参照。二重引用符は、文字列リテラルの表記方法に過ぎない。
&演算子は、本来、2つの文字列型の値を被演算数とする演算子だが、被演算数が文字列型の値と数値型の値であるような場合等は、適宜数値の方を文字列型の値に自動変換した上で本来の演算を行う……ということかと。重複になるが。
0276デフォルトの名無しさん (ワッチョイ b7cc-lMKa)
垢版 |
2020/09/17(木) 11:44:40.11ID:1/N+zsdG0
同じフォルダにある"〇〇"というCSVを開いて、そのシートの最終行を取得したいのですが
「インデックスが有効範囲にありません」というメッセージでとまります

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

他のブックの最終行を表示する方法を教えてください
(A列には最終行まで値が入っています)
0279デフォルトの名無しさん (ラクッペペ MM8f-gT2D)
垢版 |
2020/09/17(木) 12:24:52.75ID:D1QZID39M
Workbooks.Openの返り値をとってそれを操作する

なおRows.Countも省略せずにシート指定する
0281デフォルトの名無しさん (ワッチョイ 9f01-z5Vf)
垢版 |
2020/09/17(木) 16:10:59.23ID:mN4YvgPv0
>>267
Sub tessstttt()
Dim str1 As String
Dim str2 As String

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

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

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

MsgBox "あいうえお" & "かきくけこ" '結果「あいうえおかきくけこ」
End Sub
0294デフォルトの名無しさん (ワッチョイ 9fad-dpHK)
垢版 |
2020/09/17(木) 20:23:48.98ID:dgD4TP5z0
VBA覚えたての頃はいちいちアクティブシート切り替えてシート指定省いてたけど
Sheet1.Cells(a,b)って書く癖は絶対つけといた方が良いって今は思ってる
可読性が段違いだもん
暫く同じシートのセルをいじくりたおすならWithで目立つように囲ってやりゃあ良いし
0298デフォルトの名無しさん (ワッチョイ 97da-Cup9)
垢版 |
2020/09/17(木) 21:45:39.26ID:DqUtQRPA0
>>294
可読性以前に怖いんだよな。
アクティブシートが切り替わっちゃったらどうしようって。
実行中の操作とかで。
DoEvents挟まなきゃ絶対切り替わらないってならいいんだけど。
0299デフォルトの名無しさん (ワッチョイ b7ce-W2Jb)
垢版 |
2020/09/17(木) 22:36:46.26ID:qGYgSA/Y0
可読性も考慮するならオブジェクト変数に入れたりWithで囲んだり、頻出する構文なら別Functionに飛ばすという手もある
めんどくさいけどバグを出すよりはマシ
0301デフォルトの名無しさん (JP 0Hdf-iZ3/)
垢版 |
2020/09/18(金) 10:32:05.02ID:68qBgcmgH
VBAというよりVBSかもしれませんが
いろいろ試したのですが正規表現の(肯|否)定(先|後)読みに対応していないようなのですが認識に相違ありませんか?
また、擬似的に(肯|否)定(先|後)読みに対応させたコードを誰か公開していませんか?
0302デフォルトの名無しさん (ワッチョイ b7ce-W2Jb)
垢版 |
2020/09/18(金) 14:09:52.14ID:1dkG1MHP0
>>301
多くのアプリで、正規表現はWindowsに標準で内蔵されてるDLLを使ってる
独自の仕様やバグがあるのは既知だから、それが気に入らない時は別のライブラリを見つけてくるしかない
0303デフォルトの名無しさん (ワッチョイ 9f4f-aBI4)
垢版 |
2020/09/18(金) 17:55:04.61ID:vGT+RG4a0
VBSはスレ違いになるんだろうけどさー
今、仕事でそれで書かれたコード見てるんだよねー
VB.NetからVBAに戻るとそのインテリセンスの効かなさに辟易するけど
VBSで書かれたものはその比じゃないねー

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

まぁVBS自体は同じファイルの中に
複数のクラスが書けたりするところは
VBAよりいいのかな?
0306デフォルトの名無しさん (ワッチョイ b7cc-lMKa)
垢版 |
2020/09/18(金) 20:57:17.16ID:nL5nIenz0
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
0312デフォルトの名無しさん (ワッチョイ 9fad-dpHK)
垢版 |
2020/09/18(金) 21:29:41.49ID:LhaPjq300
>>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
0313デフォルトの名無しさん (ワッチョイ b7ce-W2Jb)
垢版 |
2020/09/18(金) 22:40:09.47ID:1dkG1MHP0
>>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
0315デフォルトの名無しさん (ワッチョイ 9f2f-qc2B)
垢版 |
2020/09/18(金) 23:02:36.64ID:V3SekzLi0
>>306
セルに表示されている文字とセルの値は別だって理解が必要

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

まあ、想定とは違うかもしれんが正しく動いてると思われるな
解決策は、表示したいのは数値なのか日付なのかちゃんと決めて然るべき値と書式を設定しろ
0317デフォルトの名無しさん (ワッチョイ 9f01-ybTh)
垢版 |
2020/09/19(土) 04:14:23.53ID:JSd39pzr0
C,D,E列に表示させたいのは「数値」であるにも関わらず
「日付」の表示形式になっているからおかしくなる

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

でどう?
0318デフォルトの名無しさん (ワッチョイ 9f4f-aBI4)
垢版 |
2020/09/19(土) 07:38:40.10ID:kGiNzl5D0
>>305
理解出来るからこそ腹立たしいこともあるよー
例えばaとbとcってBooleanの変数を定義して
a = b = c とか書いてるやつ

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

正直こんなのに関わりたくないけど
仕事だからやるって感じだねー
0319デフォルトの名無しさん (ワッチョイ 9f4f-aBI4)
垢版 |
2020/09/19(土) 07:43:05.72ID:kGiNzl5D0
あ、逆だった
bにcが代入されてaにbが代入されると
思ってたらしいってことね

まぁこの4日間は連休だし
そうじゃなくてもテレワークだから
気楽に適当にやるつもりだよー
0321257 (ワッチョイ bf90-W2Jb)
垢版 |
2020/09/19(土) 10:25:54.04ID:fwfEHGdP0
>>259
遅くなってしまいましてごめん。自分の欲しかった情報がこれで取れる
事ができました。

ありがと!
0322デフォルトの名無しさん (スップ Sdbf-k5ub)
垢版 |
2020/09/19(土) 15:00:02.54ID:TN+kKyJDd
>>320
その判断は結構難しい。
今動いてるものは、そのままにしておくというのが通常だ。

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

それでも、正式に変更することになるかと言えばならない。
こっちだってその辺は分かってる。
何かの時に、きちんと作り直しましょうという話になるまで置いとくもんで、むしろそんな話にならずにずっ―とそのままというのが殆ど。
0323デフォルトの名無しさん (ドコグロ MMdf-RDjc)
垢版 |
2020/09/19(土) 15:56:27.98ID:nGfYM+wGM
>>322
なら
> でもcにbが代入されてそのままaにbが
> 代入されるとか思って書いてたらしく
> システムバグらせてそのままにしてたりとか
> テストどうしてたんだとか思うよねー
とか書くなよ
どうせ盛々で語ってるだけだろw
0326デフォルトの名無しさん (ワッチョイ 9f4f-aBI4)
垢版 |
2020/09/19(土) 18:06:32.97ID:kGiNzl5D0
そうかーみんなそんな具合に考えてるのかー
でも悪いけどその場でチャチャっと直すことはしないよ
もちろん上に話を通すのは当然だけど
こんなぐちゃぐちゃな行き当たりばったりのコード書いてんだから直すんなら他への影響調査の時間貰う
まぁ当たり前だよねー
0327デフォルトの名無しさん (ドコグロ MM2b-RDjc)
垢版 |
2020/09/19(土) 18:37:26.04ID:e5zvgWAXM
>>324
本人でもないのに
> でもcにbが代入されてそのままaにbが
> 代入されるとか思って書いてたらしく
> システムバグらせてそのままにしてたりとか
> テストどうしてたんだとか思うよねー
に対して
> 今動いてるものは、そのままにしておくというのが通常だ。
って言うの?
アホの上塗りにしかなってないけど… w
0332デフォルトの名無しさん (スップ Sdbf-k5ub)
垢版 |
2020/09/19(土) 22:13:23.39ID:TN+kKyJDd
>>325
いや、そうじゃなくて…
そうか、確かにVBAはそれでメシ食ってる奴は少ないから分からんかもしれんな。

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

確かに、思いつきでどんどん改変してく仕事も結構やったことある。
0336デフォルトの名無しさん (ワッチョイ b7ce-W2Jb)
垢版 |
2020/09/19(土) 22:48:23.19ID:RlUx9i/e0
どんなに簡単な修正でも、思い込みやミスは誰にでもある
うっかりエンバグする可能性があるから、先方から高速化などの要求がない限りは動いてる物を勝手に修正はしないのが基本かなあ
0341デフォルトの名無しさん (ドコグロ MMdf-RDjc)
垢版 |
2020/09/20(日) 03:34:03.51ID:G6tFT8m8M
なんで動いてるものの話になってるのかわからんけど元々の話は
> システムバグらせてそのままにしてたりとか
> テストどうしてたんだとか思うよねー
だから、修正ありきだろ
修正の手順はその組織で違うだろうけど
0343デフォルトの名無しさん (ワッチョイ 9f2f-5SD5)
垢版 |
2020/09/20(日) 08:29:09.75ID:lYpGB0SB0
技術的に可能(can)なのと
プロジェクトとして可能(may)なのはべつだって言ってるんだが

VBA使いを悪く言う気はないが
まともなプロジェクトでやってないから理解できないんだろうな
0344デフォルトの名無しさん (アウアウウー Sa5b-FmA/)
垢版 |
2020/09/20(日) 09:11:52.63ID:jB/qzKKfa
内製なら結構気軽に弄るもんだよ
俺は以前はSIにいて今は自社サービス兼社内SEだから両方の立場がわかるけど、
システムって君のような外の人が思ってるほど重要なものでも神聖なものでもない
0348デフォルトの名無しさん (ワッチョイ 9f01-RDjc)
垢版 |
2020/09/20(日) 12:04:24.67ID:WRa/xy2u0
自分とか周りの数人しか使わないとかならリファクタリングで弄るケースもあるし全社レベルのシステムとかなら影響調査からってケースもあるわな
そのプログラムがおかしくなった時の影響度とかも関係するし
要はケースバイケース
0349デフォルトの名無しさん (スップ Sdbf-k5ub)
垢版 |
2020/09/20(日) 16:05:38.71ID:Q2tD94P+d
>>338
>>339
先のAccessの話なら直せる自信ならある。
というか、ここにいる奴で俺が出来ないんだったら出来る奴はいないと思うぜ。
それぐらい自信ならある。

ただし、まとも奴なら誰でも言うがバグを出さない自信は無い。
0351デフォルトの名無しさん (ワッチョイ d763-lMKa)
垢版 |
2020/09/20(日) 16:52:11.86ID:qZo3Wq6A0
>>348
だよな、さすがに自分とか周りの数人しか使わないとかなら
時間見て許可取ってリファクタリングするわ
自分が作ったツールやシステムなら空き時間見て少しづつリファクタリングだな

さすがに全社レベルのシステムで勝手にリファクタリングはないな
そもそも許可取るのが大変
0356デフォルトの名無しさん (アウアウエー Sadf-8NzO)
垢版 |
2020/09/20(日) 20:55:59.15ID:6QmidxOBa
セルの中身が
--------------------------
あああ325gsdsが|
aaaojgwe |
33333 |
|
いいksが |
bbb93502g |
^^^^^^^ |
|
|
888っふぁふぁ |
aaawopfjw |
f−bgんlsgさ |
-------------------------|
のような感じの際、「あああ325gsdsが」や「aaaojgwe」のように1行づつ取得する方法はあるでしょうか?
0364デフォルトの名無しさん (JP 0Hdf-iZ3/)
垢版 |
2020/09/20(日) 22:16:21.98ID:ce1O3kmIH
>>361
>>363
フローチャートは書けても
オブジェクト指向というものがあるということがなんとなく判っていても
じゃあオブジェクト指向できっちり設計しようという発想が浮かばないというかまだ怖さがあるんだよね
MVCって言葉もネットサーフィンをして先週巡り合ったくらいの素人だから
とりあえず新たな設計手法を試そうと思っても
何に手をつければいいかわからん
0365デフォルトの名無しさん (ワッチョイ 9f59-P295)
垢版 |
2020/09/20(日) 22:48:07.21ID:lUm0Ft460
=EVALUATE()を使ったらマクロだよって保存するときに言われた。
見た目関数なのに実はマクロっていうものが他にどんなのがあるか知りたいんだけど、こういうのなんて言うの?
検索ワードが思い付かないんだけど知ってたら教えて。
0366デフォルトの名無しさん (スップ Sdbf-k5ub)
垢版 |
2020/09/20(日) 22:53:39.67ID:Q2tD94P+d
>>364
いや、VBAはあまりオブジェクト志向とは親和性がないんだよ。
VBAそのものの根幹はオブジェクトそのものを扱うし親和性も有るんだけど、それで何かを作る時には俺はあまりオブジェクト志向で作らないな。

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

でも、VBAでオブジェクト志向って上級者じゃないとピッタリ来ないんじゃないかな。
0376デフォルトの名無しさん (ワッチョイ f77c-5MQP)
垢版 |
2020/09/20(日) 23:51:14.87ID:bN/HvUsh0
セル内で改行するとlfが入る
テキストファイルとかでcrlfで改行されたものをセルにコピペすればcrlfがそのまま貼り付けられるが、lf部分が改行されるだけでcrは無視される
0377デフォルトの名無しさん (ワッチョイ 775f-VvsD)
垢版 |
2020/09/21(月) 23:04:27.19ID:lAfdaJg/0
もともとマック用のソフトウェアだから、改行コードが揃っていないんだ。
0384デフォルトの名無しさん (ワッチョイ 12b5-VcBo)
垢版 |
2020/09/23(水) 20:34:38.55ID:Dfniq8Ns0
>>381
ありがとう
>>383
本当にありがとう

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

めちゃくちゃ後付けですみませんが
これを一番右でこいつは真ん中とか
任意の配置は流石に無理ですか?
出来そうなら自分でも何とか調べてみます
0386デフォルトの名無しさん (ワッチョイ 126d-6H/P)
垢版 |
2020/09/23(水) 22:06:19.89ID:gKXTj3UI0
こういう馬鹿の特徴は、少し教えるとつけあがって自分で考えることもせずあれもこれもとねだること
少しは頭を使えよ
0390デフォルトの名無しさん (ワイーワ2 FF6a-A++P)
垢版 |
2020/09/25(金) 21:36:41.69ID:WSuN06d1F
罫線の所属するセルについて質問です

セルの値を条件にして罫線の種類を変えようと考えているのですが、
隣合うセルの境界線はどちらのセルの罫線が優先されて表示されるのでしょうか?
よろしくお願いします
0392デフォルトの名無しさん (ワッチョイ 5fda-b+lb)
垢版 |
2020/09/25(金) 22:34:46.55ID:48EvNsnc0
後から指定した方だな。
思いっきり拡大すれば、線が2本引いてあるのが見えるのかと思ったが、そんなことはなかった。
ちなみに、ストIIで2人同時に投げ技をかけた場合、どちらが優先されるのかはランダムで50%/50%らしい。
0400デフォルトの名無しさん (スップ Sd52-OmYe)
垢版 |
2020/09/27(日) 15:27:50.06ID:o5RjmHqkd
>>397
アセンブラやりたいってこと?
というのと同じ話。
InternetExplorer.Applicationじゃ無くてもみんなgetElementBy使う。

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

普通はmsxml2.xmlhttpとかでソース取得して、それをDocumentに入れてgetElemetsByだな。
0406デフォルトの名無しさん (ワッチョイ 922f-ozis)
垢版 |
2020/09/28(月) 13:09:33.23ID:LAwWa5+y0
RPA的制御がなにかよくわからんが
getElementしたくなかったら、API利用してxml取得しろみたいな話を言われたんじゃないか
それでAPI使えないけどgetElementしない方法ないの?と

取得できるものがhtmlなら、すなおにgetElementしとけ 以上
ちなみにxmlだろうとhtmlだろうとcsvだろうと、それは多くの場合httpで取得してるだろうがな
0407デフォルトの名無しさん (オイコラミネオ MM6e-oFxJ)
垢版 |
2020/09/28(月) 15:51:42.57ID:m7hqrCGdM
>>402
オブラートに包んでもおかしくないか
普通ラップするとかカプセル化するとか言うんじゃ・・・

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

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

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

ちなみにIEクラスの利点として、ブラウザ上でjsが実行されているページにアクセスすることができる点がある
0408デフォルトの名無しさん (スップ Sd32-PD9b)
垢版 |
2020/09/28(月) 16:26:17.24ID:gMLgNw+wd
それをVBAでやる意味は何?
もっと他に簡単に出来る言語でやれは?
0409デフォルトの名無しさん (ラクッペペ MMde-T5KC)
垢版 |
2020/09/28(月) 16:37:22.01ID:oE/worxcM
結果をexcelで扱うならVBAが最適では?
0412デフォルトの名無しさん (ワッチョイ 1663-QTQj)
垢版 |
2020/09/28(月) 21:25:16.14ID:d76PIxro0
質問させていただきます

ユーザーフォームのテキストボックスにフォーカスがあたってる(入力状態)でwindowsのデスクトップがアクティブもしくは他アプリケーションがアクティブを検知することはできますでしょうか?
タッチパネルなどでユーザーフォーム外をタッチしてしまった時を検出したいです。
できるのであればご教授願いたい…
0413デフォルトの名無しさん (ワッチョイ b35f-OzOo)
垢版 |
2020/09/29(火) 00:06:40.59ID:bEee4vhd0
Windowオブジェクトにどんなプロパティがあるんだっけ
0416デフォルトの名無しさん (ワッチョイ 4b2c-ozis)
垢版 |
2020/09/29(火) 00:49:54.82ID:Iz7+ZlTk0
HTML, XML, CSV などのスクレイピングなら、
Ruby で、Nokogiri, Selenium Webdriver などが簡単

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

Rubyで、nokogiri, curl を使った例

require 'nokogiri'

html = `curl http://www.example.com/`

doc = Nokogiri::HTML( html )

elements = doc.css( "h1" )
puts elements.first.content #=> Example Domain
0417デフォルトの名無しさん (ワッチョイ 23e6-T5KC)
垢版 |
2020/09/29(火) 06:58:50.11ID:iE38wEdU0
外部プロセスの起動、待機、出力の取り込みまで実装してくださいよ
0420デフォルトの名無しさん (スッップ Sd32-OmYe)
垢版 |
2020/09/29(火) 23:34:39.45ID:Rcn+G4xKd
VBAでやる意味?
VBA以外だとアホな操作が必要だぞ。

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

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

他言語でやる場合ってのはバッチ処理なのか?
それしか無いのか?
そういうブツ切りでデータ加工していくというなら寧ろExcelなんぞ使わん。
0421デフォルトの名無しさん (ワッチョイ e3da-yeTY)
垢版 |
2020/09/30(水) 00:00:14.29ID:BPaZHsLq0
>>407
jsしたかったらIEするしかないのね。
今時のHPほぼ全滅じゃん。
0424デフォルトの名無しさん (ワッチョイ f35f-67ZW)
垢版 |
2020/09/30(水) 16:18:36.41ID:7F4wikGt0
>>419
そのマルチタスク、マルチウィンドウを否定したい理由は何なの?
0425デフォルトの名無しさん (ワッチョイ cf63-dtjG)
垢版 |
2020/09/30(水) 16:57:41.88ID:QOxpj5qw0
>>424
フォームのテキストボックスに機器の計測値が入るようになっており
テキストボックスにフォーカスがあたってない状態で計測値が送られてくると値が取れないのでおじーちゃんたちにも気づくようにフォーカスが離れた時に警告ユーザーフォームを出したいのです。他アプリケーションなどを立ち上げる事も想定されます。

>>422
情報ありがとうございます
画像の通りやってみましたがイルカさんは働いてくれませんでした…
0430デフォルトの名無しさん (テテンテンテン MM7f-vZte)
垢版 |
2020/10/01(木) 01:07:42.33ID:lGabW6tFM
>>425
> フォームのテキストボックスに機器の計測値が入るようになっており
wの前にデータ取得しとるわなw

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

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

長々と愚痴ってスマンな
スレチだよな
0433デフォルトの名無しさん (スッップ Sd1f-nakg)
垢版 |
2020/10/01(木) 07:49:06.10ID:H0TKMoBwd
Windowsの標準のユーザーインターフェイスを意識しないと、使いやすいと思ったものが結局つかいにくくなる。

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

こういう処理でユーザーに何かさせる必要は無い筈。
0435デフォルトの名無しさん (ラクッペペ MM7f-62ru)
垢版 |
2020/10/01(木) 10:34:23.83ID:6DJ6J+GDM
タブレットでバーコードリーダーのキーボード入力モードでも使ってるんだろうなと想像

COMで操作できるライブラぐらい付いているだろうからそれ使えば解決
0436デフォルトの名無しさん (ワッチョイ cf63-dtjG)
垢版 |
2020/10/01(木) 16:54:34.45ID:Ld5Ou2iR0
>>435
まさにおっしゃる通りで作業進捗をバーコードで管理するものを作りました。
次は工程内のチェックシートと計測値などのトレーサビリティです禿げそう
とりあえず計測器具も試用で借りてる段階なのでメーカーにライブラリの事聞いてみます…
0437デフォルトの名無しさん (テテンテンテン MM7f-vZte)
垢版 |
2020/10/01(木) 17:12:49.41ID:W6bAQtLIM
>>431
知ってた
0439デフォルトの名無しさん (ワッチョイ ff1f-Fuq4)
垢版 |
2020/10/01(木) 21:36:53.69ID:dM4yb7Ap0
罫線で囲われてたり、色塗りされたりするセルをマウスでドラッグ移動した時移動した場所は何もなくるなるのを罫線のみを残す方法ってありませんか?
簡単に言うと罫線で作った表の形式を保持したい。
0444デフォルトの名無しさん (ワッチョイ e3da-yeTY)
垢版 |
2020/10/02(金) 01:42:30.77ID:MWdBgx4Q0
セルをマウスでドラッグって何だよ?
エクセルで将棋でもやるの?
0445デフォルトの名無しさん (ワッチョイ f35f-67ZW)
垢版 |
2020/10/02(金) 01:43:49.39ID:ChxT/cO/0
>>425
それExcel VBAでやるものではない。
自分のやりたいようにやりたければ、Windows SDKでの開発をしてください。
0446デフォルトの名無しさん (ワッチョイ f35f-67ZW)
垢版 |
2020/10/02(金) 01:49:29.59ID:ChxT/cO/0
>>439
そもそも手順というものを考えた方がいい。
移動する前の情報を移動先には持ってくるが、移動元にはその情報を適用しないのはなぜ?
0447デフォルトの名無しさん (ワッチョイ d3cc-gW4a)
垢版 |
2020/10/02(金) 10:09:18.16ID:A7BNHAQE0
指定したフォルダ内の全ての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
0448447 (ワッチョイ d3cc-gW4a)
垢版 |
2020/10/02(金) 10:09:56.74ID:A7BNHAQE0
つづき

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
0449デフォルトの名無しさん (ブーイモ MM27-gZNM)
垢版 |
2020/10/02(金) 10:42:45.10ID:cHoSzh9XM
ReDim Preserveで操作可能なのは最右端の次元だけだから2次元配列で1次元目に使いたいなら一旦反転させた状態で操作して出力時にWorksheetfunction.transpose使って吐き出す必要があるぞ
いまいち最終目的が分からなかったから取り合えず読んでて気になった所だけ
0451デフォルトの名無しさん (ラクッペペ MM7f-62ru)
垢版 |
2020/10/02(金) 12:25:22.61ID:XdHW2/g2M
win dosならcopyで連結できるけど
0453447 (ワッチョイ d3cc-jreG)
垢版 |
2020/10/02(金) 13:32:21.66ID:A7BNHAQE0
>>449

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

それと、配列のUpperをどう設定したらいいですか?
0454デフォルトの名無しさん (ワッチョイ ff6d-Zm3W)
垢版 |
2020/10/02(金) 15:56:01.43ID:7/1+1goB0
また馬鹿な質問者か。それともいつもの厚かましい馬鹿か?
0455デフォルトの名無しさん (ラクッペペ MM7f-62ru)
垢版 |
2020/10/02(金) 16:13:26.37ID:XdHW2/g2M
右端の次元と右端の列では話の次元が違うけどわざとやってんのかなー?

excelなんだからとりあえずシートに格納すればいいと思うんだけどなー
配列に1行づつ追加するよりはやいんじゃね?
VBは動的配列無いんだからパフォーマンス出すには頭を使わにゃいかんよ
行数をキーにしたDictionaryもいいかもね
0456デフォルトの名無しさん (ワッチョイ ffad-gZNM)
垢版 |
2020/10/02(金) 16:51:14.94ID:p6rjz1Jr0
>>453
配列のUpperが何を意味してるのかいまいち分からんがこんな感じで良いんか?

Line Input #1, TargetDate
BeforeArray(0, Ubound(BeforeArray, 2)) = ファイル名
For文[1〜190](BeforeArrayにSplit(TargetDate, ″,″)を放り込む)
ReDim Preserve BeforeArray(0 to 190, Ubound(BeforeArray, 2)+1)
Do Until EOF(1)
Line Input #1, TargetDate
For文[1〜190](BeforeArrayにSplit(TargetDate, ″,″)を放り込む)
ReDim Preserve BeforeArray(0 to 190, Ubound(BeforeArray, 2)+1)
Loop
0459デフォルトの名無しさん (ワッチョイ d32c-G8Sl)
垢版 |
2020/10/02(金) 23:43:54.67ID:ooD45Zz30
CSV の規格では、各要素をクォート文字で囲めば、
各要素中に、列区切り文字も入れられる

"a,b", x

Ruby などのCSVライブラリを使わず、
自力で、列区切り文字で分割すると、バグるだけ

CSVの規格を知らない香具師が、よくやってる
0461デフォルトの名無しさん (ワッチョイ f35f-MSJL)
垢版 |
2020/10/03(土) 07:11:14.79ID:umHauNXS0
ExcelでCSVをダブルクリックで開いて編集、上書きして事故る人が多いね
0464デフォルトの名無しさん (ワッチョイ f35f-67ZW)
垢版 |
2020/10/03(土) 11:51:59.59ID:ylT9+9xh0
>>459
マイクロソフトの製品はそれに沿っているものがあるが、クォーテーションがついたり、つかなかったりするのは、人間にとってもタチが悪く、完全に失敗した仕様と結論が出ている。
0465459 (ワッチョイ d32c-IT45)
垢版 |
2020/10/03(土) 13:01:37.98ID:/wA+nWqo0
列区切り文字は、必要なければ省略できる

つまり、x も、"x" も同じ。
全ての要素に、付けてもよい

ただし、"a,b" みたいに要素内に、
行区切り文字・列区切り文字・クォート文字を含む場合は、省略できない
0466459 (ワッチョイ d32c-IT45)
垢版 |
2020/10/03(土) 13:03:38.87ID:/wA+nWqo0
>>465
修正

>列区切り文字は、必要なければ省略できる
クォート文字は、必要なければ省略できる
0470デフォルトの名無しさん (ワッチョイ 6309-gW4a)
垢版 |
2020/10/04(日) 19:09:07.88ID:mqiPq7lq0
配列を戻す自作関数を呼び出し先Subから複数回実行して、配列を結合したい
んだけど、どうすればできますか? redim preserveとUBoundを使うのかも
しれないけど、いい感じにまとまったコードが書けない。
例えば、下の関数を、別のSubから2回実行させて、
「Ary(3) ※中身:path1,path2,path1,path2」
の結果を得たいです。

Function TestFunc()
Dim testPath(1)
testPath(0) = "path1"
testPath(1) = "path2"
'return
TestFunc = testPath
End Function
0471デフォルトの名無しさん (ワッチョイ 6309-gW4a)
垢版 |
2020/10/04(日) 19:09:08.25ID:mqiPq7lq0
配列を戻す自作関数を呼び出し先Subから複数回実行して、配列を結合したい
んだけど、どうすればできますか? redim preserveとUBoundを使うのかも
しれないけど、いい感じにまとまったコードが書けない。
例えば、下の関数を、別のSubから2回実行させて、
「Ary(3) ※中身:path1,path2,path1,path2」
の結果を得たいです。

Function TestFunc()
Dim testPath(1)
testPath(0) = "path1"
testPath(1) = "path2"
'return
TestFunc = testPath
End Function
0476デフォルトの名無しさん (スッップ Sd1f-EBv7)
垢版 |
2020/10/04(日) 21:43:28.32ID:hlbFeQNpd
後出し続けて全部作ってもらおうという魂胆の奴だぞ
0477デフォルトの名無しさん (オッペケ Sr47-owA3)
垢版 |
2020/10/05(月) 01:21:09.51ID:Roj0MJiCr
VBAからIEを操作して、タグを指定して.valueやselctedで自動化しているのですが、ヤフオクの商品説明だけどうしても値の挿入ができません。
Tabや近い要素をフォーカスしたりクリックし、SendkeyなどでShift +Tabからエンダーなど試していますが、一向に解決できません。
直接でか無くてもカーソルが点滅させれれば、クリップボード経由で貼り付けるような仕様にしようと考えています。
0478デフォルトの名無しさん (ワッチョイ d32c-IT45)
垢版 |
2020/10/05(月) 07:08:41.25ID:z7kgQPv30
漏れは、Ruby, Selenium Webdriver で、ブラウザを自動操作して、
send_key で、ユーザー名・パスワードを自動入力して、ヤフーにログインしてる

require "selenium-webdriver"

options = Selenium::WebDriver::Chrome::Options.new
options.add_option( :detach, true ) # ブラウザを切り離す
options.add_argument( '--start-maximized' ) # 画面最大

driver = Selenium::WebDriver.for :chrome, options: options
driver.manage.timeouts.implicit_wait = 10 # default timeout

driver.navigate.to "https://login.yahoo.co.jp/config/login_verify2?.src=ym";

element = driver.find_element(:id => "username")
element.send_key "ユーザー名"

driver.find_element(:id => "btnNext").click

element = driver.find_element(:id => "passwd")
element.send_key "パスワード"

driver.find_element(:id => "btnSubmit").click
0488デフォルトの名無しさん (ラクッペペ MM7f-62ru)
垢版 |
2020/10/05(月) 19:48:49.79ID:UUAqkjmTM
>>484
F1キー押す方が早くね?
0491デフォルトの名無しさん (ワッチョイ 1b63-dHQN)
垢版 |
2020/10/07(水) 19:45:01.41ID:FTOZLATq0
下記のように特定の文字を削除して、改行をやめて1行文にしたいのですがコードのご教示いただけないでしょうか


やんやんつけ棒§
めちゃ美味い

ポテトチップス§
めちゃ美味い



やんやんつけ棒めちゃ美味い

ポテトチップスめちゃ美味い
0495デフォルトの名無しさん (ワッチョイ 8ae6-SfJD)
垢版 |
2020/10/07(水) 21:05:04.00ID:8t5FIA980
もっと面白い質問しろよ
0497デフォルトの名無しさん (ワッチョイ 1b63-dHQN)
垢版 |
2020/10/07(水) 21:08:37.26ID:FTOZLATq0
申し訳ありません、もう一点

A1:私は実は理学部出身
A2:の元々は地質学者です
A3:
A4:こうした南鳥島で
A5:
A6:レアアースの濃集が
A7:起こる
A8:
A9:というのは
A10:
A11:特徴的な層準に

A1:私は実は理学部出身
  の元々は地質学者です
A2:こうした南鳥島で
A3:レアアースの濃集が
  起こる
A4:というのは
A5:特徴的な層準に


下の行に文字列 → 2行の文章として、改行を入れてExcelの1マスにまとめる
下の行が空白 → 1行の文書なのでそのまま

これをなんとかVBAで自動化したいのですが記述を教示願えますでしょうか

面白くない質問ですみません…
0501デフォルトの名無しさん (ワッチョイ ca6d-zMau)
垢版 |
2020/10/07(水) 22:16:39.68ID:XaxSLEYL0
いつものクレクレ君かな
0505デフォルトの名無しさん (ワッチョイ 67da-xYNh)
垢版 |
2020/10/08(木) 01:49:40.56ID:584FeZ4r0
>>497
VBAに慣れている人なら簡単に自動化というかVBAで組める内容ではある
問題はこの程度の内容を質問するより先に、自力でできるとこまで自分で
やらなかった最初の一歩が間違っているんだと思う
0506デフォルトの名無しさん (アウアウウー Sa2f-J9E+)
垢版 |
2020/10/08(木) 09:04:33.67ID:BqKPxLQJa
CSVとして保存
VSCode等のまともなエディタで開く
([^¥r]+)¥r¥n([^¥r]+)を”$1¥r¥n$2”に置換
¥r¥n¥r¥nを¥r¥nに置換
Excelにインポート

>>492同様にワンショットでいいならこんな感じでいけるんじゃね
0515デフォルトの名無しさん (ワッチョイ 6bda-q18j)
垢版 |
2020/10/09(金) 00:24:11.53ID:t8qEIjmh0
Dim dw As Date
Dim i As Integer

Sub test()
'ランダムに並び替える

Randomize
'乱数を入れる
For i = 1 To 200
Cells(i, 2) = Rnd()
Next i

'乱数で昇順並び替え
Range("A1:B200").Sort _
Key1:=Range("B1"), Order1:=xlAscending, _
Header:=xlNo, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin

'乱数を削除
Range("B1:B200").Clear

dw = DateAdd("S", 5, Now)
Application.OnTime dw, "test"

End Sub
0516デフォルトの名無しさん (ワッチョイ 6bda-q18j)
垢版 |
2020/10/09(金) 00:26:14.42ID:t8qEIjmh0
>>515
のdw = DateAdd("S", 5, Now)
Application.OnTime dw, "test"
を入れると、
「実行できません。このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。」
となってしまいます。

「マクロのセキュリティ」は「すべて有効」にしています。

どうすればいいでしょうか
0518デフォルトの名無しさん (ワッチョイ 6bda-q18j)
垢版 |
2020/10/09(金) 01:28:40.34ID:t8qEIjmh0
>>517
できました!
>CellsとかRangeとか、ちゃんとシート指定しといたほうが良いぞ
わかりました

ありがとうございました。
0521デフォルトの名無しさん (ブーイモ MM76-HnI9)
垢版 |
2020/10/09(金) 16:55:39.01ID:9cfuJ5OLM
かなり前だけどこのスレで教わったアドバイスが今やってることでピンときた
タブ増やして進めてくより
userformをhideとshowで工程進めてくみたいにしたほうがいいわ
ありがとうかなり前に教えてくれた人!
0522デフォルトの名無しさん (アウアウウー Sa2f-5jeW)
垢版 |
2020/10/09(金) 17:52:44.19ID:OU1KT8YFa
>>519
fori=1 to 要素数(※要素数はカンマで区切られた数)
数字=数字 & “-” & i
next i
みたいな感じで
前の数字と違ったら数字をリセット
(iが1ならこの処理はしない)
要素がひとつなら処理せず次のiに
0525デフォルトの名無しさん (ワッチョイ 03e5-SfJD)
垢版 |
2020/10/09(金) 18:33:13.76ID:/2wG1kS20
内部から漏洩させるのが確実
0526デフォルトの名無しさん (ワッチョイ 03e5-SfJD)
垢版 |
2020/10/09(金) 18:36:07.52ID:/2wG1kS20
>>523
それ以前にまったく要望を満たしていない
0533デフォルトの名無しさん (ワッチョイ 8ae6-SfJD)
垢版 |
2020/10/09(金) 21:49:40.29ID:hWEYACMU0
>>528
1.処理速度
2.低コスト
3.低ステップ
4.読みやすさ

優先順位はとりあえずこんな感じで頼むわ
0538デフォルトの名無しさん (ワッチョイ 07ce-KV+F)
垢版 |
2020/10/09(金) 22:24:25.52ID:VcvC9Dp/0
Sub Macro1()
  Dim a(), b()
  a = Array(1, 1, 2, 2, 3, 4, 4, 4, 5, 6)
  u = UBound(a)
  ReDim Preserve a(u + 1)
  ReDim b(u)
  a(u + 1) = a(u) + 1
  x = a(0) + 1

  For i = 0 To u
    If a(i) - x Then
      c = 1
    Else
      c = c + 1
    End If
    If c = 1 Then
      b(i) = a(i)
      If a(i) = a(i + 1) And u - i Then b(i) = b(i) & "-1"
    Else
      b(i) = a(i) & "-" & c
    End If
    x = a(i)
  Next

  Debug.Print Join(b, ",")
End Sub
0539デフォルトの名無しさん (ワッチョイ 07ce-KV+F)
垢版 |
2020/10/09(金) 22:47:08.38ID:VcvC9Dp/0
これよりシンプルにするのは俺には無理だった

Sub Macro1()
  Dim a$(), b()
  a = Split("1,1,2,2,3,4,4,4,5,6", ",")

  u = UBound(a)
  ReDim Preserve a(u + 1)
  ReDim b(u)
  a(u + 1) = a(u) + 1
  x = a(0) + 1

  For i = 0 To u
    b(i) = a(i)
    c = c + 1
    If a(i) - x Then c = 1
    If (c > 1) + (c = 1) * (a(i) = a(i + 1)) * (u - i) Then b(i) = b(i) & "-" & c
    x = a(i)
  Next

  Debug.Print Join(b, ",")
End Sub
0541デフォルトの名無しさん (ワッチョイ 672c-Dl/i)
垢版 |
2020/10/09(金) 23:19:19.22ID:760t1BpC0
プログラミングのお題スレにも、たまにあるけど、
次の要素を先読みするのは面倒

スタックのpeek みたいに、要素を読み取るだけで、削除しない関数があればよい
0542デフォルトの名無しさん (ワッチョイ 672c-Dl/i)
垢版 |
2020/10/10(土) 06:22:18.37ID:BjcbKuib0
Ruby では、

# 一旦、整数の2次元配列にする。[[1, 1], [2, 2], [3], [4, 4, 4], [5], [6]]

result_ary = input_ary = "1,1,2,2,3,4,4,4,5,6".split( "," ).
chunk_while{ |prev, nxt| prev == nxt }.each_with_object( [ ] ) do |ary, acc| # 蓄積変数は配列
if ary.length == 1
acc.push( ary[ 0 ] )
else
ary.each_with_index do |num, idx|
acc.push( "#{ num }-#{ idx + 1 }" )
end
end
end

puts result_ary.to_a.join( "," ) # カンマ区切り
0543542 (ワッチョイ 672c-Dl/i)
垢版 |
2020/10/10(土) 06:24:55.49ID:BjcbKuib0
>>542
修正

># 一旦、整数の2次元配列にする。[[1, 1], [2, 2], [3], [4, 4, 4], [5], [6]]
一旦、文字列の2次元配列にする
0544542 (ワッチョイ 672c-Dl/i)
垢版 |
2020/10/10(土) 06:29:37.77ID:BjcbKuib0
>>542
修正

>result_ary = input_ary = "1,1,2,2,3,4,4,4,5,6".split( "," ).
result_ary = "1,1,2,2,3,4,4,4,5,6".split( "," ).
0547デフォルトの名無しさん (ワッチョイ ca01-yf4V)
垢版 |
2020/10/10(土) 09:43:21.90ID:VjEh1Ow80
てかあの程度の仕様なら自分で書けよって思う
あれぐらいで書けないってのは根本的にプログラミングの基礎分かってないでしょ
forとifで一度自分で書いてみろと
0553デフォルトの名無しさん (ラクッペペ MM86-SfJD)
垢版 |
2020/10/10(土) 15:38:43.61ID:VaQE37nUM
バグってハニー
0555542 (ワッチョイ 672c-JAxH)
垢版 |
2020/10/10(土) 22:30:05.80ID:BjcbKuib0
データベース変換などは、Ruby のEnumerable のメソッドを見て、
シェル芸とか、プログラミングのお題スレの問題を解いた方がよい

VBA は可読性が悪すぎて、作っても再利用できない。
OSS で全会社共通で、RubyのEnumerable 相当のメソッドを作って公開するべき!

他言語ではたいてい、Rubyと等価のメソッドを作る
0558デフォルトの名無しさん (ワッチョイ b301-NY7j)
垢版 |
2020/10/11(日) 08:15:59.41ID:qzIChT2z0
>>555
データ変換てのは基本的な作法さえ知ってればEnumerableメソッド使わなくても特に困ることもないだろう
ただのループ構造をこねくり回してるだけでそのためにメソッドを割り当てるなんてお仕着せもいいところ
0560デフォルトの名無しさん (ワッチョイ 6b63-JAxH)
垢版 |
2020/10/11(日) 12:29:43.68ID:lH9sVzvl0
Acrobatを使用したプログラムを複数回実行すると初回だけ成功し
2回目以降は
実行時エラー2147467259(80004005)
エラーを特定できません
となります(idに代入する行でエラー)
終了処理に不備があってacrobatのプロセスが残っているのではと思いましたが
色々なサイトを見ても解決がわからない状態です。
どうすれば治りますか。
プログラムは次のレスを参照ください。
0561デフォルトの名無しさん (ワッチョイ 6b63-JAxH)
垢版 |
2020/10/11(日) 12:30:03.99ID:lH9sVzvl0
Dim objAcroApp As New Acrobat.AcroApp
Dim objAcroAVDoc As New Acrobat.AcroAVDoc
Dim objAcroPDDoc As New Acrobat.AcroPDDoc
Dim id As Long
Dim js As Object
Dim SaveName As String

id = objAcroApp.Show
id = objAcroAVDoc.Open(FilePath, "")

Set objAcroPDDoc = objAcroAVDoc.GetPDDoc()
Set js = objAcroPDDoc.GetJSObject
SaveName = FolderPath & "\" & Replace(FileName, ".pdf", "")

'変換のうえテキストファイルとして保存
js.SaveAs SaveName & ".txt", "com.adobe.acrobat.plain-text"

'PDFファイルを変更無しで閉じる
id = objAcroAVDoc.Close(1)

'Acrobatアプリケーションを終了する。
id = objAcroApp.Hide
id = objAcroApp.Exit
Set js = Nothing
Set objAcroAVDoc = Nothing
Set objAcroApp = Nothing
0566デフォルトの名無しさん (ワッチョイ 6f5f-e5Pm)
垢版 |
2020/10/12(月) 01:35:39.95ID:EUVfONAL0
どうやって再度、実行できているのか?

仕事ができない人がよく言う説明。
0568デフォルトの名無しさん (ラクッペペ MM86-SfJD)
垢版 |
2020/10/12(月) 10:12:47.93ID:5eYbb8SbM
アクロバットがすぐに終了しないのは体感でも分かるレベル
0569デフォルトの名無しさん (ワッチョイ 6f5f-e5Pm)
垢版 |
2020/10/12(月) 18:47:34.51ID:EUVfONAL0
2回目以降から1回目に戻る手順くらい書けよ!
0570デフォルトの名無しさん (ワッチョイ 07ad-yGJI)
垢版 |
2020/10/12(月) 21:34:54.79ID:mxOFfEsA0
おもいついた
>>530
最後にsubstituteでまとめて消せばよくね?
0574デフォルトの名無しさん (ワッチョイ 6749-xYNh)
垢版 |
2020/10/13(火) 10:34:47.53ID:lK6RB09G0
「.CloseAllDocs」 ってメソッドもAcrobat.AcroAppにはあるらしいな
そしてExitだけじゃプロセスが残ることもあるらしい

まあAcrobatの環境ないから検証も何もできんけど、
安全取るならExitしたあとにプロセス監視してkillするしかないんじゃね
途中でエラー落ちしてもプロセスのこっちゃうらしいし

ちなみにどうでもいいが個人的にはExitとCloseは、意味的に異なると思う
だからExitとCloseが両方あってもおかしくないとは思う
でもExitがCloseを包括していても、それはそれでありだとも思う
Acrobat.AcroAppの公式ドキュメント見れてないからワイには答えが出せんわ
0575デフォルトの名無しさん (ワッチョイ 9f63-F9zC)
垢版 |
2020/10/15(木) 08:48:14.01ID:wrF56cyr0
>>560です
皆さん本当にありがとうございます。
みなさんのご意見をプログラムに反映した後、
ソースを最小(adobeをオープン・クローズするのみ)
にしてもエラーです・・・(次レス参照)

タスクマネージャには
adobe CEF helper、adobe update serviceがありますが
前者は消しても湧いてきているように見えます。
パソコン再起動してもダメ、日付が変わってもダメです。

しかし、エラーになったあとちょうど24時間経過すると
無事実行できるようになることがわかりました・・・
24時間後の数分前はエラーでしたが
数分後は無事実行できました。

ちょうど24時間で消えるプロセスが存在するんだと思いますが
何かご存知のかた居ましたらご教示ください・・・
0576デフォルトの名無しさん (ワッチョイ 9f63-F9zC)
垢版 |
2020/10/15(木) 08:49:26.67ID:wrF56cyr0
ソースを最小にするためところどころコメントアウトしてます
Dim objAcroApp As Acrobat.AcroApp
Dim objAcroAVDoc As Acrobat.AcroAVDoc
' Dim objAcroPDDoc As Acrobat.AcroPDDoc
Dim id As Long
' Dim js As Object
' Dim SaveName As String

Set objAcroApp = CreateObject( "AcroExch.App" )
Set objAcroAVDoc = CreateObject( "AcroExch.AVDoc" )
id = objAcroApp.Show
id = objAcroAVDoc.Open(FilePath, "")

' Set objAcroPDDoc = objAcroAVDoc.GetPDDoc()
' Set js = objAcroPDDoc.GetJSObject
' SaveName = FolderPath & "\" & Replace(FileName, ".pdf", "")

'変換のうえテキストファイルとして保存
' js.SaveAs SaveName & ".txt", "com.adobe.acrobat.plain-text"

'PDFファイルを変更無しで閉じる
id = objAcroAVDoc.Close(1)

'Acrobatアプリケーションを終了する。
id = objAcroApp.CloseAllDocs←どっかのサイトでobjAcroApp.Hideの前に入れてました
id = objAcroApp.Hide
id = objAcroApp.Exit
' Set js = Nothing
Set objAcroAVDoc = Nothing
Set objAcroApp = Nothing
0577デフォルトの名無しさん (ワッチョイ 5b2c-F9zC)
垢版 |
2020/10/15(木) 09:20:24.96ID:7eWumHpU0
起動設定で、プロセスを殺すと、また再起動するアプリがある。
ウィルスチェックなどの、何かをチェックするアプリ

必ず、最低1つは起動しておくタイプのアプリ

そういうアプリは使わない方がよい。
何をチェックして、本社に送っているか、怪しい

会社に問い合わせて、再起動を止めるような設定を聞けば?
0578デフォルトの名無しさん (スププ Sdbf-K5sQ)
垢版 |
2020/10/15(木) 10:57:30.25ID:LAL4jdY0d
区分1〜10のデータが記録されたcsvを区分ごとにExcelシート毎(シート名は1〜10)に分割して読み込むvbaがどうしても出来ません…
ご教示いただけないでしょうか…
0579デフォルトの名無しさん (ワッチョイ 5b49-fMdf)
垢版 |
2020/10/15(木) 11:36:34.23ID:+kinuzul0
そんな説明でわかるわけがないので、
そこまで頑張って作ったコードとエラーメッセージを提示するのが最低限
そして、自分で何を試行したのかも説明すること
0582デフォルトの名無しさん (ワッチョイ 9f6d-sSL1)
垢版 |
2020/10/15(木) 14:36:16.06ID:sVQ5bVjI0
>>581
C#スレで恥を晒したRuby荒らしは帰れよ
0586デフォルトの名無しさん (ワッチョイ 9fe6-lr1q)
垢版 |
2020/10/15(木) 21:53:38.55ID:3DKNzMNt0
俺の解釈だとこんな感じ

Sub Macro1(Filename, Fieldname)
Set ws = Workbooks.Open(Filename).Sheets(1)
Set pvt = ws.PivotTableWizard(1, ws.UsedRange)
pvt.PivotFields(Fieldname).Orientation = 1
pvt.PivotFields(Fieldname).Orientation = 4
pvt.ColumnGrand = False
For Each r In pvt.DataBodyRange: r.ShowDetail = True: Next
End Sub
0589デフォルトの名無しさん (ワッチョイ bb5f-snog)
垢版 |
2020/10/16(金) 19:55:23.45ID:rggqlWcj0
PDFファイルの件は、マクロの記録でやるとどうなるのか、確認すればいいんじゃないの?
0596デフォルトの名無しさん (スプッッ Sd02-4ynI)
垢版 |
2020/10/22(木) 08:49:00.24ID:8kbg1eIjd
まだVBAなんて使ってる人がいてビックリ
懐かしい言語だよね
0597デフォルトの名無しさん (テテンテンテン MMe6-B6QP)
垢版 |
2020/10/22(木) 09:02:14.12ID:OZW0tgCBM
Excel2000から20年なんて家電製品なら普通ですよ
0598デフォルトの名無しさん (ラクッペペ MMe6-E8a6)
垢版 |
2020/10/22(木) 12:37:02.60ID:QXcT5+jPM
Excel5.0からだよ
16ビットだよ
0602デフォルトの名無しさん (ラクッペペ MMe6-E8a6)
垢版 |
2020/10/22(木) 18:23:26.36ID:jxPHtPQlM
22÷7
0604デフォルトの名無しさん (ワッチョイ e1d2-o8Qw)
垢版 |
2020/10/22(木) 18:56:20.17ID:CJ3HroyY0
int((日-1)/7+1)
0610デフォルトの名無しさん (ワッチョイ d163-MACq)
垢版 |
2020/10/22(木) 22:49:46.23ID:kity+iCG0
FileSystemObjectの参照設定

VBAの中でできないのかな?
0613デフォルトの名無しさん (テテンテンテン MMe6-B6QP)
垢版 |
2020/10/23(金) 01:26:42.51ID:ykqFrr6rM
>>610
出来ない
0616デフォルトの名無しさん (ワッチョイ 02ad-dZ3m)
垢版 |
2020/10/23(金) 08:33:21.77ID:TKI7l+v40
複数のセルに纏めて背景色を付けたい場合についてです
指定のセルは離れているためRangeで範囲選択では済ませられないです
Unionを使用するのも手ではありますが動作速度に影響を及ぼすので最終手段としたいです

そこで背景色をつけるセルのAddressを取得して一次元配列に格納し
.Range(Join(Array, ",")).Interior.CoIor = CLng("&H00FAFAFA″)
で着色しようとしたのですが、どうもこの連結方法の場合、連結数が一定数を超えるとエラー停止してしまう様です

なので何か別のアプローチはないものかと模索している最中なのですがもしよろしければお知恵をお借りしたいです
0620デフォルトの名無しさん (ワッチョイ 02ad-dZ3m)
垢版 |
2020/10/23(金) 11:02:14.72ID:TKI7l+v40
>>619
不特定多数が使用する業務のスケジュール管理をするツールで、描写したスケジュール表を平日、土曜日、日曜祝日の3パターンで着色する必要があるんですけど、業務期間が長いとどうしても超えてしまう場合が発生するんですよね
業務期間に制限を設けるわけにもいかないですし
配列に格納してんだからループで一定数おきに着色ってのも考えたんですけどUnionより遅くなるっぽいんで最適化を諦めてUnionで繋げちゃうかーって思ってはいるんですが、その前にここで聞いてみて何かヒント貰えたらなーと
0622デフォルトの名無しさん (ワッチョイ 3901-3XbD)
垢版 |
2020/10/23(金) 13:40:00.08ID:DQVFwAwV0
>>616
Join(Array, ",") ← こいつがエラー起こすって感じなの?
String 型は最大20億文字数らしいね
あるいは.Rangeが受け付けないのか

一応ググってみるとRangeの引数は255文字までというのが出て来る
これに引っかかってるんじゃねえの
0623デフォルトの名無しさん (ワッチョイ 3901-3XbD)
垢版 |
2020/10/23(金) 13:51:36.68ID:DQVFwAwV0
>一次元配列に格納し

これでループ回したところで体感できるような速度差は出ないと思うがな
むしろRange内の文字列引数処理のほうが時間食われるんじゃないかと
Union・・・どんなもんだろねぇ
0626デフォルトの名無しさん (ラクッペペ MMe6-E8a6)
垢版 |
2020/10/23(金) 15:36:44.43ID:wfU4S4ZzM
数秒が待てないというのはイベント駆動でもさせる気なの?
0631デフォルトの名無しさん (ワッチョイ 02ad-dZ3m)
垢版 |
2020/10/23(金) 19:38:40.04ID:TKI7l+v40
処理範囲的には
.Range(”M11:Q1011,T11:X1011,【中略】,CF11:CJ1011“).Interior.CoIor
ぐらいです

全体で1万弱程のステップがあって他ファイルの読込やグラフの生成、データファイルの出力等があり、全体の処理時間が10秒前後なので
この処理を軽くした所で焼け石に水なのは分かってはいるんですが、
オブジェクトの操作を極力減らして動作時間を軽減したいなぁと思っています

次の操作箇所を強調する為にRange(″M20,M20″).Selectみたいな操作を使ったので、これの応用で広域処理も行けるかなぁと思ったんですがダメみたいですね
お騒がせ致しました
お忙しい中ご意見等頂きありがとうございました
0633デフォルトの名無しさん (ワッチョイ 3901-3XbD)
垢版 |
2020/10/23(金) 21:51:10.18ID:DQVFwAwV0
>>631
>他ファイルの読込

俺はこいつが異様に遅くて困ってる
100万個ほどのデータをCSVから読ませてるんだけど6世代i5で3分、セレロンだと10分とかかかる
Lineで1行ずつ読んでるせいなんだろうけどQueryだと早いんだろうなあと思いながら面倒で手を付けてなかった
これを機にやってみるかなぁ
実際相当早くなるもんかね?
0636デフォルトの名無しさん (ワッチョイ 3901-3XbD)
垢版 |
2020/10/24(土) 06:26:18.80ID:Uy2SF5SV0
>>634
>一度に全部読み込まなきゃ

そうやねぇ・・・
週ごとにデータを集計してんだけどいまんところ一括で読み込ませてる
常時PC立ち上がってる環境だから逐次データ吸い上げていけば一番いいんだけどそうなると小手先の変更じゃなくて大枠に手を加えなきゃなんなくなるのが頭痛いところ
てかこんなのエクセルでやらせんなよって話でもあるんだけどそうはいかない
0637デフォルトの名無しさん (ワッチョイ 02ad-dZ3m)
垢版 |
2020/10/24(土) 08:29:55.58ID:Q0nf4D4p0
>>635
それでも良いんですけど、行ごとに工程の開始日と終了日を設定して工程の期間のセルは計画達成率ごとに緑、黄、橙、赤って着色する必要があり、その着色は開始日が平日なら土日祝日は着色しない、開始日が土日祝日なら期間中全てのセルを着色
とかやるんで条件書式でやるのかなり面倒なんですよね
ユーザーには進捗率をスケジュール表に記入させるんですけど今日以降の進捗率は入力があっても認識から外さなければならないって仕様もあったりするんで
0640デフォルトの名無しさん (ラクッペペ MMe6-1Dkg)
垢版 |
2020/10/24(土) 12:24:40.86ID:9i+KquaLM
あるフォルダに複数のエクセルがあります。
シートは必ず一枚。
一番ファイル名が短いエクセルに
他のエクセルのシートをコピーしてまとめたい。
どう書けば楽ですか。
0642デフォルトの名無しさん (ワッチョイ fd5f-orSx)
垢版 |
2020/10/24(土) 12:41:50.27ID:hS/lv/UK0
その問題を作った先生を問い詰めろ!
0643デフォルトの名無しさん (ワッチョイ fd5f-orSx)
垢版 |
2020/10/24(土) 12:43:08.02ID:hS/lv/UK0
>>640
前提条件にリアリティがなさすぎるw
0646デフォルトの名無しさん (ワッチョイ fd5f-orSx)
垢版 |
2020/10/24(土) 13:35:27.35ID:hS/lv/UK0
エクセルがあるとは何ですか?
0647デフォルトの名無しさん (ワッチョイ fd5f-orSx)
垢版 |
2020/10/24(土) 13:37:23.43ID:hS/lv/UK0
Excelファイルのことを単にExcelと呼ぶのも違和感がある。
0648デフォルトの名無しさん (ラクッペペ MMe6-1Dkg)
垢版 |
2020/10/24(土) 13:45:51.01ID:9i+KquaLM
>>641
同じ長さになることはありません
説明不足ですみません
0650デフォルトの名無しさん (ワッチョイ fd5f-orSx)
垢版 |
2020/10/24(土) 15:19:09.43ID:hS/lv/UK0
ファイル名のことなんてあとで考えればよい。

まず手順を考えてください。

ファイル名は重要ではありません。
0652デフォルトの名無しさん (ワッチョイ 05cc-BPyH)
垢版 |
2020/10/24(土) 15:59:31.92ID:h35l0z5Z0
シート"土曜日の小計"のA2から、祝日と会社の休業日以外の土曜日を書いていくマクロを考えています。

(シートカレンダーのA列に日付、B列にA列の日付が祝日であれば"1"が入力してあり、C列に会社の休業日なら"1"が入力してあります)

このマクロだと、「424 オブジェクトが必要です」になります。どう書けば良いですか?



Dim a As Long,r As Long

a = 2

For r = 1 To 365

 If Weekday(DateAdd("d", r, Date)) = 7 And _

   Worksheet.Function.VLookup(DateAdd("d", r, Date), Sheets("カレンダー"), 2, False) <> 1 And _

    Worksheet.Function.VLookup(DateAdd("d", r, Date), Sheets("カレンダー"), 3, False) <> 1 Then

Sheets("土曜日の小計").Cells(a, 1) = DateAdd("d",r,Date)

  a = a + 1

End If

Next bc
0654デフォルトの名無しさん (ワッチョイ fd5f-orSx)
垢版 |
2020/10/24(土) 17:16:31.42ID:hS/lv/UK0
>>652
可読性の悪さw
0656デフォルトの名無しさん (ワッチョイ fd5f-orSx)
垢版 |
2020/10/24(土) 17:24:29.58ID:hS/lv/UK0
>>652
どのワークシートなのか指定がないけど?
0660デフォルトの名無しさん (ドコグロ MM4a-stnX)
垢版 |
2020/10/24(土) 20:28:18.61ID:UZJZIrrqM
>>652
Sheets("カレンダー")のあとにセル範囲を書けば動くんじゃね
0663652 (ワッチョイ 05cc-BPyH)
垢版 |
2020/10/24(土) 23:35:43.13ID:h35l0z5Z0
>>653

どこにSetをつければいいか分かりません





>>652

どうやって指定すればいいですか?





>>660

Worksheet.Function.VLookup(DateAdd("d", r, Date), Sheets("カレンダー").Range("A:C"), 2, False) <> 1



でも同じでした
0664デフォルトの名無しさん (ワッチョイ fd5f-orSx)
垢版 |
2020/10/25(日) 01:39:45.83ID:eXluQ9/t0
うるさい
0667デフォルトの名無しさん (ワッチョイ ee63-9Kcm)
垢版 |
2020/10/25(日) 12:51:32.04ID:6oKLzf6v0
ある変数に、なんでもいいから100文字セットしたい場合って
どの関数使えばいいの?

str = "*****..."(100文字)
と書くのはダサいから嫌です
0673デフォルトの名無しさん (ワッチョイ ee63-9Kcm)
垢版 |
2020/10/25(日) 17:29:34.56ID:6oKLzf6v0
>667
です
669-671
おかげさまでできました有難う天才たち
0675デフォルトの名無しさん (ワッチョイ fd5f-orSx)
垢版 |
2020/10/25(日) 19:23:20.13ID:eXluQ9/t0
なんでもいいという要件がわからない。
0678デフォルトの名無しさん (ワッチョイ d163-9Kcm)
垢版 |
2020/10/25(日) 21:38:09.03ID:eeV8PNBf0
複数行まとめてコメントアウトしたい場合
どう書けばいいですか
一行ずつ'を入れたくないです。
0679デフォルトの名無しさん (アウアウウー Sa45-ot4R)
垢版 |
2020/10/25(日) 22:03:05.56ID:D3cPjOx/a
選択されたら行範囲をすべてコメント化/コメント解除はツールバーにある
そのバーが非表示だと表示しなければダメだが
あと、推奨されるかは分からないけど、

#if 0 then

コメント化したい行

#end if

とかよくやります
0683デフォルトの名無しさん (ワッチョイ 05da-tMQb)
垢版 |
2020/10/26(月) 00:23:04.45ID:qmNjcSj20
>>678
数行程度の編集作業で手を抜くってのはどうかな
むしろそのコメント残さないで削除した方がいいんじゃね
一時的に処理を分けるならプロシージャとかで追い出して呼び出し部分をコメントにするとかあるけど
0684デフォルトの名無しさん (ワッチョイ fd5f-orSx)
垢版 |
2020/10/26(月) 12:01:16.14ID:fNFJMgyU0
>>678 は釣り
0686デフォルトの名無しさん (ワッチョイ eef2-dv2+)
垢版 |
2020/10/26(月) 22:12:59.62ID:jYeoL4370
元々スプレットシート使ってて最近vba始めたんだけど
エクセルのvbaではスプレットシートで言うとこのsetvaluesみたいなのはないの?
2次配列をシートに貼り付けるみたいなことしたいんだけど
0689デフォルトの名無しさん (ワッチョイ c2e6-E8a6)
垢版 |
2020/10/27(火) 00:26:27.42ID:bFDGidnH0
VBAはなぜか裏技っぽい文法が好きらしい
Midステートメントなんて最悪
0694デフォルトの名無しさん (ワントンキン MMd2-gpcg)
垢版 |
2020/10/27(火) 11:38:27.45ID:ptoZa2VhM
Wordの2ページ目以降にラベルを追加する方法について教えてください

エクセルからWordを呼び出して、ラベルを追加しようとしています
以下のように記載しました

Set newDoc wdApp.Documents. Add
newDoc.Shapes.AddLabel msoTextOrientationHorizontal, 35, 300, 30, 20

AddLabelの第二引数(300になっているところ)を増やせば2ページ目以降に追加されると思いましたが消えてしまい上手くいきません

すみませんがどうすればいいかご教示お願いいたします
0705デフォルトの名無しさん (ワッチョイ 0563-9Kcm)
垢版 |
2020/10/27(火) 23:03:09.41ID:gj2Ohu8L0
>>679
ありがとうお勧めではないそうですが
教えてくださった方法でコメントアウトできたので
使いますww
0709デフォルトの名無しさん (ラクッペペ MMeb-4t7V)
垢版 |
2020/10/28(水) 06:32:08.53ID:MUExsF8QM
マクロ実行後、
エクセルファイルを保存しようとすると
プライバシーに関する注意
というメッセージが出ます。
出ないよう設定できるようですが
セキュリティ的に不安です。
皆さんどのような対処をされてますか

いったんエクセルを全部終了するくらいしか
思いつきません
0711デフォルトの名無しさん (ラクッペペ MMeb-4t7V)
垢版 |
2020/10/28(水) 08:53:47.67ID:MUExsF8QM
>>710
実行前に他のエクセルを終了するのが
一般的でしょうか
0715デフォルトの名無しさん (ラクッペペ MMeb-rMvQ)
垢版 |
2020/10/28(水) 13:28:06.88ID:ArgZkv9MM
インタプリタの時代にif文の構文解析が遅いからって可読性皆無の謎の数式書いてた思い出
0716デフォルトの名無しさん (ワッチョイ 8bf2-+/f8)
垢版 |
2020/10/28(水) 15:35:13.90ID:0lSgHaJH0
>>697
教えてくれてありがとうございます
これが普通なんですね
仕方ないので暫くはこれで大人しく頑張ってみます
何か荒れてたとこに変な質問して申し訳ありませんでした
0720デフォルトの名無しさん (ワッチョイ 93e6-rMvQ)
垢版 |
2020/10/28(水) 19:13:48.38ID:Aw3ALjki0
..でもうひとつ上のwithが使えるとか変な拡張してほしい
0724デフォルトの名無しさん (ワッチョイ 93e6-rMvQ)
垢版 |
2020/10/28(水) 19:43:09.41ID:Aw3ALjki0
SetしたらNothing警察がウルサイんだよ
0737デフォルトの名無しさん (ワッチョイ 9963-fDVG)
垢版 |
2020/11/01(日) 14:06:41.78ID:wVa8LgII0
会社でxlsmファイルを次の担当に引き継ぐことになりました。
microsoft scripting runtimeの設定をそのファイルに施してあります。
次の担当者は自分で設定しなくても普通に使えるんでしょうか。
それとも自分で開発タブを表示するところから設定しないと
エラーになってしまうのでしょうか。
0740デフォルトの名無しさん (ワッチョイ 9963-fDVG)
垢版 |
2020/11/01(日) 15:54:59.46ID:wVa8LgII0
やってみたところ>>738の印象だったのですが
実際どーなのかなあって思いまして・・
0743デフォルトの名無しさん (ワッチョイ 8bf2-+/f8)
垢版 |
2020/11/03(火) 03:00:31.66ID:N88Bm9k/0
僕「複数のブックから値を取得したい時どうしたらいいんだろ」検索
検索結果「全部のブックを開いて取得しましょう。外部参照しましょう。」
僕「こいつら正気かよ…」
0747デフォルトの名無しさん (ワッチョイ 69e5-Iouh)
垢版 |
2020/11/03(火) 22:04:34.20ID:DcyztcMU0
クラスが便利なのは分かっているんだが、難しくてやる気なくしてたんだけど
ユーザー定義型Typeね、アレすげえな
バカなオレでもプログラミングしている気分にさせてくれるくらい簡単
0749デフォルトの名無しさん (ワッチョイ 8101-L1wp)
垢版 |
2020/11/04(水) 18:04:37.59ID:H6E0ixtH0
>>745
おそらく4macroで使える程度の関数群は外部参照で元ファイル開かなくても参照できる
どんなデータを集計したいかしらんけどただ値を取得したいだけならブック開く必要ないよ(裏では開いてるけど)
一方最近の関数使ってるなら安全のためにブック開いてたほうがいい

DB接続ってのはエクセルファイルにDB接続できないから意味ないだろうね
0753デフォルトの名無しさん (ワッチョイ 92b5-FW0W)
垢版 |
2020/11/04(水) 21:07:01.95ID:+u5LkCAg0
txtデータをダイアログから開いた時に
元のxlsmにあるテンプレというシートを
毎回そのブック内の右側に添付したいんですが
御教授お願いします。。
毎回txtデータの名前は異なります。
なかなか調べてもわかりません
0755デフォルトの名無しさん (ワッチョイ 92b5-FW0W)
垢版 |
2020/11/04(水) 21:32:08.71ID:+u5LkCAg0
>>754
初心者で理解できてなくてすみません
色々サイトを検索はしたのですが

Sub テキストを読み込む() Dim TARGET_TEXT_FILE As String
ChDir "C:\テキストデータフォルダ"
TARGET_TEXT_FILE = Application.GetOpenFilename("テキストファイル,*.txt")
If TARGET_TEXT_FILE = "False" Then Exit Sub Workbooks.OpenText TARGET_TEXT_FILE End Sub

今のところこれでテキスト開いてるだけなんですが
全く変えた方がいいですか?
これで開いた新ブック全てに元々あるテンプレというシートを添付させたいのですが
説明も下手で申し訳ないです
0759デフォルトの名無しさん (ワッチョイ 92b5-FW0W)
垢版 |
2020/11/04(水) 23:45:56.25ID:+u5LkCAg0
>>757
>>758
お二方、本当にありがとうございます。
いまホテルでPCが無い環境になってしまったので
また試させていただきます。
もし上手く動かなくても勉強にさせてもらいます。本当に感謝します。
0762デフォルトの名無しさん (ワッチョイ d2e6-DMUe)
垢版 |
2020/11/05(木) 01:18:00.31ID:MmJj0qw00
わざわざこんなとこで聞くよりググったほうが早いからな
ただのかまってちゃんだ
0765デフォルトの名無しさん (ワッチョイ 8101-L1wp)
垢版 |
2020/11/05(木) 13:00:01.73ID:OVMdlSXB0
>>751
>>752
直じゃなくて一旦DB化(一括インポート)しなきゃなんねえの
Jet.OLEDB,ACE.OLEDB,SQL Server,Power Query
外部DBが使えるならなんでもええがな
こいつら通さずエクセルに直にSQL送ったところで何も帰ってこないよ
さらにいうとエクセルファイルにDBアクセス中にエクセルファイル書き換えると整合性が取れなくなる
別物をかましてるんだからエクセル同志でDB接続とは言えんだろ
0768デフォルトの名無しさん (ワッチョイ 3162-cN9R)
垢版 |
2020/11/05(木) 18:57:09.85ID:hU6fY/MX0
凄く初歩的な質問ですいません。
VbaでEDGEを操作することは可能ですか?
可能ならIEで使っていたコードは使えるんでしょうか?
0769デフォルトの名無しさん (ワッチョイ a9da-t1Nk)
垢版 |
2020/11/05(木) 19:50:31.94ID:SbS9cEmY0
>>765
ただの屁理屈だそんなもん
ADOだのMSクエリ前提で話しているに決まってるだろうが

パソコンでテレビを見るには、チューナを外付けしないといけないから、
パソコンでテレビを見られるとは言えない、とか言ってるようなものだぞ。
0779デフォルトの名無しさん (ワッチョイ f6ba-4KOL)
垢版 |
2020/11/10(火) 00:58:18.05ID:e7NaagA90
ExcelのM言語のMはマイクロソフトのM??
0782デフォルトの名無しさん (ワッチョイ 4b64-bMCz)
垢版 |
2020/11/11(水) 04:19:34.31ID:WkAepZ970
3つの整数をA1,B1,C1にいれるとE1に最大公約数を返すプログラムの作り方をforを用いてプログラムを教えてください
0790デフォルトの名無しさん (ワッチョイ 1dce-mYn1)
垢版 |
2020/11/12(木) 02:56:54.96ID:D//YL0tK0
Option Explicit
Sub a1tob1toc1nosaidaikouyakusuuwoe1ni()
  Dim i As Integer
  For i = 1 To 32766
    Range("E1").Value = Application.WorksheetFunction.Gcd(Range("A1"), Range("b1"), Range("c1"))
  Next
End Sub
0804デフォルトの名無しさん (ワッチョイ 232f-g/iO)
垢版 |
2020/11/15(日) 12:06:41.61ID:2IkUI34w0
昔VBで自作した覚えがあるなぁ
VBSの移植で、どこにどう手こずったんだろ

.NETのSystem.Text.Encoding使う手はどうだろうと考えたみたが
GetEncodingでエンコード取得するのがうまくいかんな
誰かこれうまいことやる方法しってる?
0806デフォルトの名無しさん (ワッチョイ 9b68-VBGc)
垢版 |
2020/11/16(月) 14:27:06.48ID:yPbGtyDu0
ウインドウ固定をスクロールに応じて動的に変えるにはどうすればいいですか?

例えば、最初は2018年の列が固定されていて、2019年の列までスクロールしたら、2018年の固定を解除して2019年の列を固定するように変えたいです。
0808デフォルトの名無しさん (オッペケ Srdf-E6ms)
垢版 |
2020/11/20(金) 19:59:25.75ID:eS+rN1Snr
shapes.count、chartobjects.countで数えても引っ掛からないグラフってどうしたら操作できますか?
そのグラフは隣シートを参照して自動的にできるものっぽいんですけど
0809デフォルトの名無しさん (ワッチョイ a201-x7Pp)
垢版 |
2020/11/20(金) 20:06:15.76ID:4NTNOb8s0
リストボックスの検索結果をダブルクリックすると該当セルを選択するようなものを実現したいのですが

実行時エラー 13
型が一致しません

とでます
該当箇所は
.Range(.Cells(ListBox1.List(ListBox1.ListIndex, 0) + 1, 1), .Cells(ListBox1.List(ListBox1.ListIndex, 0) + 1, 13)).Select

です

恐らくネットからコピペして来たものなのでセルの選択が間違っているのかと思うのですが、このコードの意味がわかりません…
どう修正すればいいでしょうか
またどこがなんの意味を表しているのか教えてください

全文 https://writening.net/page?C2Jumd
0822デフォルトの名無しさん (ワッチョイ d792-Y8s5)
垢版 |
2020/11/29(日) 03:39:08.87ID:zPhy879P0
ExcelでADOを使ってcsvを取り込む前に、

@csvの1行目を削除

Acsvの特定の列の1行目(@の前は2行目)の文字を修正

これを自動化するにはどうしたらいいですか?

業務システムから出力されたcsvをExcelに取り込む作業があるのだけど、
1行目に邪魔な出力日時が出てきてこれを消さないとADO+SQLのselect文で2行目のフィールド名を使えません
あとフィールド名に一部重複があるので、
例えば「日付」→「日付2」に修正した上で取り込みたいです
0824デフォルトの名無しさん (ワッチョイ 97da-W5Mj)
垢版 |
2020/11/29(日) 09:01:56.95ID:Kj8zNz7J0
ああ、俺もそういうカスみたいなCSVに当たったことあるわ。
何のためのCSVだボケって言いたくなるような。

最初に1行だけテキスト読み込みして日付を調べておいて、

SELECT [出力日:2020/11/29] AS 商品コード
      F2 AS 商品名
      F3 AS 単価
      F4 AS 数量
WHERE 商品コード <> '商品コード'

とか無理矢理やるわwww
0828デフォルトの名無しさん (ワッチョイ d792-Y8s5)
垢版 |
2020/11/29(日) 10:21:13.40ID:cY0oCL3I0
>>823
できました!
csvの取り込み方を工夫するのではなく、
tmpシートを新たに用意してそこに読み込ませて加工、
今度は今までのコードの接続先をcsvではなくtmpシートに変えてなんとかなりました

>>824
作った業者がアホなのか依頼した会社がアホなのかわかりませんが、
例えば商品コード的なものも正式表記と略号表記があって、
どちらも同じ「商品コード」というフィールド名になってたりします
0829デフォルトの名無しさん (ワッチョイ 9fb5-esC0)
垢版 |
2020/11/29(日) 19:32:45.82ID:0shL7X0+0
前々スレくらいで乱数発生教えてくれた人
今でも本当にありがとうと感謝してる
仕事で役立ちすぎて凄いわ
ある範囲を元に乱数発生させるがその数値は変化をさせないジレンマのあるようななるほどと思わせる構文ですね
と言われたわ
0833デフォルトの名無しさん (ブーイモ MMfb-m/w5)
垢版 |
2020/11/30(月) 11:41:47.50ID:iR+tWSWoM
データ数が有限だと、それが本物の乱数なのか人工的な物なのか判断する方法は存在しないんだよね
どんな数字列でも無限にある乱数列のどこかに存在するってのが本来の乱数の性質だから
0834デフォルトの名無しさん (ラクッペペ MM8f-0O1z)
垢版 |
2020/11/30(月) 12:10:12.72ID:Jnj49cs/M
仕様書の範囲内でバラけた成績を印刷するお仕事
0836デフォルトの名無しさん (ワッチョイ 9fe6-0O1z)
垢版 |
2020/11/30(月) 20:42:38.07ID:ocjeHolz0
無限発射編と言っても実際には無限じゃないしな
本当に無限発射すると宇宙がヤバイ
0837デフォルトの名無しさん (ワッチョイ d7e5-Nyrx)
垢版 |
2020/11/30(月) 23:51:07.47ID:14M55Ual0
毎日出力される日報の各数値を手打ち入力とかよくあるわな
そんな無駄な作業専門で雇われている人、無駄ともおもわず人件費払っている企業
なんて古き良き日本にいくらでもあるわな
0842デフォルトの名無しさん (オッペケ Sr39-Rdw1)
垢版 |
2020/12/02(水) 18:57:34.84ID:EOzgXD7Pr
すいません、全くvbaについて無知なのですが、A2セルに入力した数字を、A3セルに=A2にて反映させてます。A2セルに続けて数字を入力した時に、A3セルの数値は、続けて入力した値になると思うのですが、入力した内容を上書きせず、A4.A5.A6...と、下のセルに移動させることは可能ですか?また、その数値も自動的に小さいものから並び替えできるでしょうか?
0847デフォルトの名無しさん (ワッチョイ 7ab5-gkou)
垢版 |
2020/12/02(水) 22:02:06.69ID:nZBMSUJj0
>>845
いや、知らないですけど、くらいにとぼけようかなと
>>846
そこまでガチガチにやるつもりもなく
プロパティのロックしとく程度の予定

やっぱ悪質かなぁ
上司と遺恨のあるまま異動だから悔しくて
0848デフォルトの名無しさん (スフッ Sd94-3VNM)
垢版 |
2020/12/02(水) 23:32:51.81ID:sVdwSulSd
自分で作ったんなら削除して手作業でやるんですよと引き継ぎすれば良いやん
0849デフォルトの名無しさん (ワッチョイ 1e01-Rdw1)
垢版 |
2020/12/02(水) 23:51:34.76ID:HxNBAEyx0
>>843
いや、入力は全てA2セルで固定して行い、A3セルに反映された値を消すことなく(A2に次の入力があれば、A3の値がA4とかに移動すりかして残るように)、連続入力がしたいです。
0854デフォルトの名無しさん (ワッチョイ d992-Sv5x)
垢版 |
2020/12/03(木) 07:23:21.58ID:Fq6gB0XC0
会議を管理するデータベースを作成しています
テーブル1に日付、開始時間、会議名、条件があり、
条件がTrueの会議名を重複なくテーブル2に転記
その後テーブル1に新たな会議データが登録された場合も、
条件がTrueでテーブル2に該当がなければテーブル2に転記という流れ

↑こんな感じで良い方法ありますでしょうか
0860デフォルトの名無しさん (ワッチョイ aa01-swuE)
垢版 |
2020/12/03(木) 11:38:03.37ID:7S9ZRXuG0
>>847
転職ならいいけど異動ならその上司が移動先の上司に電話して「なんか動かなくなったから彼1日借りるね」って言われて直させられるだけやん
しかも原因わかったら移動先の上司にチクられるだろうし
0861847 (ブーイモ MMfd-gkou)
垢版 |
2020/12/03(木) 12:58:46.44ID:7SYgfNcjM
全然関わりない遠い部署に行くから
俺が完全に自作したものを皆が使い回してるだけだし無効化してやろうかなと、
そこに行ったら知らないで通して最悪本当に呼び出されたら

下のように感じでコメント入れとけば
最悪、立ち会いでモニタ見られながらやっても
確信犯なのは避けられるかなと…
このまま異動はどうも許せんくて
性格悪いのは自覚してる

'マクロを最新で運用するために必須
Private Sub Workbook_Open()

    Dim today As Date
 Dim exp_date As Date
 today = Date

    '日付制限して確実にメンテナンス
 'これは怠らないこと
 exp_date = "2021/2/20"
 '書類の改定の確認で定期的にメンテナンス が必要だから一度確実に止めてしっかり確認

     If Not today < exp_date Then
   ThisWorkbook.Close savechanges:=False
 End If
End Sub
0862デフォルトの名無しさん (ワッチョイ 3a37-M2JV)
垢版 |
2020/12/03(木) 13:04:06.25ID:By9u7ZkT0
好きなようにしてここからも関わりのないどこか遠くへ行ってね。
ずーっと複数人がしてた忠告に耳もかさず我を通した結果であって
最後くらい責任持ってケツ捲くってね
0865847 (ブーイモ MMfd-gkou)
垢版 |
2020/12/03(木) 13:54:32.21ID:7SYgfNcjM
家で作ったプロシージャをtxtでコピーして会社にメールで送ってハメてただけだから 
ほとんど個人の時間削ったものだけどね
ちょっとやってみるかなあ
0866デフォルトの名無しさん (ワッチョイ e217-jrSk)
垢版 |
2020/12/03(木) 18:28:51.55ID:wVqnbq9D0
application.ontimeメソッドを使ってるのですが、

For i = 0 To Counter
Application.ontime StartTime + Interval * i, "renzoku"
Next i

これを停止させるのが難しそうだったので、
停止はさせないで、エクセルを閉じれば停止すると思ったのですが、
他のエクセルを開いた状態で、これを閉じたら、
またマクロが動き続けてしまいます、
ontimeメソッドを停止させるか、
マクロの書いてあるエクセルを閉じたら、
ほかのエクセルが開いていてもマクロを停止するようにはできないでしょうか?
0870デフォルトの名無しさん (ワッチョイ 6e01-zLCK)
垢版 |
2020/12/03(木) 21:55:24.24ID:anyYWQoy0
「慶應卒の学歴なんていらない」10代起業で成功する子の共通点
https://www.excite.co.jp/news/article/President_35457/
【アプリ開発で起業】必要な心得とマネタイズ方法のすべて
https://www.dreamgate.gr.jp/contents/column/application-development
学生起業家が開発、「人を軸に本を探すアプリ」とは?読書通じて「考える力」養って
https://newswitch.jp/p/20168
島田商高生がアプリ考案、発表 ICT起業家育成プログラム
https://www.at-s.com/news/article/local/central/730010.html
医師コンビが「治療用アプリ」で起業、禁煙に続き高血圧治療アプリを開発
https://diamond.jp/articles/-/229375
好きが高じて“カレー起業”、キャッシュレス決済アプリ「TOKYO MIX CURRY」の挑戦
https://diamond.jp/articles/-/215868
起業で成功するキャリア形成の仕方とは? 元プロサッカー選手で起業家の鈴木啓祐氏に聞いた
https://sogyotecho.jp/career-development/
年収3,000万超え!?個人開発で儲かっている海外コミュニティサイト5選!
https://note.com/taishikato/n/n7809a8ed3ffc
0871デフォルトの名無しさん (オッペケ Sr10-k1J3)
垢版 |
2020/12/04(金) 00:52:07.07ID:rXUXpqvxr
ほとんどの解説サイトではcells("A1")と記載されてますが、cells (1,1)の方が分かりやすいし、vbaも組みやすいのに、なぜA1と言う記載なのでしょうか?
ここの人たちはどっちを使ってますか?
0872デフォルトの名無しさん (スップ Sd9e-XP8H)
垢版 |
2020/12/04(金) 01:43:32.26ID:/uuA3VLbd
>>871
range(″A1″)ね
初心者向けにイメージ掴ませやすいような表記をしてるだけでは?
インクリメントとか考えるとcells使う方が確かに分かりやすいけどどういう訳か初心者はcellsを理解してくれない
0873デフォルトの名無しさん (ワッチョイ 4602-lq0O)
垢版 |
2020/12/04(金) 01:44:00.17ID:xF22O8yc0
>>861
何もしないで放置しておけばいいよ
周囲の仕様変更で使い道なくなるだろ
後腐れなく異動しようぜ


VBS使うとウィンドウ非表示で目的のファイルの削除、その後にVBSファイル自身を削除ってのが出来るけど
そんな時限爆弾がスタートアップフォルダに入ってたなんてー(驚愕)
0874デフォルトの名無しさん (アウアウウー Sa83-13fy)
垢版 |
2020/12/04(金) 01:44:10.31ID:oC1oU7iua
range("A1") と cells(1, 1) なら変わらないけど、k列とか言われるとね
固定された位置なら前者じゃないかしら
式の解析をする分だけ前者が遅い気がするけど
0885デフォルトの名無しさん (JP 0H5e-SdFS)
垢版 |
2020/12/04(金) 14:09:34.65ID:UF2xE4cEH
ユーザーフォームで使用するSubやfunctionプロシージャって標準モジュールに書くのが一般的?
独学だからよく分かんないのよね
0887デフォルトの名無しさん (ブーイモ MM5e-7jTP)
垢版 |
2020/12/04(金) 15:05:45.91ID:QvMd2aQjM
個人的な好みだけどそのフォーム内でしか使わないならPrivate Subでサブルーチン作っちゃうかなぁ
クラスモジュールとフォームの両方から呼び出したいとかだと標準モジュールに書かざるを得ないけど
まぁそれにしてもプロシージャの頭にコメントで処理名、機能、引数、返り値、備考を書くようにはしてるからそこに何処から呼んでるかとかぐらいは書いておくけど
0889デフォルトの名無しさん (JP 0H5e-SdFS)
垢版 |
2020/12/04(金) 15:29:16.67ID:UF2xE4cEH
>>887
確かにワークブックイベントでユーザーフォームのpublic Subが呼び出せなかったからどこに書いたらいいのか迷ってしまったんだ
クラスの理解はなかなか難しい
参考になりました!
0890デフォルトの名無しさん (ワッチョイ 6e01-zLCK)
垢版 |
2020/12/04(金) 17:33:04.77ID:9AUT9QCq0
中学数学からはじめる微分積分
https://www.youtube.com/watch?v=4p1rwfXbCoY&;t=4341s
中学数学からはじめる相対性理論
https://www.youtube.com/watch?v=voFHToRM4xI&;t=10s
中学数学からはじめるAI(人工知能)のための数学入門
https://www.youtube.com/watch?v=7A05OamqCyc
中学数学からはじめる三角関数
https://www.youtube.com/watch?v=OLqgs4fJl7Y&;t=3803s
0892デフォルトの名無しさん (オイコラミネオ MMb6-gn3+)
垢版 |
2020/12/06(日) 04:50:03.54ID:hAx1GypdM
汎用性が高そうなのは標準モジュールにするぐらいの適当さでいいよ
VBAのメリットは手軽に書けるとこだし

それより出来るだけメソッドで処理を区切るといいよ
メソッド名で何してる部分なのか分かりやすくなるし、
変数の使い回しが避けられたり、コピペしやすくなったりメリットが多い
0893デフォルトの名無しさん (ワッチョイ 38e6-xfUJ)
垢版 |
2020/12/06(日) 10:12:36.99ID:j9ZLT2ad0
必要なパラメータが少なければな
毎回フォームのValue読むとか最低だし
0903デフォルトの名無しさん (ドコグロ MMa8-dtvz)
垢版 |
2020/12/07(月) 22:30:31.51ID:heoFqJclM
検索語の先頭にはvbaを書くのが基本
0905デフォルトの名無しさん (ワッチョイ 7001-xV67)
垢版 |
2020/12/08(火) 00:07:01.16ID:/yTvtqo50
>>894ですがレスくれた方どうもです
作りたいもの作れってのはその通りなんですけど特になくて...
依頼されて作るのは楽しくて会社でもツール作成をやらせてもらってるんですが、家でも勉強がてら何か作りたくてレスした次第です
作りたいもの考えることにします
0910デフォルトの名無しさん (ワッチョイ 2cb0-jrSk)
垢版 |
2020/12/08(火) 20:06:03.71ID:lRTQaMU80
ピボットフィールド名に変数を使うとエラーになりました。
変数は使えないのでしょうか?何か方法あれば教えてください。

.Sheets("X").PivotTables("Y").PivotFields(変数)
0912デフォルトの名無しさん (ワッチョイ 1d8f-l3pW)
垢版 |
2020/12/08(火) 20:25:01.68ID:pmTkuroL0
職場が古臭い超巨大組織で、EXCELしか使えないからVBA
勉強してるんだけど、柔軟というか互換性重視しすぎというか
何でも許しすぎというか(暗黙のなんちゃらが多い)、てんこ
盛りすぎて使いにくいなこれ…



継承無いのも地味に痛い。普段めったに使わないけど、「ここは
インヘリタンスとポリモーフィズムっしょ」ってところで使えない。
0916デフォルトの名無しさん (ワッチョイ 1d8f-l3pW)
垢版 |
2020/12/08(火) 21:50:04.46ID:pmTkuroL0
>>913
EXCELで絵が描けるってだけで驚く職場ですわ。

「python とかC# か、せめてJAVAを…」って言ったら

py の時点で「はあ?」になって、「上司の自尊心を傷つけた
角」で有罪w
0920デフォルトの名無しさん (アウアウウー Sa6b-wvAC)
垢版 |
2020/12/09(水) 01:41:07.54ID:AZek/pZva
VBAがなくなると脅されています
その時にはVBSもなくなりますか?
0921デフォルトの名無しさん (アウアウクー MM1b-iTOR)
垢版 |
2020/12/09(水) 02:14:11.71ID:WuZTb4kZM
無くならなくないよ!目を覚ませ!!!
0928デフォルトの名無しさん (JP 0H9f-WYZ/)
垢版 |
2020/12/09(水) 17:45:40.43ID:HptS3Gf+H
クラスを変数の格納で試しに使ってみたけど、値渡しのときに複数のsheetやRangeを一つのobjectとして送れるのが便利だった
それがいいのか悪いのかもすら分からんけど
あと宣言を減らせるのもいいな
0931デフォルトの名無しさん (ワッチョイ dfe6-sQ0+)
垢版 |
2020/12/10(木) 01:02:36.47ID:8uzpk1TB0
互換性というより下手な拡張のせいだと思うが
a&b&c と書けないのがムカつく
0932デフォルトの名無しさん (ワッチョイ 8705-gg0d)
垢版 |
2020/12/10(木) 01:11:19.37ID:32G50CXp0
すでに引いてある枠線をすべてオートシェイプに置き換えることはできますか?
一括で変換できれば楽なんですが

そのようなことをしたい理由はExcelは先の太さのバリエーションがないのでオートシェイプで任意の太さの線にしたいからです
0933デフォルトの名無しさん (ワッチョイ dfe6-sQ0+)
垢版 |
2020/12/10(木) 01:16:47.80ID:8uzpk1TB0
俺はしたいと思わないな
0938デフォルトの名無しさん (ラクッペペ MM8f-sQ0+)
垢版 |
2020/12/10(木) 10:17:08.09ID:2F+mzzJFM
なら、お前が質問しろよ!
0939デフォルトの名無しさん (ラクッペペ MM8f-sQ0+)
垢版 |
2020/12/10(木) 10:17:31.42ID:2F+mzzJFM
なら、お前が質問しろよ!
0944デフォルトの名無しさん (ワッチョイ dfe6-sQ0+)
垢版 |
2020/12/10(木) 20:47:29.63ID:8uzpk1TB0
どんだけ掛かるんだ?
0945デフォルトの名無しさん (ワッチョイ 7f10-YTVu)
垢版 |
2020/12/10(木) 21:11:52.00ID:CqzKSDKw0
C列になし、0、文字列があって、
条件分岐で
C列が文字列であれば転記する文字列をそれに変更。転機列のD列には転記しない
C列がなしであれば同じ行のD列を見に行ってブランクであれば文字列を転記、文字が既にあれば転記しない
C列が0であれば次の文字列まで移動

上記のようなのは関数だと不可能だと思うので、マクロでどのように作ればいいでしょうか
0951デフォルトの名無しさん (ワッチョイ 7f68-kNbH)
垢版 |
2020/12/10(木) 21:55:21.01ID:TqxHVWGz0
仮に転記文字列がEなら

Cが0(数値)
 次のCまで移動
Cがなし
 D列がブランクならEからDに転記
Cが文字列
 EをCの文字列に変更、Dはそのまま
じゃないの?

でもなしとブランクが分かれてるのが謎
0952デフォルトの名無しさん (ワッチョイ 7f10-YTVu)
垢版 |
2020/12/10(木) 22:36:37.55ID:CqzKSDKw0
すいませんちょっと言葉が足りませんでした。
なしは単なる文字列のなしです
IFでなしという文字列があれば、現在設定している文字列をD列に書き出していく処理になります
C列   D列
りんご 
なし
0
0
みかん
なし

C D
りんご  (ブランク)
なし りんご
0 (ブランク)
0 (ブランク)
みかん (ブランク)
なし みかん


上記のような処理を作りたいです。
0953デフォルトの名無しさん (ワッチョイ 7f63-JIxf)
垢版 |
2020/12/10(木) 22:48:25.04ID:56YuvF2X0
どうぞ作ってください。
0966デフォルトの名無しさん (ワッチョイ dfb5-IxYp)
垢版 |
2020/12/11(金) 00:44:14.37ID:6Y+QuIqT0
流と関係ないけどここの人ってVBAはもちろんだけど関数も糞詳しいんだよなあ
VBAが関数の上位互換みたいなとこあるから当然か
SQRTとかここで教わったりセルの書式設定の代わりにVBAとかめちゃくちゃ助けてもらったわ
0971デフォルトの名無しさん (ワッチョイ 7f10-YTVu)
垢版 |
2020/12/11(金) 02:21:17.12ID:bQCq39tb0
>>969
質問の仕方が下手ですいません
A列 B列
文字列A 空欄
空欄1 文字列A
空欄1 文字列A
文字列B 空欄
空欄2 文字列B
空欄2 文字列B
空欄2 文字列B



のようなシートがあって、IFでA列が空欄であれば文字列A、文字列Bのような転記を
機械的に行いたいのですが、関数を使ってIFの真偽判定で
文字列Aがヒットすれば、B列への転記内容を文字列A、文字列Bがヒットすれば文字列Bというような、
VBAのValueのような変数に文字列を格納しながら転記してく事が関数で可能か知りたかった内容です。
A列の文字列Aを空欄1にコピーして、文字列Bを空欄2にコピーするという操作もあればそっちも教えて頂きたい
(VLOOKUP等で文字列を参照する事が出来そうなので)
0973デフォルトの名無しさん (ワッチョイ 27b3-h4dw)
垢版 |
2020/12/11(金) 02:32:32.38ID:t8ktWZN00
>>945
D列がブランクかどうかを調べる必要があるので、転記列をE列、さらに作業列をF列として

C列はC2からデータ
D列はD2からデータ
E列はE2から =IF(C:C="なし",IF(D:D="",F:F,D:D),"")
F列はF2から =IF(AND(C:C<>"なし",C:C<>0),C:C,IF(INDEX(F:F,ROW()-1)="","",INDEX(F:F,ROW()-1)))

なし以外の文字列が最初にC列に出てくるまでは、とりあえずE列は空欄になる。
0976デフォルトの名無しさん (ワッチョイ e701-1Ur4)
垢版 |
2020/12/11(金) 08:01:05.41ID:xHfuP7vB0
>>952
0以外の数値も文字列に含めて、空白を停止フラグにした
これであってる?

Dim LastValue
LastValue = "未入力"

Dim Row As Range
For Each Row In Range("A:B").Rows 'A:B範囲を一行ずつ

Dim AColumn As Range, BColumn As Range
Set AColumn = Row.Columns(1) '処理中の行の一列目をAColumn
Set BColumn = Row.Columns(2) '処理中の行の二列目をBColumn

If (AColumn.Value = "") Then Exit For '空白で停止

If (AColumn.Value Like "なし") Then
If (BColumn = Empty) Then BColumn.Value = LastValue
ElseIf (AColumn.Value <> 0) Then
LastValue = AColumn.Value
End If

Next
0979デフォルトの名無しさん (オッペケ Sr1b-m1m7)
垢版 |
2020/12/11(金) 13:05:38.72ID:wz04rSM4r
974さんのやり方にinblankを付け足して解決出来ました
ありがとうございました。
0982デフォルトの名無しさん (ワッチョイ 7f1f-m9Es)
垢版 |
2020/12/11(金) 14:57:01.16ID:7k+CWJkj0
zipファイルを解凍して別フォルダにコピー後にzipファイルと元の解凍ファイルをfso.deletefolderでまとめて削除するvba作ってるんだけどもなんでかzipファイルだけ削除できないんやがなんでや
0990デフォルトの名無しさん (ワッチョイ 67f1-k4Kn)
垢版 |
2020/12/12(土) 12:26:43.87ID:D0KYkpwQ0
Office田中の人生きてるの?
突然Youtubeの更新が止まって数ヵ月過ぎた。
0991デフォルトの名無しさん (ワッチョイ 7f68-kNbH)
垢版 |
2020/12/12(土) 13:02:18.19ID:cNsXl+Rv0
Excel関数のHyperLinkの処理を置き換え(APIHookのような処理)はどうすればできますか?

目的としてはHyperLink関数では一部のURLの表示が遅い(Excel自体のタイムアウト待ち?)ので
直接「CreateObject("WScript.Shell").Run URL文字列」の処理をさせたいのです
関数名はHyperLinkのままにしたいのでAPIHookのような処理ができればいいのですが
0995デフォルトの名無しさん (ワッチョイ 67f1-k4Kn)
垢版 |
2020/12/12(土) 17:30:46.03ID:D0KYkpwQ0
>>993
そうか。
動画では💩上から目線で💩偉そうだったから生きてないのかと思った。
0999デフォルトの名無しさん (ワッチョイ 67f1-k4Kn)
垢版 |
2020/12/12(土) 20:25:22.78ID:D0KYkpwQ0
>>998
いやプログラミングの業界で働いてたらあのくらいのスキルは低レベル。
それよりExcelのVBAごときで偉そうにしてるのは井の中の蛙。

あの人の周りには大量の低レベル社員が群がっているのだろう。
そんな低レベルの人が質問をしてきてそれに答えるばかりしているから自分が頭いいと勘違いしてるだけ。

もっと高レベルなプログラマーを目指してほしい。

こういう現象は高学歴な人が人生の早い段階でつまずき
予備校教師を目指す、というのにも見られる。
せっかく高学歴なんだからもっと自分のやりたいことに精力をそそげばいいのにね。
教育界で偉そうにすることしかできなくなった落ちこぼれ。
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 104日 8時間 57分 19秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

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