2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

Excel VBA 質問スレ Part52

1 :デフォルトの名無しさん:2018/01/27(土) 20:25:05.67 ID:Xe+uGT7T.net
スレ立ての際は一行目に
!extend:checked:vvvvv:1000:512
と入れてスレ立てして下さい

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

※関連スレ
VBAなんでも質問スレ Part2
http://mevius.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://mevius.2ch.net/test/read.cgi/tech/1328536426/

※前スレ
Excel VBA 質問スレ Part51
http://mevius.2ch.net/test/read.cgi/tech/1510107990/

954 :デフォルトの名無しさん:2018/04/26(木) 06:24:38.62 ID:5wkI5WBA.net
>>929
VBAが普及しているの(か?)なら、その理由は単にExcel付属だから。
VBAが使える言語であるという証左にはならない。
VBS見りゃ分かることだと思うが、そこまで頭回らない辺りが不憫。

955 :デフォルトの名無しさん:2018/04/26(木) 06:34:18.55 ID:6UTEs8Zh.net
>>949
逆だろう
このスレにはVBAの用途がわかってない奴ばっかり
文字コード変換とかバカなことを言い出す

956 :デフォルトの名無しさん:2018/04/26(木) 07:58:00.08 ID:vXKBXetI.net
>>954
だから全言語を比較検討した結果の使える使えないが普及に直結してるなんて話じゃないし
どんなに否定しようが実務において使えるから普及してんだよ
むしろ碌な知識の無い事務員ですら使える言語が使えないお前の脳みそを嘆け

957 :デフォルトの名無しさん:2018/04/26(木) 08:40:15.59 ID:YJ/3jqXK.net
ここに居る奴は賢いのかもしれないが、スレチな役立たずの無能なレスする対人関係拗らせてる奴しか居ないのか…

958 :デフォルトの名無しさん:2018/04/26(木) 09:15:54.51 ID:7RW+qgkz.net
ブックの中に「名簿」と「納付書」というシートがあります。
そして「名簿」シートのF1に数字の1が入っており、A8以降に行番号が入っています。
納付書には名簿F1の値にあわせてVLOOKUP関数で返される値が入るようになっています。

そこで、F1の番号が2ずつ繰り上がるごとにシート「納付書」を印刷し、それをシート名簿のA列の最終行の数字まで繰り返す
(A列の最終行が奇数の場合にはその番号の次の偶数で終わるようにしたい)

というコードを教えてください。

↓のコードだと一つのシート内でしか機能しないです

Sheets("名簿").Select
For i = Range("F1") To Range("F2") - 1 Step 2
Range("F1") = i
ActiveSheet.PrintOut
Next
End Sub

959 :デフォルトの名無しさん:2018/04/26(木) 10:17:51.67 ID:1F0vpiyn.net
>>952
たまにマジで海渡りたいレベルの質問あるやん
仕方ないからフェリーに載せろって言ってもチャリじゃないとか言い出す奴いるし

960 :デフォルトの名無しさん:2018/04/26(木) 12:12:58.85 .net
>>958
何ができないって言ってるの?
「納品書」を印刷したいんならActiveSheet.PrintOutの前の行に
Sheets("納品書").Selectとか入れればいいだけに見えるが

961 :デフォルトの名無しさん:2018/04/26(木) 12:14:27.31 .net
あとは印刷の次の行にまたSheets("名簿").Selectか

962 :デフォルトの名無しさん:2018/04/26(木) 12:25:48.74 ID:qzHLyUF8.net
>>956
VBAに取り憑かれるとこうなるのかな
どうしてもVBAをイケてるから普及してる言語に認定したいらしい
現実には他の選択肢を調べる発想すらない素人がなんとなくMicrosoftのブランドと簡単って宣伝文句につられて使ってるだけ
そりゃユーザー数だけなら多くなるわな

