Excel VBA 質問スレ P ..
[2ch|▼Menu]
2:デフォルトの名無しさん
20/03/17 18:15:02.25 xIJjSw0m0.net
>>1

3:デフォルトの名無しさん
20/03/17 19:24:51.48 +T54gcvp0.net
>>1
>全スレ998
挿入か貼り付けかはっきりしてくれ

4:デフォルトの名無しさん (ワッチョイ 2eef-drwQ)
20/03/17 21:26:48 xIJjSw0m0.net
行をコピーして挿入操作
マクロ記録したら、Selection.Copy Selection.iIsert Shift:=xlDown が出てきたけど普通に再生できたぞ

5:デフォルトの名無しさん
20/03/18 04:12:39.20 oTsktMrB0.net
VBAからインターネットエクスプローラーを起動して、
指定したURLのサイトを表示して、
スクリーンショットを取って行く。
という作業を自動化したくて色んなサイトのコードをコピペして、
一応動くものは出来たのですが画質が悪いです。
下記はそのコードの一部分なんですが、どこをどういじれば
画質が良くなるのでしょうか。
Private Declare PtrSafe Sub keybd_event Lib "user32" ( _
 ByVal bVk As Byte, _
 ByVal bScan As Byte, _
 ByVal dwFlags As Long, _
 ByVal dwExtraInfo As Long)
・・・
 keybd_event &HA4, 0&, &H1, 0&
 keybd_event vbKeySnapshot, 0&, &H1, 0&
 keybd_event vbKeySnapshot, 0&, &H1 Or &H2, 0&
 keybd_event &HA4, 0&, &H1 Or &H2, 0&

6:5 (ワッチョイ 4901-hdmr)
20/03/18 05:01:35 oTsktMrB0.net
プラウザのウィンドウサイズを大きくした後で画面キャプチャしたら
満足の行く画質になりました。
>>5の質問は撤回します。

7:デフォルトの名無しさん
20/03/18 12:15:49.12 w6Ggs+SYM.net
>>4
まじすか
コピー元が別ブックだったのでそのせいかも

8:デフォルトの名無しさん (スップ Sd73-bMu3)
20/03/18 12:50:26 FL4Tmu/bd.net
>>5
キーボードマクロ最悪

9:デフォルトの名無しさん (ワッチョイ 13ad-NT4g)
20/03/18 21:13:19 ILNBMFwG0.net
リボンを自動的に非表示にする設定だととクイックアクセスに登録したものも含めてコマンドがすべて隠れてしまうんだけど
特定のコマンドのみ表示させておく方法はないかな?
マクロとして登録させて画像にマクロを登録しようとしたけど動かない。

10:デフォルトの名無しさん (ワッチョイ 0bef-ED79)
20/03/19 06:45:24 3WIKr7Ue0.net
>>9
うちのExcel2016だと隠れないけど、それ以降だと違うのかな
リボンの下に表示offでもだめなら
フォーム作って、UserForm.ShowModal=False という手もあるよ

11:デフォルトの名無しさん (ワッチョイ 13ad-0a0A)
20/03/19 23:50:18 7Zzxd2N00.net
>>10
>>9
UserForm.ShowModal=False はどういう方法?

12:デフォルトの名無しさん
20/03/20 00:29:09.01 cQ88e7Ay0.net
>>11
自作フォームをカスタマイズメニューに見立てて自作のマクロなどを呼び出す

13:デフォルトの名無しさん
20/03/20 08:35:07.45 SwKaoqcN0.net
>>12
マクロを呼び出すのは簡単なんだけど、各コマンド(既存の機能)をよびだすのかできない
たとえば描写とかペンとか消しゴム機能とか

14:デフォルトの名無しさん (ワッチョイ 1342-AP1B)
20/03/20 08:58:05 8tNMwiiZ0.net
既存の機能が必要ならリボンを非表示にしなきゃ良いんじゃね

15:デフォルトの名無しさん
20/03/20 11:45:56.36 gOi7n73D0.net
>>13
SendKeys "% 〜

16:デフォルトの名無しさん
20/03/20 12:04:13.08 kTqu2sOZ0.net
>>15
ショートカットキーを設定してってことかな?

17:デフォルトの名無しさん
20/03/20 12:36:23.76 dFakeV1fa.net
csvを読む場合で、見出し行とデータ行が文字と数値で形式が違う場合とかどう処理しますか?

18:デフォルトの名無しさん
20/03/20 12:41:37.47 FhkC8bvBx.net
>>17
パワークエリで読み込んで任意のデータ型に変換する

19:デフォルトの名無しさん
20/03/20 13:27:20.08 jE5Tt0oL0.net
>>17
CSVを読み込む場合にブックとして読み込むことはまず無い。
というか、まずテキストとして読み込む。
処理も何も、全て自由に出来るぞ。

20:デフォルトの名無しさん (ラクッペペ MMeb-6U2m)
20/03/20 19:47:02 1JHTKX/vM.net
>>17
全部文字として読み込む。コードで数値として処理したいならcintやcdblでキャストすればいい。因みにワークシート関数にはNumberValueってのがある。

21:デフォルトの名無しさん (ワッチョイ 81da-ED79)
20/03/20 19:50:02 wHnf8pbD0.net
あれなんとかならんかな。
NULLがあるとコケるから、
いちいちIIF(A IS NOT NULL, CINT(A))ってやらなきゃいけないの。

22:デフォルトの名無しさん (ワッチョイ 8b46-m7vt)
20/03/22 12:27:27 bv32jkb00.net
VBA で、セルの指定しても行の指定が無効になってて、必ず1行目に表示されてしまいます。
何が原因でしょうかね?
教えてください。

23:デフォルトの名無しさん (スプッッ Sd33-dSJs)
20/03/22 12:28:32 hR7PxyLud.net
>>22
お前の馬鹿頭

24:デフォルトの名無しさん (ワッチョイ 8b46-m7vt)
20/03/22 12:35:14 bv32jkb00.net
原因わかりました。すみませんでした。

25:デフォルトの名無しさん (ワッチョイ 8b46-m7vt)
20/03/22 12:36:52 bv32jkb00.net
ここの住民の霊性は暴力団と同じですね

26:デフォルトの名無しさん (ブーイモ MM4d-O7/r)
20/03/22 13:22:11 TNUWFKUeM.net
ここだけじゃなく5chはどこも似たり寄ったりです
貴方が来るような場所じゃありません

