Excel VBA 質問スレ Part66

レス数が950を超えています。1000を超えると書き込みができなくなります。
11000
垢版 |
2020/05/10(日) 13:43:45.00ID:Nkoph0aj
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

※前スレ
Excel VBA 質問スレ Part65
https://mevius.5ch.net/test/read.cgi/tech/1584430040/

※デフォルト設定
2020/06/20(土) 12:24:38.59ID:CytyTodc
excelからwordのoleなのですが、印刷プレビュー画面が表示されている
あいだは処理を停止させておきたのですが、どうすればできますか?
また、excelのほうのPrintPreviewメソッドではそれが実現できるのですが、
その違いはなんなのでしょうか。

Dim WORD As Object
Set WORD = CreateObject("Word.application")
WORD.Documents.Open(filePath)
WORD.PrintPreview = True
Do Until WORD.PrintPreview = False
Loop
2020/06/20(土) 12:44:36.40ID:ygihVcRE
>>896
重複排除したきゃKey指定すればいいだけだろ
てか、そういう使い方しかしたことないわ
2020/06/20(土) 12:57:07.60ID:m9vPjHEn
keyの位置間違えててできなかったって話だろ…
2020/06/20(土) 15:27:33.55ID:ygihVcRE
ああすまん、よく読んだらそうだな
904デフォルトの名無しさん
垢版 |
2020/06/20(土) 15:53:54.10ID:wuXUOHn9
PCに疎い人達の集まる職場

週に1回の頻度で1200個の数値を4時間かけて手打ちしてたのを3秒で終わらせるマクロ組んで改善提案→何かわからんけど組んだんだろ で300円

他のシートやブックに行き来しやすいように
図形に文字入れてハイパーリンクをセットしたのを2つ作った
→これはいいぞ 1000円

もう嫌だ
2020/06/20(土) 15:58:25.34ID:MH9+mSJC
300円とか1000円って何?
906デフォルトの名無しさん
垢版 |
2020/06/20(土) 16:02:10.10ID:wuXUOHn9
>>905
改善提案出すとお金貰える仕組みの会社だから
トヨタグルーやトヨタ系とかは結構そうじゃないかな
2020/06/20(土) 16:08:51.15ID:MH9+mSJC
>>906
単にプレゼンというか説明下手なだけじゃないの?
908デフォルトの名無しさん
垢版 |
2020/06/20(土) 16:23:05.64ID:wuXUOHn9
>>907
もうマクロに関してそこは諦めたわ
if関数使ったりそういう改善のが1000円や1500円で貰えるからそっちでいってる
同僚から組んで欲しいってのも全部断ってる
58歳のパソコンに疎すぎる人に説明する必要性もないかな
2020/06/20(土) 17:02:57.89ID:wVoXfuuE
まぁ、「実際の能率の向上」より「誰にでも分かりやすく使い易い」にウエイトが傾いてるってのはよくあることじゃね。
どんな評価方法か知らんけど。

・直接的に恩恵を受ける人の数
⇒あくまで例えばだが、>>904の「3秒マクロ」で仕事が楽になるのが数人しかいない、とか、
 「図形2つ」が割と広い範囲で使える上に、他の職場でも応用が利く、とか。

・柔軟性
⇒例えば3秒マクロに何かしら元となるデータがあると仮定して、
 そのデータを出力するシステムの仕様に変更があった場合対応できなくなる、とか。
 他方、図形2つの方は文字どおり図形2つ作って文字入れてハイパーリンクを加えただけなので、
 例えば参照先URLなりが変わったとしても、比較的対応が容易だし、
 よほどのことがなければ「使えなくなる」ということが考えられない、とか。