963 :デフォルトの名無しさん:2018/04/26(木) 12:36:33.48 ID:pitnEJRh.net
ループ処理で以下のクリップボードに変数を格納する関数を通すと2回目でエラーになってしまいます
原因がわかれば教えてください

関数
Sub clip(strwork As String)
With New MSForms.DataObject
.SetText strwork '変数の値をDataObjectに格納する
.PutInClipboard 'DataObjectのデータをクリップボードに格納する
End With
Exit Sub
End Sub

エラー内容
実行時エラー'-2147221040(800401d0)'
DataObject:PutClipboardOpenClipboardに失敗しました

このあとSetCursorPosとSendKeys "^v"を使ってブラウザ上のテキストに貼り付けしてます
1回目の貼り付け時にブラウザが固まっているのでそれも影響しているかも知れません
よろしくお願いします

964 :デフォルトの名無しさん:2018/04/26(木) 15:09:38.89 ID:ifqqE2DW.net
>>929
あってしかるべき機能がもし無ければ使えない
という文意じゃないか
暴れる前にまず正しい読解から始めよう

965 :デフォルトの名無しさん:2018/04/26(木) 15:14:40.98 ID:vXKBXetI.net
バカが何をどう言おうが現実にVBAは使えてるし使われてるんだよ
顔真っ赤にしてバカなこと言う前に正しく現実を見るところから始めよう

966 :956:2018/04/26(木) 15:18:00.48 ID:7RW+qgkz.net
>>960
>>960
ありがとうございます

それと今はF2で最終行を取得していますが、F2をやめて
「A列の最終行まで」処理をする方法もお願いします。

967 :デフォルトの名無しさん:2018/04/26(木) 17:16:40.00 ID:CPNcKS6O.net
Sheet選択についてSheetが7つあります。

Sheet1/Sheet2/Sheet3/1/2/3/4

Sheet名「1」を選択するためにはこの方法しかないでしょうか?
------------------------
Dim cnt As long
cnt = 1
sheets(”” & cnt & "").select
------------------------


↓これだとSheet1選択
-------------------------
Dim cnt As long
cnt = 1
sheets(cnt).select
-------------------------

968 :デフォルトの名無しさん:2018/04/26(木) 17:56:34.08 ID:6+UF6pSh.net
>>965
お前がな
まあVBAerは一生VBAで無駄な工数払ってればいいよ
まともな人は他の選択肢を見つけるから

969 :デフォルトの名無しさん:2018/04/26(木) 18:44:21.68 ID:vXKBXetI.net
>>968
まともな人は「VBAで作って」と言われたらVBAで作るんだぜ
しかもPowerShellやらC#やらRubyやらで工数かけた分は依頼者が受け取らないから全部無駄になるんだぜ
今まで知らなかったんだろうけどこれで一つ勉強になったな

970 :デフォルトの名無しさん:2018/04/26(木) 18:47:45.62 ID:1F0vpiyn.net
まともな業界はVBAで作ってなんて言わない

971 :デフォルトの名無しさん:2018/04/26(木) 18:48:34.66 ID:6+UF6pSh.net
まともな人はまずVBAでやるべき仕事か判断して別の選択肢も提案するんだよ
言われたことしかできない底辺には難しいかもしれないがビジネスってそういうことなの

972 :デフォルトの名無しさん:2018/04/26(木) 18:51:16.28 ID:ftOVszhQ.net
近頃やたらとパワー系バカが暴れとるなw
一体どうしたんやコイツw

973 :デフォルトの名無しさん:2018/04/26(木) 19:18:37.14 ID:vXKBXetI.net
>>970-971
VBAスレでこの意見が通ると思ってるんだからマジ信じられねぇよな
まともじゃないヤツの言う「まとも」を誰が信じるんだよっていう

974 :デフォルトの名無しさん:2018/04/26(木) 19:55:00.04 ID:PM4/5yqo.net
>>967
シートを特定する方法は3つあって
1.オブジェクト名
2.シート名
3.インデックス番号
で、あなたのやり方はシート名