27:デフォルトの名無しさん
20/03/22 14:47:18.63 9uw1USbo0.net
>>25
霊性?
馬鹿確定
原因としては正しかっただろうが

28:デフォルトの名無しさん
20/03/22 15:26:01.73 bTaHgmHe0.net
>>22
ソースコード書けないの?
君書いたのが本当にセルの指定をしてると信じる人がいるとでも?

29:デフォルトの名無しさん
20/03/24 17:30:30.61 s99Qd4t60.net
よろしくお願いします。
数百行あるシートで、上から順に一行ずつ以下の操作を行いたいです。
(1) C列の文章の中に、「一言コメント:」という文字が入っていれば2へ。なければ終わり、次の行へ
(2) 「一言コメント:」とそれ以下の文字列をC列の値から削除し、E列の、元々の値(文字列)の前に貼りつけ
(3) E列の文字列の中から「「一言コメント:」という文字列を削除
以上です。
まず、(1)の検索がうまくいかず、(2)の文字列取得も、一文字ずつ数えてカウントし、あらためて「終わりから○文字」みたいな
やりかたをするしか方法が浮かびません。
たぶん、上級者ならもっとシンプルな書き方ができるのではないかと思い質問させていただきました。
どのように書けばよいでしょうか?よろしくお願いいたします。

30:デフォルトの名無しさん
20/03/24 17:42:47.48 2RYGBfo0M.net
For文をRowCntって変数で回していると仮定して
If Cells(RowCnt, 3).Value Like “*一言コメント:*″ Then
で引っかけるとか?

31:デフォルトの名無しさん
20/03/24 17:58:43.96 BIkwDKwH0.net
VBAなくても関数だけで目的達成しそう

32:デフォルトの名無しさん
20/03/24 18:33:24.09 n56XI6Ab0.net
>>29
Ruby で作った
text = <<"EOT"
ab一言コメント:12
あいう コメント:
xyz一言コメント:456
EOT
search_word = "一言コメント:"
sw_length = search_word.length # 7文字
text.each_line do | line | # 1行ずつ処理する
line.strip! # trim
# 単語が見つかった時だけ、単語の前後を出力する
if pos_1 = line.index( search_word )
puts "#{ line[ 0 ... pos_1 ] } - #{ line[ pos_1 + sw_length .. -1 ] }"
end
end
出力
ab - 12
xyz - 456

33:デフォルトの名無しさん
20/03/24 18:34:45.78 qnUBImldr.net
>>15
どんな機能でもショートカットキー設定できるの?

34:デフォルトの名無しさん
20/03/24 19:30:25.33 sgSRB3ii0.net
>>29
VBAでないとだめなわけじゃないならExcel関数でやればいいと思う

35:デフォルトの名無しさん (ワッチョイ d1e6-tCoU)
20/03/24 19:56:22 Yvy0BDEM0.net
>>33
Alt押してみ

36:デフォルトの名無しさん (ワッチョイ 41ce-ED79)
20/03/24 22:01:18 PstaeSXz0.net
>>29
Dim c As Range, e As Range
s$ = "一言コメント:"
For Each c In Range(Cells(1, 3), Cells(Rows.Count, 3).End(xlUp))
  i% = InStr(c, s)
  If i Then
    Set e = c.Offset(0, 2)
    e = Replace(Left(c, i - 1) & e, s, "")
  End If
Next

37:デフォルトの名無しさん (ワッチョイ 13b5-Edxj)
20/03/24 22:44:45 Sir7Hwfr0.net
ここは上級者向け?
ド素人が少しずついろんなサイトや動画見て覚えようとしてるレベルじゃダメかな

38:デフォルトの名無しさん (ワッチョイ 41ce-ED79)
20/03/24 23:20:41 PstaeSXz0.net
>>37
初心者も上級者もキチガイも見てる
みんなが毎日見てるわけじゃないから、タイミングが悪いと質問に答えてもらえないこともある

39:デフォルトの名無しさん (ワッチョイ 695f-n/Wf)
20/03/24 23:41:15 VeKTJmtj0.net
いろんなサイト見た方が早い

40:デフォルトの名無しさん (ワッチョイ b1f1-Go5d)
20/03/25 09:15:56 nn3rUaIL0.net
FileSystemObjectでFilesのコレクションょ取得したあと
それぞれにアクセスするにはどうしますか?
Files(1), Files(2)のようにするとエラーが出てエラいこっちゃとなります。
For each文ならできるのですがそこまでするほどのことではない時には?

41:デフォルトの名無しさん (ワッチョイ ad49-iBrl)
20/03/25 10:04:11 34Te7/8G0.net
コレクションょ

42:デフォルトの名無しさん (ワッチョイ b1f1-z4rF)
20/03/25 10:44:44 nn3rUaIL0.net


43:デフォルトの名無しさん
20/03/25 10:51:51.28 34Te7/8G0.net
暇だし、見てみた
Const path = "c:\temp"
Dim fso As Scripting.FileSystemObject
Dim item As Object
Set fso = New Scripting.FileSystemObject
Set item = fso.GetFolder(path).Files.item("test.csv")
filesコレクションからの特定fileオブジェクトはitemプロパティでkeyをnameで指定すれば直接取れる
ExcelVBE上はitemでナンバリングされてるけど、配列みたいに番号指定は出来ないんじゃないかな(他の人知ってればいいな)
ファイル名特定できるならgetfileでもええね
個人的にはdirとか分かりやすいがね

44:デフォルトの名無しさん (ワッチョイ b1f1-z4rF)
20/03/25 12:51:44 nn3rUaIL0.net
itemでナンバリングされていないんじゃないか?
だからitem(1)やitem(2)で取得できないのでは。
それゃファイル名を()の中に書けば取得はできるけど。

45:デフォルトの名無しさん (アウアウウー Sacd-cy2b)
20/03/25 15:03:09 jqzDDJlwa.net
for each でいいやん

46:デフォルトの名無しさん
20/03/25 15:55:41.50 e/5QJMyr0.net
「そこまでする」の考え方がまずおかしい
中身がたとえ1個でも2個でも普通はコレクションにはFor Eachを使うもんだぞ