・上司のその時の気分、あるいは好かれ具合
⇒それな
2020/06/20(土) 17:21:32.15ID:qvmNBmpu
>>908
同じような所が10カ所(ファイル)あったら10000円〜15000円もらえるのかな
2020/06/20(土) 17:21:48.48ID:XQZF02H8
相談もなしに勝手なマクロを組んだことで減点対象になったのだろう
もしかしたら、その作業は近々システムの変更でなくなる予定だったかもしれない
作業以外の目的があったのかもしれない

残業が多いなと思っていたら、
余計なものを作って遊んでいた、減給されないだけましだろう
2020/06/20(土) 17:41:36.37ID:qvmNBmpu
マクロの変更も有識者間でコードレビューして評価報告書提出して上司に確認のサインもらって
修正連絡票回覧するまでやらないとクレームはいったりするよね
知らない間に勝手にマクロが書き換えられていたとか言われたらやばいだろ
2020/06/20(土) 18:45:21.31ID:m9vPjHEn
>>904
わかりやすく説明するなり評価方法に基づいたアピールするなりすりゃいいじゃん
2020/06/21(日) 05:53:32.39ID:I80zoHyc
お前らの職場って大変そうだな
おれんところなんか俺しかVBA触れるやついないから好き放題やってるわ
915デフォルトの名無しさん
垢版 |
2020/06/21(日) 09:05:05.14ID:zpzjHnJy
俺も俺も
初心者に毛が生えた程度の知識だけど周りはPC素人ばかりだからやりたい放題だ
2020/06/21(日) 10:08:30.56ID:7ZJTD4pQ
同じく
PCマイスターみたいに見られてるけど、薄々勘付かれているかもしれない
2020/06/21(日) 13:43:26.96ID:/utMrS/w
エクセルはそこそこ使いこなせるがマクロは全く知らないってな人に
簡易マクロ作っただけで「ハァ?お前天才かよ?」みたいな反応されるよな。
褒められる優越感と小学生でも書けるコードで褒められる自分へ嫌悪感で
葛藤しまくるよな
2020/06/21(日) 14:00:37.96ID:ANltB6r3
いや、別に。
2020/06/21(日) 15:15:50.34ID:0WnnnX3x
両方とも別に
2020/06/21(日) 17:39:52.32ID:1ON8fipo
>>917
他の奴らってそもそも業務が違うだろ
921デフォルトの名無しさん
垢版 |
2020/06/21(日) 17:47:04.76ID:k1xdFuXh
>>920
出来ない正社員と出来るバイトの俺
2020/06/21(日) 17:50:26.78ID:HGSDkuyA
>>917
読んでるこっちが恥ずかしい
2020/06/21(日) 18:05:28.37ID:xIpMoW7x
スレチだけどPHPは
ハイパーテキスト・プリプロセッサだってのに
初歩でも神呼ばわりだぜ