オブジェクト名はVBEで確認できて初期値は追加した順にSheet1〜なので
その場合、 Sheet4.Select でも選択できると思う
オブジェクト名は好きに変えられるので
わかりやすい名前にしとおくと、誰かが勝手にシート名を変えようが
そのオブジェクト名でシートを指定できるのでオススメ

インデックスで指定するなら Sheets(4).select
インデックスは単純に左から数えた順番ね

975 :デフォルトの名無しさん:2018/04/26(木) 20:04:54.98 ID:PM4/5yqo.net
>>967
あと
Dim cnt As String
にして文字列で代入すれば()の中にダブルクォートがいらないから見やすくなるよ

cnt = "1"
Sheets(cnt).Select

976 :デフォルトの名無しさん:2018/04/26(木) 20:53:29.98 ID:azksLNTx.net
吹いた

977 :デフォルトの名無しさん:2018/04/26(木) 21:05:15.36 ID:lkizjysQ.net
メゾット君大量発生してて草

978 :デフォルトの名無しさん:2018/04/26(木) 21:23:42.24 ID:r/OY0BCQ.net
別にプロの仕事として使われてる訳ではないと思うけどね、VBA。
Excelの使用頻度が高い事務職とかの人が使うイメージ。
何でもかんでも金払ってシステム化してくれる会社なんて無いし、例え使えたとしても簡単に他の言語の開発環境を手配できる訳でもないし。
powershell推しの人はメモ帳で書いてるの?

979 :デフォルトの名無しさん:2018/04/26(木) 22:06:42.62 .net
サクラエディタだろ🙄

980 :デフォルトの名無しさん:2018/04/26(木) 22:53:45.01 ID:6/yp9D/N.net
PowerShell ISE

981 :デフォルトの名無しさん:2018/04/26(木) 23:05:32.69 ID:4xU9Va0k.net
>>967
要するに数値の 1 から文字列の "1" を作ればいいので >>975 以外にも
sheets(CStr(cnt)).select
とかでもいい
シート名が 0001 0002 ... となってたら
sheets(Format(cnt, "0000")).select
なんてこともできる

982 :デフォルトの名無しさん:2018/04/26(木) 23:08:02.27 ID:PM4/5yqo.net
>>963
Excelからブラウザに値を送りたいだけなら
クリップボードを経由しないでDOMでやるのがいいよ
VBA DOMでググるとたくさん解説があるよ
IE限定なので宗教上の理由がなければだけど

983 :デフォルトの名無しさん:2018/04/27(金) 01:20:38.90 ID:XIoO9rX1.net
>>978
Excelと関係ないことをExcel VBAでやりたいという質問者がいる。

文字コード変換をExcel VBAで自作するので教えてくれという人間に対して、VBAを勧めるのはいくらなんでもおかしいだろ。

984 :デフォルトの名無しさん:2018/04/27(金) 01:22:57.14 ID:HF+12vcg.net
実際VBAでもADODB使って数行でできることなのに何をそんな発狂してるんだよ

985 :デフォルトの名無しさん:2018/04/27(金) 07:29:42.30 ID:x5ddf63d.net
処理の進捗をテキストボックスに表示する方法なの
ですが何かサンプルはありませんか?
出来れば自動的にスクロールしてくれるといいのですが

986 :デフォルトの名無しさん:2018/04/27(金) 08:35:57.38 ID:OIkEEKud.net
>>974
>>975
>>981
アドバイス頂き有難う御座います。
他の方法があるのは知らなかった、、、。
勉強不足でした。

m(_ _)m

987 :デフォルトの名無しさん:2018/04/27(金) 09:53:41.83 ID:ssDw3ggw.net
>>982
chomeなんですが別の貼り付け処理にしたらさくさく動きました
ありがとうございます

988 :デフォルトの名無しさん:2018/04/27(金) 10:24:15.83 ID:VVRpgY9f.net
>>985
普通にプログレスバーを使えば良いと思うが

