Excel VBA 質問スレ Part52

レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん2018/01/27(土) 20:25:05.67ID:Xe+uGT7T
スレ立ての際は一行目に
!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/

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

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

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

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

956デフォルトの名無しさん2018/04/26(木) 09:15:54.51ID:7RW+qgkz
ブックの中に「名簿」と「納付書」というシートがあります。
そして「名簿」シートの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

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

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

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

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

961デフォルトの名無しさん2018/04/26(木) 12:36:33.48ID:pitnEJRh
ループ処理で以下のクリップボードに変数を格納する関数を通すと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回目の貼り付け時にブラウザが固まっているのでそれも影響しているかも知れません
よろしくお願いします

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

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

9649562018/04/26(木) 15:18:00.48ID:7RW+qgkz
>>958
>>958
ありがとうございます

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

965デフォルトの名無しさん2018/04/26(木) 17:16:40.00ID:CPNcKS6O
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
-------------------------

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

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

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

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

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

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

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

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

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

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

cnt = "1"
Sheets(cnt).Select

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

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

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

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

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

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

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

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

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

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

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

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

m(_ _)m

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

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

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

とかは?

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

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

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

>>976-978
VSCode

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

10011001Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 89日 21時間 57分 51秒

10021002Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


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

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

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

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php

レス数が1000を超えています。これ以上書き込みはできません。