47:デフォルトの名無しさん
20/03/25 16:09:28.13 nn3rUaIL0.net
>>45-46
このハゲー!
違うだろ!
最初にfor eachはやらないと言った。
コレクションの代表ということで任意の1個だけを選んでそのプロパティ等を調べる、
ということはプログラミング経験がある程度あればそういう状況に遭遇することはたまによくある。

48:デフォルトの名無しさん
20/03/25 16:14:59.17 z6ZaQbmPr.net
fsoのfilesコレクションには通常のコレクションみたいにインデックス指定が出来ないのよね
countとitem(key)プロパティしかない
ファイルシステムの違いとか、歴史的経緯からかはしらんけど
だから基本for eachで他の形にする

49:デフォルトの名無しさん
20/03/25 16:19:47.29 nn3rUaIL0.net
>>48
そんなことはとおの昔に知ってるから
ここで質問をしたのだ。

50:デフォルトの名無しさん
20/03/25 16:24:52.66 RkpcsgMW0.net
ID:nn3rUaIL0
馬鹿は死ね

51:デフォルトの名無しさん
20/03/25 16:33:07.81 dd26zMYGr.net
では次の方

52:デフォルトの名無しさん
20/03/25 18:54:52.80 acV7Q0T20.net
インデックスが使いたいなら自分で配列でも作り直せばいいのに

53:デフォルトの名無しさん
20/03/25 19:07:44.86 99YP/w74d.net
不毛だな

54:デフォルトの名無しさん (ワッチョイ 092f-2pFN)
20/03/25 20:08:34 xy/tXdFS0.net
Exit Forすればいいんじゃまいか

55:デフォルトの名無しさん (ワッチョイ adda-Cd0d)
20/03/25 21:06:02 POb+XADc0.net
OpenDocumentスプレッドシートのデータをADOで取得する方法ある?
EXCELに変換しろってのは無しで。

56:デフォルトの名無しさん (ワッチョイ 1242-IfT6)
20/03/25 21:06:24 UODWeex90.net
>>44で自分で答だしてんじゃん

57:デフォルトの名無しさん (ワッチョイ 092f-2pFN)
20/03/25 22:04:41 xy/tXdFS0.net
ドライバ自作しろ

58:デフォルトの名無しさん (ワッチョイ 9eba-OKiD)
20/03/25 22:39:59 8ZIjWfpj0.net
プラスとマイナスはあるから丸ドライバー作るわ

59:デフォルトの名無しさん
20/03/26 02:21:13.92 THyEKc6a0.net
ファイル入出力に使うopenやinputが何者か(関数?メソッド?など)知りたいです
これらの機能はなぜオブジェクトブラウザに乗っていないのでしょうか
マイクロソフトのウェブヘルプにはステートメントとして乗っているようですが
ステートメントというのは関数やメソッドなどの分類ではないですよね?
ご教示お願いします。

60:デフォルトの名無しさん
20/03/26 02:34:21.94 bMQizyKS0.net
>>59
ステートメントというのは関数の祖先にあたる概念
コンピューター言語が発明された初期からある命令文の分類の一つ

61:デフォルトの名無しさん (ワッチョイ 558e-7Ena)
20/03/26 10:58:51 NTuSOeK50.net
馬鹿に馬鹿が答えている

62:デフォルトの名無しさん
20/03/26 13:11:56.44 d196EOchM.net
VBAを覚えようとしてる初心者以前だが
まず何となくルールから覚えてる
=は同じじゃなくて←の意味ぐらいにとらえておく
あとはコードというか使いそうな単語を少しずつ
msgboxとかRangeとかactivecellとか
でもとっかかりがわからんわ
難しすぎですな…

63:デフォルトの名無しさん (ワッチョイ ad49-iBrl)
20/03/26 14:44:13 HulDeUE70.net
覚えるのは結構だけど、普段やってる作業をVBAで再現するとこから始めると飽きずにやれるんじゃ

コピペ作業、シートコピー、ボタンで特定の計算とかね
だんだんCSV読みたくなったりして高速化したくなったりして、そうやって覚えていく

64:デフォルトの名無しさん (ワッチョイ 5e46-k/jz)
20/03/26 15:50:36 ZD929brT0.net
TEST

65:デフォルトの名無しさん (ブーイモ MMad-FSgb)
20/03/26 15:54:11 hp54jNs9M.net
ユーザーフォーム上にあるボタン1を押すとボタン1を非表示にしてフォームのキャプチャを取得。
その後ボタン1を再び表示して終了。

みたいなものを作りたいのですが
SendkeyでAlt+Printscreenを送っても
素の状態ではボタン1が残った状態のものがキャプチャされ、
Waitをかけると今度は画面全体のキャプチャになってしまいます。

フォームをダイレクトに画像ファイルにする、とかでも良いのですが調べても中々応えに辿り着けなかったので皆様のお知恵をお借りしたいです。
何か良い手はないでしょうか。

66:デフォルトの名無しさん (ワッチョイ 5e46-k/jz)
20/03/26 15:56:47 ZD929brT0.net
以下RUNすると、"!ALARM()が見つかりません。”ってエラーになる。
何故ですか?

Public FLG As Integer
Private Sub CommandButton1_Click()
With Sheet1
  Cells(2, 1) = Date
Cells(2, 2) = Time
If FLG = 1 Then
FLG = 0
CommandButton1.Caption = "ON"
Else
FLG = 1
CommandButton1.Caption = "OFF"
Call OnTimeStart
End If
End With
FLG = 0
End Sub
Sub OnTimeStart()
With Sheet1
Application.OnTime Now + TimeValue("00:00:05"), "ALARM"
End With
End Sub
Sub ALARM()
With Sheet1
Cells(2, 1) = Date
Cells(2, 2) = Time
End With
End Sub

67:デフォルトの名無しさん
20/03/26 17:09:13.21 hp54jNs9M.net
すみません。
情報の伝達に齟齬がありました。
Sendkeyではなくkeybd_eventsでした。
Altのkeyeventをコメントアウトしたら何故かフォームだけのスクリーンショットが撮れました。
vbKeySnapshotはAlt+PrintScreenだったのでしょうか?
Private Sub CommandButton1_Click()
UserForm1.CommandButton1.Visible = False
'keybd_event vbKeyMenu, 1, &H1, 0
keybd_event vbKeySnapshot, 1, &H1, 0
Application.Wait [Now() + "0:00:00.5"]
keybd_event vbKeySnapshot, 1, &H1 Or &H2, 0
'keybd_event vbKeyMenu, 1, &H1 Or &H2, 0
UserForm1.CommandButton1.Visible = True
End Sub