https://e-vba.com/progressbarlabel/
プログレスバーをLabelで作成する方法

とかは?

989 :デフォルトの名無しさん:2018/04/27(金) 10:53:19.60 ID:24cBGVvy.net
Excel エンジニアは、プログラマーじゃない。
企業内のExcel マクロエンジニア

Excel は、表示とデータが合体しているから、プログラミングが難しい。
Rails などの、MVC みたいに分かれていない

Excel は、データをexport して、Ruby で処理して、import するのが、最も簡単。
これで表示関係なく、ビジネスロジックだけに集中できる

>>978-980
VSCode

990 :デフォルトの名無しさん:2018/04/27(金) 11:01:30.91 ID:5M69ecQt.net
>>988
もしかしたら

自分の作った処理の進捗をどうやって算出すれば良いですか

という意味の「勝手に計算しろ」的質問かも知らん

991 :デフォルトの名無しさん:2018/04/27(金) 11:06:36.26 ID:1E0b+/ui.net
進捗の表示で自動スクロールって、処理ログを表示したいって事じゃないのかな
全体像が分からないから提案すら出来ない状況だけど

992 :デフォルトの名無しさん:2018/04/27(金) 11:15:47.31 ID:zdd5R6zJ.net
Debug.Printでイミディエイトウィンドウに出力するみたいなことをフォームでやりたいってことじゃろ
このスレ住民の読解力低すぎない?実務でクライアントの意向理解できてるの?

993 :デフォルトの名無しさん:2018/04/27(金) 11:57:22.87 .net
>>989
Ruby(笑)

994 :デフォルトの名無しさん:2018/04/27(金) 12:23:59.13 ID:aFuuJPZg.net
>>992
まさにそれです
Debug.print で表示された内容を
テキストボックスに表示させたいです

995 :デフォルトの名無しさん:2018/04/27(金) 12:42:48.64 ID:Z6S9Pog7.net
>>989
お前EXCELに何やらせようとしてんの?w
MVCモデルなんてシステム作成するときに使うもんだろ
EXCEL上でデカいシステムでも作るつもりなのかよw

RubyやC#が悪いとは思わんがお前の頭は相当に悪そうだなw

996 :デフォルトの名無しさん:2018/04/27(金) 13:24:19.95 ID:zdd5R6zJ.net
>>994
自動的にスクロールは難しそうなので最新の進捗を1行目に追記するようにした方が楽

997 :デフォルトの名無しさん:2018/04/27(金) 16:16:03.70 ID:j5wh8y7F.net
>>989
プログラマでもなく、マクロエンジニアでもない。
ただの事務職。
関数では面倒な処理をVBAで書くだけだ。

998 :デフォルトの名無しさん:2018/04/27(金) 16:42:05.34 ID:UmeTlh/w.net
社内業務効率化のために使われるのが常だわな

999 :デフォルトの名無しさん:2018/04/27(金) 17:38:05.91 ID:3dQ/JE4S.net
>>995
こういうバカがクソ使いにくいbookを作るんだよなぁ

1000 :デフォルトの名無しさん:2018/04/27(金) 17:50:21.87 ID:thq99FCt.net
MVCでもMVVMでもなんでもいいけど入出力とデータを分けてくれ
そしてデータを正規化してくれ
VBAerさんはその程度の基本すら出来てない人ばっかりだ
そんなんじゃブック渡された方も迷惑だよ

1001 :デフォルトの名無しさん:2018/04/27(金) 17:56:59.29 ID:1E0b+/ui.net
自分の頭の中にしかいないVBAerとやらの話をここでされてもなぁ

1002 :デフォルトの名無しさん:2018/04/27(金) 18:22:55.95 ID:bvIKSWev.net
おっと

1003 :2ch.net投稿限界:Over 1000 Thread
2ch.netからのレス数が1000に到達しました。

総レス数 1003
278 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★