【PHP】下らねぇ質問はここに書き込みやがれ 11
http://itest.5ch.net/mevius/test/read.cgi/tech/1591334726/96-107
96
> hoge.com/****
>に指定した数字入れて、html出力ってできますか?

103 foreach(

107
>>103
神!おっぱ・(自粛)
2020/06/21(日) 19:11:40.34ID:f7O4FwhH
よくメニューに[+]があり、
これを押すと隠してあったメニューが表示されるといった仕組みがあるのですが、
これをエクセルで実現することはできるでしょうか。
2020/06/21(日) 19:46:46.68ID:HGSDkuyA
簡単なのはVisibleプロパティをFalseからTrueにする方法
2020/06/21(日) 19:54:02.33ID:apqHGiEy
>>924
ユーザーフォームの使用になる
http://e-tech.life.hyogo-u.ac.jp/contents/kyouzai/vb-ref/contents/part1/button_visible/button_visible.html
ユーザーフォームのイベントで条件を記述してやるのが良い
2020/06/21(日) 19:54:53.04ID:jOeQJVeR
>>924
グループ化使うとか
2020/06/21(日) 20:09:41.65ID:Ca9zW0qx
>>921
100人規模で周りの人達ができない正社員なわけない
バイト数人が使う程度のマクロだろ
2020/06/21(日) 20:17:13.26ID:dwey+O0N
俺も大したことできないけど零細で偉そうにしてるわ
人生なんて鶏口牛後で十分なんだよ
2020/06/21(日) 21:52:25.43ID:LN5eNKcO
>>928
100人前後の会社で
60人ほど派遣
20人くらいがバイト
10人くらいのパート
正社員は10人ほどのうち確実に7人はエクセルもまともに使えないレベルなのでWord使ってる
エクセルを使うのは正社員1人派遣1人バイトの俺
3ヶ月に一度現れる謎の5人組はよく分からない
そいつらの給料が月70〜80万円って言ってた
俺のバイト代は月12万円くらいだった
この国はおかしいって狂ってるよ
2020/06/21(日) 22:06:48.15ID:jOeQJVeR
大して優秀なわけでもないやつがちょっと優位な部分があるだけで周りを見下すあるある
2020/06/22(月) 00:04:33.28ID:CPlWdThO
>>930
Excel vba ができる人が少ないのは会社の重要な業務ではないからだろ
エクセルはあくまで補助的な使い方しかしてないんじゃねーの
2020/06/22(月) 00:17:00.59ID:W8AXf1Mi
採用条件に入ってないし学校やパソコン教室でも普通は教えないからできないのが普通
そもそもプログラミングとは何か、どういう場面で使うと便利なのかもわかってない人が大半
うっかり省力化すると事務員の首が飛ぶから、人の心があれば黙ってるものだし
2020/06/22(月) 01:24:44.89ID:CPlWdThO
一般的なプログラミングの話をするならExcelは不向き
そもそも表計算ソフトの延長でしかない
2020/06/22(月) 02:04:25.88ID:6UseFZdn
>>932
はいその通りです。
【60代パート】リングファイルを棚にしまう
【社長】ハンコついてパートに渡す
【60代パート】Wordから印刷して社長の机に置く
【50代課長】エクセルからWordにコピペしたファイル名とフォルダをパートに指示
【20代大卒美人派遣】エクセルで原価計算して課長に渡す
【30代バイト】梱包出荷伝票をエクセルに打込み
2020/06/22(月) 02:11:43.53ID:NG7/h+3B
>>935
多分そういうこと言ってるわけじゃないと思うぞ
937デフォルトの名無しさん
垢版 |
2020/06/22(月) 02:30:48.70ID:6UseFZdn
>>936
え?
Excel vba を仕事にするのが会社の重要な業務である業界ってどこですか?
2020/06/22(月) 03:23:12.33ID:CPlWdThO
>>937
お前の会社は何の業界の会社だよw
例えば30代のバイトが梱包している作業のほうが会社にとって利益をもたらすんじゃないのか
2020/06/22(月) 08:49:37.60ID:no76adsC
ヨコレスだけど30代に梱包やらせる会社とか潰れちまえ
頭も体も回る年代なんだから大いに無駄な事やらせた方がいいと思うね
年食って手数よりも口数のほうが多くなってきたら梱包に回せ
940デフォルトの名無しさん
垢版 |
2020/06/22(月) 10:07:31.70ID:lKh0OPb2
では無能な30代には何をやらせれば良いのだ?
2020/06/22(月) 10:18:08.71ID:f1XJDlES
バイトに雑用させるのは普通だし年齢関係ないわ
2020/06/22(月) 10:44:00.06ID:i2ShoQV/
VBAスレなのにバイトの仕事がどうのって話になってて、さすがだなっておもいましたwww
2020/06/22(月) 10:45:26.13ID:DpiCYHaq
vbaってプログラミングなの?
2020/06/22(月) 11:16:34.74ID:DTKm8QVZ
プログラミングじゃなかったらなんなんだ
物書きか?
2020/06/22(月) 11:19:23.28ID:DpiCYHaq
Excel関数の延長?
2020/06/22(月) 12:06:22.79ID:f1XJDlES
正式な定義を知りたきゃMS公式でも見ればいいだろ…
2020/06/22(月) 12:10:34.37ID:DpiCYHaq
申し訳ありませんでした
948デフォルトの名無しさん
垢版 |
2020/06/22(月) 12:26:25.71ID:qDFuj4q3
馬鹿ばっか
949デフォルトの名無しさん
垢版 |
2020/06/22(月) 18:17:44.27ID:es1/qSoW
一年限定で異動してきた職場
噂に聞いてたけど想像を絶するところだった
エクセル使う業務がほとんどなのに
関数使える人が数人、まともな人は確かにいる

ふとみたおっさんはエクセルの表の合計を電卓で足してキーボードでそれを打ち込

ふとおばちゃん達は
「ここ選択してイコールの後にアルファベットと数値と同じ数値が反映される」
「えー!そうなの?」
と会話してる
マクロ以前の問題だった
2020/06/22(月) 18:44:26.90ID:CPlWdThO
管理者が無能だと会社がなくなる
管理者が有能なら無能な人材に高い給料は出さない
2020/06/22(月) 19:03:11.01ID:f1XJDlES
周りは出来ない語りしてもお前が優秀になれるわけじゃないんだよなぁ
2020/06/22(月) 23:08:43.37ID:eYhHFxw6
VBAでイキるの面白すぎるからやめて
2020/06/22(月) 23:16:11.85ID:R2BScS4S
やめたら面白くないだろ
2020/06/23(火) 00:55:19.86ID:TulROOqi
30代の梱包バイトのおばちゃんがVBAできないとか比較する方がおかしい
2020/06/23(火) 01:00:04.26ID:bSgedWTD
VBA素人です
というか、ちょっとだけPHPを書いたことがある程度のプログラム初心者です

セルA1:A5のどこか一箇所に値を入力すれば全てのセルが埋まるようにしたいのです
全てのセルには入力された値に対して決まったパーセンテージをかける
たとえばA1に100と入力されたらA2~5にはそれぞれA1*○%(○はA2~5とも異なる)
A2に100と入力されたらA1及びA3~5にそれぞれA2*○%

多分条件分岐でいうと
if A1が空白でないならA1には入力した値、A2*○%、A3*○%・・・
elseif A2が空白でないなら・・・

みたいな感じになるのかなと思うのですが冗長ですよね…
do Whileで書けるのか、他にスマートな書き方があるのか見当がつきません

フォームでどのセルに入力するか選んで値を入れてボタンを押すと
全てのセルが埋まる、というのが理想です

アドバイスを頂けたらありがたいです
よろしくおねがいします
2020/06/23(火) 01:09:31.87ID:kv8byCI9
for r=1 to 5
if 入力されたセルじゃない場合
cells = 入力された数値かける定数
end if
next

みたいな感じでは?
2020/06/23(火) 01:33:11.82ID:kv8byCI9
あー、これじゃダメみたい、すみません。
958デフォルトの名無しさん
垢版 |
2020/06/23(火) 01:53:19.74ID:bE26MwSl
>>955
ちょっとだけとか書くなよ
全くわかっていない馬鹿だろうが
2020/06/23(火) 02:25:19.01ID:akfNW9d5
入力セルによらず割合が一定なら100%の値を出してからそれをループで入れろバカか
2020/06/23(火) 03:24:31.72ID:TulROOqi
>>955
俺なら入力は1か所(A1)だけにして A2〜A5 は 入力させない or "=A1" にでもするかもな
2020/06/23(火) 05:39:38.41ID:BwhdgQkj
>>955ユーザーフォームにリストボックスとテキストボックスとコマンドボタンを作成し以下
Dim val As Double
Private Sub UserForm_Initialize()
  With ListBox1
   .AddItem "A1"
   .AddItem "A2"
   End With
End Sub
Private Sub CommandButton1_Click()
  If UserForm1.ListBox1.Value="A1" then
val = UserForm1.TextBox1.Value
 A1
Else If UserForm1.ListBox1.Value="A2" then
 val = UserForm1.TextBox1.Value
 A2
 End If
End Sub
Sub A1()
 Range("A1").value=val
 Range("A2").value=val*0.2
 Range("A3").value=val*0.3
 Range("A4").value=val*0.4
 Range("A5").value=val*0.5
End Sub
Sub A2()
 Range("A1").value=val*0.1
 Range("A2").value=val
 Range("A3").value=val*0.3
 Range("A4").value=val*0.4
 Range("A5").value=val*0.5
End Sub
2020/06/23(火) 07:50:59.28ID:xSXJEKQO
意図が伝わるようにユーザーフォームで入力させた方がいいように見えるな
visibleのtrue ,false切り替えでうまくやりたい
963955
垢版 |
2020/06/23(火) 09:36:33.10ID:bSgedWTD
ご教示下さったみなさまありがとうございます

>>961
丁寧にありがとうございます
書いて頂いたのでなんとかなりそうです
2020/06/23(火) 10:14:19.39ID:eVy5K5L9
コピペ
965961
垢版 |
2020/06/23(火) 12:34:05.64ID:5v5sJ6te
>>963
スマホで寝ながら打ったから
Win7のExcel2010にコピペして確認してみたらミスってた
訂正。大文字だったスマソ then>Then
https://i.imgur.com/LQvQjn9.png
2020/06/23(火) 13:08:23.25ID:AqGxlhQk
VBEが勝手に大文字に直してくれるから、ステートメントは全部小文字で入力してるわ
2020/06/23(火) 16:26:51.99ID:lLVW3adv
UsedRangeの使えなさに絶望しました
あれってなに目的で使えんの?

>>966
おれもそれチェック代わりに使ってるんで
変数はほぼ全て大文字スタートだわ
他言語だとやらないけどVBAはエディタがあれなんで
2020/06/23(火) 17:18:02.36ID:JWFUfSAs
>>967
間違った使い方してるだけじゃないのか
2020/06/23(火) 18:21:08.83ID:coVE1fyX
>>967
グラフ自動生成するときとかに使ってる
2020/06/23(火) 18:22:23.82ID:z7FZNG3t
usedrangeはファイルの中身を検査する時に使うな
個人情報が入ってないかとか
2020/06/23(火) 18:28:15.83ID:X4/0OZ1g
UsedRangeは普通に使うぞ。
寧ろ、一番使うかも。

Excelの固定じゃない範囲を取得する場合、これでOKというようなものが無い。
都度考えることになる。
2020/06/23(火) 21:35:23.31ID:LvHFRgi0
値化とか
2020/06/23(火) 21:40:15.53ID:LvHFRgi0
2次元の動的配列にバックデータを突っ込むときに使う
2020/06/23(火) 22:16:19.70ID:zDUcrbEK
やっと念願の夢かなって生産現場に異動できそう
PCをあまり使わなくなる職場にいけるから
マクロ組んだりもほとんどしなくて済むから嬉しすぎる
そしてここで教えてくれた人たちへの恩も忘れられんよ
2020/06/23(火) 22:27:25.32ID:UicElvK7
ひでぇなぁ忘れられちゃうのかぁ残念
汗だくの梱包現場からエアコン効いた部屋に行きたいよ
976デフォルトの名無しさん
垢版 |
2020/06/24(水) 10:22:12.41ID:XfIA0IcT
Sub Sample1()
Dim Target As Range
Set Target = Range("P:P").FiVBA エラー 91
これで
オブジェクト変数または With ブロック変数が設定されていません。t.Offset(0, 1)
End Sub

何がだめ?
2020/06/24(水) 10:26:15.72ID:7kmsZdqz
FiVBAって命令あるの?
2020/06/24(水) 13:23:42.08ID:hNjrAS7L
tってなんだよ
宣言してないオブジェクト変数が動くわけないだろ
2020/06/24(水) 13:58:43.39ID:LpqCs0qI
なにがだめって聞かれても全てがとしか
2020/06/24(水) 14:29:06.16ID:jVCudKEf
ちゃんと内容を確認しないのが駄目
981デフォルトの名無しさん
垢版 |
2020/06/24(水) 14:58:07.29ID:ec8khzg7
ごめん間違えた
これです
Sub Sample1()
Dim Target As Range
Set Target = Range("P:P").Find(What:="田中")
MsgBox Target.Offset(0, 1)
End Sub
2020/06/24(水) 15:31:45.69ID:7kmsZdqz
>>981
https://www.moug.net/tech/exvba/0050116.html

ここでも参考にしな

まず確実に言えるのは、Nothingのエラー対処ができてない
2020/06/24(水) 16:03:07.42ID:A95Qwidx
>>981
田中がないんだろどうせ
984デフォルトの名無しさん
垢版 |
2020/06/24(水) 16:11:20.98ID:ec8khzg7
Set Target = Range("P:P").Find(What:="田中")

この田中を変数というか特定のセルの値にしたい場合どうしたらいい?
A1のセル内容を参照したいとする
985デフォルトの名無しさん
垢版 |
2020/06/24(水) 16:18:53.01ID:ec8khzg7
あ、できた
ごめん自分は京都大学霊長類研究所のジェームズという7歳のチンパンジーだからVBAよくわからないんだ
皆さんありがとございまうす
986デフォルトの名無しさん
垢版 |
2020/06/24(水) 16:21:57.07ID:4/s69xMY
>>985
解決内容を書けチンパンジー
2020/06/24(水) 17:53:24.17ID:A95Qwidx
自己紹介や自分語りはいらん
2020/06/24(水) 19:08:49.57ID:Ra7WLueW
>>984
Nothingのエラ―対処が出来て無いってのはみんなが通る道だ。
989デフォルトの名無しさん
垢版 |
2020/06/24(水) 19:26:45.24ID:aYj5R9EO
自分で使う分にはエラー終了でも正常終了でも変わらんし
990デフォルトの名無しさん
垢版 |
2020/06/25(木) 14:24:07.38ID:UL1INOQI
In Range("R:R")
というのがあるとして
R列全体を選択するのはマストなんだけど
ホントはR7からソレ以下全部にしたい
In Range("R7:R")ではうまく行かないみたいだしこういう場合ってどうしたらいいんだろう
991デフォルトの名無しさん
垢版 |
2020/06/25(木) 14:52:26.82ID:fOnLoXil
usedrangeじゃ駄目なんですか?
2020/06/25(木) 15:35:07.92ID:eDJAI9Nl
テーブルにすれば?
2020/06/25(木) 15:38:48.25ID:emOdy//g
cellsでそこから最終行まで指定すればいいじゃない
2020/06/25(木) 16:00:07.27ID:eepaDL1r
colmns.countが最終桁番号だしApplication.Intersectで指定2範囲の重複部分だせるし
2020/06/25(木) 16:24:03.44ID:oGWS7APt
直感的にやるならRange(Range("R7"),Range("R7").End(xlDown))でいいんじゃない
2020/06/25(木) 17:54:02.59ID:xz2BRr37
>>990
何故最終行までという指定を省こうとするのか?
先に真っ当な手順で実現できてないのに想像で勝手に省いてうまくいかないってどういうつもりなのか?
2020/06/25(木) 17:54:59.62ID:orhJfehX
きたこれ
VBA歴2ヶ月なのに俺は職場のPCの先生から神様扱い
998デフォルトの名無しさん
垢版 |
2020/06/25(木) 18:26:51.87ID:BKkovaqh
何そのダメ先生
2020/06/25(木) 18:32:44.98ID:0L1EfJ/H
おだてられて浮かれてるだけだなw
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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