68:デフォルトの名無しさん
20/03/26 17:44:04.29 sBp41OLkr.net
MacでもVBA使えますか?

69:デフォルトの名無しさん
20/03/26 18:35:55.24 GuVxnbOZ0.net
使えるけどwindowsと全く同じように動くかまでは知らん

70:デフォルトの名無しさん (アウアウウー Sacd-pf+t)
20/03/26 19:05:03 58MBAwKca.net
新しい天啓が下った。私は馬鹿ですらなく、場であり、これが私の仕える神のような気がしたが違ったような気がした。
忠実に表現したらこうなった、つまりそういうことなんだろう。

71:デフォルトの名無しさん
20/03/26 19:41:20.92 m6KuD/Rj0.net
>>66
標準モジュールに書いてるか

72:デフォルトの名無しさん (ワッチョイ 9201-z4rF)
20/03/26 21:11:00 rWIrO2cB0.net
WEBクエリはhttpsだと遅いすか?
そうなったサイトが急に読み込み遅くなったんすけど

73:デフォルトの名無しさん (ワッチョイ 92b5-McJq)
20/03/26 21:24:14 Ys9zNHHg0.net
初心者はまずここ見とけみたいなサイトとかYouTubeの動画ありますか?
宣伝込みでも俺が踏むだけなので良かったら教えて欲しいです
本当に何から見てけばいいのかわからない
asとかretとか当たり前に出られてもわからない…

74:デフォルトの名無しさん (ワッチョイ b18f-+ryc)
20/03/26 21:26:43 Ye2KpVaE0.net
知らんがな入門書買え

75:デフォルトの名無しさん (ワッチョイ a9ad-yXVd)
20/03/26 22:06:31 NUJ56fsj0.net
>>73
動画でプログラミングを覚えるのはとても難しい
エクセルの使い方や開発環境の整備とかなら分かるけど
言語を覚えるのは本を読んでコードを書く方が早いだろう

76:デフォルトの名無しさん (ワッチョイ b6c9-Cd0d)
20/03/26 22:19:37 ohlAwein0.net
>>73
URLリンク(www.sejuku.net)

77:デフォルトの名無しさん
20/03/26 22:35:41.45 ewzEtFoA0.net
retって何?

78:デフォルトの名無しさん
20/03/26 23:38:44.50 Ys9zNHHg0.net
>>75
>>76
ありがとう
とりあえず、マクロからあるURLやoffice系のソフトを呼び出すコードをネットから丸パクリしてみたんだけど結局これが良いのか悪いのかそもそもルールすらあまりわかってない
サイトや本で必死に勉強しますわ
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)

79:デフォルトの名無しさん
20/03/26 23:56:44.93 ewzEtFoA0.net
字で書けよ基地外か

80:デフォルトの名無しさん
20/03/27 00:31:59.82 N3mE/9bh0.net
図形のグループ化についてです。
ショート上に円が無数にあってその円の中にテキストがあります。
これを円と円の中のテキストをそれぞれグループ化してShapeの名前をテキスト名にするにはどうしたら出来ますか?

81:デフォルトの名無しさん
20/03/27 00:52:28.07 tkT1AEpsM.net
>>80
グループ化はGroupメソッドを使う
For Eachを使えば図形がいくつあっても関係なく同じようにできる

82:デフォルトの名無しさん (ワッチョイ b57c-K+F1)
20/03/27 01:56:14 U7Hbc3is0.net
>>80
shapeオブジェクトでいじる

83:デフォルトの名無しさん
20/03/27 07:59:14.92 PIWgxOzWr.net
図形をVBAで複雑にいじろうとすると悲しみしか生まなさそう

84:デフォルトの名無しさん (ワッチョイ 55e3-pf+t)
20/03/27 14:44:48 Kq8lniUe0.net
Worksheets("min").Range(Cells(N, 2), Cells(N, 100)) = "999"
これで複数セルに一括入力したいのですが
アプリケーション定義またはオブジェクト定義のエラーです
と出ます。
何がいけないのでしょうか?

85:デフォルトの名無しさん (ワッチョイ d9da-Cd0d)
20/03/27 14:53:12 8yKTqVer0.net
Nを定義してないんじゃない

86:デフォルトの名無しさん (ラクッペペ MM96-6Ghe)
20/03/27 15:00:54 n40dB020M.net
cellの前にもシートがいる

87:デフォルトの名無しさん (ワッチョイ 55e3-pf+t)
20/03/27 15:04:48 Kq8lniUe0.net
With Worksheets("min")
.Range(.Cells(1, 1), .Cells(20, 2)) = "999"
End With

できました^^ありがとう

88:デフォルトの名無しさん (アウアウエー Sada-pf+t)
20/03/27 15:09:58 Yr4iTEmOa.net
それでいい。

89:デフォルトの名無しさん (ワッチョイ ad49-iBrl)
20/03/27 15:11:53 DMhVWYPv0.net
いえいえ

90:デフォルトの名無しさん (アークセー Sx79-yXVd)
20/03/27 15:32:49 YTZoRU62x.net
検索して違うシートから値を 持ってくるマクロで持ってくる値が0以下(マイナス)ならば
違う列に転記させたいのですがwithエラーが発生してうまく動きませんでした。

Dim i As Long, c As Range, e As Range, wS As Worksheet
Set wS1 = Worksheets("明細1")
With Worksheets("data")
  Set c = wS1.Range("D:D").Find(What:=.Cells(i, "B"), LookIn:=xlValues, LookAt:=xlWhole)
  If Not c Is Nothing and wS1.Cells(c.Row, "Z").value < 0 Then ←ここでエラー
.Cells(i, "V") = wS1.Cells(c.Row, "Q")
  ElsIf Not c Is Nothing and wS1.Cells(c.Row, "Z").value >= 0 Then
.Cells(i, "X") = wS1.Cells(c.Row, "Q")

またマイナス値をプラス値に変換したく
.Cells(i, "S") = abs(Cells(i, "S"))

としましたが小数点が消えてしまいます。
-77.00が77になってしまうのですが77.00としたいです。

91:デフォルトの名無しさん (ラクッペペ MM96-6Ghe)
20/03/27 15:39:00 n40dB020M.net
cがnothingの時c.rowがエラー

バラせ

92:デフォルトの名無しさん
20/03/27 15:47:38.09 LyEUyxQ10.net
馬鹿がゾロゾロ出てくるのは何で?

93:デフォルトの名無しさん
20/03/27 15:50:59.76 DMhVWYPv0.net
春休みだから

94:デフォルトの名無しさん (アークセー Sx79-yXVd)
20/03/27 15:54:33 YTZoRU62x.net
>>91

If wS1.Cells(c.Row, "Z").value < 0 Thenでもエラーが出ます
With Worksheets("data")が邪魔をしてるとかですか?

95:デフォルトの名無しさん (ワッチョイ f6f7-DNZ3)
20/03/27 17:17:35 zsNWkQiw0.net
"Z"で指定できたっけ

96:デフォルトの名無しさん (ワッチョイ 8101-yKOS)
20/03/27 17:31:46 jaIOieAQ0.net
>>94
VBAは関数や演算子の引数は全て渡される前に値を計算するんだよ

だから Not c Is Nothing が真じゃないときは wS1.Cells(c.Row, "Z").value < 0 を評価しないように
if Not c Is Nothing then if wS1.Cells(c.Row, "Z").value < 0 then ...
としないといけない

あとCellsプロパティは見にくいんで範囲に名前つけるかテーブル化してRangeプロパティで呼んだ方がいい

97:デフォルトの名無しさん (ワッチョイ ad2c-yXVd)
20/03/27 21:24:53 N7XAdwe70.net
>>92
答らえれない馬鹿以下の癖に?

98:デフォルトの名無しさん
20/03/27 23:01:00.96 7yWnOCeY0.net
範囲に名前はなぁ・・。
上手く使いこなせればいいが、
みんなで共有するファイルに使うと、
知らない間に#REFだらけになってるwwww

99:デフォルトの名無しさん
20/03/28 04:38:00.47 vMIAuVeU0.net
>>71
レスありがと
標準モジュールに書いてない。
しばらく、やってなかったんで忘れていた。
すみません

100:デフォルトの名無しさん (ワッチョイ b140-yKOS)
20/03/28 15:07:25 m/WQBFmt0.net
>>98
異常時に例外が投げられるように設計するのは普通だと思うんだが・・・

101:デフォルトの名無しさん
20/03/28 19:20:50.03 rI/k2Pjrd.net
>>100
名前を付けるのは、コードと関係無い所で実装されるので個人的には絶対使わない。
というか、Cellsを使うよ。
2次元配列的にもぴったり来るし。
寧ろ、Rangeの方が使わない。
尤も、Cellsでも列を文字で指定するのはやらない。
AF列が何列目か分からないって?
イミディエイトで?Range("AF1").Columnとでも入れてみろ。

102:デフォルトの名無しさん (ササクッテロ Sp79-CIkl)
20/03/28 20:14:42 ihCuPYYIp.net
>>101
で、コメントで何列かとか、項目名とか書くわけ?

103:デフォルトの名無しさん (ワッチョイ a9ad-yXVd)
20/03/28 20:37:45 YbqXlWqq0.net
>>96
>>101
名前を付ける派
可読性が高い方が良い
VBAは見にくいコードが多い

104:デフォルトの名無しさん (ワッチョイ b140-yKOS)
20/03/28 23:45:34 m/WQBFmt0.net
>>101
名前定義が弄られるってことはロックしないで使うんでしょ
猶更、セル挿入なりで意図した場所とズレてても気づかずに成功し続ける方が危険だと思うんだが
で、セルを挿入したい時も一個一個数値をずらしていくの?

ワークシートの見た目が二次元配列である事とコード内容を一致させる必要性も感じないんだが、
もしかしてハードコーディングしてるのか?

イミディエイトウインドウで毎回インデックスを調べろっていうは面白すぎるから止めて欲しい

105:デフォルトの名無しさん (ワッチョイ 091f-hvDm)
20/03/29 00:11:14 JMfmjWXB0.net
Shapeの当たり判定の計算方法を教えて下さい。

基準の円のShapeにTextBoxが当ってたらTrue、当たって無ければFalse
円は選択時の□の面積じゃなく実際の円の大きさ。TextBoxは選択時の□の大きさ。

106:デフォルトの名無しさん (ワッチョイ 79ac-iBrl)
20/03/29 00:41:59 Q4J2OaKi0.net
なぜそんなことを

107:デフォルトの名無しさん
20/03/29 01:29:27.30 Iv7ta0000.net
>>105
表示位置とサイズから比較したらいいんじゃね

108:デフォルトの名無しさん
20/03/29 01:42:07.54 hSuS8nXs0.net
当たり判定だからゲームじゃないの?
Corei世代でも60fpsでないから使いたくないけど。

109:デフォルトの名無しさん (ワッチョイ 0dce-Cd0d)
20/03/29 08:29:34 sBDU9ajX0.net
>>105
専用の関数などは用意されてないので、TextBoxの頂点と円の座標を比較したり、円の中心からの距離を三角関数で計算して調べるしかない

110:デフォルトの名無しさん
20/03/29 09:06:15.85 hrvcX8VW0.net
VBAであえてゲーム作ったりするのは
芸ではあるけど開発効率的に筋は悪いよね
グラフィックにこだわるなら別言語推奨

111:デフォルトの名無しさん (ワッチョイ 4191-tYYp)
20/03/29 19:07:35 +LkL5rVp0.net
>>102
普通は定数で行、列を宣言するわな。

>>103
見にくいコードは書いてる奴の力量次第だろ。

>>104
ロックはしない。
そんなもんは解除されるかもしれんし、当てにしない。
というか、作ってるもの次第だね。

ワークシートの見た目と二次元配列を一致させるとか笑わせるなあ。
少し慣れた奴なら列も数値で扱うのがぴったり来るんだよ。
何故なら、最初から二次元配列的に考えるから。

VBE上に自作のメニュ―作って、入力するだけで列名←→列数はわかるげとな。
作る力量無い奴はイミディエイトで調べりゃ良いだろ。
VBEのCommandBerでイベント扱うのはクラスが必要だし、上級者の領分にはなるかもな。
VBE弄るVBAは会社じゃ使わないから通常のCommandBarでメニュー作ってやっても良いんじゃね?
どっちにしても時間は考えることに使ってるんで、毎回イミディエイトで調べても大した話じゃね―んだわ。

112:デフォルトの名無しさん
20/03/29 19:28:33.88 Gw3heoMsM.net
>>63
今の若いヤツらはそういう説明じゃ200%挫折する。普段の業務を自動化っていう感覚がわからないそう。やっぱスマホタブレット世代はPC=ワープロにしか思えんのかもな。

113:デフォルトの名無しさん (スププ Sdb2-Ik0M)
20/03/29 20:04:11 83saJEjVd.net
若いほうがわかりそうなイメージあるが

114:デフォルトの名無しさん (スププ Sdb2-Ik0M)
20/03/29 20:07:10 83saJEjVd.net
>>111
ロック外されたくないならパスワード付ければいいじゃん

115:デフォルトの名無しさん (ワッチョイ 4191-tYYp)
20/03/29 20:28:31 +LkL5rVp0.net
>>114
パスワードwww

116:デフォルトの名無しさん (ワッチョイ 9201-aXsr)
20/03/29 20:55:58 wDs4yIM00.net
>>111
> VBE上に自作のメニュ―作って、入力するだけで列名←→列数はわかるげとな。
まさか自慢じゃないよね?w
傍から見てたら馬鹿なことしてるなとしか思えんし

117:デフォルトの名無しさん (ワッチョイ 12ad-At9V)
20/03/29 22:56:25 WhhHvRXO0.net
共有編集可能にしたら更新は5分間隔だけどVBAとかで1分以内にできないかな?複数のパソコンで映してる同じエクセルファイルの内容を別のパソコンから共有編集で編集して保存したら1分以内に複数のパソコンにも表示を反映させたい。

118:デフォルトの名無しさん (アウアウエー Sada-pf+t)
20/03/30 01:33:21 hihORIFda.net
あ、どうせ、コピーしても意味ねぇよ。記憶してるのPCじゃねぇから。

119:デフォルトの名無しさん (アウアウエー Sada-pf+t)
20/03/30 01:33:39 hihORIFda.net
考えまとめるためにPC使ってるだけ、ただそれだけなんだよ。

120:デフォルトの名無しさん (ワッチョイ 4191-tYYp)
20/03/30 09:44:28 c+7OLkMF0.net
>>116
君にできないからと言って、そんなもんが自慢になると思うかね?

121:デフォルトの名無しさん (オッペケ Sr79-7qnn)
20/03/30 10:45:50 44eTx7Dtr.net
>>96
それでも同じエラーが出ます…

122:デフォルトの名無しさん
20/03/30 10:57:15.53 XiEELtFfM.net
>>120
日本語の理解力がないのかな?
自慢にもならないことをいちいち書くとかバカじゃね?
って言う事な

123:デフォルトの名無しさん (ワッチョイ f6f7-DNZ3)
20/03/30 12:35:49 rHF2nN3k0.net
>>121
wS1.Cells(c.Row, "Z").value < 0
そもそもこれ必要?

124:デフォルトの名無しさん
20/03/30 13:30:25.60 8cfGBpvw0.net
いや、いらないのはそっちじゃなくて、ElseIf〜 のIf〜Then
If Not c Is Nothing Then
If wS1.Cells(c.Row,"Z").value<0 Then
.Cells(i, "V") = wS1.Cells(c.Row, "Q")
Else
.Cells(i, "X") = wS1.Cells(c.Row, "Q")
Endif
Endif
でいいはず
エラーが出たのが実は一つ上の行で、i に代入してなかったってオチじゃないよね

125:デフォルトの名無しさん (スッップ Sdb2-tYYp)
20/03/30 15:51:59 pRaklD1Wd.net
>>122
悔しいからって一々反応しなくて良いんだぞwww

126:デフォルトの名無しさん (ドコグロ MM9a-aXsr)
20/03/30 15:58:49 5QM7gMbqM.net
>>125
ブーメラン乙w

127:デフォルトの名無しさん (スフッ Sdb2-Cd0d)
20/03/30 16:25:47 Ds9EzL2Md.net
反応したら負けだと(みんな)思ってる

128:デフォルトの名無しさん
20/03/30 17:08:01.39 nRSFIrFT0.net
どこで受けたストレスをここで発散してるんだろう・・・

129:デフォルトの名無しさん (ドコグロ MM71-aXsr)
20/03/30 19:49:19 JBOku6fCM.net
>>127
>>125に言ってやれよw

130:デフォルトの名無しさん
20/03/30 20:13:35.71 4l2N9sosM.net
ここの人等は本当にきついね
一部だけかもしれんけど
他スレ建ててもどうせそこにやってくるし困ったもんだ

131:デフォルトの名無しさん
20/03/30 20:19:47.92 jrEvufLB0.net
いいから質問しろよ
俺が優越感感じられるように割と簡単なやつな

132:デフォルトの名無しさん
20/03/30 20:23:47.47 z27088IIa.net
ワロタw
ワイもドヤ顔で回答したい

133:デフォルトの名無しさん
20/03/30 20:33:15.75 mnH7Xf0t0.net
禿げのくせに

134:デフォルトの名無しさん
20/03/31 00:31:58.74 O8i/VRws0.net
>>133
このハゲ!

135:デフォルトの名無しさん
20/03/31 00:37:41.25 fAiG3E7e0.net
天才な人、教えて下さい。
フォルダAの中にフォルダa1があってこの中にxxx.zipがあるとします。
このxxx.zipを直接クリックしたりしないで解凍するプログラムを書くのはVBAで可能でしょうか?

136:デフォルトの名無しさん
20/03/31 00:57:46.12 x9NcPTe/0.net
たまたま知ってたけど天才じゃないから教えられない
残念です
無念です

137:デフォルトの名無しさん
20/03/31 01:02:53.10 x9NcPTe/0.net
俺も天才じゃないんだわ
いるんか?このスレに、天才が

138:デフォルトの名無しさん
20/03/31 02:01:24.29 PSx1iNyN0.net
>>135
馬鹿は死ね

139:デフォルトの名無しさん
20/03/31 02:22:12.33 CMEsfttX0.net
>>135
「powershell zip 解凍」で検索!

140:デフォルトの名無しさん (ワッチョイ 8101-tylh)
20/03/31 03:29:43 fAiG3E7e0.net
>>139
どうもありがとう!

141:デフォルトの名無しさん (ワッチョイ 12ad-7qnn)
20/03/31 03:37:14 sCGR7IuL0.net
>>117って難しい?

142:デフォルトの名無しさん
20/03/31 05:23:52.03 kiJT2Kt60.net
zipをxlsxにすれば、VBAを使わなくても開くだけで解凍できる。どこに解凍されるかは知らんが。

143:デフォルトの名無しさん (スッップ Sdb2-tYYp)
20/03/31 08:15:19 AMZVbv8Gd.net
>>126
zip解凍ぐらい大して難しく無いんだから答えてあげたら?

144:デフォルトの名無しさん (ドコグロ MM1d-aXsr)
20/03/31 08:25:37 FZ3Oti5EM.net
>>143
既に>>139で答えられてるだろ
スレの流れも追えないのか?w

145:デフォルトの名無しさん (スッップ Sdb2-tYYp)
20/03/31 08:42:47 AMZVbv8Gd.net
>>141
VBA 共有編集でググレば参考になる所が出てくる。

146:デフォルトの名無しさん (スッップ Sdb2-tYYp)
20/03/31 08:43:03 AMZVbv8Gd.net
>>144
バーカwww

147:デフォルトの名無しさん
20/03/31 09:32:50.09 WgVk0vye0.net
うゎ、真性かよw

148:デフォルトの名無しさん (ワッチョイ b18f-+ryc)
20/03/31 13:30:22 UcE7ogps0.net
そういやxlsxがそもそもzipファイルなんだよな

149:デフォルトの名無しさん (ワッチョイ d9e5-n60N)
20/03/31 22:47:10 Rc1BoApG0.net
そーなのか
道理で大昔作ったフォーマットを作り直してみたら容量が半分程度だったんだ
効率的なコード書けるようになった俺スゲーって訳じゃなく、エクセルさんが凄かったのね

150:デフォルトの名無しさん (ワッチョイ 9bf7-14eV)
20/04/01 01:30:54 IClGbcwW0.net
拡張子zipにして展開すると画像ファイル取り出せるしな

151:デフォルトの名無しさん (アウアウウー Sae9-f+0C)
20/04/01 02:22:12 06G29rGEa.net
今さら次郎

152:デフォルトの名無しさん (ワッチョイ 155f-P5Sm)
20/04/01 03:04:48 Ex6pONtn0.net
これから三郎

153:デフォルトの名無しさん (ワッチョイ e5ad-KN+/)
20/04/01 03:32:39 8LLFjcSO0.net
終わりに四郎

154:デフォルトの名無しさん (ブーイモ MM79-bVUD)
20/04/01 04:33:51 h6/hOHkqM.net
アッと驚くタメ五郎

155:デフォルトの名無しさん
20/04/01 12:55:56.84 2mAYLJyeM.net
>>151
好きだよ六郎

156:デフォルトの名無しさん
20/04/01 18:21:42.63 UG3CS4Iqd.net
ネットでこんな素晴らしい物を見つけたんだけれども、これがデータ量が多いと結構時間掛かるんだけど、高速で図形として書き出す方法って他にありませんか?

URLリンク(izawa-web.com)


157:bcad/dxfreader.html



158:デフォルトの名無しさん (ワッチョイ 5dce-bVUD)
20/04/01 22:01:42 4Q64PMPZ0.net
>>156
CADアプリで画像にでも変換してシートに貼り付けた方が早くて綺麗
オートシェイプに変換すると重くなるし比率が狂うし、メリットがなさすぎる

159:デフォルトの名無しさん (ワッチョイ 251f-yCYu)
20/04/01 22:28:36 kG9c2P/10.net
>>157
貼って終わりならそれでもいいんですが、数あるCADデータの中から指定のデータを呼び出してエクセルに貼り付けて線の色とか文字を取得したいんですよね。

160:デフォルトの名無しさん
20/04/01 22:54:48.05 cJ4COAhO0.net
>>145
更新時間を短くする方法は載ってなかった

161:デフォルトの名無しさん (ワッチョイ 23b5-Lkgv)
20/04/02 00:31:10 hOxCGNmI0.net
あるマクロを開いた瞬間に自作したユーザーフォームが出るようにする
それと同時にエクセルファイルを選択できる ファイルを開くウィンドウが出るようにする

ド基礎以前だと思うのですがおしえていただきたく、、

162:デフォルトの名無しさん (ワッチョイ 2ba7-9mb0)
20/04/02 00:42:40 quV7czYu0.net
ググれば全部出るのに何故ここできく

163:デフォルトの名無しさん
20/04/02 02:21:22.11 9ZVXgmel0.net
>>160
Workbook_Open()
UserForm1.Show
Application.GetOpenFilename

164:デフォルトの名無しさん
20/04/02 07:03:17.01 qQpWBHI+0.net
ド基礎以前発言がひっかかるな...
あるマクロが他人の作った編集できないマクロなら難しいね
パスワードクラックはNGで

165:デフォルトの名無しさん
20/04/02 08:01:03.55 qvprCKttr.net
少しくらいの調べる能力も持たないお子ちゃまが多い

166:デフォルトの名無しさん (ワッチョイ 1dda-bVUD)
20/04/02 10:29:10 2gPurUpa0.net
ド基礎以前のこともわからないやつに教えても理解できんだろう

167:デフォルトの名無しさん (ワッチョイ 23b5-Lkgv)
20/04/02 18:43:17 hOxCGNmI0.net
>>162
ありがとう、ネットで捜してコピペしながら頑張ってくわ

起動すると作ったユーザーフォームが開きつつ
ファイルからエクセルを選べるウィンドウを出す

開いたエクセルにはBとCの2列目からずらーっと数字が並んでるからそれをあらかじめ自分のカスタマイズした散布図にする
(2列目から始まるが終わりはデータによって違う)

ボタンによって2つの散布図に分けられる

がんばりやす

168:デフォルトの名無しさん
20/04/02 19:19:56.56 K5yIowQc0.net
>>164
人に教えることで自分も成長する。

169:デフォルトの名無しさん (アウアウウー Sae9-f+0C)
20/04/03 02:02:50 Vs5HZC6Ua.net
成長してないやん

170:デフォルトの名無しさん (スッップ Sd43-bjOE)
20/04/03 12:51:38 EwhXV+Zid.net
>>162
そりゃ駄目だ。
モーダルとモードレスを調べよう。

モーダルでやりたかったらフォームのInitializeかActivateイベントだな。

171:デフォルトの名無しさん (スッップ Sd43-bjOE)
20/04/03 12:54:37 EwhXV+Zid.net
>>159
AutoUpdateFrequencyプロパティじゃね?
ググっただけだけど。

172:デフォルトの名無しさん (ワッチョイ e5ad-KN+/)
20/04/03 13:10:39 tVlvtk9J0.net
>>167
それはあるな

173:デフォルトの名無しさん (ワッチョイ 4bcc-bVUD)
20/04/03 13:51:03 S5/JCD2f0.net
>>170
それ、イミディエイトペインで試したけど、5未満はNGだよ

>>145の共有編集って、Excel2016で実装した、OneDriveとか使ってクラウドでやるやつだと思ったんだけど、違うのかな
×共有編集 ○共同編集 らしいけど

174:デフォルトの名無しさん
20/04/04 10:09:51.56 3Ir6pkSX0.net
モーダルあなた疲れているのよ

175:デフォルトの名無しさん
20/04/04 10:15:36.71 nxBKOFy80.net
自動更新の間隔を短くするのが無理なら手動でできないのかな?
強制的に切断と接続を繰り返してみたらどうだろう

176:デフォルトの名無しさん
20/04/04 13:14:06.10 MDQA80eK0.net
>>173
やっぱり、逆だよね

177:デフォルトの名無しさん
20/04/04 18:10:09.51 x7mbZh3f0.net
>>172
ローカルのつもりだったんだけどそれなら共同編集になるのかな?

178:デフォルトの名無しさん
20/04/05 01:47:50.77 LE/VkChT0.net
セルA1とB1の数値が一致しない場合はC1を塗りつぶす、というのはできるのでしょうか?

179:デフォルトの名無しさん
20/04/05 01:56:11.77 RR8jfU5J0.net
>>177
If A1 <> B1 Then [C1].Interior.Color = RGB(1, 234, 56)

180:デフォルトの名無しさん (ササクッテロ Sp01-xTSh)
20/04/05 07:39:22 BAT1a6hLp.net
>>178
ありがとうございます!

181:デフォルトの名無しさん (ワッチョイ 1b06-bVUD)
20/04/05 11:37:21 FbjC6ZOO0.net
A行の値を見て、その値が1だったら、空白行を上に2つ入れたいのですが、できますか。

182:デフォルトの名無しさん (ワッチョイ 1b06-bVUD)
20/04/05 11:44:06 FbjC6ZOO0.net
間違えた。

A列の値を見て、その値が1だったら、空白行を上に2つ入れたいのですが、できますか。

183:デフォルトの名無しさん (ワッチョイ 8d7c-5QI3)
20/04/05 11:59:20 Kx41qnng0.net
できます

184:デフォルトの名無しさん (ワッチョイ 5dce-bVUD)
20/04/05 12:00:45 RR8jfU5J0.net
>>180
Sub Macro1()
  For r = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
    If Cells(r, 1) = 1 Then Rows(r).Resize(2).Insert
  Next
End Sub

185:デフォルトの名無しさん (ワッチョイ 1b06-bVUD)
20/04/05 12:32:03 FbjC6ZOO0.net
>>183
ありがとうございます!できました。

186:デフォルトの名無しさん (ワッチョイ 45ac-tCKN)
20/04/06 00:22:26 8R1em71p0.net
ほんまこの程度自分で考えないのかなあ

187:デフォルトの名無しさん (ワッチョイ 23ad-KBPB)
20/04/06 01:48:40 SI8CeRSt0.net
子が吐き出したcsvデータ(子の状況により1ファイル数行〜数百行程度のデータ00000000.csv〜FFFFFFFF.csv)を親で吸い上げて管理用に整理するマクロを作成しているのですが子のデータ数が多くなったせいか親の処理を実行中にExcelが落ちるようになりました。
現状では
Workbook.Open 00000001.csv
でファイルを開いてから配列に叩き込んで処理しているのですが、
他に何か開かずに直接配列に収納するとか別の開き方など良い手段はありますでしょうか。

188:デフォルトの名無しさん
20/04/06 02:53:22.77 mfVHo2vq0.net
>>186
その説明では落ちる原因がわからんので対処のしようがない
とりあえずテキストファイルとして開いてSplitで配列に入れるとか

189:デフォルトの名無しさん (オッペケ Sr01-WpTI)
20/04/06 07:33:50 c57grIZCr.net
>>174
自動更新しても更新されない
強制的にはできないね

190:デフォルトの名無しさん (ワッチョイ 4bcc-bVUD)
20/04/06 09:41:20 LXVfU9S30.net
>>174
最初、自前タイマーでの自動保存を提案しようと思ったけど、全ユーザーの同期とか排他処理とか必要になるからやめた
同時使用数にもよるけど、現状の5分ぐらいが実用限度だと思う
それでも問題があるから、MSも共有ブック機能を非推奨にしたんだろうしね

191:デフォルトの名無しさん
20/04/06 15:09:00.57 0mGlPNRI0.net
>>186
まず落ちる原因の特定が必要
本当にデータ量が原因かどうか?
それでもし量の問題だとしたら
同時に必要なデータを見定める
たとえばA、B、Cのファイルを同時に開いてたが
じつはAとB、BとCで処理する工夫の余地があるとか
それでもアルゴリズムではどうにもならない量なら
SQLとかのデータベースに移行する

192:デフォルトの名無しさん
20/04/06 22:35:08.05 sFf9EAmnM.net
URLリンク(oshiete.goo.ne.jp)
ActiveWorkbook.SaveAsにするとファイル名変えずに保存できる理由を教えてください
Copyした時点で別ブックが作られるんですか?

193:デフォルトの名無しさん
20/04/06 23:45:47.95 jDCeOgrg0.net
マクロで作られた印刷ボタンを押すと両面印刷で出てくるからこれを片面印刷に統一したいんだけどどうしたらいいの?


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

16日前に更新/292 KB
担当:undef