Excel VBA 質問スレ Part74

レス数が1000を超えています。これ以上書き込みはできません。
2021/12/20(月) 01:40:59.22ID:jnlr9GaR0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付けるナリ

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

※前スレ
Excel VBA 質問スレ Part73
https://mevius.5ch.net/test/read.cgi/tech/1631485799/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2デフォルトの名無しさん (ワッチョイ be8e-qezp)
垢版 |
2021/12/20(月) 15:47:59.42ID:xbGcPk/a0
いつものあいつの釣りとあまりに馬鹿過ぎる質問はお断りです
また、Excelの使い方すらわからない人はお帰りください
3デフォルトの名無しさん (ワッチョイ 4f68-FJAE)
垢版 |
2021/12/20(月) 21:37:30.62ID:PDhvjiKy0
>>2
というような、荒らしが出没しています
質問者は気軽に質問してok
4デフォルトの名無しさん (ワッチョイ 9710-+zQR)
垢版 |
2021/12/20(月) 22:50:29.00ID:xtbVIhZ20
>>3
とRubyキチガイこといつものあいつが書いてます
2021/12/21(火) 00:54:48.99ID:LQhGMorE0
本当にそう
Excelをろくに使えないヤツは質問禁止
2021/12/21(火) 02:17:40.60ID:A4PyOyUjM
俺が超初心者の質問に答えるのを誰も止められない
2021/12/21(火) 07:05:08.85ID:zyzYO5qO0
誰かやつを止めろー
2021/12/21(火) 08:50:24.71ID:OQH8SbIad
ここで回答者のメンバーを紹介しとこう!!
丸投げの竜!
宿題のケン!
エスパー塚本!
後出しの抜か八!
2021/12/21(火) 14:03:53.42ID:b1cO/LEr0
Excelで値のVLOOKUPが簡単にできないのはどう考えてもおかしい
2021/12/21(火) 19:59:23.56ID:NGMac6Im0
set phoneticが遅いんですが何か良い方法ありませんか・・・
2021/12/21(火) 20:21:57.86ID:JWVO4cJHd
シoア「使わなければどうということはない」
2021/12/21(火) 21:27:31.69ID:4sL7eE9Ld
帰る前か寝る前に走らせておけば翌日には終わってる
2021/12/21(火) 21:31:17.19ID:U18xdpJw0
奴隷かな
2021/12/22(水) 01:37:54.14ID:ArdRbsOD0
ここってExcel質問板の親戚なのでつか?
2021/12/22(水) 07:24:45.48ID:eXWgualad
そんなやつは知らん
赤の他人
2021/12/22(水) 17:49:42.98ID:ArdRbsOD0
互いにディスっている噂はマジもんだったのね
あっちは崩壊してる
2021/12/22(水) 18:18:46.40ID:qznVJzlcM
Excelの機能だけを使うかVBAで書くかは時と場合によるだろ
どちらかというとVBAの方が少しだけ得意とか少しだけ知ってるって人が回答側に回ってるだけでExcelの機能を蔑ろにはせんよ
俺なんか未だにピボットテーブルとか苦手だから使える人って凄いなって常々思ってる
2021/12/22(水) 20:20:19.34ID:R6Lyz+3SM
SUMIF関数こねくりまわすよりピボットテーブルの方が頭使わない
19デフォルトの名無しさん (ワッチョイ 4f68-FJAE)
垢版 |
2021/12/22(水) 21:22:09.96ID:THY0vMt/0
>>17
回答者としての素直な感想だけど、
「ピボットテーブル分からないとかMOS取ってないじゃん。それぐらいとっとけよ」だ
MOSエキスパートなんて一週間あれば取れる
絶対にとっておいてほしい
2021/12/22(水) 21:34:22.82ID:VzwTDf6r0
パワハラ野郎が一週間っつってるからだいたい一年か
むずかしそうだな
2021/12/22(水) 23:34:45.09ID:2iFoBA3x0
>>19
MOSなど取らなくてもピボットテーブルくらいは使えるけど、一週間でとれるMOSをわざわざ取る意味はありますか?
2021/12/23(木) 00:13:10.86ID:WhAc8Omnd
>>21
マウントの第一歩は資格から
23デフォルトの名無しさん (ワッチョイ 4f68-FJAE)
垢版 |
2021/12/23(木) 00:13:50.78ID:cFA/EfYi0
>>21
面接する側としては、MOS取ってるとすごく楽

「x年エクセル使ってきました!」→罫線引けるだけなのか、vlookup使えるのか、vba使えるのか、全然分からん


「MOS取ってます」→ピボット使えるのが一発で分かる。他に聞きたい事を色々と聞ける

技術も良いけど、「何を勉強すべきか」をわかってるという点も安心材料になる
2021/12/23(木) 00:41:43.27ID:z8TMb8cl0
資格取るかどうかぐらい自分で決めろよ、迷う程度なら無くても困らんだろ
2021/12/23(木) 00:50:29.82ID:T5zamiY20
>>19
MOS上級取ったがピボットテーブルが何だったか覚えてないわ〜
だって使わねーもん忘れるわ

関数も使ったセル数に比例して重くなるからあまり使わない
26デフォルトの名無しさん (ワッチョイ 6a8e-qezp)
垢版 |
2021/12/23(木) 01:25:21.58ID:yhxVrEG50
派遣かよ(笑)
2021/12/23(木) 05:40:54.98ID:ogtrdNkS0
>>23
MOSとやらの資格を持ってるとVBAもやってるか分かるの?
てことはMOSにVBAの問題も出るってこと?
2021/12/23(木) 06:26:23.14ID:W/nbBjGX0
うちの上さんにピボット教えたら課長に昇格したで
もともとは非正規社員だったのに
2021/12/23(木) 06:56:30.81ID:wGiTcijP0
レベルの低い会社だな
2021/12/23(木) 08:39:33.26ID:XNOwqpXCM
鶏口牛後
2021/12/23(木) 08:45:45.04ID:F08Xg9SRM
ピボットは高速だからいいよ
2021/12/23(木) 10:02:50.98ID:drYqNVEKM
>>27
横だけど出ないよ
人それぞれだと思うけれど正直VBAのほうが小回りが効く
2021/12/23(木) 15:44:49.15ID:u3bNwovs0
VBAできればそんな機能やらなんとか関数なんて覚えなくていいんじゃないの?
職場に全部VBAでExcelを運用している上司がそう言っていた。
「Excelはマクロで動かせば良いんだよ」って
2021/12/23(木) 15:48:58.80ID:hP3nIsI3d
それぞれ長所と短所があんだから、適切に使い分けれないのは無能
2021/12/23(木) 17:12:00.17ID:7F8qfhQc0
>>33
クソみたいな会社だね
2021/12/23(木) 17:27:03.01ID:u3bNwovs0
VBA=上級者なんでしょ?
2021/12/23(木) 18:14:09.06ID:z8TMb8cl0
上級者=人間です
2021/12/23(木) 18:37:09.81ID:ogtrdNkS0
そんなことより明日はクリスマスイブですよ
2021/12/23(木) 18:50:00.82ID:YP7dkfo90
今日はイブイブですよ
2021/12/23(木) 19:03:15.92ID:Q2iVuQydM
上皇陛下生誕記念日ですよ
2021/12/24(金) 11:39:11.20ID:CMtgWUns0
>>38-39
プレゼントくれ
2021/12/24(金) 13:14:14.04ID:dZUCpvkt0
どうせクリスマスイヴもクリスマスもExcelの練習してるんでしょ?
自分もだけど泣
2021/12/24(金) 13:38:02.83ID:YbcytTda0
Win11でIEが廃止されたんで、VBA/VBscriptでIEを操作できなくなったと思ったんですが、
最新のWin11だとIEが復活してないですか?
https://i.imgur.com/owo3i91.jpg
Win11を最新にしたら、IEが起動して操作ができるようになってる。
2021/12/24(金) 14:20:05.78ID:4not7NKLM
>>43
廃止されてない
最初からそうアナウンスされてたからVBA勢もとくに慌ててなかった
2021/12/24(金) 14:48:58.10ID:6jALRLih0
VBAの廃止はちょっと困るなぁ
VBSの廃止も少し困るけどいざとなったら
Javascriptに逃げる
2021/12/24(金) 23:15:00.50ID:pZVHkbp70
VBAで文字列x内のn文字以降で,文字Aと文字Bの間が数字だけの部分のBの位置を知る方法があれば教えて下さい.
47デフォルトの名無しさん (ワッチョイ eb68-425w)
垢版 |
2021/12/24(金) 23:19:31.78ID:my/u7ogk0
>>46

n=4

aaaergjoeriA3543Behwfhewu ←これのBの位置
bbbA3fewfew354Bffewo
cccfjewpfAf3e54f3w54Bfjeei

正規表現でA・Bの間が数字だけ、それをfindで見つける気がするけど飲みすぎて無理だー
2021/12/25(土) 00:32:33.67ID:VJJcYh0C0
>>47
酔いが覚めたらお願いします
49デフォルトの名無しさん (ワッチョイ 6b8e-V3ae)
垢版 |
2021/12/25(土) 00:49:36.50ID:/fiswOOz0
>>48
ヒント貰ったのだから後は自分で考えろ
2021/12/25(土) 00:58:09.02ID:VJJcYh0C0
>>49
そこまではヒントをもらわんでも俺でもわかる。
この先がわからんから聞いているのよ。

それにお前関係ないやつだよな。
貢献もしてないのに横からでてきて文句をいうな。
マスク警察みたいなやつだね(笑)
51デフォルトの名無しさん (ワッチョイ 6b8e-V3ae)
垢版 |
2021/12/25(土) 01:35:14.15ID:/fiswOOz0
>>50
馬鹿には無理ってことか
いや、Ruby基地外だろ
2021/12/25(土) 09:39:15.77ID:pMGYJdSE0
自分で自分の首を絞めるスタイル
2021/12/25(土) 09:45:38.27ID:pDRqI2zs0
逆にそこまでわかってて何がわからないの
2021/12/25(土) 10:05:17.74ID:xRiGY3nRM
検索する能力がない
応用力がない
2021/12/25(土) 10:16:27.24ID:UaFD4yqA0
向いていないからVBAやめろと言っているようなもんか
2021/12/25(土) 10:26:38.11ID:h6X2g2ddd
仕事ってのは、できるやつに頼みたいと思っても手持ちの人材をなんとかやりくりするしかないわけで
ベストは不可能だから、どうやったらベターな結果が得られるか考えるのが管理職の仕事
世の中そんなもん
2021/12/25(土) 10:40:38.77ID:VJJcYh0C0
Find はセルにしか使えない。instr関数は正規表現をサポートしてた。like 演算子は文字位置を返さない。何で行き詰まってる。
2021/12/25(土) 10:42:03.53ID:VJJcYh0C0
すまん誤字が多かった。

Find はセルにしか使えない。instr関数は正規表現をサポートしてない。like 演算子は文字位置を返さない。なんで行き詰まってる。
59デフォルトの名無しさん (ワッチョイ eb68-425w)
垢版 |
2021/12/25(土) 10:42:44.93ID:PWqR92MK0
正規表現使えばいいじゃん(いいじゃん)
2021/12/25(土) 10:51:58.85ID:CtJIiN4vM
>>58
WorksheetFunction.Find
2021/12/25(土) 10:58:39.79ID:6NqLFNqCM
正規表現でA-Bの文字列を取り出して
その文字列をfindかinstrにかければAの位置がわかる
あとはA-B文字列の長さを出せばBの位置もわかる
62デフォルトの名無しさん (ワッチョイ eb68-425w)
垢版 |
2021/12/25(土) 11:14:22.36ID:PWqR92MK0
飲みながら正規表現はキツイ

Sub foo()

a = "aaaergjoeriA3543Behwfhewu ←これのBの位置"
b = "bbbA3fewfew354Bffewo"
c = "cccfjewpfAf3e54f3w54Bfjeei"
n = 4 'n文字以降
str_start = "A"
str_end = "B"

'RegExpオブジェクトの作成
Dim reg As Object
Set reg = CreateObject("VBScript.RegExp")

'正規表現の指定
reg.Pattern = ".{" & n & "}" & str_start & "[0-9]*?" & str_end 'パターンを指定
reg.IgnoreCase = False '大文字と小文字を区別するか(False)、しないか(True)
Debug.Print reg.Pattern

'main1 この引数が検索対象
Set matches = reg.Execute(a)
63デフォルトの名無しさん (ワッチョイ eb68-425w)
垢版 |
2021/12/25(土) 11:14:27.46ID:PWqR92MK0
'無かったら終了
If matches.Count = 0 Then
MsgBox "見つからないので終了します"
Exit Sub
End If

'main2
For Each Match In matches
文字列長 = Len(Match.Value)
発見場所 = Match.firstindex
結果 = 文字列長 + 発見場所
Debug.Print 結果 & "文字目に見つかりました"
Next Match

End Sub
2021/12/25(土) 11:44:00.82ID:VJJcYh0C0
>>62,63
おお、ありがとうございます。
これです。

RegExpでVBAでも正規表現が使えるところまでは調べたのですが、具体的な使い方がわかりませんでした。
勉強します。

このような素晴らしい解決策をご教示していただける前は下のような手作り感満載の関数でしのいでおりました。
あとから見た時にわからなくなりそうなのでもっと定式化された解決策を探しておりました。

なお必要なのは最初にマッチした位置だけでいいです。

Function patternSearch(x As String, pattern As String, start As Long)
Dim i As Long
Dim isStartEndMatching As Boolean
Dim isNum As Boolean
Dim cond_StartEnd As String '前後の文字の一致を調べる
Dim cond_Numeric As String '間が数字であることを調べる

cond_StartEnd = Left(pattern, 1) & "*" & Right(pattern, 1)
cond_Numeric = Mid(pattern, 2, Len(pattern) - 2)

For i = 1 To Len(x) - (start - 1)
isStartEndMatching = Mid(x, start, i) Like cond_StartEnd
isNum = IsNumeric(cond_Numeric)
If isStartEndMatching And isNum Then
patternSearch = start - 1 + i
Exit For
End If
Next i
patternSearch = 0
End Function
2021/12/25(土) 11:52:30.46ID:S32KpRlOM
>>62
>>46 > VBAで文字列x内のn文字「以降」で
66デフォルトの名無しさん (ワッチョイ eb68-425w)
垢版 |
2021/12/25(土) 11:57:08.35ID:PWqR92MK0
>>64
動けばなんでもok

>>65
2021/12/25(土) 15:45:55.24ID:UaFD4yqA0
マクロなんて動けばおkだよね
2021/12/25(土) 16:59:38.36ID:B3qeRvDTM
>>62
美しい
2021/12/26(日) 14:03:55.68ID:5ufCwo3R0
動かなくても問題ないし
2021/12/26(日) 14:10:17.85ID:9yjQ4P0w0
>>67
我流のマクロは応用が効かないからね.
正規表現を使ったバージョンだと違う検索条件のときも,検索文字列だけ修正すればよい.
私の場合は上記の目的の後,全てのセルの特定文字だけ別の文字に置換して赤字に色付する目的に応用できた.

ところで話変わるけど,スペースのフォントは色付けできないんで,別の文字に置換して色付けするしか無いけど,何が良いかな.
□が一番近いかなという気もするが.
2021/12/26(日) 14:15:53.43ID:jPw0R1Q90
スペースに色を付けられないならセルに色を付ければいいじゃない
2021/12/26(日) 14:20:38.69ID:2f61FhmH0
アンダーバーダメ?
2021/12/26(日) 16:17:30.13ID:QxLRmP0A0
実際我流が大半なんでしょ?
2021/12/26(日) 16:43:46.10ID:WljwqYnpM
VBAでスクール通って学んだとか聞いたことがない
2021/12/26(日) 16:46:40.63ID:jPw0R1Q90
こいこいさんのチャンネルでVBAのスクールの話が出たことはあるな
2021/12/26(日) 17:13:23.67ID:zLGTo/fw0
記録したマクロ見てれば自然に解っちゃうしな
77デフォルトの名無しさん (ワッチョイ eb68-425w)
垢版 |
2021/12/26(日) 17:43:53.58ID:BxLJu94y0
>>73
そもそもプログラムには「本流」が無いので「我流」がない。
※強いて言えば、その団体(勤務先企業)のやり方はある

プログラムなんて「最終的に要望通りに動けば何でもいい」
汚いとか綺麗とかは、本質的には、無い
vbaはかなり特殊で、エクセルの補助として動くプログラム。多少動きが悪くてもエクセルのルーチンでカバーできる

ただ昨今「ルーチンが変わりやすい」という風潮がある
その前提だと、「保守のコストをいかに低減させるか」という事に価値が生じてくる
それを「エクセルのオペレーションでカバーする」「vbaを改修する」どちらで負担するかは、それを運用している会社による。場合によっては個人。

別の風潮として、保守コストを下げる際に「上の方で設定して、後のプログラム部分では変更しないようにする」って風潮がある
これは絶対ではないが、妥当ではある

それらを総合すると「保守コストを極力低減させるコードを書く。設定は上の方で行っておく」というコードに価値がある

実は、>>62はわざと綺麗に書いている。
一箇所だけ明確に失敗している部分がある
2021/12/26(日) 19:31:54.80ID:9yjQ4P0w0
>>72
スペースの書式の下線をつけたのだが不思議な現象が発生。
文字列の中間の場合は表示されるが、最後の非スペース文字よりあとのスペースの下線は表示されない。
エクセルのスペースの書式は予想外の振る舞いをする。
2021/12/26(日) 20:21:51.00ID:4+g2DJkz0
>>75
こいこいガチすごい人だな
80デフォルトの名無しさん (ワッチョイ eb68-425w)
垢版 |
2021/12/26(日) 21:36:01.96ID:BxLJu94y0
>>78
検索すると、2003ではスペースにも下線がついたらしい
仕様が変わったのだろうか
2021/12/26(日) 23:39:01.85ID:HCW/N47xd
Excel2021だけど、どこにスペーズがあっても普通に下線付くぞ
別の何かとバッティングしてるだけでは?
https://i.imgur.com/gimsTIF.png
2021/12/26(日) 23:42:16.71ID:naAyWDoK0
365使ってるときに同じこと思った気がするけど今は確認できない
2021/12/26(日) 23:43:33.04ID:9yjQ4P0w0
>>81
私がやっているのは文字ごとに書式を設定すること。スペースだけに下線をつけることを試してる。
84デフォルトの名無しさん (ワッチョイ d336-Yj5q)
垢版 |
2021/12/26(日) 23:46:55.18ID:aolFsvA10
DatePart構文の引数firstweekofyearを1月始まりじゃなくて4月始まりする方法ってない?
4月1日から第一週目として請求書を何週目に発行したか把握したいVBA組みたいんだけど

4/1〜4/7に収まる数字を第一週
4/8〜4/15に収まる数字を第二週…
っていちいち組むしかない?
2021/12/27(月) 00:04:55.38ID:HmBQ8qj70
>>84
日付シリアル値と3月31日のシリアル値の差を7で割って整数単位でラウンドアップする方法ではだめですか
86デフォルトの名無しさん (ワッチョイ d336-Yj5q)
垢版 |
2021/12/27(月) 00:06:52.13ID:DqxLP3j70
>>85
シリアル値は考えたけど面倒そうで…簡単に何週目かを算出したい
2021/12/27(月) 00:09:03.03ID:4eMIOhWPM
組むっていうか自分で関数作ればすぐじゃね
2021/12/27(月) 00:14:15.86ID:AVwzugLQM
datediffでintervalをwにして
4/1とその日を比較するだけかな?
やってみないとわからんけど
2021/12/27(月) 00:15:08.58ID:HmBQ8qj70
>>86

> 面倒そうで…
2021/12/27(月) 00:30:35.81ID:FIuz8AHod
>>84
年またぎの処理はしてない
やりたかったら先に3/31を引いて1/1始まりに補正するのが一番簡単だと思う

Sub Macro1()
  Dim d As Date
  Dim w As Integer

  d = DateValue("12/28")  '求めたい日
  w = Int((d - DateValue("3/31") + 6) / 7)  ' 4/1基準で何週目か
  Debug.Print w
End Sub
2021/12/27(月) 02:58:33.09ID:UCnM3aAj0
先輩方にアホすぎるくらい初歩的な質問です。
マクロコード書くときに字下げって常識と聞きますが必須なんすか?
YouTubeとか観ていると字下げしてない人もいたもんで気になって
2021/12/27(月) 06:49:37.64ID:5A0Tlr4y0
>>91
必須ではないけどやった方が見易いよ
If hoge = piyo then
foo = bar
End If
ってしておけば後から見てもどこからどこまでがIfやForなどの中身なのかって分かりやすいじゃない?
93デフォルトの名無しさん (ワッチョイ eb68-425w)
垢版 |
2021/12/27(月) 07:19:24.39ID:jbqcc4VX0
>>91
慣れてくれば入れるようになるが・・・無いと見づらくて仕方ない日本語でいうと句読点も改行もないようなもんだこれでもいいならどうぞ
2021/12/27(月) 08:17:15.04ID:HLHhao5DM
外部ファイル100個、1ファイルにつき60要素を1つのExcelブックにまとめたいけど、高速なテンプレはどっち?
@外部ファイルオープン方式
 オープンして2次元配列に格納したらすぐに閉じる(見た目一瞬開いているのが見える)

A外部参照方式にする
 ’サーバーパス[ファイル名]シート名!‘表示セル
 この式をまとめたいExcelブックにひたすら書く

まとめたい要素数によって@A方式を変えるのが正解ですかね?
今の所@で作ることが多いのですが、ファイルオープンに時間がかかってるような気がしています
2021/12/27(月) 09:39:51.64ID:blhik0lp0
>>94
データの種類によるけど参照するのがテキストファイルなら外部参照なんて使いたくないから個人的には1だが
2021/12/27(月) 09:45:56.70ID:k8V9YlBpM
>>91
これがコンピューター業界の常識
https://img.youtube.com/vi/qNHfKNjX8Us/maxresdefault.jpg
2021/12/27(月) 09:49:52.38ID:blhik0lp0
関数の直後に改行入れないで中括弧入れられると解りにくい
2021/12/27(月) 10:45:38.45ID:HmBQ8qj70
>>94
実際には二つやって比較するしかないと思うんだけど、直感的には両方ともファイルの内容を一度メモリーに展開して@の場合はそれを表示するプロセスがあるんで若干@が遅いような気もするんだけど。

一方Aの場合は普通にメモリーに展開するのではなくて特殊な用途用のメモリ領域の確保というプロセスがあるかもしれないんでこれがあってしかも配置情報の各能があるばあいは遅くなるかもしれない。

実際にダミーのファイルを作って比較してみたらどうですか。ダミーファイルを作る作業は VBA を使えば簡単でしょ。
2021/12/27(月) 11:13:03.57ID:k8V9YlBpM
>>94
その二つには大きな違いがある
(1)の方法はVBAを実行した瞬間のデータで固定される
(2)の方法だと外部ファイルが更新されるたびに影響を受ける
この選択を間違えると場合によっては致命的なので、どちらが適切かよく考えること
つまり、この2つは速さで比較するべきじゃない

そもそも、わずか100ファイル、60要素程度で速さがどうとか考えること自体がおかしい
データ数が何十万以上のオーダーにならないとはっきりした差なんか出ない
2021/12/27(月) 11:45:31.10ID:HmBQ8qj70
>>99
勘違いしてたわ。
Aはリンクでデータを取得する方式ね。
俺はてっきりVBAの中で対象ファイルを開かずに対象ファイルのデータを直接取り組む方式と思ってたわ。
たしかに、「参照」と書いているから99さんの言うとおりだね。
2021/12/27(月) 12:05:29.87ID:k8V9YlBpM
>>83
アンダーラインの位置を順番に変えるマクロで試してみたら、たしかに行末のスペースで線が消えた
仕様なのかバグなのか判断つかんな
Excel2021
https://i.imgur.com/chvCa5D.png
2021/12/27(月) 12:07:22.46ID:fOuwydSNM
リンクでまとめるのは俺なら速度以前にやらないな
2021/12/27(月) 12:19:39.41ID:HLHhao5DM
皆さんご意見ありがとうございました。

みんなが作ったExcel資料のチェックする雛形処理を作りたくて悩んでいました。ファイルオープン時間はかかるけど@方式がいいかなと思います
2021/12/27(月) 12:23:05.79ID:HLHhao5DM
ちなみに、>>99さんの言うことは
数式を数値に変換する処理を書けば@と同じになりますのでやはり速度面からの比較でもで良いかと思っています
105デフォルトの名無しさん (ワッチョイ d336-Yj5q)
垢版 |
2021/12/27(月) 22:51:17.69ID:DqxLP3j70
>>90
できたありがとうございます
d = DateValue("12/28")
12/28のところに変数を入れたいのですが、反応してくれません
具体的には変数strにセルの値の12/28を参照させるとエラーが出ます
d = DateValue strが言うこと聞いてくれません
2021/12/27(月) 23:01:19.70ID:KGsnqTFy0
>>105
文字列型になってないんでないの?
2021/12/28(火) 01:55:16.45ID:4tKb8EGkM
>>105
セルの中身がシリアル値ならDatevalue関数を外せばいいけど、年には注意
Textプロパティを使った方が安全かもしらん
2021/12/28(火) 09:29:10.92ID:kx1zrRXE0
VBAでの字下げって何文字って決まりある?3文字字下げで作ってしまったけどいいとか悪いとかある?
2021/12/28(火) 09:38:17.58ID:5reaFvKqd
>>108
明確な決まりはないけど、マクロの記録をすると4文字下げになるから標準は4文字と考えていいと思う
個人的に奇数はありえない
インデントを綺麗に整形するアプリで整えるといいよ
2021/12/28(火) 09:53:35.44ID:kx1zrRXE0
>>109
そんなアプリがあるんだ。試してみるよ。
でも4文字って字下げし過ぎな気がしないでもない・・・
横に長くなりすぎて横スクロールが発生するのは面倒だし、印刷時に文字が折り返されて見辛くなりそうだし。
2021/12/28(火) 10:00:05.70ID:5aYQ+TgHa
>>110
自分がそれでいいと思ってるなら
それでいいじゃん
2021/12/28(火) 10:20:50.67ID:OfhBdqPrM
俺は逆の意見
初心者は自己流でやらない方がいいと思う
2021/12/28(火) 10:40:25.40ID:J5j8u11qa
でも具体的なデメリットはないのでしょ?
2021/12/28(火) 11:17:49.92ID:OgbDT0vrd
明確なデメリットならあるぞ

3文字だとスペース3回、4文字だとタブ1回、つまり入力の手間が多い
マクロの記録やネットのコードは4文字だから、組み合わせた時に見にくくなったり修正の手間が発生する
2021/12/28(火) 11:25:51.13ID:MfCHUt50a
めちゃ初心者の質問でごめん
沢山の商品コードがA列に並んでいて、B列にその商品のページのURLのリンクをずらっと作りたいんだよね
(A1のURLをB1、A2のURLをB2……)。

URLは「http://統一のアドレス/商品コード」なんだけれど、この場合どうしたら良い?

要するに、B列に「http://統一のアドレス// + 商品コード」って言うのをリンクにしたい
2021/12/28(火) 11:46:51.90ID:yfaCSYLwM
ハイパーリンク関数で済む話
2021/12/28(火) 11:51:02.78ID:Irp+rNk6a
>>114
それは最初から
「こいつタブキー使わないで、スペース3回打ってるのか」
って思ってたけど
>>110みたいなこだわりのまえでは大した問題ではないだろw
2021/12/28(火) 11:52:19.68ID:w6HpDmard
>>115
A1の内容を足しながらB1にリンクを作るのはこう書く
これを商品の数だけループすればいい
ActiveSheet.Hyperlinks.Add Anchor:=Range("B1"), Address:="http://google.com/"; & Range("A1")
2021/12/28(火) 14:27:58.14ID:g58/URIX0
インデントしないで平気な顔でコード晒している人の心理が知りたいわ
YouTubeだけじゃないし。
2021/12/28(火) 14:35:56.99ID:69J7P9Wb0
見にくいって指摘されたら何を勘違いしたのか
改行だけあけるのもいる
ブログかよ
2021/12/28(火) 14:41:58.24ID:MuG2wGjPd
>>119
少なくともここの掲示板はインデントが勝手に消える仕様
122デフォルトの名無しさん (ラクッペペ MM97-W69g)
垢版 |
2021/12/28(火) 15:35:06.37ID:v3GWTkBuM
BASICの癖にインデントなんて生意気な
2021/12/28(火) 15:54:38.31ID:TMi8jvWAM
構造化BASIC
2021/12/28(火) 17:02:10.00ID:g58/URIX0
あーやっぱりインデントしても無効になるのね
おかしいと思った
125デフォルトの名無しさん (ワッチョイ 9b4f-nHKY)
垢版 |
2021/12/28(火) 17:34:57.68ID:T61FM7ey0
どれちょいテスト
&nbsp&nbsp&nbsp&nbspスペーステスト
2021/12/28(火) 17:37:21.60ID:69J7P9Wb0
    4つ半角スペース
セミコロン抜けてんで
2021/12/28(火) 17:39:37.95ID:T61FM7ey0
うむ、やはりダメか
半角スペースは全角にでも置き換えれば
インデントは表現できるかもしれないが
コードをそのまま貼って実行することを
考えたらそのままの方がいいかもね
2021/12/28(火) 17:40:12.80ID:T61FM7ey0
>>126
あ、本当だ
すまんこ
129デフォルトの名無しさん (ブーイモ MMc1-WdtH)
垢版 |
2021/12/28(火) 17:41:49.64ID:7qvBe3RUM
>>126
あ、本当だ
おまんこ
2021/12/28(火) 17:42:25.67ID:69J7P9Wb0
挟むコメント使えたらまだ楽なんだけどなぁ
/* コメント */
2021/12/28(火) 18:07:37.81ID:jG5yVyjr0
そこらへんはさすがにサニタイジングされるでしょ
2021/12/28(火) 18:39:54.88ID:g58/URIX0
1番良いのはアレかな、直接エディターのスクショをうpすればインデントは無問題なのかなと
2021/12/28(火) 18:48:57.83ID:69J7P9Wb0
コピペで検証できなくなるから内容によっては回答率下がるかも
134デフォルトの名無しさん (ワッチョイ eb68-425w)
垢版 |
2021/12/28(火) 20:15:09.45ID:+BGmVW+d0
ブラウザは基本的に連続半角スペースを一つにまとめる挙動がある
135デフォルトの名無しさん (ワッチョイ eb68-425w)
垢版 |
2021/12/28(火) 20:16:39.86ID:+BGmVW+d0
>>132
うんこすぎるわw

コードをアップロードする専門のサイトがあるので、そこに上げるのが一番良い
https://jsfiddle.net/vxba/1twy9ny6/
2021/12/28(火) 21:19:32.95ID:g58/URIX0
うんこで思い出したけど、同志達は集中してマクロ組んでいる途中で猛烈にうんこしたくなったら我慢できる?
2021/12/28(火) 21:21:13.24ID:fyHkUyPmM
なんで我慢するの?
138デフォルトの名無しさん (ワッチョイ eb68-425w)
垢版 |
2021/12/28(火) 21:40:11.52ID:+BGmVW+d0
うんこしながらコード考えられるし、目も休められるからそんなに邪魔なものでもないかな
ってか我慢はよくない
2021/12/28(火) 22:48:33.96ID:3HQRMrL2a
俺はギリギリまで我慢するタイプ
2021/12/28(火) 23:03:08.29ID:g58/URIX0
中にはいるんだよ、途中で止められない人
自分そう
目を休ませるといろいろ調子良くなるのは事実だぬ
141デフォルトの名無しさん (ワッチョイ eb68-425w)
垢版 |
2021/12/28(火) 23:13:52.92ID:+BGmVW+d0
昔そうだった
ずっとやろうと思えばやれるんだけど、適度に休んだほうがどう考えても早い
2021/12/28(火) 23:17:25.07ID:pcScIivUd
寝落ちして次に起きると意味不明な文字列で画面が埋まっている
2021/12/29(水) 00:39:59.57ID:3kau2kQZ0
闇落ちしたらどうなるの
2021/12/29(水) 00:56:24.30ID:zC4KyoUo0
同志達は休憩は何時間おきに取ってる?
なんかExcelってやたら疲れない?
2021/12/29(水) 02:20:35.18ID:FnVNPORx0
VBAに限らず何かのプログラムを作ってる時は寝食を忘れて没頭してしまうからよく嫁さんに怒られてる。
146デフォルトの名無しさん (ワッチョイ eb68-425w)
垢版 |
2021/12/29(水) 03:54:22.05ID:q7Jdns1B0
>>144
事務の趣味グラマだけど、
家では10分コード書いて1時間運動、10分書いて1時間掃除選択お買い物、みたいな感じ
手を動かすよりも頭を動かす方が効率良い

会社はうるさすぎてまるで捗らんのでやらん
2021/12/29(水) 07:18:02.50ID:zC4KyoUo0
同じですな。
Excelてかパソコンなんて1時間もやればクタクタ、変な疲れが出ますな。
終日やっている人とかいるけどスゲー気力体力だと思う。羨ましい
2021/12/29(水) 08:08:41.29ID:/q0lUTyN0
趣味ならそれで良いのではないでしょうか。
仕事となればまたちょっと話は別。
EXCELのVBAはこじんまりしてて
弄ってて面白いので昼休憩あれば
普通に1日行ける。

むしろ設計書とか書いててダレてくると
EXCEL VBAで妙なもの作って
現実逃避とかすることもあるかな。
2021/12/29(水) 09:23:40.77ID:gueL/edo0
>>148
> EXCEL VBAで妙なもの作って
> 現実逃避とかすることもあるかな。
お前は俺かw
2021/12/29(水) 14:56:09.81ID:zC4KyoUo0
そこでゲームを作る!
151デフォルトの名無しさん (ワッチョイ b101-j5Xv)
垢版 |
2021/12/29(水) 16:57:32.71ID:wwN1RbRp0
ドッペルゲンガーに出会うと。
2021/12/29(水) 19:03:35.12ID:+TOGJtMq0
ドッと生える毛がー!
153デフォルトの名無しさん (ワッチョイ eb68-425w)
垢版 |
2021/12/29(水) 19:05:13.81ID:q7Jdns1B0
遠くない
2021/12/29(水) 19:11:23.12ID:1O3zWyyu0
髪の毛とは言っていない
2021/12/29(水) 19:30:12.70ID:zC4KyoUo0
正月にExcel2021買って人柱になる!
2021/12/29(水) 23:07:41.65ID:Y/+eczR5F
頼みます
2021/12/29(水) 23:54:05.30ID:MBw8w76+0
>>155
かんばれ!応援してるぞ!
2021/12/30(木) 00:13:57.98ID:Aosnucfp0
俺は未だに Excel 2013なんだけど特に不自由してない。バージョンアップするといいことあるの?
159デフォルトの名無しさん (ワッチョイ eb68-425w)
垢版 |
2021/12/30(木) 00:21:53.32ID:BMltdAMp0
>>158
なんと!
特に無い
2021/12/30(木) 00:23:09.37ID:XrPmVdqE0
2013て言い方悪いけど中途半端と聞いた
2016こそ至高だと
2021/12/30(木) 01:17:13.85ID:Aosnucfp0
>>160
そうなの?

若い人は知らないかもしれないけどマルチプランやロータス123の時代から表計算ソフトを使ってて、正確なバージョン番号は忘れたけど Excel はずっと昔の2003とか2007くらいが使いやすかったな。その後バージョンアダルト重たくて使いにくくなっててできるだけバージョンアップはしないようにしてる。
数年前まで2010を使ってた。
2021/12/30(木) 07:04:56.73ID:xtSEOuqd0
エクセルは表計算ソフトと言いながらも表が苦手
シートをマス目で区切ってるだけで未だにDOS時代と変わらん
マス目サイズの異なる表を1シートに乗っけようとすると涙ぐましい努力と根気が必要
こんなソフトいつ放棄されてもおかしくないだろ
自由な表の管理ができるという意味ではmacのnumbersが気持ちいい
2021/12/30(木) 07:15:13.58ID:xtSEOuqd0
ロータス123とかを無理やりなぎ倒してWin上で天下をとっただけで使い勝手は褒められたもんじゃない
開発陣に何のポリシーも感じられない
これはワードも含めてオフィス全般に言えること
2021/12/30(木) 07:20:01.10ID:kiJsXJBS0
>>158
2013から2016になったときにVLOOKUP関数が最大約400倍高速化されたらしい
全然実感わかないけど
2021/12/30(木) 07:26:16.91ID:OeLQVmSyM
表を計算することが目的であって表を表示するのはその手段
目的と手段を勘違いするとそうなる
努力の方向性を間違ってるユーザーが結構多い
166デフォルトの名無しさん (ワッチョイ eb68-425w)
垢版 |
2021/12/30(木) 07:32:21.83ID:BMltdAMp0
>>165
もっともらしいことを適当に言うのやめろw
2021/12/30(木) 07:51:52.64ID:8+ThTXSQ0
もうここのとこずっと365
一年に13000円くらい払うことになるけど
まぁひと月1000円ちょいと考えれば。
2021/12/30(木) 07:52:58.51ID:bYlmD/mgM
日本人の表好きは異常
何でもかんでも表の体裁にこだわる
過度にレイアウトに懲り過ぎる
2021/12/30(木) 07:59:51.25ID:NuGcpOOj0
>>167
バックアップ取りまくれば元取れる
何百GB分の動画とか写真がおすすめ。
2021/12/30(木) 09:18:56.59ID:XrPmVdqE0
表計算の範疇を超えた使い方するのも日本人くらいみたいね
外人がExcelで作ったゲームを見て「日本人はクレイジーなのか!」って
2021/12/30(木) 10:32:39.39ID:94fh5ino0
セルの塗りつぶしで絵を描いたりな
2021/12/30(木) 10:54:20.98ID:o85gWmnS0
ゲームといえば風来のシレンが好きな人いない?
マス目や限られた道具や知識を駆使して問題を切りぬけていくところがexcelに通ずるものがある。と思うんだが
2021/12/30(木) 11:15:01.92ID:JrNWRVQq0
Excelで遊べるローグライクなら作ってみた事がある
流石に1ターンの処理に時間が掛かり過ぎるから1フロアだけ作って投げたけど
2021/12/30(木) 13:17:02.67ID:jHCXLnIv0
死ぬほど遊んだ
2021/12/30(木) 13:43:15.61ID:XrPmVdqE0
しかし誰が最初にマクロでゲームなんか作ったんだろうね?
176デフォルトの名無しさん (ワッチョイ 3fda-PVUk)
垢版 |
2021/12/30(木) 14:05:26.21ID:PuOOuhio0
死ぬまで遊べ
2021/12/30(木) 21:43:15.33ID:rcUPyALc0
>>172
共通点がありそうな気もするような良く判らんが
アスカ見参は裏白蛇3回くらいクリアするくらいハマったよ
2021/12/30(木) 21:49:07.87ID:o85gWmnS0
スレ汚してごめんね
でもVBA使ってるみんなの反応が知れてよかった
179デフォルトの名無しさん (ワッチョイ eb68-425w)
垢版 |
2021/12/30(木) 21:58:06.13ID:BMltdAMp0
>>177
凄杉
2021/12/31(金) 00:05:17.95ID:lr5eoeiP0
職場でExcel関数とか使っててもっと便利に使いたいなということでVBAを勉強しようと思うんだけどどのくらいのスペックのpc購入すれば良い?
2021/12/31(金) 00:09:43.85ID:XJlvK1q+0
>>180
クソPCで十分動くけどSSDストレージ512GBメモリ16GBのノートPCでも買えば長く使えるよ。
182デフォルトの名無しさん (ワッチョイ d768-1y8m)
垢版 |
2021/12/31(金) 00:12:10.39ID:8NNqkSwn0
>>180
vba自体はアホみたいに軽い
以下のような状態だと、良いpcを導入する意味はあるが・・・
基本的にはvbaを基準にPC購入はあまり意味がないな
・重いブックを軽くしたい
・ものすごい手間を軽くしたい
2021/12/31(金) 00:31:59.05ID:lr5eoeiP0
>>181
>>182
ありがとう
趣味程度にやってみようと思ってたから出しても7万位までのPCと思ってたんで。
メモリも8gくらいと思ってたけどやっぱ16g位で探してみよーかな
2021/12/31(金) 00:33:48.82ID:pUbm5yFz0
エクセルはDataTableが最初から用意されているようなもんだから楽なんだよね
これを他の言語でやろうとすると色々な設定か必要になるからお手軽にはできない
185デフォルトの名無しさん (ワッチョイ 9a8e-Ii8s)
垢版 |
2021/12/31(金) 00:35:47.83ID:3bTQuPv+0
>>184
馬鹿のお前にはできないだけだろ
2021/12/31(金) 00:40:54.69ID:XJlvK1q+0
>>183
今この時だけで考えるなら8GBでもまあギリギリいいけど、
もう数年以内に陳腐化する時期になって来てるから少し高くても16GBが良いよ。
ノートPCだと最近はメモリが直接基板に実装されてて増設出来ないというのも増えた。

個人的にはゲーミングとかのPCの主流が32GBくらいになってきて、
今は16GBが一般的なPCの主流かなという感覚。
187デフォルトの名無しさん (ワッチョイ 8b01-h6Ia)
垢版 |
2021/12/31(金) 00:50:05.63ID:2Zk/vij+0
ブラウザをOSにしたchromebookがあるのだから、ExcelをOSにしたExcelbookがあっても良いのでは?
2021/12/31(金) 00:54:24.83ID:lr5eoeiP0
>>186
久々にpc購入するので助言たすかります!
16gのノート探してくる!
2021/12/31(金) 00:56:59.16ID:pUbm5yFz0
何かの記事でエクセル方眼紙や文章作成はあかん、Wordでやれみたいなのを見たんだけど納得できん
エクセルがあればWordは要らんわ
2021/12/31(金) 01:03:20.57ID:pUbm5yFz0
>>182
セルの更新が噛んでいなければたいてい早いね
逆を言えばセルを大量に更新する作業は苦手、さらにそのセルを参照している他セルとかがあるとさらに遅くなる
2021/12/31(金) 02:56:55.14ID:9dsRZQDG0
ExcelやるならゲーミングPC買えって言われたけど、根拠がわからん
グラスや図形の表示強いとかか強力なGPU積んだゲーミングだけに
2021/12/31(金) 05:17:24.79ID:jAwdB3GX0
多くのセルに数式が入ってたら並列処理ができるマシンの方が計算スピードが速いということじゃないかな。
Excel に限らず数値計算をやるマシーンとしては並列処理を担当する GPU を乗せたゲームマシーンが適してるとはよく言われてるけどね。
2021/12/31(金) 05:42:28.72ID:UU9o5XoI0
>>192
EXCELって2007から数式とかはマルチスレッドに対応してるのね。知らんかったわ。
ならついでにVBAの方もマルチスレッドに対応して組めるようにしておいてくれれば良かったのに。
2021/12/31(金) 05:50:27.02ID:jAwdB3GX0
線型計算は インテルのCPU の中に並列処理の計算機能があったと思う。エクセルも VBA もそれを利用してると思う。
これを越えた並列処理のプログラミングは言語自身が並列処理機能を持ってないと駄目だったような気がする。Juliaとかみたいに。
2021/12/31(金) 06:07:26.57ID:sTYntvPC0
メモリだけやたら増やしてもリソースに制限があるからな
2021/12/31(金) 08:03:41.87ID:9dsRZQDG0
あんまりゲーミングノートでExcelやりたくないわな、意識高い系に思われる??
でも性能抜群だから良さそうね
2021/12/31(金) 08:33:02.95ID:3Q2SwZ5h0
>>185
大晦日くらい子供じみた煽りやめたら
198デフォルトの名無しさん (ワッチョイ d768-1y8m)
垢版 |
2021/12/31(金) 11:35:03.81ID:8NNqkSwn0
>>191>>196
グラフや画像を使いまくるならゲーミングPCもアリだが・・・
そもそもグラフそんなに使いまくらない上に、今試してみたけどそんなに重くない

>意識高い
エイリアンウェアでも無い限り、誰もノートPCのガワなんて見てないから気にするな

個人的にオススメはsurfaceかASUSの2in1。
199デフォルトの名無しさん (ワッチョイ d7e6-6g4p)
垢版 |
2021/12/31(金) 11:55:09.22ID:MYEwtbNd0
ExcelだけでCPUファン全開にしてみろ
200デフォルトの名無しさん (ワッチョイ 8b01-h6Ia)
垢版 |
2021/12/31(金) 12:22:47.21ID:2Zk/vij+0
ExcelにCPUファンの回転数を制御する機能は無いので、SpeedFanのCOM版のようなソフトを呼び出すことになるのでは?
2021/12/31(金) 12:30:09.65ID:YvmYSF350
>>191
相談相手の考えだから中にはそういう人がいてもおかしくないんじゃね
10人に相談したら全員が同じスペックのPCをすすめるとでも?
202デフォルトの名無しさん (ワッチョイ 8b01-h6Ia)
垢版 |
2021/12/31(金) 12:33:05.83ID:2Zk/vij+0
ハルカスの二階で今日まで全国の駅弁売ってるらしいけど。
203デフォルトの名無しさん (ワッチョイ d768-1y8m)
垢版 |
2021/12/31(金) 12:47:47.40ID:8NNqkSwn0
>>202
なんで俺が天王寺に住んでる事知ってるの
2021/12/31(金) 13:04:43.84ID:TPLe0a5e0
>>200
そうじゃなくて
ファンが全開になるくらいのCPU使用率にExcelだけでしてみろ
じゃないの
205デフォルトの名無しさん (ワッチョイ d768-1y8m)
垢版 |
2021/12/31(金) 13:11:46.46ID:8NNqkSwn0
A列全部に"a"と入れてホイールグリグリするとCPUもGPUも100%行くな
206デフォルトの名無しさん (ワッチョイ 8b01-h6Ia)
垢版 |
2021/12/31(金) 13:24:32.70ID:2Zk/vij+0
天王寺って富豪が住むところじゃなかったっけ。
2021/12/31(金) 15:43:40.65ID:CE1IM8E70
>>193
> ならついでにVBAの方もマルチスレッドに対応して組めるようにしておいてくれれば良かったのに。
マルチスレッドでトラブルVBerが続出する未来しか見えない
208デフォルトの名無しさん (ワッチョイ 8b01-h6Ia)
垢版 |
2021/12/31(金) 15:55:10.13ID:2Zk/vij+0
さっきハルカス行ってきたけど、ハルカスとミオの間の信号のとこでコロナの陰謀を演説してる女性達が居たわ。
コロナで頭がおかしくなっちゃったんだろね。
2021/12/31(金) 16:59:02.91ID:YvmYSF350
>>208
「コロナの陰謀」ってなんか映画のタイトルみたいだな
2021/12/31(金) 19:46:32.63ID:9dsRZQDG0
わかた
アザースかsurface買ってくる
2021/12/31(金) 19:50:48.59ID:9dsRZQDG0
つうか同志達は今日年越しExcelやるでしょ?
2021/12/31(金) 20:01:44.53ID:ZQlVedJW0
>>192
EXCELは数値計算にGPU使うのか?

たんにゲーミングPCが、そこそこの性能だってだけじゃね
213デフォルトの名無しさん (ワッチョイ d768-1y8m)
垢版 |
2021/12/31(金) 21:14:15.54ID:8NNqkSwn0
>>211
質問あったらやるかなぁ

>>212
使わないよ
>たんにゲーミングPCが、そこそこの性能だってだけじゃね
そうそう
ただ、グラボ代もったいないとは思うけど
214デフォルトの名無しさん (ワッチョイ df10-VfR5)
垢版 |
2021/12/31(金) 21:17:51.43ID:Ev3FJm7o0
>>212
計算には使っていないぞ
描画だけ
ゲーミング機だってGPUも色々あるし
いつもの知ったかだろうな
2021/12/31(金) 21:52:34.38ID:9dsRZQDG0
年越しの瞬間に効果音が鳴るマクロ作ったりいろいろ遊べそうね
216デフォルトの名無しさん (ワッチョイ 8b01-h6Ia)
垢版 |
2021/12/31(金) 21:58:02.47ID:2Zk/vij+0
あと二時間しかない。
しかしExcelなら楽勝で出来るでしょう。
217デフォルトの名無しさん (ワッチョイ 8b01-h6Ia)
垢版 |
2021/12/31(金) 21:59:34.78ID:2Zk/vij+0
今日見たコロナ陰謀説の人たちは通行人の邪魔にならないようにしてたし、維新や共産党よりだいぶマナーが良いな。
218デフォルトの名無しさん (ワッチョイ d768-1y8m)
垢版 |
2021/12/31(金) 22:07:44.53ID:8NNqkSwn0
>>215
一瞬で終わってしまった

Sub foo()
Do
If Now() > "2022/1/1 00:00:00" Then
Beep
Exit Sub
End If
Loop
End Sub
2021/12/31(金) 22:28:49.69ID:pUbm5yFz0
>>218
wavファイルでどうぞ
2021/12/31(金) 23:09:39.31ID:YvmYSF350
>>218
不等号は > じゃなくて >= だな
2022/01/01(土) 00:06:56.85ID:DizA0src0
あ、ホントだ
鳴らない仕様ね
つか開けましたおめでとう
2022/01/01(土) 00:07:03.49ID:DizA0src0
あ、ホントだ
鳴らない仕様ね
つか開けましたおめでとう
2022/01/01(土) 00:07:20.46ID:DizA0src0
あ、ホントだ
鳴らない仕様ね
つか開けましたおめでとう
2022/01/01(土) 01:06:32.10ID:P7MxTR/l0
>>213,214

EXCEL for 下層国民というバージョンにはないが普通のバージョンは2016以降GPUが使用できる。
オプション→詳細設定→ハードウェアグラフィックアクセラレータで項目で設定できる。
貧相なノートPCだとこの機能が足を引っ張るので、EXCEL for 下層国民バージョンでは初めからGPU機能を搭載していないらしい。
お前らのエクセルはEXCEL for 下層国民 に違いない。

>>191
数値計算向きのノートPCに関しては下のリンク先に詳しい。
結果的にゲーム用のマシンになるとのこと。
https://student-notepc.com/gpgpu.html#calculation
2022/01/01(土) 01:10:43.70ID:P7MxTR/l0
エクセルでのGPU利用については下のリンク先を見てください。
https://www.windows8-help.net/office/offce2016-gpushi/
2022/01/01(土) 01:27:29.55ID:KHDCojLG0
>>224
そのオプションは、あくまでも表示にGPUを使うかCPUでやるかの選択で
数値計算にGPUを使うようにはなってないだろって話なんだが

GPU積むだけですべてのソフトが勝手にすべての数値計算をGPUでするわけじゃないんだよ
Windowsに数値計算用のドライバなんてないから
227デフォルトの名無しさん (ワッチョイ 4e8e-Ii8s)
垢版 |
2022/01/01(土) 01:48:41.35ID:fFMHRYWI0
>>224
馬鹿が恥の上塗りに来た
2022/01/01(土) 02:00:47.02ID:P7MxTR/l0
>>226
そうなのか。すまん。
213,214にも早めにあやまっとくわ。
メンゴ
229デフォルトの名無しさん (ワッチョイ d768-1y8m)
垢版 |
2022/01/01(土) 08:47:41.52ID:XIwan5C70
GPGPUは機械学習ぐらいでしか使わないよ
設定も大変なのだ
2022/01/01(土) 09:11:06.27ID:+bE9Chjq0
みんな明けましておめでとう
2022/01/01(土) 09:31:17.86ID:DizA0src0
親切な人がいろいろ調べてくれて助かる
ここの住人は口は悪いが根は優しいのね。
どこかのExcel板と大違いね
てか開けましたおめでとう
2022/01/01(土) 18:50:55.82ID:WKGWygZgM
ガチのプログラマにはバカにされ、一般的なExcel使いには理解されず、かといって言うほどExcelのワークシートの機能に詳しいわけでもない、
微妙な立場で辛い思いをしている人達だからね
2022/01/01(土) 20:24:30.10ID:DizA0src0
マクロは独特で勉強すればするほど面白いのにねえ
まあワークシート関数はまた違った楽しさがありますな。
だいたいはどっちかに得意分野別れるみたいですね。
234デフォルトの名無しさん (ワッチョイ 2e8e-6dX5)
垢版 |
2022/01/02(日) 00:02:48.18ID:irXp1R560
>>233
お前みたいな頭の悪い奴には理解できないだけだぞ
2022/01/02(日) 00:19:50.24ID:P5/NGbzA0
>>234
お客様?鏡はこちらでございます
2022/01/02(日) 02:38:22.72ID:8OXF2lmH0
>>234
はいはい、正月だから酒浸りしてるのですね
あまり人を見下した書き込みはやめた方がよろしいですよ。
237デフォルトの名無しさん (ワッチョイ 2e8e-6dX5)
垢版 |
2022/01/02(日) 03:49:32.18ID:irXp1R560
悔しかったか?
238デフォルトの名無しさん (ワッチョイ ad68-CMBx)
垢版 |
2022/01/02(日) 03:53:45.10ID:FrEqhrTc0
正月の深夜から煽りとか、すげー人生やな・・・
239デフォルトの名無しさん (ワッチョイ ad68-CMBx)
垢版 |
2022/01/02(日) 03:57:56.02ID:FrEqhrTc0
システム間でデータを受け渡す時の、相互変換用のファイルについて相談したいです

「入力」シートに貼り付け
「出力」シートをcsvで保存
csvをインポート

という構成でよく作るんだけど、
オペレーターは削除や挿入をしてしまい、数式の参照がおかしくなる事がたまによくある
ここに「tmp」シートを入れて、全てのセルにindirectをかますというのは良くないだろうか
2022/01/02(日) 06:49:15.75ID:8OXF2lmH0
>>238
いやいや、5ちゃんは煽りあって喧嘩するのが常識と叩き込まれたから他スレで
2022/01/02(日) 08:00:02.64ID:us56tuAr0
宮D:
「日本には社会はなかったけど世間はあった」
「世間を意識することで、見ず知らずの他人も自分と同じように生活していると想像できた」
「ところが1960年代から始まる新住民問題で地域が崩壊、損得勘定で繋がった家庭も崩壊、今や会社も崩壊で、居場所も世間もなくなった」
2022/01/02(日) 08:31:16.52ID:i5Las0bb0
>>240
煽りや喧嘩はわかるけど>>234は煽りにすらなってない気が…
2022/01/02(日) 10:45:15.56ID:xHoQz7cXd
>>239
良い悪いの話をするなら、そもそもCSVからCSVへの変換にいちいちExcel通すのが間違い
適当なスクリプト言語を使えばいいだけだし、どうしてもVBAならVBAだけでやっちゃって人間が介入する余地を無くせばよい
逆に人間が介入しやすいようにExcelにしてるんなら変なことしてわかりにくくするのは本末転倒
諦めて普通に素直に作るべき
2022/01/02(日) 10:56:54.18ID:i5Las0bb0
>>239
オペレーターが何やってるのかわからんけどそれこそVBA使ってボタン1つで実行するようにできないのか?
2022/01/02(日) 11:40:52.11ID:P5/NGbzA0
>>239
して欲しい操作以外は出来ないようにすると良いです(入力の制約をしっかりする)
例えば入力に必要のないセルをすべてロックする、かつ入力を許容するセルには入力規則を適用する
他は入力フォームをモーダルで作ってそれ以外の入力は受け付けないとか
246デフォルトの名無しさん (ワッチョイ ad68-CMBx)
垢版 |
2022/01/02(日) 12:15:24.12ID:FrEqhrTc0
>>243-245

ありがとうございます
・経費精算システム→会計ソフトへのデータ移動
・販売管理システム→会計ソフトへのデータ移動
を行っています

問題点は
・入力ミスが多すぎて目視確認が必要。会計ソフトで修正は手間+見落としが多い
・経費精算システムは仮払設定ができない。
・販売管理システムは、商品ごとに行が分かれるので恐ろしい量になる(間違いではないんだけど)
※経費システムは部門だけじゃなく、勘定科目も違う。ざっくり言うと仮払精算が出来ない

このあたりをエクセルで置換+チェックなどを行い、会計ソフトに取り込んでいる

ソフトを変更するのはNGです
2022/01/02(日) 13:00:21.32ID:P5/NGbzA0
>>246
経費精算、販売管理システムからデータを出力
→エクセルで入力データのチェック+仮払いのデータを追加
→csvで会計ソフトに渡すってことでいいのかな?

経費精算、販売管理システムがファイルを吐いてくれるならそれを直接読む
コピペしかできないならクリップボードのデータ(テキストデータと仮定して)を読み込んでワークシートに貼り付ける
これらをVBAでやる(とにかくオペにいじらせない)

エクセルをいじって貰うなら>>245のルールを守ったうえで入れて貰う
そんくらいしか思いつかない
248デフォルトの名無しさん (ワッチョイ ad68-CMBx)
垢版 |
2022/01/02(日) 13:30:03.08ID:FrEqhrTc0
>>247
好き放題さわってもらう方が自由度が高くて良いと思ってたけど、そもそもそれがダメなのかな
難しいね
ありがとう、制限かける方法で考えてみます
2022/01/02(日) 18:17:30.23ID:RMMn37wZ0
好き放題さわれるってことはつまり壊せるってことだ

で、それのどこでVBAが関係するんだ?
ちゃんとエラーチェックすればいいだけだと思うが
2022/01/02(日) 21:53:37.95ID:eY7Ft52F0
>>247
行の削除や挿入をvba側で拾って、cancelさせるか、数式等が壊れない様に処理すれば良いのではないでしょうか?
2022/01/03(月) 01:03:08.53ID:DsJuTMFo0
プログラマだとその手のユーザーが自由に操作できる点を定義する事がエラーケースを抽出するためにはじめにやらなきゃ行けない事なんですよね。
中間システムをWEBシステムで作って数式を触らせないのがいいかと思う
2022/01/03(月) 18:38:24.47ID:l18z+rM90
つかうならクエリでしょ
データの型もしっかり記述されるから生半可には壊れない
へたにVB使うならクエリだけで済ますほうが100倍まし
2022/01/03(月) 18:59:52.27ID:+Dpm76/RM
>>252のクエリて具体的には何を指してる?
2022/01/03(月) 19:14:48.50ID:0W6dPO/10
ガチガチに制限掛けるならExcelでやる意味が無い。
別に作った方が早いよ
2022/01/04(火) 17:58:13.61ID:mqLaSqQY0
[https://〜ナンチャラカンチャラ〜 連番」ってURLでDLできる.xlsファイルを
開始〜終了番号指定して一括DLするマクロ、ってググるレベルで作れるかな?
画像はよく聞くけど
256デフォルトの名無しさん (ワッチョイ ad68-CMBx)
垢版 |
2022/01/04(火) 18:44:24.96ID:OK++oBjt0
>>255
画像もエクセルファイルも一緒だよ
ただダウンロードは若干クセがあってめんどくさい

数が少なければ
A1=HYPERLINK("https://dotup.org/uploda/dotup.org";&2688739+ROW()&".jpg")
下にオートフィルして、クリックしていくってやり方が早い
2022/01/04(火) 18:45:42.98ID:fZv3oJzEa
画像もテキストも同じファイルなんだぜ
258デフォルトの名無しさん (ワッチョイ ad68-CMBx)
垢版 |
2022/01/04(火) 18:56:57.83ID:OK++oBjt0
VBAのダウンロードって失敗しやすいんだよなーUAかなにかで弾かれてるのかね
今回はURLDownloadToFileの戻り値が変な値になって失敗している

Private Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Private Declare PtrSafe Function DeleteUrlCacheEntry Lib "wininet" Alias "DeleteUrlCacheEntryA" (ByVal lpszUrlName As String) As Long
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub DownloadFile()
'// URL設定
surl_1 = "https://dotup.org/uploda/dotup.org";
surl_2 = ".jpg"
sstart = "2688740"
send = "2688742"
sDir = "C:\Users\81909\Downloads\"

'// ダウンロード
For no = sstart To send
sUrl = surl_1 & no & surl_2
'// キャッシュクリア
Call DeleteUrlCacheEntry(sUrl)
'// ダウンロード
ret = URLDownloadToFile(0, sUrl, sDir, 0, 0)
'// ダウンロード失敗時
If ret <> 0 Then
Debug.Print a_sUrl & ":ダウンロード失敗"
End If
'// 1秒スリープ
Call Sleep(1000)
Next
End Sub
2022/01/04(火) 21:46:27.42ID:IMaYzRnz0
すくなくともそのコードじゃ正しくURLを生成できてないと思うんだが
260デフォルトの名無しさん (ワッチョイ ad68-CMBx)
垢版 |
2022/01/04(火) 21:48:53.92ID:OK++oBjt0
変なURLだけど、あってる
2022/01/04(火) 22:43:25.62ID:b8ABrTZwd
>>258
Debyg.Printのとこ変数名が間違ってない?
262デフォルトの名無しさん (ワッチョイ ad68-CMBx)
垢版 |
2022/01/04(火) 23:43:00.95ID:OK++oBjt0
>>261
ホントだ
でもそこじゃない。一行前のretのとこでまイナスが帰ってくる
2022/01/05(水) 01:46:07.17ID:oDwFVEwH0
保存するファイル名まで指定する
ret = URLDownloadToFile(0, surl, sDir & no & surl_2, 0, 0)
2022/01/05(水) 06:38:46.88ID:y8ka6aM8d
Sub DownloadFile()
  '// 条件初期化
  surl_1 = "https://dotup.org/uploda/dotup.org";
  surl_2 = ".jpg"
  sstart = "2688740"
  send = "2688742"
  sDir = "C:\Users\81909\Downloads\"
  '// メインループ
  For no = sstart To send
    sUrl = surl_1 & no & surl_2 '// URL生成
    Call DeleteUrlCacheEntry(sUrl) '// キャッシュクリア
    ret = URLDownloadToFile(0, sUrl, sDir & no & surl_2, 0, 0) '// ダウンロード
    Debug.? sUrl & ":ダウンロード";
    If ret = 0 Then '// リターンコード判定
      Debug.? "成功"
    Else
      Debug.? "失敗"
    End If
    Call Sleep(1000) '// 1秒スリープ
  Next
End Sub
2022/01/05(水) 18:09:38.15ID:VFU04QJY0
258, 264さんのを参考にイジッたらできました!
ありがてぇ ありがてぇ…

やれるもんですね
266デフォルトの名無しさん (ワッチョイ ad68-CMBx)
垢版 |
2022/01/05(水) 18:29:34.28ID:ak+ZFcPv0
>>263>>264
あ〜〜〜そこかぁ
指摘してくれてありがとうございました
2022/01/05(水) 20:57:37.17ID:gG/+AHf10
Windows 10 に、ダウンローダーのcurl が入った。
これは、PowerShell のcurl モドキとは違う

コマンドプロンプトで、

where curl
C:\Windows\System32\curl.exe

curl --version
curl 7.55.1 (Windows) libcurl/7.55.1 WinSSL
2022/01/07(金) 01:00:32.92ID:/s4JxT0fM
https://forest.watch.impress.co.jp/docs/serial/yajiuma/1378774.html
おまいらもなんか作れや
269デフォルトの名無しさん (ワッチョイ ad68-CMBx)
垢版 |
2022/01/07(金) 01:06:18.78ID:ju9GvXE10
>>268
昔ライフゲームや数独を解くソフトを作ったけど、
vbaでやる意味がないという結論に達したな
あれ以来、エクセル関係ないものはほとんどvb.netを使ってる。
会社だとファイル操作もvbaを使うけど。
2022/01/07(金) 05:24:09.40ID:wWvkPutSd
>>268
回転のアニメーションなしに色が変わるだけなのか
もうちょっと凄い物を期待してた自分を責めたい
まあ完成させたやつが一番偉いんで、文句言うならお前が作って見せてみろって話だな
2022/01/07(金) 07:12:56.65ID:50haQjhj0
ルービックキューブか
昔I/oって雑誌に同じようなプログラム載ってたな
その当時もルービックキューブ解くまでは載っていなかった

俺はジジイのSE兼PGだから
ボケ防止にルービックキューブやってる。
F2Lとか覚えてないから最適解では無理かも知れないけど
ただ解けるだけ、ってロジックだったらなんとかなるかも知れないな

その前に表示ロジックを何とかしないとダメだろうけど。
272デフォルトの名無しさん (ブーイモ MM6d-vPEc)
垢版 |
2022/01/07(金) 07:28:48.23ID:Oy/+YEhFM
ボケ防止じゃなくハゲ防止には何がいいですか?
2022/01/07(金) 08:26:31.04ID:fls/ht/Kd
>>272
ハゲの90%は遺伝だから防止は困難
274デフォルトの名無しさん (ワッチョイ ad68-CMBx)
垢版 |
2022/01/07(金) 08:50:30.17ID:ju9GvXE10
>>270
同じ事を思っていた
275デフォルトの名無しさん (ブーイモ MM6d-vPEc)
垢版 |
2022/01/07(金) 10:28:53.28ID:45ZFzRQ9M
>>273
うるさいこのバカモンが
2022/01/07(金) 13:31:58.17ID:nEFtmW5Dd
>>270
俺も思った
面倒だから作る気も起きないけど…
277デフォルトの名無しさん (ワッチョイ ad68-CMBx)
垢版 |
2022/01/07(金) 14:44:09.64ID:ju9GvXE10
>>272
ハゲ防止なんて100%不可能
みっともなく長髪にして隠したりするより、いっその事剃ってしまうぐらいの気概が必要
2022/01/07(金) 17:26:57.35ID:G8Exd8oP0
変数名にNTRなんて使ってるのを見て吹いた
2022/01/09(日) 04:59:41.15ID:l1QF5IWO0
http://officetanaka.net/excel/function/tips/tips105.htm
この回答を知恵遅れでしたのExcel板のバカどもかこの板のおまいらの誰かだろw

俺たちの回答が分からないのはアンタの勉強不足とかまさにw
2022/01/09(日) 10:08:07.57ID:AVz29wzk0
過去に似たような経験あるの?
かわいそうにね
2022/01/09(日) 16:28:30.35ID:+qxN1lei0
>>279
敢えて反対させてもらうが
結果が合っていれば問題ない

どんな素晴らしいコードでも検算は必要なんだから仕組みが理解できればどうでもいいよこんなの
特にVALUEを使わず1掛けるとかしたら可読性がなくなるだろうと
VALUEが要らないならどうして関数として用意してあるのかと思うわ
スマートなコードや保守性をとか考えるのは勝手だし他人も係るなら大切だがそれをチクチクつついて他人に押し付けるのは違うと思う

まぁいつもお世話になってるサイトだが
282デフォルトの名無しさん (ワッチョイ 5f68-VTvg)
垢版 |
2022/01/09(日) 16:41:03.33ID:KsdSH8rP0
基本的には結果が合っていればいいとは思うけど、
ここまで可読性が低いと保守がキツくなる。この例はさすがにやりすぎかな
2022/01/09(日) 17:23:57.99ID:vzEMvNwud
VBAだとVal("100円")で100が返ってくるけど、ワークシート関数VALUEだとエラーになるんだよね
どうして同じ仕様にしなかったんだろう
こういうケースで役に立ちそうに思うんだけど
2022/01/09(日) 17:39:45.87ID:Z7Ru5E9E0
https://www.limecode.jp/entry/difference/value-val-cdbl
2022/01/09(日) 18:23:33.87ID:l1QF5IWO0
田中のオッサンの話題は出すなぼけ、荒れる原因だろが!
とExcel板では怒られるんだけど、こっちは無問題??
286デフォルトの名無しさん (ワッチョイ 5f68-VTvg)
垢版 |
2022/01/09(日) 18:51:01.86ID:KsdSH8rP0
別にいいよ
2022/01/09(日) 19:29:24.38ID:l1QF5IWO0
いや、過去スレであの人はくそコードを世の中に広めるなとかの書き込みあったからダメなんかなと思ってさ。
288デフォルトの名無しさん (ワッチョイ 5f68-VTvg)
垢版 |
2022/01/09(日) 19:53:32.78ID:KsdSH8rP0
スキルはいい感じだけど、疲れてるのかたまに変な事やる
あと昔の間違っている記事を削除しない
この辺が嫌われている理由

後者は割とマジで対処してほしい
2022/01/09(日) 20:56:32.83ID:yDEPQxds0
うん、まぁ別にいいんじゃないのかな
やりたいことだけ分かれば別に
糞コードだったとしても
自分の方でそう思った部分は
自分の納得行くコードにすればいいだけだから
2022/01/09(日) 21:27:51.21ID:l1QF5IWO0
へーそうなんだ??
ま、完璧な人間はいないと同じね
職場の上司もなんかそんな事指摘していたかな、中には無駄なコードや?なコード書いている時あるって。
あの方の講習会、教え方がかなり癖強くて合う合わないが大きく別れると聞きました。
291デフォルトの名無しさん (ワッチョイ 5f68-VTvg)
垢版 |
2022/01/10(月) 00:06:11.98ID:xXRyLH4+0
疲れてる時にコード書くと、その時はノリノリでも、後で見ると「?」ってのはたまによくある
思ったよりも時間がかかっているのは大体なんかひっかかる所がある
2022/01/10(月) 00:18:32.94ID:mRr+sgF/0
結果が同じなら手法は問わないってのには全く賛同できない
可読性を重視しないと後で困るに決まってる
自分が組んだのでさえそうなるのに
2022/01/10(月) 01:07:56.95ID:xkxPt9W00
いい機会だから聞きたいけど、同志達はどんな時にミスる??
ミスの度合いは大なり小なりあるけど
自分は寝不足だとあり得ないミス連発する
しっかり寝てかつ空腹だと調子良い笑
294デフォルトの名無しさん (アウアウウー Saa3-vCPH)
垢版 |
2022/01/10(月) 02:50:00.36ID:5FAqSG/ca
普段使わない漢字や送り仮名はよく間違える
2022/01/10(月) 08:39:41.61ID:BEh3+tWV0
内容自体ミスるよりいいよ
2022/01/10(月) 09:35:33.83ID:OcqVU6NzM
日本語変数があるとミスるというか、まともに読めない。
2022/01/10(月) 10:31:42.31ID:Gmsx4aaq0
でも英語力がないので聞いたこともない単語だとよりわからなくなるので結局日本語で書いてしまう
2022/01/10(月) 10:45:27.78ID:I0MctoU+d
コードが長くなってくると変数名が思い付かなくて、必死に考えた結果重複とか
2022/01/10(月) 11:22:12.64ID:cnQ7Zttn0
この処理似たようなのを書いた事あるなと以前のを見てみるも
すぐには思い出せない
過去の自分は他人
2022/01/10(月) 11:32:51.01ID:RrusHExn0
プロシージャ名とか変数名とか以前は英語もどきで書いたけど悲しいかな後から見た時に意味が全く分からない。

なんで、しばらく前から日本語でかくようになった。最初は全角文字でうまく動くか心配だったしやたら長くなったんだけど後から見ても意味がわかるっていうのは超便利でやめられない。
2022/01/10(月) 11:43:56.56ID:8zLRvGVH0
>>292
長さによりけりだろう
関数程度の単純なもので手法もクソもない
2022/01/10(月) 11:52:13.34ID:dHNt3Trpd
日本語にしても変数名が思い出せない
在庫数、在庫カウンター、カウンター_在庫
どれにしたっけ
2022/01/10(月) 12:06:42.32ID:BEh3+tWV0
変数名のコメントも豆に書いてる人もいるね
304デフォルトの名無しさん (ワッチョイ 5f68-VTvg)
垢版 |
2022/01/10(月) 12:23:58.68ID:xXRyLH4+0
>>298
ありすぎる
305デフォルトの名無しさん (ワッチョイ 5f68-VTvg)
垢版 |
2022/01/10(月) 12:25:07.05ID:xXRyLH4+0
変数と変数の内容は紙に書き出している
毎回頭まで戻って読み直すのめんどくさすぎる
306デフォルトの名無しさん (ワッチョイ ff8c-dnJG)
垢版 |
2022/01/10(月) 12:44:38.02ID:9Nu2isHY0
表示中のModuleからDim宣言した行を抽出してパッと表示するアドインを作ったら便利かもね
と我ながらいいこと思いついた
2022/01/10(月) 12:58:58.14ID:RrusHExn0
>>307
ウィンドウ2分割したらいいじゃん。もしくはデュアルモニターで作業ウィンドウと変数定義部分のウィンドウを表示するとか。
2022/01/10(月) 13:01:06.34ID:RrusHExn0
>>303
option explicit 宣言してコントロールスペース機能を使えばいいじゃん。
2022/01/10(月) 17:02:28.45ID:xkxPt9W00
結局疲れていると変な事やり出すのは共通て事で。
趣味ですがやっている分ならまだしも仕事なら間違いは許されんよね大変だ
310デフォルトの名無しさん (スッップ Sd9f-ZOz4)
垢版 |
2022/01/10(月) 19:43:03.44ID:vN9fY4Wcd
多国籍企業で言語の違うOSを使うと軒並み文字化けするから日本語含めてマルチバイト文字が一切使えない
早くUnicode化して欲しいわ
2022/01/10(月) 20:56:33.75ID:lrMaPQ7Kd
コメントも英語縛りだと大変そうだなあ
2022/01/10(月) 21:00:45.99ID:00vaWtI10
英語に抵抗あるのはお前ら世代ぐらいまでだから そろそろ引退後を考えときな
313デフォルトの名無しさん (ワッチョイ 5f68-VTvg)
垢版 |
2022/01/10(月) 21:04:29.76ID:xXRyLH4+0
>>312
カッコイイね!
314デフォルトの名無しさん (ワッチョイ 5f68-VTvg)
垢版 |
2022/01/10(月) 21:05:12.22ID:xXRyLH4+0
>>310
最悪、ワークシートに書けば良い
あっちは多言語対応してる
2022/01/10(月) 21:38:02.69ID:xkxPt9W00
今は小学生でプログラミング授業が当たり前??と聞いた。
将来は全員バリバリのプログラマーとして新卒で入社してくるのだろうかと。。。
2022/01/10(月) 22:37:56.38ID:ZgLLvrEYd
>>315
義務教育の内容なんて、大多数の子は半分程度しか覚えてないんだよ
だから高校に格差がある
317デフォルトの名無しさん (ワッチョイ ffda-vCPH)
垢版 |
2022/01/10(月) 22:40:00.97ID:oZVfodR70
思い込みだな、ソースだしてみ
2022/01/10(月) 22:42:08.68ID:J1lYCUSE0
小1からアルファベットくらい教えないと無理
2022/01/10(月) 22:49:49.35ID:cNWamYBR0
>>315
教育ではプログラミング的思考のことだけでツールの使い方は微塵も知らんぞ
2022/01/10(月) 22:56:21.83ID:BEh3+tWV0
>>308
何の為の変数か分かるようにコメント書いてるって話だけどそれで分かるの?
321デフォルトの名無しさん (ワッチョイ 5f68-VTvg)
垢版 |
2022/01/10(月) 23:45:01.54ID:xXRyLH4+0
>>315
vbaでifとfornext使えるだけでいいんだけどな

教育の概要みてみたけど、プログラムの概念教えるだけなのね
まぁ知らんよりかは大分マシだと思うけど、なんだかなぁ
https://www.mext.go.jp/content/20200218-mxt_jogai02-100003171_003.pdf
2022/01/10(月) 23:47:37.36ID:y6BmIHv2M
小学生の算数で
なにができるかって話
2022/01/11(火) 00:00:22.85ID:RJl36Rij0
20年前10年前で新卒の技能も変わってるし今の小学生が新卒になる10年後には更にベースが変わっているだろう
2022/01/11(火) 00:55:36.01ID:f975O5pD0
なでしこならできるだろ
実際導入してるところあるみたいだし
325デフォルトの名無しさん (ワッチョイ 5f68-VTvg)
垢版 |
2022/01/11(火) 01:04:44.62ID:v6KgbdTr0
>>324
なでしこ、一回ぐらい見てから言った方が良いと思う
https://image.itmedia.co.jp/l/im/news/articles/2009/18/l_mt1626333_NDSK-02.jpg#_ga=2.46856359.1211102927.1641830465-1693712719.1638754091

中国人が書いたような日本語があまりに不気味で、余計に読みづらい
これなら最初から英語の方が遥かにマシ
ただ全部英語だと変数がキツイので、日本語変数を使えるvbaは本当に使いやすい
326デフォルトの名無しさん (ワッチョイ ff8e-5C40)
垢版 |
2022/01/11(火) 01:05:47.81ID:LtMpgTY10
ID:xXRyLH4+0

頭が悪いまさしく馬鹿の典型例
2022/01/11(火) 01:19:28.14ID:1S8cvNBi0
>>325
無理やり感が凄いなw
特に中途半端に演算子を助詞に置き換えてるのが酷い
328デフォルトの名無しさん (ワッチョイ 5f68-VTvg)
垢版 |
2022/01/11(火) 01:43:32.21ID:v6KgbdTr0
>>326
こんな時間まで置きて煽りとか、凄いな

>>327
終わってるだろ
どんな場面でも使いたくないわ
2022/01/11(火) 02:54:50.14ID:jXrjwHyf0
お互い見下したり下らない事での喧嘩は止めましょうよ。
もう一個あるExcel板みたいに荒れたくないので、超マターリやりましょうぜ
2022/01/11(火) 02:59:40.60ID:IdisKVi00
>>320
すまんタグ付を間違えた。302に対する返事でした。
2022/01/11(火) 04:33:13.43ID:0LWENKA5d
>>323
VBAはオワコンと言われ続けて20年以上が過ぎて、いまだに需要があるという現実
画期的な新技術が出てきても、10年程度で世界中のすべてが置き換わるなんて絶対にありえないから
332デフォルトの名無しさん (アウアウウー Saa3-vCPH)
垢版 |
2022/01/11(火) 04:53:38.34ID:PWAeXKZsa
使う人がいて使わない人もいるそれだけだ
2022/01/11(火) 05:12:45.59ID:jXrjwHyf0
恥ずかしながらマクロしかやった事ないから、他の言語はほとんど知りません
他の言語やっている人が言うにはExcelマクロはいろいろ独特すぎると言っていましたよ。
334デフォルトの名無しさん (アウアウウー Saa3-vCPH)
垢版 |
2022/01/11(火) 06:57:43.71ID:zgghDV8Ra
初心者には難しいのかもね
2022/01/11(火) 09:20:49.60ID:NHkh6AryM
>>325
見てないで言ったって妄想は自分の心の中だけにしておくべきでは
2022/01/11(火) 09:26:49.60ID:NHkh6AryM
つかお前のほうがきちんと見ていないのでは?
http://nadesi.com/doc/cmd-func.htm
337デフォルトの名無しさん (ワッチョイ 5f68-VTvg)
垢版 |
2022/01/11(火) 09:55:25.76ID:v6KgbdTr0
>>333
言語というより、エクセルのスクリプト
エクセルへの依存が大きい
Bライク
エラーがあっても平気、というかfatal errorがほぼ無い
なんか知らんけど適当に書いても動く

こういうのでいい
338デフォルトの名無しさん (ラクッペペ MM4f-h8Qn)
垢版 |
2022/01/11(火) 11:17:42.49ID:7nbTW/GEM
プロパティ一つ変えるだけで大きくデータか変わるのとかあるからなぁ
デフォルトプロパティのおかげで書きやすいけど間違いやすいし
MID関数とMIDステートメントみたいな意地悪な引掛けもあるし
ワークシートの数式とVBの数式の文法が違うから初心者がよく混乱してるし
配列数式だかプペルだか毎回ググらずにはいられないし
2022/01/11(火) 13:48:53.68ID:IdisKVi00
>>338

プペルってなに?
2022/01/11(火) 14:28:18.62ID:aR5mdzEba
タプルのことかな
2022/01/11(火) 16:41:11.70ID:nmLdRhtud
パピコ
2022/01/11(火) 17:43:15.57ID:jXrjwHyf0
VBでワークシート関数が使える事を知らなかった人もいるぐらい
2022/01/11(火) 20:05:33.64ID:4GEp5Szkd
スピル
まぢれす
2022/01/11(火) 20:17:38.77ID:iCzHcVAmd
>>342
以前はVBやVCからワークシートオブジェクトを生成してやると、Excelの30日体験版がいつまでも使えてしまうという裏技があったんだよなあ
2022/01/11(火) 23:15:17.45ID:jXrjwHyf0
凄いバグですな。
Office365を永久に無料試用できる裏ワザあると聞いたのを思い出した。
346デフォルトの名無しさん (ラクッペペ MM4f-h8Qn)
垢版 |
2022/01/12(水) 11:52:41.57ID:8kyKCDFaM
同じやり方でWin11でIE使えるんだよな
2022/01/12(水) 21:05:19.10ID:xv5qUCXt0
本当にExcel2021をケーズデンキで買ってきた
これで充分な気がする
2022/01/12(水) 21:10:06.51ID:Bw0ohLlk0
フラグを変更することにより外部に個人情報を送信するようになるかも
2022/01/12(水) 23:55:12.07ID:ORVSIxTU0
>>345
永久って何十年でも使えるのか?
2022/01/13(木) 00:47:58.94ID:G09zCb3J0
ロンドンブーツ田村淳 
「嫌なら見なきゃいいじゃん。君らのテレビはチャンネル変えられないの?ネチネチうるさいって言われない? 力つけないと。お前に影響力ないから」

99 岡村隆史
「嫌なら見るなや。何でもツイッターで呟くな!は?ミステリー作家? 知らんわ、お前がミステリーやわ」

ビートたけし
「韓流ばかり放送するたってそれである程度視聴率取るんだからしょうがないよな。いやなら見なきゃいいんじゃねーか」

ダウンタウン 松本
「お前らチャンネル変える能力もないんやな。どんだけ無能やねん(笑)」

やしきたかじん
「(韓流番組が)イヤやったら観んとったらえぇんちゃうの」

マツコ デラックス
「フジテレビのデモは新右翼の集まり」

テリー 伊藤
「高岡さんは精神的にアレですよ」

ミッツ マングローブ
「ネットは仮想敵国を作りたがる。(カメラ目線で)日本人はこういう意見じゃないですから」

江川 紹子
「ふかわの意見は中身がないにゃ」
2022/01/13(木) 01:06:13.81ID:VkNUzTKE0
韓流番組は知らんけど
とりあえずNHKは解体させるべき
2022/01/13(木) 02:22:29.43ID:Ia/gMc7B0
YouTube に、N国の立花孝志の動画が上がっている。1/12

NHKとの裁判で半分勝ちました。
やはり時効5年の最高裁判決は国民にとってありがたい判決でした。

裁判所から、5年以上の支払督促が来ても、1円も払わず、
5年の時効を援用して、8.9万円だけを払う。
1円でも払うと、債務を認めたことになるので、全額を払わなければならないので危険!

8.9万円 × 年間の裁判数700件 = 6,230万円
は、N国が政党助成金から払うので、国民は払わなくて良い

やっぱり、N国が最高裁判決で勝ち取った、時効5年の援用が強力!
2022/01/13(木) 02:59:22.55ID:pqvs3QlS0
次はExcel2024てのが発売されるのかな?
2022/01/13(木) 23:45:10.44ID:7CyKGRy20
VBA極めたら最終的に世界中の有用な情報を集めて自動で収集できるようになりますか?
2022/01/14(金) 00:05:56.70ID:vO12hrLSa
極めなくてもスクレイピングができれば収集は可能だよ
2022/01/14(金) 00:08:13.34ID:lOO1pB5h0
>>354
SeleniumとSQL覚えたらできるかもな
VBAとは言い難くなってしまうが 笑
https://uploda1.ysklog.net/uploda/a21c72780b.jpg
357デフォルトの名無しさん (ワッチョイ df68-VTvg)
垢版 |
2022/01/14(金) 00:20:30.44ID:dtRMJdwu0
vbaでやるのは辞めたほうがいいかなぁ
PHPとXPath、各種検索サイトのAPIを勉強するのが最終的にはラク
358デフォルトの名無しさん (ワッチョイ ffda-vCPH)
垢版 |
2022/01/14(金) 02:42:54.63ID:hRpWT3YP0
サーバーの負荷になるようなマクロつくったら逆に訴えられる可能性あるよ
2022/01/14(金) 08:06:55.98ID:ifEdQjoh0
https://www.relief.jp/docs/003086.html
初心者です
このようなダブルクリックで色をつけたり消したりするコードについての質問です。
同じファイルのAシートとBシートでそれぞれ使っているのですがBシートでダブルクリックすると一瞬読み込みマークが出てテンポが悪くなります。AシートとBシートに特に差異はなくてBシートに画像が一枚あるだけなのですがそんな変わるものでしょうか
360デフォルトの名無しさん (ワッチョイ df68-VTvg)
垢版 |
2022/01/14(金) 10:47:59.53ID:dtRMJdwu0
>>.359
普通は変わらん
条件つき書式か何かが隠れてると思うけど、ファイルを見てみないと分からない
2022/01/14(金) 11:11:05.48ID:HvyHPCt90
Is Nothing の判断で戸惑ってるか、Sheet を特定すれば直るのか
画像外してテストしてみりゃいいだけ
2022/01/14(金) 12:08:46.60ID:lOO1pB5h0
>>359
やってみましたけど再現しないので解らないです(Ver16)
今の状況で出来ることというとまず>>361を試す
直らないなら「If Intersect(Target, Range("B1:B10")) Is Nothing Then Exit Sub」と「 End If」を抜いて試す
直らないなら Cancel = Trueを抜く
直らないなら 全部抜いてCells(1, 1) = "a"とかを入れてみる

他はシート1を消して試してみる、シート3を作ってどうなるか試してみるなどで遅延の原因を探っていくしかない気がします
363デフォルトの名無しさん (ワッチョイ df68-VTvg)
垢版 |
2022/01/14(金) 12:47:39.88ID:dtRMJdwu0
>>362
ちょっと違う
どこで時間がかかっているかを見るなら、

Debug.Print Now() & "if前"
Debug.Print Now() & "最後"

みたいなものを随所に差し込んでコンソールで確認する

一番いいのは新しくシート作ってそこに画像だけ持っていって試す。
時間がかからないならそのシートを使い続ければ良い。原因なんて考えても仕方ない。大体どこか見えない所にゴミデータがあるだけだ
2022/01/14(金) 13:23:22.68ID:0uAreaIs0
ありがとうございます
いずれ他の言語やソフトウェアも勉強することを視野に入れてVBAはじめてみます
2022/01/14(金) 14:53:37.34ID:cSomMf3f0
Function testfunc01(word) As Integer
Dim serchChar As String
2022/01/14(金) 14:55:30.70ID:cSomMf3f0
£は英国の通貨記号ポンドです.
セルA1に"10£"を入れ,B1にA1の文字列内の£の位置を示す関数testfunc01(A1)(後述)を入力しました.正しい値は3ですが,何故か0を返します.

セルA2に"10L"を入れ,B2にA2の文字列内のLの位置を示す関数testfunc02(A2)(後述)を入力しました.正しい値3を返します.

通貨記号が問題かと思い,今度はプロシジャーtest(後述)内で変数 word = "10£"を定義しtest内でtestfunc01(word)を実行すると正しく3を返しました.

”引数がセル参照かつ通貨記号”という組み合わせの場合にtestfunc01内で使用している組み込み関数instrが正しく機能しないようです.解決策をありますでしょうか?

他にtestfunc01に関して以下の条件で試しました.
セルA3に"10あ"を入れ,B1にA1の文字列内のあの位置を示す関数testfunc03(A3)を入力すると正しく3を返す.”引数がセル参照かつ全角文字”が原因ではない.

testfunc01(word)をtestfunc01(ByVal word as string)に修正する→改善せず,間違った0を返す.
367デフォルトの名無しさん (ワッチョイ df68-VTvg)
垢版 |
2022/01/14(金) 14:55:37.21ID:dtRMJdwu0
wordなのにintやめろ
2022/01/14(金) 14:55:50.74ID:cSomMf3f0
Function testfunc01(word) As Integer
Dim serchChar As String

serchChar = "£"
testfunc01 = InStr(word, serchChar)

End Function

Function testfunc02(word) As Integer
Dim serchChar As String

serchChar = "L"
testfunc02 = InStr(word, serchChar)

End Function

Function testfunc03(word) As Integer
Dim serchChar As String

serchChar = "あ"
testfunc03 = InStr(word, serchChar)

End Function
369デフォルトの名無しさん (ワッチョイ df68-VTvg)
垢版 |
2022/01/14(金) 14:56:14.35ID:dtRMJdwu0
すまん、連投なのね
ちょっとテストしてみる
2022/01/14(金) 14:56:24.45ID:cSomMf3f0
sub test()
Dim word, serchChar As String

serchChar = "£"
word = "10£"
Debug.Print testfunc01(word)

End Sub

結果
A B C
1 10£ 0 ←testfunc01の結果
2 10L 3 ←testfunc02の結果
3 10あ 3 ←testfunc03の結果


testの実行結果
3
3
3
2022/01/14(金) 14:56:53.00ID:cSomMf3f0
タブが解除されて見にくいです.すんません.
2022/01/14(金) 14:59:25.39ID:cSomMf3f0
最後は間違っておりいかが正しい結果です.

testの実行結果
3
373デフォルトの名無しさん (ワッチョイ df68-VTvg)
垢版 |
2022/01/14(金) 15:01:52.05ID:dtRMJdwu0
>>365,366,368,370
https://i.imgur.com/ZrKrhy8.png

>セルA1に"10£"を入れ,B1にA1の文字列内の£の位置を示す関数testfunc01(A1)(後述)を入力しました.正しい値は3ですが,何故か0を返します.
俺の環境では3が返ってきた

A1がおかしい気がする
=CODE(MID(A1,3,1))
で「8562」が返ってくれば、ポンドの文字は間違い無いと思う
もし8562以外だと、別の文字が入っている気がする
2022/01/14(金) 15:02:23.56ID:P/5qDoLq0
ポンド記号が書式で出てるんじゃないかと予想
セルの値をどうやって取得してチェック関数に渡してるんだ?
375デフォルトの名無しさん (ワッチョイ df68-VTvg)
垢版 |
2022/01/14(金) 15:03:43.93ID:dtRMJdwu0
>>374
あぁほぼ間違いなくそれだ
2022/01/14(金) 16:01:27.94ID:cSomMf3f0
>>373
>>374
「ポンド記号が書式で出てる」ということはありません.
10£はサンプルとして簡単にしただけで,実際には10£5s9d(10ポンド5シリング9ペンス)をペンスに換算するプロセスで直面した問題です.

原因は通貨記号の半角と全角の問題であることがわかりましたが解決策がわかりません.
A1の£のコードは63でした.
一方,testfunc01内の£をエクセルにコピペしてcode関数で値を取得すると8562でした.
A1の£をVBAのプロシージャ内にコピペすると?になります.

エクセルの通貨記号は£,VBAのプロシージャ内の通貨記号をコピペしたものは£で,サイズが異なるので半角と全角の違いだと思います.

通貨記号を入力する時はエクセルでもVBAプロシジャーでも”ポンド”と打ち込でで変換しますが半角一択です(googleのIMEを使用).
VBAのプロシージャ内で半角(コード番号63)が何故全角(コード番号8562)に自動的に変換されるのかわかりません.
エクセルの£をVBAのプロシジャーにコピペしても?になるので,半角の£をプロシジャー内で使う方法が見つかりません.

逆にエクセルで10£と打ち込んだ後半角の£を全角の£に置換するとうまくいきました.しかし毎回置換するのは面倒です.
結局,通貨記号の入力時に半角と全角が選択できるか,VBAで内で自動的に全角に変換されないようにできればば問題は解決するのですが.


MSIMEに切り替えると、ポンドの候補として、£(全角)と£(環境依存)がでてきました。エクセルではとちらでも選べますが、VBA内では環境依存を選んでも強制的に全角に変換されます。
VBAの環境設定の問題でしょうか?
最悪の場合は、エクセルサイドで半角を全角に置換するマクロで解決する方法がありますが、できれば入力時に半角と全角で意図したほうを入力できるという解決策がいいです。

うまい解決策はないでしょうか?
377デフォルトの名無しさん (ワッチョイ df68-VTvg)
垢版 |
2022/01/14(金) 16:45:24.64ID:dtRMJdwu0
>>376
半角ポンドとエルは同じ文字コードなのかな。スラッシュと円マークみたいなもんかね
こういう場合は、検索する側、される側を両方半角小文字に揃えれば良い

Function testfunc01(word) As Integer
Dim serchChar As String

serchChar = "£"
testfunc01 = InStr(StrConv(word, 10), StrConv(serchChar, 10))

End Function
2022/01/14(金) 17:12:55.74ID:P/5qDoLq0
VBE内ではたしかSHIFT_JISしか使えんかった気がするな
文字リテラルで書くのやめて、CHRWとか使えばいいんじゃね

Strconvで行けるかなぁ
そもそも半角ポンド記号とかいう想定がない気がする
2022/01/14(金) 17:20:31.63ID:HvyHPCt90
別角度からのほほんと見てるけど、> 10£5s9d(10ポンド5シリング9ペンス) という元データがあるんだろうか?
イギリスはポンドとペンスが通貨単位でシリングというのは1971年以前の単位だと出てくるんだが
で、1ポンド = 100ペンス 10£5s9d というテキストで渡されるから変換したいんで£の位置を知りたい は判るが
そこで躓いて先に進まないと成れば、事前に£を他の文字に変換してからExceに入れてはどうか
すでに目を通しているとは思うが
通貨定数について
https://docs.microsoft.com/ja-jp/office/client-developer/visio/about-currency-constants
EUROCONVERT 関数
https://support.microsoft.com/ja-jp/office/euroconvert-%E9%96%A2%E6%95%B0-79c8fd67-c665-450c-bb6c-15fc92f8345c
MSに問い合わせる案件のような気もする
2022/01/14(金) 17:28:00.48ID:2Gg8wBAvd
>>376
ポンド記号は3種類ある
JISコード(Shift-JISコード)、ユニコード、イギリス向けOSの環境依存文字

使用者にどれかを強制させて統一させるのはものすごく難しいので、どれが入ってきても混じっててもいいように、
プログラムを複数のパターンに対応できるように作るしかない
2022/01/14(金) 17:34:13.27ID:dcyjCeKBa
勝手に変換すればいいよ
2022/01/14(金) 17:59:37.72ID:cSomMf3f0
>>379
まさしき1971年以前の英国貨幣史の研究で使用します.10世紀くらいから第2次大戦くらいまでです.各時代の銀貨が含む銀重量と,地金価格,銀貨の額面価値の比較をするためのデータ整備でしようします,
1971年以前は,1£=20シリング,1シリング=12ペンスでした.10進法ではありません.

今は応急策としてエクセル側で£ではなくてLと使いVBAで側ではてtestfunc02タイプでしのいでいますが.
しかし将来見た時になんでこうしているのかわからなくなると思いますし,£の使い方は要注意ということも間違いなく忘れますので,この際できれば解決しておきたいのです.

>>377
半角ポンドのコードは63番でL大文字は76,l小文字108番で異なります.
¥とバックスラッシュはともに92番ですが事情が異なるようです.

またご提案の
StrConv("£", 10)を試しましたが,結果は全角の"£"を返し半角の"£"を返さないので解決策ではないです.

>>378
半角ポンド記号は存在します.
£,£は違います.
最初が半角ポンド記号で2番めが全角ポンド記号です.
2022/01/14(金) 18:03:34.25ID:cSomMf3f0
自己レスです.

今が気がついたのですが,レス入力時には半角ポンドと全角ポンドは違うのですが,投稿後はどちらも全角ポンドで表示されていますね.
”£,£は違います.”のように.
このことが,今ひとつ皆様に正しく伝わりにくい原因かもしれません.
2022/01/14(金) 18:10:11.49ID:cSomMf3f0
半角と全角の違いをアップしました.
https://imgur.com/QmAApZ5
レス作成時には半角と全角の異なるもじが使えますが,投稿後はともに全角で表示されるようです.
385デフォルトの名無しさん (ワッチョイ df68-VTvg)
垢版 |
2022/01/14(金) 18:12:16.77ID:dtRMJdwu0
>>383
今ちょうど見ていた
ポンド記号、何か色々とおかしい
vbeでも変換されるからわけわからんことになってきた
386デフォルトの名無しさん (ワッチョイ df68-VTvg)
垢版 |
2022/01/14(金) 18:26:28.87ID:dtRMJdwu0
>>382
俺のコードで合っている
https://i.imgur.com/XISUJtg.png

恐らくコンソールで見たんだと思うけど、VBE上はポンドが全て全角になる
ポンドを文字列にせず、全て半角にして取り扱えば問題は起きにくいと思う
serchCharの部分も文字コードの方が良いだろう

あと、Lが引っかかる理由もわからんが、恐らくあいまい検索か何かでひっかかってるのだろう
業務に使うなら、今回に限ってはvba使わずに、エクセルだけで処理したほうが良い気がする。
2022/01/14(金) 18:29:18.19ID:P/5qDoLq0
>>382
存在するかどうかって言ってるんじゃなくて、SHIFT_JIS環境で想定がないんじゃないかって言ってるんだよ
ウィキでみるかぎり、U+00A3とU+FFE1らしいから、それチェックすればいいだろ
こんな感じか
Function foundPound(word As String) As Long
Dim pos As Long
pos = 0
Do Until pos >= Len(word)
pos = pos + 1
If Mid(word, pos, 1) = ChrW(&HA3) Or Mid(word, pos, 1) = ChrW(&HFFE1) Then
foundPound = pos
Exit Function
End If
Loop
End Function
2022/01/14(金) 18:44:27.31ID:cSomMf3f0
>>386
>>387

皆様ありがとうございます。
一つ一つ確認してみます。
386様、コードを張っていただけると助かります。
389デフォルトの名無しさん (ワッチョイ df68-VTvg)
垢版 |
2022/01/14(金) 19:11:03.04ID:dtRMJdwu0
>>388
>>377で合っている

テストに使ったコードはこれ
ユーザー定義関数じゃなく、普通の関数にしてる
https://jsfiddle.net/jb52o9g4/
2022/01/14(金) 19:15:48.47ID:lOO1pB5h0
serchChar = ChrW(163)で行けたが
2022/01/14(金) 19:26:56.18ID:lOO1pB5h0
>>389
あ、解決してたんだね、ごめんなさい 焦
392デフォルトの名無しさん (ワッチョイ 5fe6-h8Qn)
垢版 |
2022/01/14(金) 21:30:18.78ID:+nyDUFlg0
searchCharな
2022/01/14(金) 21:47:12.20ID:cSomMf3f0
>>377
ありがとうございました。
動作確認できました。

一つ教えて下さい。
StrConvの第2引数ですが10はどういう意味でしょうか。
公式ヘルプには10の設定がないのでご教示いただければありがたいです。
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/strconv-function?f1url=%3FappId%3DDev11IDEF1%26l%3Dja-JP%26k%3Dk(vblr6.chm1011063);k(TargetFrameworkMoniker-Office.Version%3Dv15)%26rd%3Dtrue
394デフォルトの名無しさん (ワッチョイ df68-VTvg)
垢版 |
2022/01/14(金) 21:51:25.41ID:dtRMJdwu0
>>393
一つならvbLowerCaseかvbNarrow(もしくは2か8)でいいんだけど、
2つ以上組み合わせる場合は、足し算する

小文字の変換 2
半角 8
足して10

今回は小文字にする必要は理屈上ないはずけど、
どうせやるならついでにやっておいたほうが良いからやってある
2022/01/14(金) 22:29:34.99ID:cSomMf3f0
>>394
ありがとうございました。引数の意味はVBA でよくやる方法ですね。
2022/01/14(金) 22:43:41.66ID:cSomMf3f0
>>394
すいません。
対応する小文字や半角文字がなければそのまま大文字や全角文字を返すのでしょうか?
397デフォルトの名無しさん (ワッチョイ df68-VTvg)
垢版 |
2022/01/15(土) 00:25:26.50ID:w/VctcoP0
>>396
そうだと思って使っていたけど、言われてみればリファレンスにないね
あと、ごくたまに罠がある
https://www.petitmonte.com/bbs/answers?question_id=28308
2022/01/15(土) 00:56:09.86ID:xF8zc0t/0
んー、セルはunicode対応で環境依存文字使えるけどエディタはsjisだから文字コード自体が違うだけかと思ってた
2022/01/15(土) 01:08:19.24ID:8e4JI6z40
>>397
詳しい説明ありがとうございました。とても複雑なんですね。
2022/01/15(土) 11:15:34.39ID:6domvLfM0
Range.Rangeプロパティ、イミディエイトウインドウ、ローカルウインドウ 便利
2022/01/15(土) 12:40:23.72ID:8e4JI6z40
>>387
文字コードについて詳しくないので教えて下さい。
ChrW(163)をセルに書き込むとポンドの半角通貨記号でした。
そのセルのcode()を見ると63でした。
2つの値が異なるのは163がユニコードの番号で63がANSIの番号だからですか?
どちらか一方だけ(例えばユニコード)に対応した関数で使用を統一する方法はあるのでしょうか。
2022/01/15(土) 13:37:09.72ID:Op2FQMu7M
>>401
状況よくわからんけど AscW(Cells(1,1).Value) とかじゃ駄目なの?
403デフォルトの名無しさん (ワッチョイ df68-VTvg)
垢版 |
2022/01/15(土) 13:37:27.88ID:w/VctcoP0
>>40
違う
code()の返り値が63は、2パターンある
一つは半角「?」。これは正真正銘の63
もう一つはshiftjisでもasciiでもない文字。絵文字など。それも63が返って来る
後者は出力の際に、ユーザーに対する応答として便宜上「?」を使っているだけだろう。

>>387の言ってる>SHIFT_JIS環境で想定がないんじゃないかって
これはそういう意味だと思う。多分

文字コードは難解な上に歴史的経緯が大きく影響から、あんまり深追いしないほうがいいよ。得るものも少ない。
ダメ文字知ってるぐらいで良い
404デフォルトの名無しさん (ワッチョイ df68-VTvg)
垢版 |
2022/01/15(土) 13:38:25.50ID:w/VctcoP0
それを考えると、変な文字でワークシートとvbaを行ったり来たりさせないほうが良いと思う
ってことぐらい注意しておけばいいんじゃないかな
2022/01/15(土) 17:07:04.41ID:m8G7GxvMM
クラスモジュール初めて使うんですが、
ひとつのクラスモジュールに、
マクロで使用するWsをまとめたクラスを作りたいんですが、
入力用Ws
 Ws1_入力用
 Ws2_入力用
一時計算用Ws
 Ws1_一時計算用
 Ws2_一時計算用

みたいに作ることはできるんですか?
入力用Ws(一時計算用Ws)まで入力して、ドットを打つと
インテリセンスでそれぞれのWsが選べるようになる・・・という構造をにしたいのですが。

例えば、標準モジュールから呼び出すときに
Dim ClassWs As ClassWs: Set ClassWs = New ClassWs
ClassWs.入力用Ws.Ws1_入力用
ClassWs.一時計算用Ws.Ws1_一時計算用
のような感じです。
できた場合でも、あまりこういった書き方はしないほうがよいですか?
2022/01/15(土) 18:42:53.07ID:XFuYRO140
>>401
まず、文字コードって言われているものには複数の種類があって、同じ文字であっても違う番号で表されることがある。
そして、文字コードを規定している体系によって、持っている文字の種類や数が決まってる。
これが文字コードの大前提

今回の問題は、Windows日本語版のANSIでは半角ポンド記号は定義されていないってこと

>2つの値が異なるのは163がユニコードの番号で63がANSIの番号だからですか?
ChrWはUnicodeを扱う関数
codeワークシート関数はANSIを扱う関数
同じ文字でも数値が違うのは当たり前
unicodeワークシート関数使えば当然同じ数値になる

ただしANSIでの63ってのは"?"文字のコード
codeワークシート関数の数値については、対応する文字がない場合は?のように扱うんじゃないかな
なので?の数値が帰ってきてると思われ

>どちらか一方だけ(例えばユニコード)に対応した関数で使用を統一する方法はあるのでしょうか。
ANSIで使えない文字がある以上、ユニコードでやるしかない
2022/01/15(土) 18:52:54.92ID:XFuYRO140
>>405
Wsってなんだ?
そもそもの目的はなんだ?

一つのクラスに機能を集約するのはまあよくある
機能ごとにクラスやモジュールを分けるのもよくある
規模とか再利用性とかとの兼ね合い
408デフォルトの名無しさん (ワッチョイ d168-e0vW)
垢版 |
2022/01/15(土) 19:00:32.98ID:w/VctcoP0
>>405
名称が完全に二重になっているし、入力がめんどくさくなってるだけでは?
クラスはMeを使わないならあんまり使う意味は無いと思う。
事務の補助程度なら、その場面はほぼ無いと思う。ってか、vbaでクラス使った事ない。

ワークシートに別名を持たせてインテリセンスで使いたいだけなら、
関数+グローバル変数にして最初の一行で呼び出しきってしまえば良いと思う
https://i.imgur.com/2w8bUT8.png

ワークシートなら死ぬほど使うから、グローバル変数でも問題ない
2022/01/15(土) 19:19:41.65ID:m8G7GxvMM
>>407
>>408
ありがとうございます。
おっしゃる通り、今まで事務の補助程度で自分用としてしか使ったことなかったのですが、
今回初めて配布用のマクロを作っていて、膨大にモジュールが増えてしまい混乱していました。
クラスモジュールなら解決できるのかなと思いまして・・・
画像付きで解説までいただき、助かりました。
2022/01/15(土) 19:37:36.41ID:UMPZ1rN80
>>405
VBAではひとつのクラスはひとモジュールで書く制約があるからそのような記載は無理。
ただ、入力用と一時計算用のクラスを別に作ってWSクラスとやらの中で生成してそれをPublicのプロパティや変数にしまっておけば入れ子としての設定や読み取りは可能。

クラスを使用する前にそもそもクラスとはどういうものであってどういうときに使うと便利なのかを理解した方がいい。
411デフォルトの名無しさん (アウアウウー Sa05-wAYo)
垢版 |
2022/01/15(土) 20:07:58.86ID:FEpdyYa5a
>>409
混乱をふやしてどうする
2022/01/16(日) 00:51:21.02ID:rwDbh7Xz0
>>405
やっと理解したわ
入力用Wsと一時入力用Wsでインテリセンスを分けなくてもいいなら簡単にできる
コンストラクタでワークシートをセットするだけでいい
2022/01/16(日) 01:16:49.54ID:9svQYmXf0
>>406
詳しい説明ありがとうございました。
一つわからないことがあります。
> 今回の問題は、Windows日本語版のANSIでは半角ポンド記号は定義されていないってこと
とのことですが、そうしますと377さんの
serchChar = "£"
testfunc01 = InStr(StrConv(word, 10), StrConv(serchChar, 10))
のStrConv(serchChar, 10)によって全角のポンドの通貨記号は何に変換されるのですか?
414デフォルトの名無しさん (ワッチョイ d168-e0vW)
垢版 |
2022/01/16(日) 01:18:43.61ID:JxOh46GE0
VBA・・・コンストラクタ・・・
2022/01/16(日) 06:52:16.37ID:rwDbh7Xz0
>>414
あるの知らんの?
416デフォルトの名無しさん (ワッチョイ d168-e0vW)
垢版 |
2022/01/16(日) 09:31:02.87ID:JxOh46GE0
>>415
間違えてた、すまん
コンストラクタ自体はあるのね、無いと勘違いしてた
確かにこのケースなら使える
2022/01/16(日) 13:56:03.36ID:UA4PX5Jc0
OSのVer. やExcelのVer. 更には文字コードの変遷に依っては近い将来ですら読み取れなくなって「?」でしか
表されなくなるかも知れないものを、将来の資料として保存するためにExcelで残そう という企てが不可解
例えhtmlで保存するとしても文字コードの軛からは逃れられない 保存時にPDFにするのかも知らんけど 
テキストデータとして〇£〇シリング〇ペンス(ペニー) の資料が豊富にあって、それぞれから数値だけ抜き出したい
という要望だと信じていたが、そんなデータが遺されているのだろうか? シリング時代はPCすら無い時代
紙の資料がごまんと出てきた それをデジタル化してる とかなのだろうか
時代による金の含有量の変遷を遺したい とか書いていたが、ニッチな知的好奇心を満たそうとする人は
細かい事にも拘り続けるんだな、と    
文末脚注に Lはポンドの意味 のひと言で済むのに シリングだって記号s ペンスは記号pだろうに

例えば沈没船の積み荷の目録が出てきた そこには〇£〇シリング〇ペンスの記載がずらずら
これ引き揚げて通貨を溶解して金にしたらインゴット〇〇本分の量だぞ! 金の総重量をExcelで集計しろ! 
とかいう要望ならまだ判るんだが
2022/01/16(日) 14:34:44.43ID:9svQYmXf0
>>417
> テキストデータとして〇£〇シリング〇ペンス(ペニー) の資料が豊富にあって、それぞれから数値だけ抜き出したい
> という要望だと信じていたが、そんなデータが遺されているのだろうか? シリング時代はPCすら無い時代
> 紙の資料がごまんと出てきた それをデジタル化してる とかなのだろうか

「ポンド・スターリング―イギリス貨幣史 (1984年)」を読んでいる。計数上の特性を正確に理解しないと内容を追えないから。


> 文末脚注に Lはポンドの意味 のひと言で済むのに シリングだって記号s ペンスは記号pだろうに

ペンスの記号はdね。pでなくてdなのは歴史的な経緯がある。
正しく記述しておけば後から苦労しない。

それにコードとして本来期待した動きをしない時に疑問を持つのは当然。
その結果、文字コードが原因ということ、および解決法も判明した。
今後の欲に立つ。
原因不明のまま安直にLで凌ぐのは、一時対応を除いて、よくない。
2022/01/16(日) 14:54:09.16ID:EoUder1l0
>>405です。

>>410
>>412
ありがとうございます。クラス全然理解できていなくてすみません。

メンバ変数
Public ws1 As Worksheet
Public ws2 As Worksheet

にして、コンストラクタで
Private Sub Class_Initialize()
Set ws1 = Sheet1
Set ws2 = Sheet2
End Sub
を読み込ませる、という認識であってますか?
以下のように、ゲッターで各wsのプロパティを作っていくのはやめたほうがいいでしょうか。

Property Get ws1() As Worksheet
Set ws1 = Sheet1
End Property
Property Get ws2() As Worksheet
Set ws2 = Sheet2
End Property
2022/01/16(日) 15:26:39.86ID:0L8LiCPu0
Windows 10, Excel 2019

hyperlink関数を使ったリンクからブラウザを起動する時に
特定のURLのみ応答が60秒ほど遅い
クリック後すぐにEscを押すと60秒ほどの待ち時間が無くなりすんなり接続できます

遅い
= hyperlink("https://www.yodobashi.com/";, "yodo")
遅くない
= hyperlink("https://www.アマゾン.co.jp/", "ama")

ちなみにExcelを介さずアクセスするとすんなり表示されます
他に60秒ほどの待ち時間を無くす方法があれば教えて下さい
2022/01/16(日) 15:44:15.55ID:y1CvsdF30
>>413
それぐらい自分で試せよ

U+FFE1の半角ポンド記号になるっぽい
普通に正しい動作だな
2022/01/16(日) 16:10:07.63ID:9svQYmXf0
>>421
そういう意味の質問じゃなくって、「Windows日本語版のANSIでは半角ポンド記号は定義されていない」と書いていたので、StrConv(serchChar, 10)では半角ポンド記号に変換できないのじゃないかと思ったわけです。でも正しく処理しているんで、VBA 上では表示はできないけど計算処理はできるということですかね。
2022/01/16(日) 16:12:28.73ID:y1CvsdF30
>>419
クラスもモジュールの一つなんだが
まず処理の内容とモジュールの役割分担を考え直せ
インテリセンスに出したいからとか、本末転倒だ

インテリセンスに出したいだけなら、>>405の例ならクラス三つつくって
ClassWsクラスに
Public Property Get 入力用Ws() As 入力用Ws
Public Property Get 一時計算用Ws() As 一時計算用Ws
入力用Wsクラスに
Public Property Get Ws1_入力用() As Worksheet
Public Property Get Ws2_入力用() As Worksheet
一時計算用Wsクラスに
Public Property Get Ws1_一時計算用() As Worksheet
Public Property Get Ws2_一時計算用() As Worksheet
をそれぞれ定義すればできる
中身は自分で考えろ
2022/01/16(日) 16:19:51.33ID:y1CvsdF30
>>422
VBAの内部文字コードはユニコード
ユニコード表示できないのはVBEと言われている、VBAのエディター

なのでVBAでユニコードの処理はできる。VBEで文字を直接入力できない(ものがある)だけ
だから>>378でCHRW使えって書いてる
2022/01/16(日) 16:33:04.70ID:9svQYmXf0
>>424
よくわかりました。ありがとうございました。
2022/01/16(日) 19:01:50.46ID:EoUder1l0
>>423
ありがとうございます。
もう一度、役割分担を考えてみます。
2022/01/16(日) 19:41:57.72ID:rwDbh7Xz0
まあたしかにインテリセンス出したいだけならオブジェクト名を変更するだけでもいいかもしれんな
428デフォルトの名無しさん (アウアウウー Sa05-wAYo)
垢版 |
2022/01/16(日) 20:05:03.64ID:xYtP7RFCa
次の担当になる人がかわいそうだな
2022/01/16(日) 20:18:31.11ID:RSDKT1580
>>362
コードは他のシートと同じだったので省きます。
画像は消しても変わりませんでした。コードを消してもセルをクリックしたときにたまに読み込みが入るので何かが動いてそうなのですがどこ見ればいいでしょうか…。
430デフォルトの名無しさん (ワッチョイ d168-e0vW)
垢版 |
2022/01/16(日) 20:31:17.59ID:JxOh46GE0
>>426
431デフォルトの名無しさん (ワッチョイ d168-e0vW)
垢版 |
2022/01/16(日) 20:31:53.39ID:JxOh46GE0
>>426
色々聞いてみるといいかもね
恐らくインテリセンスも、みんな使わない
432デフォルトの名無しさん (ワッチョイ d168-e0vW)
垢版 |
2022/01/16(日) 20:35:43.37ID:JxOh46GE0
>>429
>>363の通り、どこで時間が書かているかを突き止める必要がある
2022/01/16(日) 20:53:15.31ID:RSDKT1580
>>432

初心者なのでDebug式をどこに代入すればいいかわからないので教えてください。

https://i.imgur.com/dzwx5GC.jpg

(コード書くと改行多すぎで弾かれます)
434デフォルトの名無しさん (ワッチョイ 6e8e-SRyr)
垢版 |
2022/01/16(日) 21:09:10.46ID:KEj0DMHt0
>>433

>>2を読め
435デフォルトの名無しさん (ワッチョイ d168-e0vW)
垢版 |
2022/01/16(日) 21:13:53.65ID:JxOh46GE0
>>433
>>434は頭おかしい
ちょっと待て
436デフォルトの名無しさん (ワッチョイ d168-e0vW)
垢版 |
2022/01/16(日) 21:14:52.42ID:JxOh46GE0
っって思ったけどせめてデータで出せ
メモ帳にコピペしてdotupとかそのへん
437デフォルトの名無しさん (ワンミングク MM52-/2yr)
垢版 |
2022/01/16(日) 21:22:18.03ID:lhZQvquHM
馬鹿を相手にすんな
438デフォルトの名無しさん (ワッチョイ d168-e0vW)
垢版 |
2022/01/16(日) 21:26:17.91ID:JxOh46GE0
>>437
専門板にいると、自分が万能な気になる
そうじゃないんだよ
みんな、一長一短なんだ
2022/01/16(日) 22:33:39.20ID:uTGjF8kU0
>中身は自分で考えろ

おー!!カッコいいねー!!
熱血トレーナーみたいだね〜
2022/01/16(日) 22:35:56.49ID:YgWToIcEd
VBAで更新したパワークエリーが更新完了まで待機するコードありますか?
2022/01/16(日) 23:13:05.80ID:RSDKT1580
Private Sub Worksheet Before DoubleClick(ByVal Target As Range, Cancel As Boolean)
Const Hani = "N4 N1000
Const Iro. As Variant 15
Dim Rng As Range
Set Rng = Intersect(Range(Hani), Target)
If Intersect(Target, Range("N4 N1000')) Is Nothing Then Exit Sub
With Target
Select Case Value
Case
Value = "2000"
Case "2000
Value =""
End Select
End With
If Not Rng Is
Nothing Then
Cancel = True
If Rnginterior Colorindex = xINbre Then
Eng Interior Colorindex = Iro
Else
Prg Interior Colorindex = xiNbre
End IfEnd If
Set Rng = Nothing
End Sub
2022/01/16(日) 23:18:31.80ID:ranDxh1Nr
Googleレンズで読み込んだやつなので正確ではないけど流れは一緒です。
ネットにあった色つけコードに数字も入力するようにしています。
↑で言っていたように使用しているAシートとBシートに違いはほぼないです。というか新規シートにBをコピーしても読み込み遅くなるので全く理由がわからないです。フォントは一緒、セルの使用数は読み込み遅いシートのほうが少なく、画像も関係ないので何がなんだか…
2022/01/16(日) 23:50:40.30ID:ranDxh1Nr
ごめんなさい
https://hoimins.com/uncategorized/excel-page-break-preview-slow/
多分これです。印刷範囲を設定したら読み込みがなくなりました。
2022/01/17(月) 12:48:25.06ID:RtDdCZiGM
ほれ、タイプミスだけ直しといてやったぞ

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Const Hani = "N4:N1000"
  Const Iro As Variant = 15
  Dim Rng As Range
  Set Rng = Intersect(Range(Hani), Target)
  If Intersect(Target, Range("N4:N1000")) Is Nothing Then Exit Sub
  With Target
    Select Case .Value
      Case ""
        .Value = "2000"
      Case "2000"
        .Value = ""
    End Select
  End With
  If Not Rng Is Nothing Then
    Cancel = True
    If Rng.Interior.ColorIndex = xlNone Then
      Rng.Interior.ColorIndex = Iro
    Else
      Rng.Interior.ColorIndex = xlNone
    End If
  End If
  Set Rng = Nothing
End Sub
2022/01/18(火) 15:16:34.47ID:TQ7V1ae50
前スレの298,303なのだが、
msgboxでウィンドウを表示させるとExcelがクラッシュしないことがわかった。
だから
'マクロがクラッシュしないための措置
i = MessageBoxTimeoutA(0&, "マクロを開始します", "通知", vbMsgBoxSetForeground, 0&, 100)
自動的に閉じるmsgboxを表示させることで回避策としたわ。

msgboxがある/なしでクラッシュするなんて言うバグてきいたことあります?
446デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/18(火) 15:40:58.30ID:CJu6lFHP0
>>445
聞いたことはないけど、合ってもおかしくないと思う
OSや別アプリと並行処理させ、並行処理が終わってないままvbaだけ処理すすめる・・・ことで落ちていると思う
DoEventsで解決するはずなんだけど、DoEvents自体も挙動がどこかおかしい。

多分だけど、
applicaion.calcurate=false
とか高速化入れてない?あれを設定しなければ落ちなくなる可能性があると思う
447デフォルトの名無しさん (ワッチョイ aeda-wAYo)
垢版 |
2022/01/18(火) 18:06:02.41ID:2NZPk0PK0
フォーカスがなくなって裏で動いているのに気づかなかったってだけじゃね
2022/01/19(水) 02:44:48.77ID:J6vWAZC60
>>94
自己レスだけど検証してる動画があった
https://youtu.be/FSS94HnW3Dk
2022/01/19(水) 08:14:43.10ID:SKsqr1XrM
>>448
見たけど画面描画してるからその分遅くなってることを考慮してない、やり直し、と言いたい。
まあそれでも結論は変わらんと思うが。

というか、たぶん結論有りきで動いてるよなこの人。
2022/01/19(水) 12:40:48.58ID:U3XJgxPOM
>>449
画面更新止めるコマンドもあるので別に気にはしてないですが、エクセルの関数が実数になるまでそれなりに、時間かかりますよね

まぁ、でもAの方法(外部リンク参照)で作り変えて行こうかと思います。
2022/01/19(水) 16:06:12.24ID:wLv0/dLh0
取得したデータをどう使いたいのかにもよるけど
参照するExcelブックの数が増減する場合はVBA使って特定のフォルダにぶち込まれたExcelブックを全部取得するようにすると楽
個人で使う分にはこれでいいが、仕事などで自分以外の社員が触る機会がある場合は、周りのスキルを考えてVBAを使わず数式で参照させて済ますのも良いと思う
だが、環境にもよるが、外部参照を含む数式を書いたExcelブックを開いたまま参照先のExcelブックを開くと参照エラー(#REF!)になる場合があるので注意
452デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/19(水) 16:34:49.01ID:x+9vZ6k00
MSGBOXが表示された時、必ず最前面にする方法ってありますか?
alt+tabでタスクを切り替えないとMSGBOXが表示されない事があります
処理が止まっているのか進んでるのか分からなくて、困ってしまう
2022/01/19(水) 17:15:49.65ID:O8ktC4tSM
>>452
VBAのMsgBoxでは不可能
Win32APIのMessageBoxAをTopMost=Trueに設定して呼び出すしかない
VBAからMessageBoxAを呼び出す方法はぐぐればすぐ出てくる
454デフォルトの名無しさん (ラクッペペ MM66-Dw/N)
垢版 |
2022/01/19(水) 17:21:36.62ID:ZRK6Alb6M
そんなフラグ効果あんのか?
455デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/19(水) 17:56:37.68ID:x+9vZ6k00
>>453
ありがとうございます、そういう方法があったのですね。
処理完了のメッセージボックス、そちらにしていきます。助かりました。
2022/01/19(水) 18:35:22.31ID:DmIv8IzU0
いちおうMsgBoxでシステムモーダルの指定があるにはあるんだけどな
期待通りに動かんことが多い

いちアプリケーションがシステム全体にかかわる動作をするなって風潮だからな
2022/01/19(水) 18:45:15.60ID:F2K8Y8lc0
>>451
他ブックへの参照はgotoより使いたくないかも
2022/01/19(水) 19:04:03.23ID:DmIv8IzU0
>>457
複数のブックで構成されてるような資料だとまあなくはないかと

しかしリンクとコピーが比較対象になるのが理解できん
速度とかで選択するようなものじゃないだろ
2022/01/19(水) 19:59:02.99ID:wLv0/dLh0
>>457
わかるけど、それはプログラミングの知識がある人が職場に当たり前にいるという前提の話
まったくVBAを知らない社員に一から教え込むよりまし
ていうか個人的には、Excelブックを100個も参照させるようなのが仕事上の事情なら、まずはその運用を見直した方がいいと思うけど
2022/01/19(水) 20:45:45.55ID:U3XJgxPOM
他ブックの参照がなぜ駄目なのかさっぱりわからないです。。教えて下さい。

参照後の処理の内容になにか前提条件があるのですか?
自分の前提は、Excelブックを参照、みんな同じExcelバージョン、同じフォーマットを使うです
2022/01/19(水) 20:58:42.62ID:B4PAoBE9M
リンク切れで機能しないゴミとなったブックをお目にかかったことがないなら幸せなことだな
2022/01/19(水) 22:01:47.23ID:K9C4LDWb0
エクセルは詳しくないけど、「存在しない可能性すらある
グローバル変数」ってこと?

ちょっと学んで、「どこからでもセルの書き換え効くの?
グローバル変数地獄じゃない?」と思ったけど、もっと
大規模に起こり得るってこと?
2022/01/19(水) 22:31:45.36ID:wLv0/dLh0
>>460
フォルダ名(参照・被参照のExcelブックが別々のフォルダにある場合)、ファイル名、シート名、(使用しているなら)テーブル名、あとセルの配置
どれか一つでも変えるとリンク切れになるので、できればあまり使いたくない
ただ、先にも書いたけど状況次第ではやむを得ないこともあるし、もしそのあたりのリスクを払拭できるなら選択肢としてはあるかなと思って書いたけど、
もし、そういうことをそれほど把握する必要がない程度に重要性が高くなく、かつパフォーマンス(速度)重視の話なのであれば、あまり気にしなくていい

でも、これが仕事で何度も使用するような類のものの話だとすれば、パフォーマンスを考える前に運用をよく考えた方がいい
例えば、ファイル数(100個)や参照セル数(ブック1つにつき60セル)が固定で、シートやブックなんかはパス付で保護かけて構造を弄れないようにして、できたらファイル名なんかもアクセス権を設定して変更できないようにするか、ファイルを扱う人に絶対変えないようにしっかり申し送りするとか
もしくは構造を弄られたとしてもすぐ元どおりにできるぐらいのシンプルな作り、あるいは壊されてもすぐ復元できるようにしておくとか
どんな状況なのかは分からないけど、何を優先すべきなのかをよく整理した方がいい、という話になると思う
2022/01/19(水) 22:43:22.55ID:zGHKrub60
>>460
親からひ孫世代まで参照が繋がってるファイル群なんてものが存在した
2022/01/19(水) 22:52:36.39ID:TxiQul+S0
>>464
参照繫ぐくらいなら、ファイルパスもセルに記入して上書きさせるように実装するわ。それくらいリンクは嫌だわ。
2022/01/19(水) 23:01:56.42ID:J6vWAZC60
なるほど。理解出来ました。
ありがとうございます。

運用的には
VBAでファイル名算出する
シート名が違っていたり、フォーマットズレしていたら検出したいチェックツールにしたいので問題なさそうです。
参照エラーがでたら壊した人のところに殴り込みに行くシステムですね。
2022/01/20(木) 00:15:58.14ID:gV+Fwxtn0
まあ、まともに作ったファイルサーバなら
shadow copy くらいは残ってるだろうがね。
468デフォルトの名無しさん (アウアウウー Sa05-wAYo)
垢版 |
2022/01/20(木) 06:56:43.44ID:AmtKyR6La
無理して変な機能追加するから
後で見返した時にワケわからなくなる
2022/01/20(木) 08:28:58.94ID:mCK9tQrM0
>>468
それはみんなそう
なので少しでもわかりやすいように書いておくことが必要
慣れてないうちはコメント付けまくるのもありだと思う
これは何の変数かとか、大きく何をしているか、この行は何をしているか書いとけばリファクタリングするのにも楽になる
470デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/20(木) 08:52:11.33ID:aoz8cIff0
>>466
毎日カチコミになるのが目に見えているゾ
2022/01/20(木) 09:39:15.12ID:+AoyW20h0
どうしても100個のファイルに分けなければならないのか
一つのブックに100シート突っ込むことはできないのか
とか考えたりはするかも
472デフォルトの名無しさん (オッペケ Srd1-2j/7)
垢版 |
2022/01/20(木) 12:41:49.38ID:NS2MNDvFr
ファイルコピーか、シートのコピーで
バックアップ取っておくとかは考えるかも。
473デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/20(木) 12:47:52.34ID:aoz8cIff0
取引先一件につき、ファイル一つ
それをマクロで集計

最初30個ぐらいだったファイルが、
会社が成長して、100ファイルになったことはあったな
フォーマットやファイルは全て自分で管理してたから問題なかったけど、
今も大丈夫かなぁ
あれ手で計算するのは大変すぎ
2022/01/20(木) 13:46:34.45ID:BPf7HX0l0
1ファイル45個のクエリーを含む同様のファイルが
13地点×6ヶ年分=78個あって、
これをシーケンシャルに1つずつ、For Nextで更新するよう組んだ。

最初の2ヶ月目くらいまでは7時間くらいで更新出来てたが、
3ヶ月目以降は毎回どこかの、
 Set tblQ = ThisWorkbook.Worksheets(ws).ListObjects(q)
と、ワークシート名とクエリー名を変数に代入するところでコケる・・・

その都度、コードを削除していったん保存、
再度貼り付けてデバッグし続行させる
沼にはまった。
475デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/20(木) 13:49:08.24ID:aoz8cIff0
>>474
そういう時は、ファイル保存を挟むと良い
エクセルは立ち上げっぱなしだと、どんどんテンポラリファイルが巨大化する
保存すると、それが一旦整理される
2022/01/20(木) 13:57:12.27ID:BPf7HX0l0
>>475
アドバイス、ありがとう。

一応、開く78個のファイルは1個ずつ保存して閉じているけど、
大元のVBAを持つbookをその都度保存せよ
ということかしら?

そういや、プロジェクトエクスプローラーに
既に処理が終わって閉じたbookのファイル名が残って
どんどん増えて行ったような・・・

こっちは1ファイル処理後ごとに上書き保存とかの処理は入れてなかった。
2022/01/20(木) 13:57:52.65ID:HwD0Q83s0
なんで全部Excelでやろうとするかね ボリューム見て将来鑑みて、どっかの時点で「これはパンクする」
ってぇ判断をしなかったツケだろ 経費抑制? むしろ無駄な経費が膨大に掛かってるのには目を瞑るんだ へー
478デフォルトの名無しさん (ワッチョイ bd5f-2j/7)
垢版 |
2022/01/20(木) 14:17:24.56ID:gV+Fwxtn0
>>474
変数は毎処理ごとに開放してる?
2022/01/20(木) 14:28:11.68ID:mCK9tQrM0
>>477
本人はやれる中で頑張ってるんだと思う、きっと
でも確かにそれはAccessのほうがってことはあるよね
VBAできる人なら覚えるのも簡単だと思うし
2022/01/20(木) 14:32:45.01ID:bfB7zVPYM
kintoneとかでいいでしょ
481デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/20(木) 14:40:11.29ID:aoz8cIff0
>>476
>一応、開く78個のファイルは1個ずつ保存して閉じているけど、
もし、
set foo = workbook.open~~~)
みたいにしてたら、最後に
set foo = nothing
を挟まないと、ずっとメモリ残り続けることになると思う。>478さんの指摘がこれ

>大元のVBAを持つbookをその都度保存せよ
これはかなりオススメ。
コードの内容がわかって無くても、エクセルファイルを保存すると大体うまくいく
※保存時に色々とうまくやってくれてるっぽい

>>477
それ言い出すと全企業が大企業並の設備を整える必要がある
ある程度拡張性を備えた上で、「5年後は別システムに移行しているだろう」のような判断ができればいいね
基本、要素(営業や取引先)がドカドカ増えないなあ、システムは特に移行しなくていいと思う。
多少使いにくくても、ノウハウが切り捨てられる方が惜しい
482デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/20(木) 14:41:43.21ID:aoz8cIff0
>>480
使ってから言えよ
あれ柔軟性が全くない

柔軟性の必要がない、タピオカ屋さん、ワッフル屋さんなんかにはドンピシャだろうね
2022/01/20(木) 14:41:48.98ID:BPf7HX0l0
>>478
してなくて、ぼんやり「まずはこのあたりをやらなきゃアカンのかなぁ・・・」とは思ってた。
次に更新する月初めまでにやりまする。

大元のbookで、
"For i To k" より後の、
"Next i" までに使った変数全てについて
 Set 変数名 = Nothing
を "Next i" の直前に入れる感じで?
2022/01/20(木) 14:48:42.80ID:bfB7zVPYM
>>482
本当にその柔軟性必要?勝手にそう思い込んでるだけじゃない?
方眼紙に自由自在にレイアウトできなくても情報は伝わるんだぞ
485デフォルトの名無しさん (ワッチョイ bd5f-2j/7)
垢版 |
2022/01/20(木) 14:49:07.12ID:gV+Fwxtn0
一つのプロシージャで全処理するより

Class とか、Function 使う方が良いかもね。
486デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/20(木) 15:07:43.50ID:aoz8cIff0
>>484
必要
もちろん100社で100通りじゃない。100社で10通りぐらい。今後も増えるだろう
この柔軟性は、エクセルだとかなり受け入れやすい

>>485
正直、なるだけ1プロシージャは維持したほうが良いと思う
エクセルVBAは他の言語と違って、あまりにファイルへの依存性が強すぎる
487デフォルトの名無しさん (ワッチョイ bd5f-2j/7)
垢版 |
2022/01/20(木) 15:16:04.35ID:gV+Fwxtn0
ふーん。

オレなら処理毎にFunction プロシージャに引数で渡してあげて
ループ処理終わったら、変数開放するけどな。

変に長ったらしいのより、そっちの方が解読性がよくなる。
488デフォルトの名無しさん (ワッチョイ 6e8e-SRyr)
垢版 |
2022/01/20(木) 15:19:27.67ID:n5KSDES60
>>481
お前みたいな奴がメンテできないシステムを作り出すのだぞ
2022/01/20(木) 15:20:13.56ID:gV+Fwxtn0
まあ、オレはAccess VBA専門なので
Excel VBA は遠い記憶ですが…

シンプル・イズ・ベスト。
490デフォルトの名無しさん (ラクッペペ MM66-Dw/N)
垢版 |
2022/01/20(木) 15:20:30.61ID:/dOetE+CM
バカがやると引数地獄かグローバル地獄になんだよ
491デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/20(木) 15:21:57.99ID:aoz8cIff0
>>488
言いたい事は分かるんだけど、エクセルはOSの依存が妙に強くて
OSの機能借りないとキツイ部分が多々ある
未だにMSGBOXがどうしようもなかった
492デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/20(木) 15:22:53.50ID:aoz8cIff0
>>490
なるほどw
2022/01/20(木) 15:24:46.85ID:gV+Fwxtn0
>>490

初心者はね。

最近は設計工程ばかりで、コーディングもしてないから
下流ビギナーの思考はわからんけど。
2022/01/20(木) 15:38:37.39ID:gV+Fwxtn0
確かにグローバル変数は使わない方が良い。

ホーム・プロシージャからFunction へ飛ばして
処理させてあげて
戻り値を次のFunctionへ…

って感じで作ると、テスト工程の時に楽になる。

デッカいシステムを組むとそっちの方が絶対楽だし
改修の時も、解読に困らないからね。
495デフォルトの名無しさん (ワッチョイ 6e8e-SRyr)
垢版 |
2022/01/20(木) 15:56:22.20ID:n5KSDES60
>>491
いや、お前の能力が足りないだけだぞ
496デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/20(木) 16:21:54.83ID:aoz8cIff0
エクセルの場合は、エクセルという超グローバルオブジェクトがある
それをメインに据えれば良いと思うけどな
2022/01/20(木) 17:01:00.66ID:ovHTHlPT0
ホント、マクロは組む人によってその人のカラーや癖が出るとは言ったもんだね。
2022/01/20(木) 17:03:05.54ID:GNfzU0ds0
変数を日本語というか漢字とか使うのって邪道?
行とか列とかそのまま漢字文字で使ってるんだけど
499デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/20(木) 17:03:18.69ID:aoz8cIff0
>>497
んなもんプログラムならどれも一緒
エクセルは一段回上のファイルがあって、目に付きやすいだけ
500デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/20(木) 17:06:10.63ID:aoz8cIff0
>>498
2buyte文字ね
全然良い、というかむしろそっちの方が読みやすい
気をつけるのは、海外の漢字や絵文字
上でも出てたけど、半角ポンドなどエラーが起こりやすい文字がある
2022/01/20(木) 17:34:30.16ID:BPf7HX0l0
>>498
漢字をマクロ内で使って、
この5〜6年くらいの間で知ってるだけで少なくとも2回、
MSのupdateで動かなくなってた記憶があるので
それに対処出来ればOKかと。

Rangeで引っ張る定義名とかsheet名は
特殊な記号は避けて漢字使っちゃってる。
2022/01/20(木) 17:50:55.00ID:HwD0Q83s0
日本語(漢字)でもいいんだ へー   っていうレベルのが真似して安易に使い出したらカオス
他人事だから後は野となれ山となれ  っていう発想としか思えない
日本語OSが出来てからやれよ とは思う  米語OS使わざるを得ないなら粛々と従ってろや と
 ま、だからってローマ字に換えて30文字ぐらいのモジュールが40ヶぐらい並んでるのを見た時には一時間ぐらい気絶したけど
getsumatsukoushinn() nenjikoushintokuisakibetuhinmokubetsu()   あのさ、、、 これにOK出したの誰よ?
503デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/20(木) 17:51:21.68ID:aoz8cIff0
そういや何年か前、accessVBAだっけ?2byte文字あると全部エラーになるみたいなのあったな
2022/01/20(木) 18:02:49.63ID:mCK9tQrM0
>>502
ワロス
505デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/20(木) 18:26:03.22ID:aoz8cIff0
>>502
こういうの見るとoption explicit必須何やなって思わされる
506デフォルトの名無しさん (オッペケ Srd1-2j/7)
垢版 |
2022/01/20(木) 18:30:19.80ID:NS2MNDvFr
開発現場のローカルルールは
2バイト文字禁止が普通だけどね。

色んな環境で使うことを想定したら
日本語とかありえん。

コーディングの時は日本語だけど、
最終的に全置換で英語表記に変える。
2022/01/20(木) 20:06:44.42ID:KxaVQnjRM
> 色んな環境で使うことを想定したら
Excel VBA でそんなことを気にしないといけない状況って相当珍しいだろw
2022/01/20(木) 20:09:21.62ID:WDmMC3D+M
俺が前に行ってた派遣先ではC#で漢字の変数名や関数名とか自由に使ってたわ
業界ではそれなりに知られた老舗のソフトメーカーなんだけど
まあ、そういう職場もあるってことで
2022/01/20(木) 20:34:21.90ID:NL1fx3HA0
日本語以外での展開を考えてるならまあ2バイト文字禁止で良いんじゃね
日本語環境で開発してる段階で漢字禁止とかあんまり見ないけどな

ただ、メソッド名に日本語は過去にえらいことになった例があるからなぁ...
510デフォルトの名無しさん (ワッチョイ 6e8e-SRyr)
垢版 |
2022/01/20(木) 23:42:09.41ID:n5KSDES60
ID:aoz8cIff0

いつもの馬鹿でしたとさ
2022/01/21(金) 02:47:14.61ID:XETJK2Tn0
派遣てなになに?
VBA技術者の派遣とかあるんだ?
512デフォルトの名無しさん (オッペケ Srd1-2j/7)
垢版 |
2022/01/21(金) 03:05:10.67ID:iDAtgXvmr
派遣業(ピンハネ屋)を禁止にすれば
日本人の給料は上がります。
2022/01/21(金) 05:15:31.24ID:XETJK2Tn0
派遣て確か専門職だからめちゃめちゃ稼げると聞いたけど、どうなの??
那須は出ないとは聞いたけど時給はめっちゃ高いと聞いたものでして。
514デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/21(金) 07:53:02.69ID:U4E8wi5/0
>>513
1500-2000円ぐらいだったかな。ただもう募集自体がほとんどない。
ほぼ全てローカル環境での作業のため、リモートも出来ない

>>512
下がる
2022/01/21(金) 08:07:59.20ID:XETJK2Tn0
へえ、1500から2000円ねそうなんだ。
自分田舎住みだからその時給はかなり水準高いわ。
こっちなんてどんだけExcelの技術あっても良くて時給1200円前後。
マクロ書ける人材は貴重だからもっと給料上げるべきだと思う。
516デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/21(金) 08:29:03.61ID:U4E8wi5/0
企業常駐型だから、基本かなり居づらいし
VBAでゴリゴリの開発や保守なんて絶対にやらんほうがいいわ
2022/01/21(金) 08:45:23.59ID:XETJK2Tn0
あ、常駐型SEを思い出した。
給料はもっと貰うべき。
2022/01/21(金) 08:51:43.72ID:k97g2FVL0
適正が有るだけで大した労力使わないのに給料は高いんだよ
楽だよな
2022/01/21(金) 09:29:31.93ID:KSflUQH80
ExcelでEnumChildWindowsを使って他アプリの子ウィンドを取得するプログラムをテストしています。
と言っても知識がないのでネットからソースをコピーしてテストしているレベルです。
EnumChildWindowsの引数でコールバック関数をしているのですが、コールバック関数を実行した時に順調に
実行される時とEnumChildWindowsを実行した途端Excelが終了する時があります。
何かよくあるミスとかあれば教えてください。
APIの宣言、コールバック関数は標準モジュール、その他はシートモジュールに書いています。
プログラムを張り付けて良いか分からないので張り付けていませんが良いならご指示ください。
よろしくお願いします。
520デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/21(金) 09:44:43.07ID:U4E8wi5/0
>>519
コードは貼ってくれ
2022/01/21(金) 11:25:52.95ID:KSflUQH80
519です。
長すぎると怒られるのでいくつかに分けます。
よろしくお願いします。

Sheet1モジュール

'///GetWindowの定数///
Const GW_HWNDFIRST = 0 '基準となるWindowと同じ種類のうち最前面のWindow
Const GW_HWNDLAST = 1 '基準となるWindowと同じ種類のうち最背面のWindow
Const GW_HWNDNEXT = 2 '基準となるWindowの次のWindow
Const GW_HWNDPREV = 3 '基準となるWindowの前のWindow
Const GW_OWNER = 4  '基準となるWindowのオーナーWindow
Const GW_CHILD = 5    '基準となるWindowの子WindowのうちトップレベルのWindow
Dim myHwnd As LongPtr  '検索ボタンのハンドルを記憶

Sub Test1()
'アプリhogeの検索ボタンを探す
Dim Ret As LongPtr
Dim hwnd As LongPtr

hwnd = FindWindow(vbNullString, "hoge") 'トップウィンド
hwnd = FindWindowEx(hwnd, 0, vbNullString, "hoge_1")'検索ボタンが所属している子ウィンド

Ret = EnumChildWindows(hwnd, AddressOf EnumChildProc, 0)
myHwnd = GetWindow(myHwnd, GW_HWNDPREV)
End Sub
2022/01/21(金) 11:29:13.91ID:KSflUQH80
標準モジュール

Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
Declare PtrSafe Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWndParent As LongPtr, ByVal hwndChildAfter As LongPtr, ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
Declare PtrSafe Function EnumChildWindows Lib "user32" (ByVal hwnd As LongPtr, ByVal callBackProc As LongPtr, ByRef lParam As LongPtr) As LongPtr
Declare PtrSafe Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As LongPtr, ByVal lpString As String, ByVal cch As LongPtr) As LongPtr
Declare PtrSafe Function GetWindow Lib "user32" (ByVal hwnd As LongPtr, ByVal wCmd As LongPtr) As LongPtr
2022/01/21(金) 11:35:16.64ID:KSflUQH80
標準モジュールの続きです。

Public Function EnumChildProc(ByVal hwnd As Long) As Long
Dim Ret As LongPtr
Dim Leng As LongPtr
Dim Name As String * 255
2022/01/21(金) 11:39:21.83ID:KSflUQH80
書込みができないようで中途半端なところで切れてしまいすみません。
残り数行なのですがもう少し後で投稿します。
よろしくお願いします。
2022/01/21(金) 12:02:38.78ID:Pj4yIAd6M
>>524
長くなる時はコードをシェアできるサービス使って
https://collabedit.com/3dgh5
526デフォルトの名無しさん (アウアウウー Sa05-VGE5)
垢版 |
2022/01/21(金) 12:24:55.64ID:R2BsGPNsa
標準モジュールからユーザーフォームを呼び出して、そこで入力された値を持ってきて処理したいです

試しにシンプルにこんな感じでやっても駄目なんですが、どうすればいいでしょうか?


標準モジュール
Option Explicit
Public ret As Boolean
Sub test()
Dim ret As Boolean: ret = False
UserForm1.Show
MsgBox ret
End Sub

ユーザーフォーム
Private Sub CommandButton1.Click()
Dim ret As Boolean
ret = True
Unload Me
End Sub


これでtestを実行すると、メッセージボックスにFalseが表示されます
ユーザーフォームが出てきてボタンをクリックしたら、Trueをメッセージボックスに表示するようにしたいです
2022/01/21(金) 12:37:47.66ID:KSflUQH80
>>525
指示してもらったことろへ貼り付けました。
よろしくお願いします。
2022/01/21(金) 12:39:51.71ID:aZlF8gD40
>>526
標準モジュール
Option Explicit
Public ret As Boolean
Sub test()
  ret = False
  UserForm1.Show
  MsgBox ret
End Sub

ユーザーフォーム
Private Sub CommandButton1.Click()
  ret = True
End Sub
529デフォルトの名無しさん (アウアウウー Sa05-VGE5)
垢版 |
2022/01/21(金) 12:47:38.25ID:R2BsGPNsa
>>528
Dimを抜くと、変数が定義されていませんと出てしまうんです
Option Explicitを入れなければ通りますが、やはりTrueは返ってこないでFalseになります
530デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/21(金) 14:13:07.69ID:U4E8wi5/0
>>519
多分引数が間違っている。ノートパッドを起動して以下を試して、
返り値の違いを確かめてみて。
修正前は0が返ってるけど、修正後はポインタか参照が返ってるはず

hwnd = FindWindow(vbNullString, "hoge") 'トップウィンド

hwnd = FindWindow("notepad", vbNullString) 'トップウィンド

後は、検索ボックスがどうこう書いてるけど、そういうプログラムを持ってないから検証できないわ
2022/01/21(金) 14:50:07.67ID:RFcu/rPfd
>>526>>529
ユーザーフォーム側で「Dim ret As Boolean」を宣言するとスコープの近い変数に格納されてしまうから不要
自分も同じようなコードをかいたがなくても正しくretにTrueが入る
(「CommandButton1.Click」は構文エラーになると思うが「CommandButton1_Click」だよね)
変数がどうとかいわれるならそもそも変数がpublicでないか参照している変数名がまちがってるとかないか?
2022/01/21(金) 14:57:28.11ID:aZlF8gD40
>>529
528は、ちゃんと動作確認してから貼ったんだけど
コード書く場所間違ってない?
https://i.imgur.com/76hGtGx.png
2022/01/21(金) 15:01:17.70ID:RFcu/rPfd
>>532
細かくてすまんが
CommandButton1_Clickの代入先って最初大文字にしても勝手に小文字にならない?
534デフォルトの名無しさん (アウアウウー Sa05-VGE5)
垢版 |
2022/01/21(金) 15:11:34.91ID:R2BsGPNsa
>>531
何回も確認してるんですが、間違ってないんですよね・・・
CommandButton1.Clickも、>>526で間違えただけです
>>528で書いていただいたものをそっくりそのまま書いてるんですが、retにTrueが入ってくれないです
環境はエクセル2010のwin7です
535デフォルトの名無しさん (アウアウウー Sa05-VGE5)
垢版 |
2022/01/21(金) 15:17:23.81ID:R2BsGPNsa
>>532
新しい標準モジュールにtestだけ書いたらできました
何かが干渉してるってことなんでしょうか
2022/01/21(金) 15:22:29.45ID:RFcu/rPfd
自分はWin10(20H2)+Excel2013とWin10(21H1)+Office365(サブスクリプション版)の2つで試したけど
どちらもTrueになるね

ちなみに「ret = True」のretをマウスクリックして右クリックのメニューに出てくる「定義」を選択するとどこにジャンプする?
自分はpublic変数にとぶんだが
2022/01/21(金) 15:24:18.40ID:aZlF8gD40
>>534
まさかイベントプロシージャの宣言部を自分で入力かコピペしてない?
フォームデザイナーでコマンドボタンをダブルクリックすると空のプロシージャが自動生成されるんだよ

あと、試したのはWin10 Excel2021 64bitだけど、この部分の仕様はずっと変わってないはず

>>533
悪いけど指摘の意味がよくわからん
スクショの通り、これでちゃんと動いてるんで
さらに細かいことを言うとCommandButton1_ClickじゃなくてCommandButton1.Clickね
2022/01/21(金) 15:30:59.33ID:aZlF8gD40
>>529
Dimを外すとエラーが出るってことは、どこかで今回の件とは関係ない別の何かをタイプミスしてる
Option Explicitをコメントアウトした状態でステップ実行するとローカルウィンドウに使用中の変数の一覧が出るから、よーく見直せ
539デフォルトの名無しさん (アウアウウー Sa05-VGE5)
垢版 |
2022/01/21(金) 15:46:49.49ID:R2BsGPNsa
>>537
フォームデザイナー使ってます

>>536
Publicに飛びます
2022/01/21(金) 16:13:39.82ID:RFcu/rPfd
>>537
コントロールとイベントの接続文字はアンダーバーじゃない?
ピリオドで構文エラーになるけどならない場合もあるの?

>>539の作ってるサンプルは>>528通りなの?
自分のサンプルはこんな感じで作ったけど
1.新規ブック作成
2.開発メニューからエディター起動
3.プロジェクトツリーで新規フォーム作成
3.1.コマンドボタン追加
3.2.コマンドボタンダブルクリック
3.3.CommandButton1_Clickに「ret = True」を記述
結果ユーザーフォーム内のコードは下記の状態になる
Option Explicit
Private Sub CommandButton1_Click()
ret = True
End Sub
4.標準モジュール作成
4.1.下記のコードを貼り付け
Option Explicit
Public ret As Boolean
Sub test()
ret = False
UserForm1.Show
MsgBox ret
End Sub
5.test内をクリックしてF5押下で実行
2022/01/21(金) 16:23:57.05ID:IxcxpS5S0
ユーザーフォーム閉じるまでメッセージボックスまで行かないわけか
いつもモードレスだから気づかんかった
542デフォルトの名無しさん (アウアウウー Sa05-VGE5)
垢版 |
2022/01/21(金) 16:24:33.06ID:R2BsGPNsa
>>540
新規ブックで一からやったらできました
組み込みたい既存のブックでやろうとしたところ、Public retに入らない感じでしたが、新しい標準モジュールを作ってやったらできました
なので、最初に書いた先の標準モジュールが原因っぽいんですが、それが何か分からない状態です
上手く動いたコードをそのまま一番上に持ってきているんですが、エラーは出ずに実行されるもPublic retにTrueが入らずにFalseになります
543デフォルトの名無しさん (ワンミングク MM52-/2yr)
垢版 |
2022/01/21(金) 16:40:12.64ID:1Ed+zt1pM
理屈もわからずあちこちからコピペコピペとやってる奴によくある
そろそろ消えろや
2022/01/21(金) 16:45:47.13ID:uPLc80ynd
ファイルもみてないからなんともいえないけどボタンに紐づけたイベントは正しく実行されるの?
ret = Trueの行でF9おすとブレークポイント設定されるからそこで止まるかたしかめたら?
それで止まったなら1行ステップ進めてretに何が入ってるか確認したほうがいいよ
モノづくりするときは1つずつつぶしていくのが大事よ
2022/01/21(金) 19:18:17.67ID:vzv4Kcp20
標準モジュールじゃなくてThisWorkbookに書いてる予感
2022/01/21(金) 19:27:54.79ID:7hLshO/z0
インターネットのブラウザ IEとかedgeとかで任意のページを開いてそこから日付とか番号とか特定の決まった箇所にある文字や数字をWordの特定の場所にコピー、挿入する方法はありますか?
できればボタンひとつでできるようになりたいです
2022/01/21(金) 19:45:58.42ID:uPLc80ynd
あります。
「vba スクレイピング」「vba word 操作」でぐぐればいくらでもサンプル出てくると思うから好きなのえらぼう
548デフォルトの名無しさん (ワッチョイ 6e8e-SRyr)
垢版 |
2022/01/21(金) 22:29:10.29ID:NFZs9l3R0
>>546
Ruby馬鹿だろ
549デフォルトの名無しさん (ワッチョイ bd5f-2j/7)
垢版 |
2022/01/21(金) 22:34:52.59ID:nlcE6d040
整然としてねえコーディングだな。

頭の中身が現れてるわ。
2022/01/21(金) 22:37:38.53ID:nlcE6d040
>>546

VBSか、JavaScript の方が
早いかもしれん。
2022/01/22(土) 00:26:58.95ID:XmCgkfSL0
コピペプログラマー
2022/01/22(土) 00:35:52.61ID:9zfa7ona0
>>547
vbaでのスクレイピングは懲りた
標準だとIEしか使えないんだもん
2022/01/22(土) 01:04:10.75ID:NynwR7VqM
>>552
どの言語でも外部ライブラリは必要
2022/01/22(土) 08:00:34.93ID:HGIIomOF0
他社製のweb受注システムから社内の生産管理システムに流し込むときにやったな
CSVダウンロードくらい用意しろってんだ
2022/01/22(土) 08:21:46.11ID:R1iyPI8Z0
>>550
同意
どうせ深くWeb系を扱うのであればJavascriptは必須になってくるから勉強するに越したことはないと思うよ。
VBSもVBAの知識があれば何とかなる・・・多分。
IISの知識があればそれでクラシックASPの出来上がりですよ。
本格的にやるならASP.NetだけどObject指向の概念が分かっていないとVBAからだとVB.Netでも少し敷居が高いかも。

どうせWeb版のEXCELとか弄るときはJavascriptだし、今の内に慣れておいた方がいいと思う。
556デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/22(土) 08:34:08.56ID:DLYfLGcJ0
>>554
同じく
csvDL自体がないってのはさすがに見たことないけど、
DLに項目が不足してる時はスクレイピングで抜いてるな
557デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/22(土) 08:36:01.91ID:DLYfLGcJ0
chromeの拡張機能でスクレイピングするのが最も安心安全
サーバーからすれば一番ユーザーに近い
IEは対応してないどころかもうすぐなくなる。

そういやvbaのブラウザはどうなるんだろ?
2022/01/22(土) 10:08:57.53ID:r24PNXTk0
for i= 1 to 100 step 1
#If conEnv = 1 Then
 ans = d1 * d2
#Else
 ans = d1 / d2
#End If
Next i

こんな感じに条件付きコンパイルをしてる場合、
ループ毎にIF判定してるんですか?
559デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/22(土) 10:56:45.31ID:DLYfLGcJ0
>>558
しない
条件つきコンパイルってのは、実行前にコードを書き換えるようなものと思って良い。実行後は消えて無くなると思って良い。
>>558は、以下と同等に解釈される

Sub foo()
For i = 1 To 100 Step 1
conEnv = 1
ans = d1 + d2
Next i
End Sub

ちなみにこれも上記と同じ。 ans = d1 * d2 は実行されない
for i= 1 to 100 step 1
conEnv = 1
#If conEnv = 1 Then
 ans = d1 * d2
#Else
 ans = d1 / d2
#End If
Next i

分岐させたいならこう
for i= 1 to 100 step 1
#conEnv = 1
#If conEnv = 1 Then
 ans = d1 * d2
#Else
 ans = d1 / d2
#End If
Next i
560デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/22(土) 11:00:33.05ID:DLYfLGcJ0
あと、下手に条件つきコンパイルは本当にやめたほうがいい。絶対にややこしくなる
唯一使える最適な場面は、コンパイル時にエラーが起こる可能性がある箇所。
パッと思いつくのは、バージョン違いへの対応程度

テスト環境の切り替え〜という人もいるけど、関数でどうこうするのと変わらん
2022/01/22(土) 12:09:48.37ID:r24PNXTk0
>>559
ありがとうございます
質問の後で気付いてやってみたステップ実行でも
ループ毎にIF判定やってませんでした
2022/01/22(土) 12:12:56.15ID:Zx7T2GTSM
>>557
フォームに貼り付けるブラウザコントロールが標準で入ってるから、これは簡単には廃止できない
アプリは消えてもオブジェクトは残り続ける
2022/01/22(土) 12:58:31.26ID:2RwNzJk50
.netだとWebView2が使えて便利なんだけど実装されないかな
ついでにコントロールのスクロールをマウスでできるようにして欲しい
564デフォルトの名無しさん (ワッチョイ 6e8e-SRyr)
垢版 |
2022/01/22(土) 13:04:36.26ID:6LO0uF920
ID:DLYfLGcJ0

こいついつもの馬鹿か
565デフォルトの名無しさん (ワッチョイ 8d68-e0vW)
垢版 |
2022/01/22(土) 13:13:07.59ID:DLYfLGcJ0
笑w
2022/01/22(土) 13:50:16.42ID:RiKtYPqw0
頭痛が痛い
2022/01/22(土) 19:51:56.45ID:NrxysVpy0
バファリン飲め
2022/01/22(土) 22:48:31.49ID:XmCgkfSL0
頼んでもないのに長々と知識披露してくる人ってなんなんだろうね?
569デフォルトの名無しさん (ワッチョイ a768-kzOy)
垢版 |
2022/01/22(土) 23:15:30.08ID:DLYfLGcJ0
知識の共有だろ
俺は好きだから長文どんどん書いていいぞ
歴史的経緯とかがあると尚グッド
570デフォルトの名無しさん (ワッチョイ 7f8e-4Ql0)
垢版 |
2022/01/23(日) 00:04:39.53ID:MiYFwUbv0
>>569
馬鹿が嘘を書くなよ
571デフォルトの名無しさん (ワッチョイ a768-kzOy)
垢版 |
2022/01/23(日) 00:35:00.90ID:HSIItn8m0
めっちゃ怒ってて草w
2022/01/23(日) 00:38:42.06ID:sfiZCcaw0
>>569
TK80から語り出すがいいのか?
573デフォルトの名無しさん (ワッチョイ a768-kzOy)
垢版 |
2022/01/23(日) 00:41:37.63ID:HSIItn8m0
>>572
そこまで遡るとさすがにエクセル関係なくなるような
俺はいいけど、他の人には迷惑だと思うぞ
2022/01/23(日) 13:50:31.72ID:SdYMRJnE0
今時5chの専門版に張り付いてる異常者なんて現実じゃ誰にも相手にされない教えたがりおじさんぐらいしか居ないんだから
その辺弁えてもっと敬意持って質問しろよ
575デフォルトの名無しさん (ワッチョイ a768-kzOy)
垢版 |
2022/01/23(日) 18:52:30.22ID:HSIItn8m0
条件付きコンパイルで、OSのバージョン違い以外の使い方ってありますか?
2022/01/23(日) 19:43:03.21ID:2ddsSarEM
>>575
Excelのバージョン違い
独自にデバッグモードなどを設定している場合

逆に、OSのバージョンによって作り分けるケースってそんなにないと思うなあ
577デフォルトの名無しさん (ワッチョイ a768-kzOy)
垢版 |
2022/01/23(日) 23:04:13.46ID:HSIItn8m0
ようやっと終わる

米Microsoftは1月19日(現地時間)、「Excel 4.0」(XLM)マクロを予定通りデフォルト無効化したと発表した。「Excel 4.0」マクロの利用を制限するオプションは昨年7
https://news.yahoo.co.jp/articles/8e4dd5e97b3b094d0d98e692b48e65864848136c
578デフォルトの名無しさん (アウアウウー Sa4b-ZIwK)
垢版 |
2022/01/24(月) 10:20:53.44ID:7Kajjflda
>>575
好きに使えばいいと思う
579デフォルトの名無しさん (ワッチョイ 275f-8IZx)
垢版 |
2022/01/24(月) 10:34:32.16ID:0XRM59Ri0
ClassモジュールとFunction と
多次元配列を使いまくると
優秀に見られるよ。
2022/01/24(月) 11:54:29.81ID:5FJvHF790
引き継いだ人が困るわ
581デフォルトの名無しさん (アウアウウー Sa4b-ZIwK)
垢版 |
2022/01/24(月) 12:20:26.60ID:0SZZxpxwa
コメント残せ
2022/01/24(月) 13:00:01.29ID:5FJvHF790
コメント残したけど、後任の者がそもそもマクロの知識がないパターンがあったよ
その内に部署でマクロ禁止令が入ったよ
2022/01/24(月) 13:33:12.64ID:iw4K3rH6d
程度にもよるけどVBAのマクロ程度で禁止とかかなしいね
2022/01/24(月) 17:18:50.82ID:j9lgzOiA0
Webやhtmlのメールも危険だから禁止かな
2022/01/24(月) 17:21:37.60ID:WNHxRwF80
普通の事務員にメンテできるようなもの残せと言われればそうするしかない
2022/01/24(月) 17:27:47.92ID:xAZorvxa0
1セルの中に長大な式を書くようにならないかそれ。
2022/01/24(月) 18:12:53.56ID:JIfRBOPe0
パソコンの苦手な人材が来てもいいように、みんな紙と電卓でやればいいんじゃない?
2022/01/24(月) 19:32:09.39ID:QSZRM/el0
パソコン苦手な人にエクセル触らせんなよ
2022/01/24(月) 20:07:49.12ID:JR1WCq5+d
メインモジュールには処理の流れだけ書いて後はCall Function Classから引っ張れって言う風潮があるのがイマイチ理解出来ない。あと出来るだけ変数に入れて処理しろって言う風潮も。

人に引き継ぐ時に初見で見たこともない変数名や関数名を解読させたりいちいち流れをぶった斬ってあちこちプロシージャ間を行ったり来たりさせるのが本当に可読性を上げることに繋がんのか?
2022/01/24(月) 20:23:59.31ID:E1L8nOD4M
規模の大きなプログラミングをするなら重要
でもVBAで規模の大きなプログラミングをする時点で間違っているのでそんなことはしなくていい
591デフォルトの名無しさん (ラクッペペ MM8f-DS0X)
垢版 |
2022/01/24(月) 20:25:55.48ID:iJSI2wDaM
は?
変数なんか使わずに Range("A1") を直接使ってるよ
分かりやすいからね
2022/01/24(月) 20:47:26.58ID:xAZorvxa0
>>589
「グローバル変数」とか「構造化プログラミング」とか「オブジェクト指向」とかググってみればいいかも。

「関数型プログラミング」までは行かなくてもいいと思うけどw
2022/01/24(月) 21:02:33.82ID:JIfRBOPe0
そりゃ読む人による
知識と経験がある人にとってはセオリー通りに書かれてる方が読みやすい
594Mickey (オッペケ Sr7b-8IZx)
垢版 |
2022/01/24(月) 21:25:54.13ID:HmIH0Tmsr
Excel は使う人によっては、ただの表計算ソフトでしかないし、

優秀なプログラマーが、VBAを駆使すれば、大規模なデータベースのフロントエンドや
ActiveDirectory等、インフラ管理のツールにもなる。

Windows環境でなら、Excelがあれば、ほぼできない事は無いかと。
Accessなら、なおさらのこと。
2022/01/24(月) 21:31:57.98ID:w+KnMuAHM
>>592
VBA でオブジェクト指向は要らんやろ
2022/01/24(月) 21:32:13.51ID:9LuFH7rJ0
シート参照難しいんですが…

フルパス必要な時とそうでないときのかき分けがさっぱりです
597デフォルトの名無しさん (オッペケ Sr7b-8IZx)
垢版 |
2022/01/24(月) 21:33:33.84ID:HmIH0Tmsr
弘法筆を選ばず と言うが、
無能なプログラマに限って
プログラミング言語にこだわったり
たかが、Excelマグロだろ?w
などと見下す。

もっとも安価に、いろんなシステムを組める
至極優秀なツールだよ。Excelは。


まあ、俺なら開発環境なんて、
メモ帳だけで十分だけどね。
2022/01/24(月) 21:34:37.02ID:hdMr3QU+0
わかんなかったら覚えろよ勉強しろよ 努力無しで成果が出るとでも思ってんのか?
工場の現場で加工機のプログラムわかんないから手動で加工していいか?ってダダこねてるのと一緒だぞ
だいたいこんくらいでいいか なんてぇ精度で製品造るつもりか?1/1000精度求められる加工で?
それを認める上司も上司だ 一歩でも前に進む気概が無いから他の国に後れを取るってぇことにはよ気付け
2022/01/24(月) 21:36:18.43ID:HmIH0Tmsr
>>595

ん?
VBA自体がオブジェクト指向言語だけどね。

まぁ、ここのあたりは、不毛な宗教論争になるので
ここまでとするが。
600デフォルトの名無しさん (ワッチョイ a768-kzOy)
垢版 |
2022/01/24(月) 21:39:41.61ID:0uV4r5KA0
workbookという巨大なオブジェクトがあるじゃろ
601デフォルトの名無しさん (オッペケ Sr7b-8IZx)
垢版 |
2022/01/24(月) 21:43:12.08ID:HmIH0Tmsr
WorkBook、正直邪魔だよね。

少人数の給料計算くらいなら良いけど

大量のデータ管理には重くて使えないし。
602デフォルトの名無しさん (ワッチョイ 7f8e-4Ql0)
垢版 |
2022/01/24(月) 21:51:17.38ID:aObfNlgq0
>>601
馬鹿にはわからん使い方があるのだろ
2022/01/24(月) 22:27:03.42ID:0XRM59Ri0
そういえば初心者の頃は、配列とか定数変数の代わりに
WorkBook を使ったりしてたな。
これはデメリットだらけ。
2022/01/24(月) 22:46:11.44ID:5FJvHF790
マクロ禁止になった理由はいろいろあるけど、一番は属人化になるからという理由でしたわ。
関数も長々とした入れ子はダメというローカルルールできた。
605デフォルトの名無しさん (ワッチョイ 275f-8IZx)
垢版 |
2022/01/24(月) 22:53:36.30ID:0XRM59Ri0
職場を無能だけで構成しようとすれば
そうせざるを得ない

そこが欧米企業と旧日本型企業との違い
2022/01/24(月) 22:58:12.91ID:0XRM59Ri0
セルに五重くらいのIF,OR文の関数を入れて
悦に浸ってるオッサン居たけど
アホにしか見えんかったわ
2022/01/24(月) 23:00:41.29ID:5FJvHF790
あと、上席が言うには「うちはVBAを書くのが仕事じゃないんだから、そればっかにとらわれて本来の業務を疎かにしないでくれ」と。
2022/01/24(月) 23:09:57.20ID:0XRM59Ri0
出たw
大多数の日本企業の実態がソレ。

業務効率化という
意識が30年遅れてます、とね…

VBAは隠れてやった方がええよ。
2022/01/24(月) 23:10:32.49ID:0XRM59Ri0
アテクシなんざ
手作業で、一日かかる作業
(大量のドキュメント作成)を
マクロで1時間で終わらせて
残りの時間はVBAで遊んでましたぜ。

Word VBAも出来ると素敵だよ。
2022/01/24(月) 23:32:47.93ID:j9lgzOiA0
>>589
自己流だけどメインルーチンはあらすじ、グローバル変数は登場人物みたいな感じで使ってるわ
フォームやシートに書くコードはイベントハンドラくらいで、ちょっとでも長ければ似た名前のモジュール(Form1bみたいな)の中に
コントロールごとに分類して関数なりなんなりを作ってそれを呼んでる

複数のフォームで使い回せるものは複数のフォーム名が入ったモジュールを作って入れてる
プロシージャ名はフォーム名_コントロール名(略せれば略)_処理名で統一してる

グローバル変数もPbという名前の専用のモジュールに突っ込んでる
登場人物一覧みたいな感じで参照ができる

多分これでだいぶ解りやすくなると思うんだが……
VBAもxmlコメントが使えれば解りやすいんだけどな
2022/01/24(月) 23:42:30.31ID:veuEuZMi0
VBAなんて自分の作業効率化するときだけにしとき
他人に使わせて良い事無い
612デフォルトの名無しさん (ワッチョイ a768-kzOy)
垢版 |
2022/01/24(月) 23:43:46.42ID:0uV4r5KA0
>>607
最初の一回だけ構築すれば、後は全自動・ミスなしの瞬殺なのにねぇ
2022/01/24(月) 23:52:36.12ID:aJKkYLDpd
>>607の上席が、小手先の作業効率改善オナニーばっかりやってないで業務そのものを見直せという意味で言ってるんだとしたら極めて正しいと思うけどね
VBAで簡単に自動化できる業務なんてそもそもほとんどが無意味なんだよ
614デフォルトの名無しさん (ワッチョイ a768-kzOy)
垢版 |
2022/01/24(月) 23:56:01.84ID:0uV4r5KA0
それが出来れば苦労せんわw
末端から少しずつ見直していく事で、大きな改善ができるようになる
いきなり改善しようとすると、大体無理が出る、というか出た。
615デフォルトの名無しさん (ワッチョイ 7fda-ZIwK)
垢版 |
2022/01/25(火) 00:50:53.14ID:Y5KLOHGW0
excel VBAは手段であって目的ではない
616デフォルトの名無しさん (ワッチョイ 275f-8IZx)
垢版 |
2022/01/25(火) 01:30:31.84ID:mNb42c/J0
日本の場合、会社組織そのものが、非効率の根源なんだけどね。

上層部は社内での自分の立場を確立するために、イエスマンで固める伝統が根付いてて
下から変えるのは、ほぼ不可能。

その意味から言って、コロナ禍は日本にとって救いの神だった。

コロナ禍がなかったら、マズゴミの情報鎖国で、あと10年以上、変わらずに
気がついた時にはASEAN諸国にまで、IT技術と経済で抜かれてただろう。

おそロシア
2022/01/25(火) 02:03:41.94ID:mNb42c/J0
>>613

まさに典型的な、俗人的業務の思考。

個人の力量に関係なく、最高パフォーマンスで会社がまわるのを考えるのが
企業としての真の効率化。

いまだに営業職がメインの日本型企業は特に糞。

GAFAM等、欧米のトップ企業に、そんなカビ臭い会社が無いのを見れば明らか。
2022/01/25(火) 04:51:07.51ID:jYjAr1e40
>>604
>関数も長々とした入れ子はダメというローカルルールできた。

それはちょっと残念かも
呼び出す関数の役割が明確化されていれば
どんなに入れ子が多くなっていても
一度内容を理解してしまえば
そんなに読み込むの苦労しないと思うし
場合によっては途中から奥まで
読まなくても解るようになるのに。

デコレーターパターンみたいのを
使いたい場合はどうするの?
2022/01/25(火) 06:27:16.77ID:T29wyfYtM
>>599
> VBA自体がオブジェクト指向言語だけどね。
VBAのオブジェクト指向はあまりにも中途半端
Workbook や Worksheet 等のオブジェクトを扱えるけどオブジェクト指向の知識はほとんど要らん
Let と Set の違いがわかれば充分
2022/01/25(火) 06:40:37.19ID:nnTBaJb2M
>>604
嫌がらせに100万行 x 1.6万列目のセルに途中の計算式入れて50万行目 x 8万列目辺りからoffset関数で参照だな
2022/01/25(火) 07:26:11.67ID:jYjAr1e40
>>619
まぁMicrosoftが元々中途半端で終わらせるのが好きだからしょうがない。
旧VB6とVB.Netに切り替わったときもそうだった。

とは言ってもObject指向知ってるのと知らないのではロジック作成するときの視野の広がりが変わってくる。

何かのロジック組むときにどういう方法で組むのがモアベターか、取れる手段が増えてくるよ。
2022/01/25(火) 07:56:08.67ID:ZGZoh/tR0
>>618
途中計算用のシートを作れば良いのでは
2022/01/25(火) 08:05:53.28ID:vd4sNBPHM
>>621
取れる手段増えてもVBAで使えなきゃ意味ないだろ
てか余計ストレス溜まるわ
2022/01/25(火) 08:50:51.46ID:j/cJSCFFd
>>607の例は結局どんなことして出した結果なのかを証明できなければ使えないってことも含まれてるんでしょ
そういう場所では非効率でも電卓なりつかえってことさ
2022/01/25(火) 09:32:01.78ID:vxmGrPnAM
上席から見たら本来業務を疎かにしてVBAで遊んでるように見えてるんだろ
そりゃマクロ禁止にするわな
2022/01/25(火) 10:18:32.74ID:1FWjey8wr
>>619

worksheet や workbook も確かにオブジェクトだけど
オブジェクト指向のオブジェクトとは意味が異なるよ。

オブジェクト指向言語であるか否かは、C言語と、
C++やJavaの違いなので。
2022/01/25(火) 10:26:48.56ID:1FWjey8wr
本当にVBAプログラミングがやりたいのなら
仕事を変えるしか無いわな。

いまだに80年代のようなやり方を変えずに
やるのを良しとする老害が、上席に居るような
会社に、残念ながら未来はない。
2022/01/25(火) 10:46:46.71ID:qTksV7dH0
製造業の事務員にVBA使える人一人欲しいんだけど事務で求人しても碌なの来ないんだよなぁ
629デフォルトの名無しさん (ワッチョイ a768-kzOy)
垢版 |
2022/01/25(火) 10:53:10.17ID:bToP/k2z0
>>628
ここで募集してみては?
リモートでやってくれる人がいるかもしれない
2022/01/25(火) 10:58:19.04ID:CplOG10X0
同志達の職場もいろいろ大変だね書き込み見ていると。うちだけじゃないのね。
長い計算式はバグがあった時に困るから作業列を使えとお達しがありましたよ。
うちの女の子達は複雑なのはあまり直せないから。
マクロはやはり過去に作った人が退職して誰も直せないから禁止になったみたい。
2022/01/25(火) 11:00:59.60ID:CplOG10X0
>>620
その手があった!
じゃなくてそれやるのやめてけろー泣
2022/01/25(火) 11:06:46.89ID:j/cJSCFFd
VBA使いたいから仕事辞める人なんていないでしょ
>>628
ここにいるぐらいなら自分でやればいいのでは
2022/01/25(火) 11:15:20.00ID:a/XPvOPlM
俺を雇ってくれ
必要な能力はVBAだけでええんか?その業種に固有の知識が必要だとアウトかもしんないけど
634デフォルトの名無しさん (ワッチョイ a768-kzOy)
垢版 |
2022/01/25(火) 11:21:08.63ID:bToP/k2z0
>>630
基本的には作業列が良い
ただその作業列も、右に言ったり左にいったり、ではなく、
左の数字を右に流していく、最後は一番右に書く、
のように統一していないと、やっぱり読みづらくなる
2022/01/25(火) 11:59:13.06ID:NVa7IPQ3M
>>626
> worksheet や workbook も確かにオブジェクトだけど
> オブジェクト指向のオブジェクトとは意味が異なるよ。
どこが違うというのか?

> オブジェクト指向言語であるか否かは、C言語と、C++やJavaの違いなので。
意味不明
2022/01/25(火) 11:59:36.95ID:HS+/VKuh0
その業種独特とか固有とかそこらじゅうに転がってるぞ それを読み解くチカラ無くしてVBAだけ 等とは笑止千万
だいたいが、VBAどころかExcelすら無関係でも彼らはそれをこなしてる 先ずはそこがボーダー
そこを起点に、それが効率化できるか改善できるか、でようやくVBAの出番
改善や効率化が不要なら出番すら無い むしろ出しゃばるな 今のままでいい  それを見極めるのが上司上長の役目

あと無意味に改行する奴
637デフォルトの名無しさん (ラクッペペ MM8f-DS0X)
垢版 |
2022/01/25(火) 11:59:54.76ID:7EThQbwZM
オブジェクティブCは?
638デフォルトの名無しさん (アウアウウー Sa4b-ZIwK)
垢版 |
2022/01/25(火) 12:15:21.94ID:zQXNzX5la
>>628
自分ができないのにできる人が来ないとか言うなよ
2022/01/25(火) 12:31:10.86ID:zFwMgogDd
「オブジェクト構造」と「オブジェクト指向プログラミング」を混同していませんか
640デフォルトの名無しさん (ワッチョイ 7fda-ZIwK)
垢版 |
2022/01/25(火) 12:42:30.48ID:Y5KLOHGW0
自分の要求を完璧に実行してくれる天才に
金を払わないでもやってくれる人ってなかなかいないんだよね
2022/01/25(火) 13:18:00.17ID:j/cJSCFFd
事務員に+αでVBA知識なんだから月給なんて20万程度での募集なんでしょ
やめとき
642デフォルトの名無しさん (オイコラミネオ MMdb-fJoz)
垢版 |
2022/01/25(火) 14:06:19.97ID:WI95qNC1M
テスト
643デフォルトの名無しさん (オイコラミネオ MMdb-fJoz)
垢版 |
2022/01/25(火) 14:10:24.68ID:WI95qNC1M
>>628
詳細をお伺いしたいので、よろしければ一度ご連絡下さい
vba_20220125@yahoo.co.jp
2022/01/25(火) 14:50:40.66ID:CplOG10X0
余程VBAが好きならその仕事を受けるのはアリだと思いますが、それでも知らない会社のシステム組むのは恐いですな。
何かあった時の各種トラブル対応を完璧にできる人じゃないとキツイのでは?
2022/01/25(火) 14:52:58.84ID:CplOG10X0
>>634
なるほど。同志の言うとおり
作業セルも作り方が人によりけりなので統一すべきですね。
646デフォルトの名無しさん (ワッチョイ a768-kzOy)
垢版 |
2022/01/25(火) 15:04:52.93ID:bToP/k2z0
大介って光2コンボ好きなのか
647デフォルトの名無しさん (ワッチョイ 8724-ZIwK)
垢版 |
2022/01/25(火) 16:23:40.81ID:KtMUUOjX0
右から来たものを左へ受け流す
2022/01/25(火) 19:20:32.27ID:mNb42c/J0
Excel VBAで、Windowsサーバの管理とか
OracleとかのDB連携システムを構築できれば
月収40〜50万は余裕でもらえるけどね。

一般職よりIT技術者になった方が
年収は一気に上がるのに。
2022/01/25(火) 19:43:09.58ID:bToP/k2z0
>>648
それはさすがにMSSQLサーバー必須
vbaはほとんど使わない

構築だけならアホみたいに余裕
2022/01/25(火) 20:00:58.11ID:mNb42c/J0
ん?意味わかってないね…(汗

Excel のフォームをフロントエンドにして
データベース検索できるようにするんだよ。

Excelでボタン押すと、入出力フォームが出てきて
データベースへの読み書きを簡単にできるってやつ。

VBA上級者なら簡単に作れる。
2022/01/25(火) 20:05:26.58ID:mNb42c/J0
あとは、 Excelフォームから、WindowsサーバにAPIでアクセスして
ハードウェアのリソース管理とか、AD管理できるようにするとか。

サーバーの監視部隊が定期的に手作業でやってる管理業務を自動化する。

AD とは、Active Directory のことね。
2022/01/25(火) 20:09:23.34ID:mNb42c/J0
>>649
SQL Serverじゃなくても、VBAから
OracleでもMySQLでも連携可能だよ。
2022/01/25(火) 20:16:10.91ID:ZGZoh/tR0
>>651
フロントエンドにExcelを選定する時点で怪しすぎるわ
2022/01/25(火) 20:18:03.17ID:ncFbLrOnM
VBAでイキってて草
2022/01/25(火) 20:19:27.46ID:mNb42c/J0
もちろん、DBの深い知識とか、Windowsサーバを
管理できる知識がないとできないけどね。

どちらもSQLの読み書きは必須。
2022/01/25(火) 20:19:40.81ID:CplOG10X0
酷い言い方する人は、VBAはプログラミングではないと言いきる人いますからね
2022/01/25(火) 20:21:51.60ID:Y5KLOHGW0
吾輩は猫であるとかいう人もいるからな
2022/01/25(火) 20:22:00.61ID:bToP/k2z0
>>653
うん・・・
SQLServerの情報は、accessで引っ張って来て終わりなんだ
VBAは使わないはず
2022/01/25(火) 20:22:19.53ID:mNb42c/J0
ん?Access でも、Word でも作れるよ。

MS Office を使えばコスパ良く自動化できる
ってのを、割と知らない無能が多いから
ヒントを書いたまでだけど?
2022/01/25(火) 20:25:27.78ID:mNb42c/J0
なぜかバカほど高価なミドルウェアを使いたがるけど
VBAで自動化したらタダでできるのに。

オレはVBSでも作ったけどね。
VBSならメモ帳だけでプログラミング可能。
2022/01/25(火) 20:28:01.06ID:mNb42c/J0
>>656

ああ居る居る。
Javaとか、Pythonじゃないととか…
ただマウント取りたがる無能なんだろうね。

VBAは、Officeのリソースしか使わないから
コストパフォーマンス最高なのに。
2022/01/25(火) 20:31:39.60ID:mNb42c/J0
>>658

Accessなら、標準でSQL Serverとの連携は
VBA使わなくても簡単にできるけど、

フォームを使いたい場合は、VBA必須。
2022/01/25(火) 20:35:14.51ID:mNb42c/J0
MS Officeが無い場合でも JavaScriptでも
できるけど。

とにかく色んな自動化は、格安でできるってこと。

弘法筆を選ばずとはこの事。笑
2022/01/25(火) 20:38:14.03ID:mNb42c/J0
まあ、給料上げたいなら
努力して頑張りましょう。
2022/01/25(火) 20:40:51.27ID:f4GoSiUSM
Excel VBAでも作れるけどC#とかの方が全然楽だぞ
定期的なADの操作とかならPowerShellでいいし
VBAしか書けないというのでなければ.NETFrameworkの恩恵を受けられないVBAの出る幕はない
666デフォルトの名無しさん (ワントンキン MM3f-pR+k)
垢版 |
2022/01/25(火) 20:41:24.90ID:4M+ZFVtxM
いつもの馬鹿か?
667デフォルトの名無しさん (ワッチョイ 7f8e-4Ql0)
垢版 |
2022/01/25(火) 20:44:12.39ID:EmlIIuq10
ID:mNb42c/J0

いつもの知ったかの馬鹿?
2022/01/25(火) 20:46:43.85ID:mNb42c/J0
コスパの話をしてんのよ。

わかるかな?無能さん。
669デフォルトの名無しさん (ワッチョイ 7f8e-4Ql0)
垢版 |
2022/01/25(火) 20:58:23.53ID:EmlIIuq10
>>668
無能はお前だろ、馬鹿が
コスパなら>>665が書いてるようにPowerShellだろうが
2022/01/25(火) 21:01:31.55ID:mNb42c/J0
もちろん、PowerShellでも作れるし
他にもテキストベースなら
JavaScript、VBSでもつくれるし。
2022/01/25(火) 21:01:47.49ID:7v92mOzc0
VBAスレなのになぁ
2022/01/25(火) 21:04:24.62ID:mNb42c/J0
無能はスマソ。
Windows環境なら、簡単に自動化する方法は
沢山あるよって話でした。

さようなら。
673デフォルトの名無しさん (ワッチョイ 7f8e-4Ql0)
垢版 |
2022/01/25(火) 21:28:25.73ID:EmlIIuq10
>>672
話しを誤魔化して逃げるのかよ、馬鹿
2022/01/25(火) 21:31:06.39ID:Ezk4VrXqM
放置しとけよw
別に今時のWindowsならC#でもVB.NETでも使えることすら知らんみたいだし
2022/01/25(火) 22:00:31.09ID:+A6ImuRo0
>>604

なんかもうため息というかなんというか。要は上司の「俺が理解できないから」だよね。
悪い意味での日本流。東アジア流かもしれん。

偶然の産物かもだけど、「長々とした入れ子は駄目」は賛成する。

4段以上のネストとか30行以上の関数とか俺の頭じゃバッファオーバーフロー。
2022/01/25(火) 22:08:37.63ID:+A6ImuRo0
If( 正当条件1 ) Then
  If( 正当条件2 ) Then
    If( 正当条件3 ) Then
      If( 正当条件4 ) Then
        長〜い正当処理1
        長〜い正当処理2
        長〜い正当処理3
      Else
        エラー4
    Else
      エラー3
   Else
    エラー2
  Else
   エラー1
End If

こんなの見ると、「初手でエラー全部弾けよ」と思う。
2022/01/25(火) 22:11:24.49ID:Zmf/5OMz0
まあまあ、自分が昔組んだコード見ると何でこんな面倒なことやってたんだろうってみんなが通る道だし
2022/01/25(火) 22:16:18.25ID:bToP/k2z0
>>676
こういう場合どうすべきかね
フラグ立ててfalseならexitsubにしてしまうか
gotoかエラーコードで最後に飛ばすか
679デフォルトの名無しさん (ワッチョイ 275f-8IZx)
垢版 |
2022/01/25(火) 22:21:46.97ID:mNb42c/J0
いま、Youtubeひろゆきライブ配信やってるから

よく聴いて、社畜奴隷の洗脳を解きなさいな。
2022/01/25(火) 22:23:22.62ID:CplOG10X0
Office田中先生、近々ようつべに復帰するみたいですね。
内容は当たり外れあるからアレだけど、あの方の喋りはひょうきんで楽しい。
2022/01/25(火) 22:24:31.01ID:CplOG10X0
>>677
恥ずかしくなりますよね昔のシート見ると。
当時の自分は何がしたかったのかみたいな。
2022/01/25(火) 22:32:38.66ID:T9L9nj8SM
>>676 なら

If Not 正当条件1 Then
 エラー1
ElseIf Not 正当条件2 Then
 エラー2
ElseIf Not 正当条件3 Then
 エラー3
ElseIf Not 正当条件4 Then
 エラー4
Else
 長〜い正当処理1
 長〜い正当処理2
 長〜い正当処理3
End If

とする、面倒なのは

If 正当条件1 Then
 ちょっとした処理1
 If 正当条件2 Then
  ちょっとした処理2
  If 正当条件3 Then
   長〜い正当処理1...3
  Else
   エラー3
 Else
  エラー2
Else
 エラー1

のケースでこの時はルーチン分けるかGotoで途中脱出させると思う
2022/01/25(火) 23:09:39.57ID:ZGZoh/tR0
Select Case 0
Case 正当条件1
エラー1
Case 正当条件2
エラー2
Case 正当条件3
エラー3
Case 正当条件4
エラー4
Case Else
長〜い正当処理1
  長〜い正当処理2
  長〜い正当処理3
End Select

どやさ
2022/01/25(火) 23:20:00.64ID:Y5KLOHGW0
Call 長い正当処理1to3
2022/01/25(火) 23:22:36.33ID:DW1OPm0+0
>>676
VBAはショートサーキットしないからIfを何段も並べた方が効率いい場合がある
けど、この場合はエラーも4種類だから判定式を1つにまとめるわけにいかない

この書き方が読みにくいと思うならIfからエラーまでをそれぞれ4つのFunctionに飛ばすかな
2022/01/25(火) 23:29:04.02ID:UWkwB/rRd
頭が悪いからずっとこれだわ

If エラー条件1 Then
エラー処理
Exit Sub
End if

If エラー条件2 Then
エラー処理
Exit Sub
End if

If エラー条件3 Then
エラー処理
Exit Sub
End if

正当処理
687デフォルトの名無しさん (ワッチョイ 7f8e-4Ql0)
垢版 |
2022/01/26(水) 01:52:17.01ID:ULWJ4UsX0
>>679
馬鹿が底の浅い知識をひけらかして嘘を書いて、捨てゼリフ吐いて逃げたのにノコノコ戻ってきて再び捨てゼリフと
馬鹿は自分の拙さを知らずに馬鹿な自分が見えるだけの世界が全てだと思っているから馬鹿なんだよ
2022/01/26(水) 06:27:00.95ID:0epn3Uk/M
>>686
サブルーチンに切り出せるならそれが一番見易い
2022/01/26(水) 11:26:17.93ID:RGV8ouxS0
パッと思い付いてすぐコードを書ける自体有能だと思いますよ。
みんな凄い。
2022/01/26(水) 11:54:57.36ID:xGOCvJmUr
たしかにVBとか普段書かないからif thenおかendなんて思い出せないよな
2022/01/26(水) 13:10:14.89ID:q0HuFlPw0
ちゃんと単体結合テストやるところの場合だと
処理毎に、Function に分けるのが吉。
2022/01/26(水) 14:42:22.30ID:ip0aOcF2M
みんな試行錯誤してきたのがよくわかる
2022/01/26(水) 16:16:07.18ID:RGV8ouxS0
Excel全般て本当に努力しないと使えないってのはウソじゃないですな
694デフォルトの名無しさん (オッペケ Sr7b-8IZx)
垢版 |
2022/01/26(水) 16:21:39.28ID:ykAsNY55r
Excel VBAビギナーの頃
5000万の案件をやり遂げた事あるけど
VBの入り口としては良いよね。

昔はVBAを入り口に、VB6.0 に移行できたから
良かったんだがな。
2022/01/26(水) 18:39:36.99ID:WAP1y4aa0
>>623
まぁ他言語をやってない奴の意見なんてそんなもんだろな。
VBAで使えるものもあれば使えないものもある。

テンプレートメソッドパターンなんかは使えないけどストラテジーパターンなんかは使える。

そういうの使った際に分岐が減るからUT楽になるかなー、とか、それ使う程の規模かなー、とか
楽な方を選べるってことだよ。
2022/01/26(水) 18:53:39.06ID:YVr9NW6iM
>>695
> ストラテジーパターンなんかは使える。
無理じゃね?
697デフォルトの名無しさん (ラクッペペ MM8f-DS0X)
垢版 |
2022/01/26(水) 19:15:39.62ID:xR2ItXtPM
グローバルしかない古代BASICに比べれば天国じゃよ
2022/01/26(水) 20:11:08.97ID:+JbM4Kut0
みんなやっぱ困ってるお題なんだなこれ。反応ありがとう。

俺は

Function Func(Args)

 Func = TestArguments( Args ) // ←このへんは異論出るかもだけど、内部関数で引数テストはありだと思う。

 If Func <> Normal Then
  Exit Function
 EndIf

 Call 長〜い処理1をファンクションにしたもの
 Call 長〜い処理2をファンクションにしたもの
 Call 長〜い処理3をファンクションにしたもの

End Function

てな感じをイメージしてた。VBAの文法的にはむちゃくちゃかもだけど、最近書いてないのでそこは許してw

C風に

If ( (Func = TestArguments(Args))<>Normal ) Then て書けるのかな。
2022/01/26(水) 20:33:27.76ID:Rwt/NS3J0
エラーとしてまとめるってのを昔見たことあるけど、見づらいかなぁ

Sub Func()
On Error GoTo err

flg = True

If flg Then
err.Raise Number:=513, Description:="内容"
End If

' Call 長〜い処理1をファンクションにしたもの
' Call 長〜い処理2をファンクションにしたもの
' Call 長〜い処理3をファンクションにしたもの
Exit Sub

'エラー処理
err:
MsgBox err.Number & vbCrLf & err.Description
End Sub
2022/01/26(水) 20:50:31.29ID:8zLJqphFM
>>698
> C風に
> If ( (Func = TestArguments(Args))<>Normal ) Then て書けるのかな。
書けるけど君の思ったようには動かない、例えば
Work = (Func = TestArguments(Args))
は TestArguments() の戻り値が Func と同じなら True、違うなら False が Work に入るから、それと Normal を比較することになる
※ 実際には Func は再帰呼出しとなるが引数が指定されてないのでエラーになる
2022/01/26(水) 21:48:41.76ID:+JbM4Kut0
>>700
なる。ありがとう。
2022/01/27(木) 01:44:43.12ID:f6ffcYr70
>>699
わざわざエラーとかせずに、普通にGOTOで飛ばせばいい

局所的にGOTO使っても可読性は落ちないし、むしろわかりやすいと思ってる
2022/01/27(木) 02:13:33.38ID:iz7yjT+P0
後藤使うのは素人
2022/01/27(木) 07:25:42.82ID:EosWc+uxM
>>702
Raise ならエラー情報(番号とメッセージ)を伝えられると言うメリットがあるな
2022/01/27(木) 09:17:43.26ID:ISwrtggt0
>>702>>704
そう、この場合のメリットは>>704の通り
そして他のエラーもまとめることができるのでシンプルになる

>>703
この場合はgotoかエラー以外ない
2022/01/27(木) 09:49:42.96ID:jZ2PQbyQ0
>>696
何故そう思う?
2022/01/27(木) 10:10:14.97ID:pNJphUuoM
>>706
CallByName() とかを使ってやってやれなくは無いけど無理矢理感あるしな

Strategyパターンはアルゴリズムを記述するサブルーチンへの参照をデータ構造の内部に保持する。
このパターンの実現には、関数ポインタや関数オブジェクト、デリゲートのほか、オーソドックスなオブジェクト指向言語におけるポリモーフィズムと委譲、あるいはリフレクションによる動的ダック・タイピングなどが利用される。

VBAにもまともな関数ポインタがあればね…
2022/01/27(木) 10:41:53.58ID:jZ2PQbyQ0
>>707
そもそもクラスで普通に移譲が出来るんだから
出来るとは思わないか?
もっとも、継承が使えないので
Is a関係だろうがhas a関係だろうが
移譲に頼ることになるだろうけど。
2022/01/27(木) 11:20:16.68ID:NmFY0FMsM
>>708
ああ、インターフェースはあるから移譲はできるか
2022/01/27(木) 12:29:10.84ID:iz7yjT+P0
シンプル・イズ・ベスト。
スティーブ・ジョブズの信条でもあった。

凡才は複雑を好み、天才はシンプルを好む。
2022/01/28(金) 00:04:37.97ID:sv+QVprG0
WorkSheetのEventで、
テーブルのフィルタソート機能(昇順or降順)をユーザが使ったときのEvent
ってできるんでしょうか?
最悪、"フィルタ機能を使った"時点でも取得できれば。。。
2022/01/28(金) 00:19:09.31ID:6Z68BDtw0
>>711
ない
2022/01/28(金) 03:12:47.26ID:sv+QVprG0
>>712
まじですか、、、ありがとうございました。
2022/01/28(金) 12:32:58.97ID:EweXC9jR0
すんません、膨大なデータ量の集計を任されて困ってます。
例えばA1セルに
「1.5G」とあるものは
Gを取った上で1024を3乗し、B1に表示
「256M」とあるものは
Mを取った上で1024を2乗し、B1に表示
「504K」とあるものは
Kを取った上で1024を掛け、B1に表示
みたいな便利なことができる関数があれば教えて頂きたく。
SUBSTITUTEで文字を取ったりVALUEで数字だけ抜き出したりしてみても、そこに条件判定を組み込むことが出来なくて…。
2022/01/28(金) 13:00:06.93ID:6Z68BDtw0
>>714
Excelのバージョン書いて
2022/01/28(金) 13:09:05.83ID:tnq08GUKM
>>714
あんまりスッキリした方法じゃないけど、単位ごとに処理を分けて並べるぐらいしかないのでは
式はもうちょっと整理できると思うけど、とりあえず動くやつ
=IF(RIGHT(A1,1)="G",LEFT(A1,LEN(A1)-1)*1024^3,IF(RIGHT(A1,1)="M",LEFT(A1,LEN(A1)-1)*1024^2,IF(RIGHT(A1,1)="K",LEFT(A1,LEN(A1)-1)*1024,A1)))
2022/01/28(金) 13:43:11.42ID:EweXC9jR0
>>715
Microsoft 365 MSO(16.0.13801.21004)
>>716
本当にありがとう、助かります。
2022/01/28(金) 13:54:48.79ID:SUVzbVrJ0
powerとfindで考えてたけど、あんまり変わらんかった
2022/01/28(金) 14:06:54.61ID:54qKpcGwM
>>717
365 なら
=SWITCH(RIGHT(A1, 1), "G", 1024^3, "M", 1024^2, "K", 1024) * LEFT(A1, LEN(A1) - 1)
ただし、最後が GMK でなかった時はエラーになるのでその場合はIFERROR()で回避かな
2022/01/28(金) 14:10:37.46ID:pNi2eyZM0
集計なら式使わずに素直にVBAで処理すれば?
2022/01/28(金) 15:01:21.24ID:EweXC9jR0
>>719
ありがとう、それも問題なくいけました。
2022/01/28(金) 15:16:30.86ID:6Z68BDtw0
>>721
1K未満の単位の付かない数値に対応したやつ
=LET(u,RIGHT(A1,1),p,SEARCH(u,"kmg"),IFERROR(LEFT(A1,LEN(A1)-1)*1024^p,A1))
2022/01/28(金) 15:34:49.10ID:EweXC9jR0
色々ありがとう。使わせていただきます。
2022/01/28(金) 16:00:55.15ID:Pw9WEPs80
>>723
スピードを求めるならVBAでやった方がいい。
基本、VBAよりCELLに入れた数式の方が計算早いけど、
値を設定するたび再計算が走るのでは当然遅くなる。

単位をRightの1文字切り取って使うかInStrRevで1文字切り取って使うかは自由だし、
数値部分も最後のひと文字を抜いて数値変換する方法はどうにでもなるはずだから、
後は切り取った単位で冪乗計算の乗数を変えてあげれば簡単に行けるはず。
725デフォルトの名無しさん (ワッチョイ a95f-4IfY)
垢版 |
2022/01/28(金) 16:07:42.05ID:eEIZm5jJ0
膨大な行数になるようなら
関数よりマクロの方が断然軽い。

マクロの記録で瞬間でできるし。
726デフォルトの名無しさん (ワッチョイ a95f-4IfY)
垢版 |
2022/01/28(金) 16:08:26.59ID:eEIZm5jJ0
記述すら必要なし。
2022/01/28(金) 17:30:28.61ID:vX0FG/YWd
マクロの記録で瞬間て、どうやるの?
2022/01/28(金) 17:31:33.84ID:MK2zcruJ0
一瞬で
2022/01/28(金) 17:35:47.36ID:sJpZ8snBM
この程度なら関数の方が速いと思うぞ
マルチスレッドで動くし
再計算も変化したセルに関連するところしかやらないから問題にはならないと思う
2022/01/28(金) 17:36:25.47ID:u6dzd5iJd
ここはVBAスレだから質問はスレチだけどみんな優しいね
2022/01/28(金) 17:49:38.97ID:qJef3P+M0
>>730
はて?

「Excel VBA 質問スレ Part74」
とあるが?
2022/01/28(金) 17:57:01.02ID:sJpZ8snBM
> ここはVBAスレだから(計算式の)質問はスレチだけどみんな優しいね
733デフォルトの名無しさん (ワッチョイ 668e-ltXr)
垢版 |
2022/01/28(金) 18:14:34.37ID:ZcQb+fCA0
>>714
こんな奴に作業を任せるとかそもそも間違えている
2022/01/28(金) 18:21:53.88ID:np+yf06a0
今のエクセルの計算式は基本マルチスレッドでやるから、VBAでちまちまやるよりは早いだろうけど
このスレ的にはVBAで関数作るんが正解じゃないかと思った

で、ふと思ったが、VBAの関数をワークシートの計算式で使ったら、シングルスレッドで処理されるのかな
2022/01/28(金) 18:58:00.84ID:Qmj8/oz70
>>711
どうしても「そのテーブルのフィルタソート機能を使用した」時点を起点に処理を始めなければならないとすれば、
Worksheet_SelectionChangeで、その特定のテーブルの特定の列を走査して昇順または降順にデータが並んでいれば「フィルタソート機能を使った」と判定する、ぐらいしか思いつかない
たまたまソートする前にデータが整列してしまっていた場合や処理が完了した後に再度処理が走ってしまうので、どこかにフラグを作って管理する必要もあると思うけど
あと、ソートする列に数値と文字列やブール値などが混在している場合も判定に注意が必要かと思う
2022/01/28(金) 19:12:04.41ID:SUVzbVrJ0
>>730>>732
vbaより数式や標準機能が簡単なら、そっちで回答するだけだよ
「excel&vba」なのか「eccel|vba」かは解釈次第だが、俺は後者だと思う
2022/01/28(金) 19:24:01.89ID:qlKzmgV90
7時30分から30分ずつ加算した時刻をコンボボックスに入れるやり方をおしえてください

For i = 1 To 19
UserForm1.ComboBox5.AddItem Format(DateAdd("n", 30, "7:30"), "h:mm")
Next i
2022/01/28(金) 19:35:31.95ID:sJpZ8snBM
>>734
> で、ふと思ったが、VBAの関数をワークシートの計算式で使ったら、シングルスレッドで処理されるのかな
ドキュメントは見たことないけどVBA部分はシングルだろうと思う
マルチで走るとグローバル変数で競合したとき困るし
2022/01/28(金) 19:40:10.55ID:GYI6WCqI0
VBA専用だけどExcel全般もOK
Excel板と仲悪い理由だけは分かった。
2022/01/28(金) 19:41:52.43ID:sJpZ8snBM
>>737
Dim T As Date
T = TimeSerial(7, 30, 0)
For i = 1 To 19
UserForm1.ComboBox5.AddItem Format(T, "h:mm")
T = DateAdd("n", 30, T)
Next i
2022/01/28(金) 19:55:14.07ID:PEhFKy76d
power queryと変数定義関数で、VBA使わずともかなりのことができるようになったよね
ローコードツールみたいだなと思う
2022/01/28(金) 20:01:26.98ID:XaG/+jlyM
>>735
> Worksheet_SelectionChangeで、その特定のテーブルの特定の列を走査して昇順または降順にデータが並んでいれば「フィルタソート機能を使った」と判定する、ぐらいしか思いつかない
そんなことしなくてもWorkSheet.AutoFilterMode見て、WorkSheet.AutoFilter見たらいいだけ
2022/01/28(金) 20:13:02.61ID:qlKzmgV90
>>740
ありがとうございます
2022/01/28(金) 21:49:05.63ID:Qmj8/oz70
>>742
テーブルらしいので、WorksheetじゃなくてListObjectを見ないと判別できない
あと少なくとも自分には、AutoFilterにはフィルタソートをかけたかどうかを判別できるものが見つけられなかった
(フィルタソートしてもAutoFilter.FilterModeはFalse)
もし環境で動作が異なるのならごめんなさい
2022/01/28(金) 22:21:03.74ID:0dNIFpO5M
>>744
> テーブルらしいので、WorksheetじゃなくてListObjectを見ないと判別できない
ああ、そりゃすまん

> あと少なくとも自分には、AutoFilterにはフィルタソートをかけたかどうかを判別できるものが見つけられなかった
手元に環境ないから試せないけど
ListObjects(...).AutoFilter.Filters(...).On
じゃねーの?
2022/01/29(土) 00:40:00.86ID:d67hOlZf0
図書館に「はじめてのPower Automate Desktop」ていう本があったので借りてみたんだけどよ。
VBAでは10-20行ぐらいのエクセルの処理を、40ページぐらいかけて説明してたわ。
やってることは、VBAでやるコマンドをGUI操作でやってるような感じ。
どう考えても、VBAより簡単とは思えんしむしろVBAのほうが簡単じゃねーの?
2022/01/29(土) 02:38:30.78ID:wvbeuCX/d
>>746
馬鹿には違いがわからんだけだろ
2022/01/29(土) 06:07:15.34ID:S/AYuT160
AWS など、Linux は逆。
GUIを排除して、コード化する。IaC(Infrastructure as Code)

AWSのGUIで設定したら、人によって間違うから、
どのボタンを押すなど、ソースコードで書いて、Terraform で実行する

これなら、Terraformのコードをサーバーへ転送して、実行するだけで環境構築できる
749デフォルトの名無しさん (ワッチョイ a95f-4IfY)
垢版 |
2022/01/29(土) 06:12:15.60ID:nI5CwbIZ0
いや…VBA (VB6)を作った人は、相当優秀やな

昔、VB6 でフリーウェア作ったり、楽しかったわ…
2022/01/29(土) 07:43:57.70ID:p3H2eYK50
>>746
まあ、コードがわからん人(わからん人が使えるとは言ってない)向けだからな。
会社で色々ガチガチに制限されてるけど、そこだけはオッケーとかだったら使うしかないじゃない?そういう人向けだと思うよ。

Power Automateはまだサーバーが勝手に動いてくれるからマシだけど、Desktopはホント用途がわからん。
2022/01/29(土) 07:56:58.17ID:u7cBLx/b0
他言語のプログラマーからは下に見られるVBA
なぜ差別される?
2022/01/29(土) 08:31:49.58ID:vQXkhP0VM
中途半端に自分の知識を誇示して周囲を見下すやつが多いから
職場や上司を叩いて自己満足に浸るレスがこのスレでも目立つ
2022/01/29(土) 08:56:48.05ID:mMYfjebB0
起動しているedgeやIEで開いているページから文字を取り出したいのですがどうしたらいいでしょうか?

もしくは起動しているページからワンクリックで文字を取り出しExcelに貼り付ける様な方法はありますか?
2022/01/29(土) 09:01:58.47ID:p3H2eYK50
RPAみたいに世間の認知も高いわけじゃない、
プログラムほど難しいことやってるように見えない、
そのくせ仕事は手抜きしてるように見える、
聞いてもよく分からないことしか言わない、

知らない人からみたらこんな感じだからじゃない?
2022/01/29(土) 09:41:15.24ID:D0pOsND50
>>751
理由は色々あると思う。
名前がVisual Basic for Applications というくらいEXCELとかACCESSとかのMicrosoft Officeに特化していて
実際のシステムを構築するのには不向きであること。

間口が広いので初心者向きでもあり、それが逆にどんな人でもちょっと勉強すれば組めてしまうイメージがあること。

フレームワークの知識が皆無でも普通に組めてしまうこと。

VB.Netですら消えかかってるこの時代にあまりに旧態依然とした言語であること。

ちょろっと何かを組むには非常に良い言語なんだけどね。俺もVBAでシステム組めって言われたら「え・・・」ってなると思う。
2022/01/29(土) 09:47:43.70ID:UwALgNeL0
そもそもVB自体が下に見られているからじゃないかな
知らんけど
2022/01/29(土) 09:54:07.85ID:OyQV2dPc0
>751
覚える事が信じられないぐらい少なく、誰でも使えるから
変数とif、for辺り知ってればほとんどの場合に対応できる
若干とっつきにくいのがset程度
更に相当テキトーに書いても他へ影響し辛い

どれも実務上は長所だけど、
他の言語を知ってると「なにこれ?」ってなるのはわかる。なんというかおもちゃっぽい
2022/01/29(土) 10:17:37.26ID:M8ea68f50
>>745
自分の環境だと、普通のフィルタをかけた状態ならそれで拾えるけど、フィルタのソートを行った状態は拾えないので、やりたくないけどどうしてもやるなら列のデータをなめるしかないのかなと

>>751
元々、Visual Basic自体がBASICという、学校でプログラミングの導入として教えるような簡易なプログラミング言語から派生したものだから、他の言語より低く見られていた
更にそこから派生したVBA(マクロ)やVBS(スクリプト)なんかはより低く見られている
まぁ実際に、図体の重たいプログラムでは手が届きにくい部分を補完する孫の手的な使い方をするのが主流なので、穴埋めや間に合わせ的な位置付けに見られているからだと思う
2022/01/29(土) 11:04:25.26ID:1pI7yMTXM
>>758
ソートは一時的な状態じゃないから完全に拾えるわけじゃないけど
ListObjects(...).AutoFilter.Filters(...).Sort
見たらわかるんじゃないの?
2022/01/29(土) 11:05:21.11ID:bDLL2+/00
>>751
差別しているのは Ruby厨だから無視していいんじゃね
そもそも言語に上下なんかないし
2022/01/29(土) 11:13:37.04ID:M50L9SrL0
>>757
> 他の言語を知ってると「なにこれ?」ってなるのはわかる。なんというかおもちゃっぽい

なんとなく納得できる表現だな。
C・C++・C#・JAVA・Rustとかの、かちっとしたのが当然だと思ってると面食らう。

特に Variant。まあ、最近はコンパイラ系に逆輸入されてるけど。
2022/01/29(土) 11:15:31.30ID:M50L9SrL0
あ。馬鹿にしてるわけではないよ。便利だと思う。

ただ、コンストラクタ引数と継承は入れてほしかった。
2022/01/29(土) 11:28:56.70ID:tQGwfe1Lr
VBAが言語として下に見られてるのかは知らんが書いてるやつの水準は他言語より圧倒的に下だよ
変数の型指定しない、withつかわない、まとめられる処理をまとめずにコピペし大量のモジュールを作る、配列とか使わないでセルを一回一回読み書き
こんなコードが会社のエクセルにはたくさんある
そしてそれが神マクロと崇め奉られてるのホントゴミ
2022/01/29(土) 11:44:30.01ID:PUyOyrFtM
>>761
> 特に Variant。まあ、最近はコンパイラ系に逆輸入されてるけど。
void * とか昔からあるけど?
2022/01/29(土) 12:02:30.08ID:ZRWUeJUN0
結果がすべて
仕事を終わらせたやつが評価されるんであって、どんな方法を使ったか、きれいに書いたかどうかなんて普通は問われない
2022/01/29(土) 12:10:51.21ID:L/C5gyxS0
>>765
俺もそっちだわ
仕様として許容されているなら使う人が目的達成できればどうでもいいんよ
まぁリファクタリングしろと言われたら発狂するが
767デフォルトの名無しさん (ワッチョイ a95f-4IfY)
垢版 |
2022/01/29(土) 12:12:26.42ID:nI5CwbIZ0
何かを見下したい、マウントを取りたいのは、
愚か者の本能であって、理由は後付け。

VBA がハイコストパフォーマンスで
ある程度のシステムを構築できてしまう
便利なツールであることには変わりない。

頭の悪い人間ほど、意味のない格付けをしたがる。
768デフォルトの名無しさん (ワッチョイ a95f-4IfY)
垢版 |
2022/01/29(土) 12:22:38.03ID:nI5CwbIZ0
Windows環境で、
なんらかの要件を実現する方法の選定として
導入コストを考えたら、DOSバッチでも
PowerShellでも、JavaScriptでも、WSHでも
既存のリソースのみで実現できる方が良いに決まってる。

特に日本人の思考は、合理性を軽視して、見てくれや
くだらない感情で判断することが多いので、
開発のプロジェクトでも時間とカネのコスト管理ができてない
愚かな企業が多い。
2022/01/29(土) 12:23:55.26ID:hiZAoffAM
>>765
そういう書き捨ての仕事もあるし、連綿と続く仕事もある
2022/01/29(土) 12:27:08.84ID:nI5CwbIZ0
結果として、他国からバカにされてる
日本の生産性の低さに繋がっている

あらゆる分野で、開発スピードは、
圧倒的に米欧・中華が優っている
771デフォルトの名無しさん (ワッチョイ 668e-ltXr)
垢版 |
2022/01/29(土) 12:29:20.03ID:iTemfgLK0
>>768
例の馬鹿か
2022/01/29(土) 12:34:16.18ID:Q0NPbY74r
>>765
書き捨てではなく日々の定型業務につかわれ
それらが前提になって業務フローが組まれてるから
保守が必要なんだよなあ…
なお制作者と仕様書、コメントはない
2022/01/29(土) 12:43:35.90ID:28WRDRfRr
まあ正直、要件定義〜設計までの上流工程の人間からすると
言語は何でも良いんだけどね。

こだわるのはコーディングフェーズ以下の下流エンジニアであって。
2022/01/29(土) 14:49:20.34ID:u7cBLx/b0
関数が得意な人はなんでも関数で片付ける、マクロが得意な人はなんでもマクロでやろうとする傾向があると田中氏が言っていたな講演会で。
バランス良く使える人こそ真のエキスパートだとも。
2022/01/29(土) 15:14:16.94ID:YNpwCmNLM
>>774
そうなんか
確かに関数使うのって電卓がわりにするか文字の置き換えくらいかも
2022/01/29(土) 15:41:11.14ID:D/yb4xS+0
指定した範囲にそれぞれ外枠線を引きたいのですが、量が多くなると時間がかかるのでUnionを使いたいのですが、

Dim rng As Range, i As Long

Set rng = Range("B2:B3")
Set rng = Union(rng, Range("C2:C3"))

For i = 4 To 50 Step 2
Set rng = Union(rng, Range("B" & i & ":B" & i + 1))
Set rng = Union(rng, Range("C" & i & ":C" & i + 1))
Next i

rng.BorderAround Weight:=xlThin

だと、Range("B2:C51").BorderAround Weight:=xlThin と同じになってしまいます。
短い時間で、それぞれの範囲に外枠線を引く方法を教えてください
2022/01/29(土) 15:45:53.96ID:W/oxWoyf0
>>753
https://www.google.co.jp/search?q=vba+%E3%82%BD%E3%83%BC%E3%82%B9%E5%8F%96%E5%BE%97
2022/01/29(土) 15:52:44.84ID:MAc7BERw0
>>761
JavaでもObjectになんでも突っ込めるじゃん
2022/01/29(土) 16:14:17.19ID:u7cBLx/b0
マクロ書くより手作業でやった方が早いのにわざわざマクロでやる人ばかりとも言っていたな。
なるほどなと納得する講演会だったね。
2022/01/29(土) 16:34:34.13ID:L/C5gyxS0
今知ったんだけどFalseってフォルスって読むんだな
考えてみれば失敗じゃなくて偽りだもんな
本職じゃなくて良かったわ〜
781デフォルトの名無しさん (オッペケ Srbd-4IfY)
垢版 |
2022/01/29(土) 16:35:06.88ID:RDGmPxZCr
なんで Cells を使わず、わざわざ
Range を使うのが多数派なんだろ。
メリットないじゃん。意味わからん。
2022/01/29(土) 16:40:41.52ID:D0pOsND50
>>774
田中さんそんなこと言ってたのか
俺ならバランスより効率重視だな
数式にマクロの関数仕込むこともあるし
その逆もある。
2022/01/29(土) 16:41:42.31ID:fC9nxr54M
だってマクロ書きたいんだもん
2022/01/29(土) 16:49:23.58ID:wL4gsmFrd
>>781
a1とかa1:f5とかを暗黙定義された名前と考えて
名前で指定するイメージ
2022/01/29(土) 17:04:38.36ID:fQ9LbNHBM
>>780
失敗は Fail だもんな
2022/01/29(土) 17:04:52.88ID:L/C5gyxS0
俺はcellsだよ、座標として捉えてるから数値との親和性が高く感じる
2022/01/29(土) 17:06:06.65ID:L/C5gyxS0
>>785
そやねん、フェイルセーフっていうからその延長で思い込んでしまってたみたい
2022/01/29(土) 17:06:09.58ID:fQ9LbNHBM
>>781
極端な例だけど Cells(100, 100) がどのセルを指してるのかすぐにわかるなら…
2022/01/29(土) 17:09:18.89ID:L/C5gyxS0
>>788
なるほど
でもSAの倍の座標がどこかが解りづらいんじゃない?
2022/01/29(土) 17:16:34.10ID:OyQV2dPc0
日本はA1形式なのでどっちにしても分かりづらい
歴史的経緯で今更どうしようもないとは言え、残念すぎる
2022/01/29(土) 17:29:33.23ID:36YHaPQ9M
>>789
倍の座標とかの計算結果で指定するならそりゃCells()で指定するよ
Dim c As Range
Set c = Range("SA100")
としてCells(2 * c.Row, 2 * c.Column)
>>781は例えば最初のセルの指定とかでアドレスが分かってる場合でしょ
2022/01/29(土) 17:59:18.61ID:u7cBLx/b0
>>782
うん。自分の耳が腐っていなければ確かにそれを強調していたように聞こえたよ。。
とにかく後任者の事を第一に考えようと。
あと、速度改善するマクロを書いても後任者が理解できなければそのマクロは結果遅いマクロとも。
一理あるなと思った。
かなり前の話だからうろ覚えごめんなさい。
2022/01/29(土) 18:07:28.04ID:oYmiRtJxM
何が正解かはケースバイケースだしね
LETとかLAMBDAのサポートで正解変わったりするし
2022/01/29(土) 18:58:08.38ID:D0pOsND50
CellsとRangeなんて一長一短なんだから
状況に合わせて使い易い方、分かり易い方を使えばいい。
どうせ両方とも型はRangeだ。
795デフォルトの名無しさん (オッペケ Srbd-4IfY)
垢版 |
2022/01/29(土) 19:05:46.63ID:XZlmQtKVr
例えば、数万行の処理をループで回す場合とか
Range と Cells とでは、処理速度が全然違うのよ。

実際にやってみればわかる。
2022/01/29(土) 19:07:36.86ID:u7cBLx/b0
Range(A & i)みたいなコードをたまに見るけど、あまり良い書き方ではないと聞きましたよ
2022/01/29(土) 19:10:29.95ID:D0pOsND50
>>796
そりゃ普通そんな書き方しないもの。
最初の位置から移動させて使う場合は
RangeならOffset使うでしょ。
2022/01/29(土) 19:13:25.82ID:u7cBLx/b0
いわゆる「マクロ入門書」とかにもそのような変な書き方がある。
教える側の立場にある人がそんな書き方してるのはちょっと
2022/01/29(土) 19:49:18.54ID:lAJromTAM
>>797
Offset(), Resize() はセル結合を「考慮してくれる」からイマイチ使い辛い
2022/01/29(土) 19:57:24.50ID:W/oxWoyf0
可読性と処理速度要件で変えるだけ
2022/01/29(土) 20:51:43.39ID:OyQV2dPc0
>>795
100万ループさせてやっと数秒か
この程度の差なら速度は誤差では?
速度抜きにしてもrange("a1")って書き方はせんけど

Sub foo()
GetLocalTimeTest
For i = 1 To 1000000
'5秒
'bar = Range(Cells(1, 1), Cells(1, 1))
'2.8秒
'bar = Cells(1, 1)
'6.7秒
'bar = Range("a1")
Next
GetLocalTimeTest
End Sub
2022/01/29(土) 20:55:44.71ID:2z3KoE650
setは?
2022/01/29(土) 21:16:18.07ID:u7cBLx/b0
ねーこれかなり凄くない?
https://rkb.jp/article/61225/
実務を経験していない女子高生がExcel世界一だって。
804デフォルトの名無しさん (ワッチョイ 39e6-KfKj)
垢版 |
2022/01/29(土) 21:18:02.94ID:j5q7lOJ70
>>790
いろは順が良かったってか?
2022/01/29(土) 21:19:19.33ID:zfCLVkWb0
学生大会ね
2022/01/29(土) 21:24:22.79ID:1BTFtAsTM
>>803
素直にすごいと思う
まあExcelに対する知識もさることながらプレゼン力やセンスも問われるから俺には全然無理
2022/01/29(土) 22:21:59.94ID:tNIxMt6Qd
>>803
マスゴミの手に掛かればExcelそっちのけで好きな食べ物は?とか好きな男性のタイプは?とかどうでも良い情報ばかり取り上げられるだけ
紹介動画でExcel触ってんの1分も無いじゃん
2022/01/29(土) 22:38:28.21ID:FzjWUvLmd
>>781
マクロの記録で自動生成されるとRangeが使われるからじゃない
自分もCells派だけどいろんなツールで使ってる共通的な関数群はRangeの方が作りやすいからRangeも使ってる
2022/01/29(土) 22:41:28.05ID:ZRWUeJUN0
ループ回すにはCellsのが書きやすい
2022/01/29(土) 22:44:29.32ID:yRT1rOmgM
>>808
> いろんなツールで使ってる共通的な関数群はRangeの方が作りやすいからRangeも使ってる
???
どっちを使っても型はRangeだよ…
2022/01/29(土) 23:35:26.26ID:FzjWUvLmd
書き方が良くなかったね
自分が作ってる関数だと引数の使い方がRangeの方が汎用性が高い
812デフォルトの名無しさん (ワッチョイ 39e6-KfKj)
垢版 |
2022/01/29(土) 23:51:38.36ID:j5q7lOJ70
引数は文字列と言うことかな?
2022/01/30(日) 01:33:47.10ID:RkuzR5nc0
作成依頼もOKということで書き込みさせていたただきます。
現在開いているシートの名前で、特定の場所にCSV(コンマ区切り)の形式で保存したいです。
また、エクセルを開きっぱなしで別のプログラムにCSVを読み込ませ、その後データを書き換えてCSVを上書き出力、読み込ませ、データを書き換え…、の繰り返しをしたいのですが、エクセルを開いていると別のプログラムで読み込んだ時にエラーが出てしまうため、別のブックとして保存して閉じることができると嬉しいです。
VBAについての知識がほとんどないため、こういった情報で作成依頼していいものなのかわかりませんが、よろしくお願いします。
2022/01/30(日) 02:59:23.74ID:MQJLXGaO0
>>813
Sub save_sheet_as_csv()
  Dim this As Worksheet: Set this = ActiveSheet
  Dim sheet_name As String: sheet_name = this.Name 'ワークシート名取得
  Dim save_folder As String: save_folder = "c:\tmp\" '保存先フォルダ指定
  Dim save_fullpath As String: save_fullpath = save_folder & sheet_name & ".csv"

  this.SaveAs Filename:=save_fullpath, FileFormat:=xlCSV 'CSVで保存
End Sub
815デフォルトの名無しさん (ワッチョイ 3a00-Bf/t)
垢版 |
2022/01/30(日) 03:34:13.23ID:RkuzR5nc0
>>814
ありがとうございます、試してみたところ、出力したCSVを別のプログラムで読み込もうとしたときに「別のプロセスで使用中のため開けません」とのエラーが出てしまいました。
私の使い方が悪いのかもしれませんが、アドバイスいただけるとありがたいです。
2022/01/30(日) 03:54:54.88ID:MQJLXGaO0
>>815
ブックを閉じるには、これを最後に入れる
Workbook.Close
817デフォルトの名無しさん (ワッチョイ 3a00-Bf/t)
垢版 |
2022/01/30(日) 04:02:16.39ID:RkuzR5nc0
>>816
ありがとうございます、うまくできませんでした…。
ネットで拾ったものですが、これがやりたいことに近いかなと思うんですが、保存先の指定はどうすればいいでしょうか。

Application.DisplayAlerts = False 'Excelの警告を一時無視

ActiveSheet.Copy '新しいブックへコピー

ActiveWorkbook.SaveAs Filename:="book1.csv", FileFormat:=xlCSV, Local:=True 'CSVで保存。ファイル名は「book1.csv」。

Workbooks("book1.csv").Close 'book1.csvを閉じる

Application.DisplayAlerts = True
2022/01/30(日) 04:58:34.47ID:MQJLXGaO0
>>817
じゃあこっちを使ってみて
CSVで保存の次に以下の1行を追加
Application.Quit

いきなりExcelが終了するので、直したら保存を忘れずに
2022/01/30(日) 07:43:58.44ID:q4Ohgw6D0
>>759
うちの環境だと、FilterオブジェクトにSortはないね
その代わり、ListObject.AutoFilter.Sort.SortFields.Countで検出できそうなのは見つけた
もしかしてこのへんバージョン毎に違ったりするのだろうか?
2022/01/30(日) 09:05:00.91ID:4Di3AbRzM
>>819
すまん今見たらそっちが正しいわ
なんか勘違いしてた
2022/01/30(日) 09:32:32.30ID:XZOTMr4+0
>>807
確かにw
取材側の都合の良いように組まれているね。
言われてみればグラフの装飾だけでExcelを操作していないわ。
822デフォルトの名無しさん (ワッチョイ 3a00-VTwM)
垢版 |
2022/01/30(日) 09:32:37.50ID:RkuzR5nc0
>>818
私の伝え方が悪かったです。
Excel自体は終了せずに、現在使用しているブックとは別のブックとしてcsvを出力して、そちらを閉じたいのです。
2022/01/30(日) 09:54:20.39ID:XZOTMr4+0
そもそも学生大会があるってのは知らなかった
騒がしてごめんなさい😢⤵⤵
2022/01/30(日) 11:04:58.48ID:q4Ohgw6D0
>>820
いやいや、むしろ知らない方法を見つけられたのでありがたかったです
2022/01/30(日) 12:45:39.26ID:mFQLQi3M0
VBAももう終わりそうだな
MSはWEB版にしたいみたいだし
2022/01/30(日) 12:58:15.03ID:+kmkPMy10
不滅です
2022/01/30(日) 13:00:10.17ID:gD+f1kBW0
終わる要素一切なくて草
2022/01/30(日) 13:13:55.29ID:wiJ8ix3a0
MSがGoogleに頭下げてGASで統一しましょうみたいな交渉を持ち掛けない限りはないだろ
2022/01/30(日) 13:18:12.09ID:XZOTMr4+0
確か4.0マクロ廃止とパワークエリはマクロ作業を減らすためにMSが作ったんじゃないのかい?
2022/01/30(日) 18:00:19.55ID:k8uzKlEP0
>>825
気が早いな
まだ学校や企業のライセンスでしか
Web版Excelのjavascriptでの開発は出来ないと言うのに
2022/01/30(日) 18:51:59.67ID:gD+f1kBW0
パワーピボットは本当にスゴイ
なんでもっと早く実装しなかったんだ・・・
2022/01/30(日) 19:06:51.96ID:DR73eQYX0
ようつべにこんなのあった。

Excelオンラインで最新Excel関数を練習したいという方も必見です!どこまでできるか試してみた!
https://youtu.be/saC7BegnViI

Power Queryは使えないけど
テーブル、スライサー、ピボットテーブルは使える模様。

ただ、スマホの小さな狭い画面だとムリだろな・・・
833デフォルトの名無しさん (オッペケ Srbd-4IfY)
垢版 |
2022/01/30(日) 19:55:45.81ID:gNdtnnB7r
なんで、Access使わないの?
SQL 使えないと不便じゃん。
2022/01/30(日) 19:57:56.80ID:PMeev6woM
powerqueryで十分だから
excelだけで完結する
2022/01/30(日) 20:17:09.09ID:XZOTMr4+0
Excelオンラインって一部の上級者が食いつき始めていると聞きましたわ
2022/01/30(日) 21:04:21.08ID:k8uzKlEP0
>>833
何故にEXCELでSQLが使えないと思ったのかは聞かないけど
まだSQL初心者でクエリ画面開いてチマチマとテーブル繋いで設定していく
あのACCESSのが使えないかと言われればそれはそう。

でも複雑なSQLを組むようになると結局手で書いた方が早くなるからアレもあまり必要性を感じないけどね。

結局、ADOさえ理解していればACCESSだろうがORACLEだろうがSQLSERVERだろうがその気になれば
EXCELのシートだろうがCSVファイルだろうがEXCEL上からSQLを実施することが出来る。

ただ、本来DBの用途からかけ離れるほど使用に制限を受けるよ。
例えばEXCELのシートやCSVファイルはDELETE文が使えなかったりとか。
2022/01/30(日) 21:18:16.55ID:k8uzKlEP0
>>835
さっきもちょっと書いたけど
まだ商用か教育機関用のライセンスじゃないと
Javascriptで開発すること出来ないんだよね。

だからJavascriptやってない人は
まだ猶予期間がある内に
Javascript触って慣れておくといいよ。
特にスカラー変数とかまるで
全ての変数はVariant型で扱うかの
ようになったり、
Jqueryとかが出てくると
メソッドを変数に入れたり
チェーンメソッドみたいなのも出て来たり

その前にHTMLやCSSも勉強しなきゃだけど。
2022/01/30(日) 21:24:55.59ID:gD+f1kBW0
ちゃんとしたデータが揃ってるって前提なら、DELETEなんて使う事はそんなになくないか?

>>837
エクセルでjQuery使えるの?
2022/01/30(日) 21:36:30.54ID:k8uzKlEP0
>>838
DELETE使う必要があるかと聞かれれば、
まぁ有った方が便利かも知れないね、という程度。
何せEXCELのシートで条件に合った行が一発で消せるのであればまぁ便利だろう。ただ、
VBAでそういうロジック組めば代用出来ない訳じゃない。

Jqueryが使えるかどうかは俺もまだ
Web版EXCELの開発環境触ったことないから分からんけど、
どっちにしてもJavascriptをやるならついでに覚えて置いた方がいい。とっても便利。
840デフォルトの名無しさん (ワッチョイ 668e-ltXr)
垢版 |
2022/01/30(日) 22:15:29.30ID:sjTHXMe20
ID:k8uzKlEP0

またいつもの馬鹿が嘘ばっか書いてる
2022/01/30(日) 23:07:47.49ID:k8uzKlEP0
例えばだけど
VBAを生業としているとその内DBとのやり取りを行うようになってSQLは必須になることは理解している人はここにも沢山いると思う。

同様にWeb系を行うならHTMLやCSS、Javascriptの知識が必須になるんだよ。
もしEXCELがWeb主体で扱われるようになるのであればその知識が必要ってだけ。

まぁ確かにスレ違いではあるから
ぼちぼちおいとまするよ。
2022/01/30(日) 23:34:30.41ID:fPY/YlGjd
Excelでやるには面倒なことでほかの言語知っててそっちの方が簡単ならわざわざExcelなんて使わないでしょう
開発者ならそれぐらいわかりそうなもんだと思うけどわざわざ関係ないことを持ち出してくる必要ないのにね
843デフォルトの名無しさん (ワッチョイ 668e-ltXr)
垢版 |
2022/01/30(日) 23:58:36.03ID:sjTHXMe20
>>841
嘘ばっかと指摘されてもしつこく書く馬鹿
844デフォルトの名無しさん (ワントンキン MM7a-DCUM)
垢版 |
2022/01/31(月) 02:05:16.34ID:YxHLvxrCM
ruby馬鹿だろ
2022/01/31(月) 04:36:16.27ID:ByM6Elur0
>>822
Sub save_sheet_as_csv()
  save_folder = "c:\tmp\" '保存先フォルダ指定
  file_name = ActiveSheet.Name & ".csv" 'シート名をファイル名に
  ActiveSheet.Copy '現在のシートを新規ブックへコピー
  Application.DisplayAlerts = False '警告を無視して上書き保存できるようにする
  ActiveWorkbook.SaveAs Filename:=save_folder & file_name, FileFormat:=xlCSV 'CSVで保存
  Workbooks(file_name).Close '新規ブックを閉じる
End Sub
2022/01/31(月) 08:22:57.51ID:q62M0ujX0
何が嘘で本当はどうなのかを書けば一発なのに
2022/01/31(月) 09:22:06.68ID:KIxAb0730
いやさすがにウソは書き込みしないでいただきたい。
このスレは真面目に勉強したい人もいますので。。
ウソを本当のように書かれると信じちゃうじゃん。
2022/01/31(月) 09:28:32.59ID:xKkvHIL7d
JSとか関係ない話を持ち出してる人のレスが問題なだけでVBAの回答だけなら嘘はないんじゃないの
それと書かれてる内容で勉強したいなら実際に動かしてみるべきだと思うよ
2022/01/31(月) 09:38:43.11ID:9sC6tTKap
JSはWebのエクセルの話から派生したみたいだからあながち完全にスレチという訳でもなさそうだな
一応俺も少しJS齧ってはいるけど嘘を書いているようには見えないなぁ
どの辺が嘘なんだろ?
2022/01/31(月) 10:13:50.76ID:zlqGzvHc0
>>849
嘘ではなかった、アドイン入れたらJS使えたわ
ただ、ぱっと触った所vbaでいいとしか思わんかった。慣れてる方が楽でいい
jQueryも使えると思うけど、使う理由はないと思う。あれセレクタ便利になるけど、エクセルjsでは使わないような

ただwebエクセルでの使い方がわからんかったけど、多分一生使わないからもういいや
2022/01/31(月) 10:25:32.89ID:xKkvHIL7d
自分は嘘と言ってるつもりはないけど話が散らかりすぎてしかもどうでもいいことをダラダラ書きすぎと思ってるけどね
知ってることをいろいろ言いたいのかもしれないけどスレチだってことをわきまえてほしい
2022/01/31(月) 10:46:32.75ID:e1XVzmlT0
Web版Excelのマクロ機能(JSスクリプト)は家庭向け製品では使えない
いまのところ法人向け製品だけの機能
2022/01/31(月) 10:58:28.57ID:zlqGzvHc0
>>852
ああそういうことね、ありがとう
2022/01/31(月) 11:28:12.04ID:KIxAb0730
まあ、ウソホントの話は置いといてマッタリ平和にやりましょうよ
2022/01/31(月) 12:34:07.47ID:/myUa4Xt0
争いが嘘か、平和が嘘か
2022/01/31(月) 12:47:21.32ID:PJdTm1ZT0
JavaScriptと書いてくれ、途中まで理解が噛み合わなかったわ笑
2022/01/31(月) 12:58:13.56ID:9LYQT6bkM
JScriptでExcel.Applicationを扱うのは難しい!
2022/01/31(月) 12:58:47.12ID:e1XVzmlT0
細かいこと言えば実際はJavaScriptというよりTypeScriptだけど
https://docs.microsoft.com/ja-jp/office/dev/scripts/develop/scripting-fundamentals
2022/01/31(月) 13:07:08.11ID:xK8RZLXxa
>>855
銀河万丈の声で脳内再生されて草
860デフォルトの名無しさん (ラクッペペ MM3e-VTwM)
垢版 |
2022/02/01(火) 04:12:47.67ID:BAkheZAsM
>>845
ありがとうございます。
861デフォルトの名無しさん (ワッチョイ 6d36-T4N9)
垢版 |
2022/02/01(火) 18:51:32.45ID:BTrEast20
VBA 何もかもみな懐かしい。。
2022/02/01(火) 20:43:06.80ID:m1Otvt2w0
GoogleのI'm Feeling Luckyボタンを押すために

objIE.document.GetElementsByClassName("〜")(0).click

って書いてちゃんとclassnameの名前を入れているのに実行してみたら
438 オブジェクトは、このプロパティまたはメソッドをサポートしていません。
って表示されて実行されません
idだったらちゃんと動作するのですがclassnameだと実行されません
目的はclassnameでのボタンの押し方を知る事なのでどうしてらいいのか教えてください
2022/02/01(火) 21:42:08.98ID:JauLxykcr
独立したIf式が100個あるとして、どのIf式が処理をしたか最後にmsgboxで表示したいのですが、そういうことってできますか
864デフォルトの名無しさん (ワンミングク MM7a-DCUM)
垢版 |
2022/02/01(火) 21:53:36.89ID:NaaBd1FpM
できる
はい、次
2022/02/01(火) 21:53:41.40ID:UmaqdsBP0
各ifの処理の中でmsgboxに表示する番号なり何なりを変数に代入すればいいんじゃね
2022/02/01(火) 23:48:27.08ID:JauLxykcr
>>865
If A1<>"" 〜
End if

現状上の式がただただ書かれているんだけなんですがどうしたらいいですか
2022/02/01(火) 23:53:02.19ID:mToNlmlwd
マクロでマクロを書く

はい次
2022/02/02(水) 00:04:57.15ID:XK9gt2og0
それはif文を理解していないという解釈でいいのか
869デフォルトの名無しさん (ワッチョイ 668e-ltXr)
垢版 |
2022/02/02(水) 00:11:32.60ID:WPZgN1IY0
>>866
>>2を読め
2022/02/02(水) 00:23:00.41ID:DCaD8SVN0
>>862
Document.getElementsByClassName()
https://developer.mozilla.org/ja/docs/Web/API/Document/getElementsByClassName

JavaScript なら、上のリンク先を見れば良いけど、
VBA では、書き方が異なるのかも
2022/02/02(水) 07:28:52.11ID:4nB6ciIN0
>>870
ここからボタンを押すにはなんと書けばいいのでしょうか、、、?
2022/02/02(水) 07:31:23.63ID:f98ebtked
この手の質問は悪用される可能性があるから回答するの躊躇するよね
2022/02/02(水) 07:47:54.37ID:DCaD8SVN0
Ruby で、Selenium WebDriver なら、
driver.要素.click だけど、VBA は知らない

検索してみれば?
2022/02/02(水) 07:49:20.30ID:Sif5VXmLd
>>871
学習目的なら他のサイトにしたら
875デフォルトの名無しさん (オッペケ Srbd-4IfY)
垢版 |
2022/02/02(水) 10:07:41.90ID:wojfg/N6r
こんなところにアホな質問するヤツらは

ググる能力さえ無いということなのか?
2022/02/02(水) 11:13:58.55ID:QFn3Myrbd
ググったりして、その上で質問してると信じたい
スクレイピングとかブラウザの自動処理の質問だけど後者は悪用されるリスクが高いから答えたくないよね
2022/02/02(水) 11:17:43.23ID:wojfg/N6r
違うよ
処理完了MsgBox を表示させるなんて
素人でもググって1分で作れるだろ
2022/02/02(水) 11:38:37.34ID:Ro/5oidY0
>>875
最初は聞きまくった方が上達する
vbaはコードはアホみたいに簡単だけど、変なとこで敷居高いからな
2022/02/02(水) 11:54:30.15ID:34qMGLm0a
>>878
なら答えてやれよw
2022/02/02(水) 12:16:51.15ID:QFn3Myrbd
どんな言語もそうだけど敷居なんて高いと思ったことないよ
そもそもできないこともわからずにあれこれやろうとしてる人がそう思うだけでは
2022/02/02(水) 12:26:36.37ID:h1+1MA/aM
Excelを操作するための言語で
なぜブラウザを操作しているのか?
もっと良い方法があったのではないか?
手を動かす前にほんの少しは考えたほうが良かったのではないか?
2022/02/02(水) 12:27:02.36ID:43zIf/SN0
答えたい人は答えて答えたくない人はスルーしておけば良いと思う
答えないのに偉そうにしてる人は解らないのに偉そうにしている人と同じだし
2022/02/02(水) 12:38:30.87ID:PFGno9cc0
>>877
>>863の質問から、
「処理完了MsgBox を表示させる」ことが質問の本質だと思うわけね
2022/02/02(水) 12:58:44.52ID:h1+1MA/aM
お題は100個のif文を書き換えずにどれが処理されたかを当てるクイズね
885デフォルトの名無しさん (ワッチョイ a95f-4IfY)
垢版 |
2022/02/02(水) 13:00:17.51ID:mSZ4QSD40
各、End If の前に、IF 番号を変数として代入する
一行を記述する。
2022/02/02(水) 13:31:44.29ID:QFn3Myrbd
100個のif文はどういう出し方したいかにもよるけど抜ける考慮はさておき
dim msgno as long
if 条件1 then
 msgno=1
end if
if 条件2 then
 msgno=2
end if
call MsgBox(msgno)
ってやるだけでしょ
そうではなくどのif文が動いたかであれば適当に動いた個所がわかる変数を用意して同じように表示すればいいだけかと

>>882
リスクあるから答えないってのも立派な回答だと思うけどね
それを偉そうと思うのならそう思ってもらって結構だけど
2022/02/02(水) 13:31:48.33ID:Ro/5oidY0
>>863
フラグを外に出したほうが良いか考えたけど、もういいかなって
ってか本当にやりたいことはステップインって機能では

Sub foo()

bar = ""
If A1 <> "" Then
bar = bar & "If A1 <> """" Then"
bar = bar & vbCrLf
End If

If b1 <> "" Then
bar = bar & "If b1 <> """" Then"
bar = bar & vbCrLf
End If

MsgBox bar
End Sub

>>879
たまってたのね
2022/02/02(水) 13:41:28.48ID:h1+1MA/aM
それじゃあ >>868 の言うように
私の子がバカみたいじゃないですか!
889デフォルトの名無しさん (ワッチョイ a95f-4IfY)
垢版 |
2022/02/02(水) 13:42:27.00ID:mSZ4QSD40
IF 式自体を、MsgBox に表示したいのなら
100個の式の一覧をつくって、

Const にして100個記述すればよいかと。
そっちのほうが早い。
890デフォルトの名無しさん (ワッチョイ a95f-4IfY)
垢版 |
2022/02/02(水) 14:24:28.77ID:mSZ4QSD40
Const IF001 = "If A1 <> """" Then"
Const IF002 = "If B1 <> """" Then"
・・・
・・・(100個記述)

Sub Test()

 If A1 <> "" Then  〜
   RSLT = IF001
 End If

 If B1 <> "" Then  〜
   RSLT = IF002
 End If

・・・・・

 MsgBox RSLT
End Sub

こんな感じかな。
スマホだと書きづらいわ…
2022/02/02(水) 14:25:53.07ID:Ro/5oidY0
VBAってevalなかったっけ
あれをフラグに入れれば完結になるんだけどな
892デフォルトの名無しさん (ワッチョイ a95f-4IfY)
垢版 |
2022/02/02(水) 14:31:06.05ID:mSZ4QSD40
IF文を全部、シートにコピペ→ソートしてやれば
Const を100個書くのは、3分でできるかな。
2022/02/02(水) 14:32:20.83ID:h1+1MA/aM
もっとメンタリストみたいにスマートに当てる方法はないのですか?
あなた達のスキルにはがっかりデス
894デフォルトの名無しさん (ワッチョイ a95f-4IfY)
垢版 |
2022/02/02(水) 14:36:33.27ID:mSZ4QSD40
プロシージャの中身も全部、シートにコピペして
変数の一行を100個挿入してやれば
10分かからないね。
895デフォルトの名無しさん (オッペケ Srbd-4IfY)
垢版 |
2022/02/02(水) 14:38:34.78ID:wojfg/N6r
くれくれ乞食がうぜえな

お前が書けよ
896デフォルトの名無しさん (オッペケ Srbd-4IfY)
垢版 |
2022/02/02(水) 14:59:23.76ID:wojfg/N6r
そもそも、IF文100コってなんだよw
無能が書いたのか?
2022/02/02(水) 19:16:31.19ID:4nB6ciIN0
vbaでieの操作に成功しました
そして目的の通知バーを出してキー操作をさせるためにsendkeyを入力しているのですがExcelの方がキー操作されてしまいます
これは待ち時間がないからですか?
2022/02/02(水) 19:27:47.16ID:SglXGK6G0
そう思うならタイマとか入れてどうなったか書けよ
2022/02/02(水) 19:32:10.25ID:4mbUlsYd0
みんなは過去に作った関数ライブラリって、標準モジュールで
管理(インポートorエクスポート)しているかんじ?
クラスモジュールで管理したらだめ?
2022/02/02(水) 19:42:36.70ID:7tA3nICW0
>>897
もしライブラリの追加が可能な環境ならSeleniumbasic使った方が簡単で確実に動作するぞ
2022/02/02(水) 20:08:51.32ID:gm4r/aDEa
>>897
そりゃ、IEに送らないとだめだわなw
2022/02/02(水) 20:31:24.68ID:lYAq0wM7r
>>887
ありがとうございます。
まさに理想通りのやつです。助かりました
2022/02/02(水) 21:08:49.40ID:4bGMKLpw0
>>899
やり方は色々あると思うけどその方法なら
用途によって標準モジュールでもクラスモジュールでも使い分けで管理すればいいと思う。

別の方法としてはツールとしてスケルトンのブックを作っておいて
その中に色んなモジュールを入れておいてコピーして必要なもの以外は削除して使う方法、
アドインブックを作っておいて参照を切って使う方法とかもある。
2022/02/02(水) 21:12:04.30ID:sT0aKZOxd
めんどくさいから win+vでピン留めしてるわ
2022/02/02(水) 21:53:01.49ID:Ro/5oidY0
>>899
googleスプレッドシートに書いておいて、そこからコピペ
vbaの場合、関数というよりも、
高速化や最終行の取得など、関数よりも細かい部分で欲しいものが多い
2022/02/03(木) 00:25:24.67ID:qiNMcHyb0
>>903-905
なるほど。結構、人によってやり方が違うもんなんだな。
勉強になります!
2022/02/03(木) 00:38:31.96ID:tbES4bxer
そんなん、メモ帳でよくね?
2022/02/03(木) 00:41:32.16ID:tkF05tCjd
いつもの奴だぞ
2022/02/03(木) 03:56:49.74ID:32hviewX0
>>897
VBAならスクレイピングを組むのに視覚的に動作確認できるけど、

慣れてきたらぜひpythonでchrome環境で同じような処理を再現してほしい

事務職の現場でもieだと対応してないサイトとかあったりしてクローリングはchromeの方が重宝されるんだ
2022/02/03(木) 09:21:08.30ID:hHsifBpa0
メモ帳で思い出したが、秀丸エディタってどうなの??
知人が秀丸使え使えってうるさいから
2022/02/03(木) 09:30:09.86ID:Nd7AcXHS0
>>910
VSCodeが一般化した昨今ではオワコン化が進んでる気がする。
未だにテキストエディタとしては使ってるけど、コードエディタとしてはちょっと厳しいのではないかと思ってる。
2022/02/03(木) 10:19:29.46ID:Z7zOJE1W0
>>910
閉じてもそのまま再開できる+タブ表示+シンタックスハイライト(文字色)が出来るものなら何でも良いと思う
メモ帳に比べたら秀丸は普通に便利
俺はsublimetext、atom、eclipce使ってるけど、全部オワコン臭が凄い

VScodeはプラグイン多くて使いやすいと思う
2022/02/03(木) 12:04:33.95ID:hHsifBpa0
うーん。とりあえずメモ帳でいっかな。
なるべく無料のアプリ使いたいし。
ケチが一番!
2022/02/03(木) 12:06:23.06ID:pSX7/s4D0
サクラエディタ使いやすいね
2022/02/03(木) 12:11:30.24ID:c9OHCnJld
Notepad++だな
タブでもやれるけど左枠に文書一覧表示が自分には合ってた
縦タブやお気に入り機能のようにファイルを扱える
2022/02/03(木) 12:31:17.48ID:hHsifBpa0
若い連中にはOneNoteが流行りなのかなと
2022/02/03(木) 13:12:28.58ID:akJYuSUB0
>>913
VCcodeはタダだよ
メモ帳は多分一番難易度高いんじゃないかと思う 焦
2022/02/03(木) 13:49:08.79ID:Z7zOJE1W0
>>917
VScodeな

>>915
実は俺も使ってる。そんな便利な機能あったんだ!
https://i.imgur.com/AGCZICl.png

メモ代わりに使ってるワイ、無事死亡
2022/02/03(木) 13:54:30.19ID:advF3NKUM
VSCode入れていいような環境でわざわざVBAなんか使う必要なくね?自由が利くなら他にいくらでも選択肢あるじゃん
拡張機能で得体の知れないOSSがモリモリ入る超危険ソフトウェアだぞ
2022/02/03(木) 13:59:55.10ID:Z7zOJE1W0
>>919
中小企業はやっぱりエクセルになってしまうので・・・・
使わずに基幹ソフトだけで済めば、どれだけ良いことか

>超危険ソフトウェア
これ言い出すとあらゆるソフトが、ね
2022/02/03(木) 14:44:10.97ID:CBKIfEX60
VBA使う理由の半分はエクセルスプレッドシートとの連携だし
2022/02/03(木) 15:12:55.32ID:1AlNHnvf0
まあそうだね
Excel上でアウトプットしないならVBA以外がいいと思うは
2022/02/03(木) 15:39:55.47ID:OCu5/hNR0
EXCEL VBAのスレでスレ違いで悪いんだけど
話ついでに、VS.codeってトレースも出来るんだっけ?
2022/02/03(木) 16:14:10.02ID:c9OHCnJld
>>918

そうこれ
他に同じ事が出来るエディタも有るかもだけど軽いし今んとここれ一択だわ
925デフォルトの名無しさん (ワッチョイ 668e-ltXr)
垢版 |
2022/02/03(木) 16:15:44.17ID:/TAKaoAN0
>>923
馬鹿は消えろ
2022/02/03(木) 16:28:13.06ID:OCu5/hNR0
自己解決。出来るね。

>>925
いきなりどうしたの?高齢期障害?
2022/02/03(木) 16:52:05.79ID:RpJDoNdN0
VSCode
https://i.imgur.com/qTVwaIg.png
2022/02/03(木) 17:47:56.55ID:hHsifBpa0
超危険と言えば昔のExcelってそうだった記憶ある
確かExcelを狙ったウィルスがあったような??
929デフォルトの名無しさん (ワッチョイ 668e-ltXr)
垢版 |
2022/02/03(木) 18:15:38.24ID:/TAKaoAN0
>>926
自分の書き込みを読み返せ、馬鹿
2022/02/03(木) 18:24:46.05ID:akJYuSUB0
>>928
マクロウイルスのことかな
2022/02/03(木) 18:37:27.74ID:OCu5/hNR0
>>929
なんだやっぱりちょっとした話の流れに便乗した質問も許容出来ない高齢期障害の爺か
そんなにイライラしてると高血圧で脳溢血になるぞ
2022/02/03(木) 19:16:08.09ID:qZuoLMNW0
マクロだけだっけ、覚えてないわ
2022/02/03(木) 21:24:18.10ID:Mvkv/5Wv0
マクロウィルスはラルーだっけな?
それもあったけど、なんかのウィルスだった覚えがあります。
入力した値や文字列が文字化けするウィルス
2022/02/04(金) 17:29:19.29ID:/9L9fpIb0
10弱ほどの複数のシートの同じ行を、まとめて選択してDeleteしているのですが
シート1枚につき18秒ほど掛かるようになって、シート全体で3分以上Excelが固まった状態になります
行では無く範囲をUnionで選択しても速度は変わりませんでした
Clearcontentsすれば速いんですが、その後CSVにして読み込ませる必要があり
ただ消しただけだと、Deleteされた行までデータが存在する事になってしまっていて、支障があります
Clearcontentsした後、VBA側で空欄の行をDelete以外で詰める方法は無いでしょうか
2022/02/04(金) 17:34:09.06ID:/YpTyf1v0
↑コピペ
2022/02/04(金) 17:49:25.28ID:/9L9fpIb0
コピペって何が?
937デフォルトの名無しさん (ワッチョイ 668e-ltXr)
垢版 |
2022/02/04(金) 18:12:14.30ID:pHRCGz/X0
>>931
読み返しても問題に気付かない馬鹿か?
938デフォルトの名無しさん (ワッチョイ 2a7c-21ac)
垢版 |
2022/02/04(金) 20:33:02.02ID:mH27gNw80
諸先輩方に質問です。
VBAの勉強を始めたばかりで的外れなところはご容赦ください。
BeforeRightClickで記述するということはわかりました。

シート3のE4:H14とN4:Q14の範囲において、
セルを右クリックで黄色く塗る、もういちど右クリックすると塗りつぶしを無色にする
ということをやりたいのです。
同時に右クリックのメニューも表示しなくなるようプログラムしたいです。
塗りつぶすセルは毎回異なるセルです。

日々の作業で特定の範囲内でセルを黄色く塗る作業が多くあります。
これをペンキボタンを使わずにできると作業効率があがるかと思います。
皆様には簡単すぎるかと思いますがどうぞよろしくお願いします。
2022/02/04(金) 20:40:52.99ID:AMkz1drU0
直の回答で無くてすまんがショートカットキー使った方が便利な気がする
2022/02/04(金) 21:30:10.84ID:wpZeT9bxM
>934
実際のコードはどんな感じ?
シート選択して該当行を削除してるなら、当然遅い。
2022/02/04(金) 21:33:46.72ID:wpZeT9bxM
>>938
右クリックにマクロ割り当てるより、既に回答ついてるようにキーボードショートカットに割り当てるか、イベントのダブルクリックなんかに割り当てる方が良いと思います。
他にも色々したいならユーザーフォームを使うのもありかと。
2022/02/04(金) 21:36:40.60ID:Zgf6kB1T0
>>938
多分こんな感じ

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
色 = 65535
If Not (Intersect(Target, Union(Range("E4:H14"), Range("N4:Q14"))) Is Nothing) Then
Cancel = True 'コンテキストメニューなし
If Target.Interior.Pattern = xlNone Then
Target.Interior.Color = 色
Else
Target.Interior.Pattern = xlNone
End If
Else
Cancel = False '範囲外ならコンテキストメニュー復帰
End If
End Sub
2022/02/04(金) 21:38:14.51ID:Zgf6kB1T0
一応書けたけど、バグったらごめんね~って感じはある
コンテキストメニューの非表示は、何か良くない事が起こる気がする
ショートカットに割り当てといたほうが良いと思うなぁ
944デフォルトの名無しさん (ワッチョイ 2a7c-21ac)
垢版 |
2022/02/04(金) 21:52:01.87ID:mH27gNw80
>>942
ありがとうございます、
試してみたところ、問題なく動きました。
素早いレス感謝します。

>>939
>>941
ありがとうございました。
ショートカットキーも併せて検討してみます
2022/02/04(金) 21:59:19.78ID:Zgf6kB1T0
>>942で一個だけ迷ったのが、
Cancel = True 'コンテキストメニューなし
の行
これ、今の場所に書くべきか、以下の間が良かったのか、どっちだろう
End If
Else

なんとなく後者の方が良いかと思ったけど、具体的な理由は特に無い
2022/02/04(金) 22:00:37.50ID:hsiPC1r9M
>>942
勉強になるわ
2022/02/04(金) 22:07:39.34ID:hsiPC1r9M
>>945
色塗りが先か非表示が先かってことでしょ?
どっちでも良い気がするけど
2022/02/04(金) 22:20:18.23ID:Zgf6kB1T0
>>947
そうそう、どっちでもいい
だけど、エラーの発生や可読性などを考慮した時、どっちがいいかなと思って
こういう時に迷わずに書けるようになりたい
2022/02/04(金) 22:27:16.08ID:MwWgLKiA0
>>938
向上心あって良いね、自分は動きゃええわって感じだからなぁ 笑
それもあってここ抜いちゃうかもって思った
Else
Cancel = False '範囲外ならコンテキストメニュー復帰
2022/02/05(土) 02:19:12.27ID:6OPkdc9C0
>>940
レスありがとうございます
シートを一枚ずつ削除してからDeleteを試していったら、特定のシートの有無で大きな変化があったので
重くなる理由で調べていったら、条件付き書式がセルのコピペで勝手にどんどん増殖していく というのがまさにそれでした
Deleteとかは関係なかったみたいです、失礼いたしました
2022/02/05(土) 03:34:09.74ID:Bcit2bMf0
勝手に増殖したらウイルスみたいだな、そもそもコピペで(条件付き)書式もコピーされるのは正常動作だし
2022/02/05(土) 14:27:20.74ID:NvgV3V+H0
365インサイダー板、久しぶりに更新きた
953デフォルトの名無しさん (ワッチョイ f753-AiWJ)
垢版 |
2022/02/06(日) 04:25:59.05ID:4j2iEgx50
EXCEL2021のエラーダイアログに「デバッグ」ボタンがないんだけど、
どうすれば表示されるようになります?
2022/02/06(日) 17:12:52.54ID:5H6ThRiB0
>>953
スクリーンショット見せてほしい
2022/02/07(月) 11:59:42.81ID:dtTrWMUA0
新しいバージョンは、バグがあるからねぇ…
使わないに限る
2022/02/07(月) 12:13:58.84ID:PizflsNCM
全面的に使用禁止
2022/02/07(月) 14:36:18.09ID:L5SqTIhE0
そういい続けて今でもExcel2003使っている
2022/02/07(月) 17:16:58.35ID:clNFinzC0
VBA内で今まで使えてたKillが急に使えなくなった。
Excel13に戻すと使えるけど、俺が頃されたのか。
2022/02/07(月) 17:38:36.22ID:N54aEDvt0
概念が殺された
2022/02/07(月) 17:41:13.85ID:2n7cflzo0
>>958
ファイルやフォルダのアクセス権は大丈夫なんか?
2022/02/07(月) 18:07:58.36ID:Zblf2oZud
>>958
エラーコードとかもどってきてないの?
2022/02/07(月) 18:21:22.94ID:clNFinzC0
実行時エラー70
書き込みできません

プログラム内で作った作業用のファイルを終了直前に削除する部分が効かなくなった。
もう帰っちゃったしアクセス権とかは調べてないや。でもファイルは作れるしな。
先月までは普通に動いてたし別なPCでも同じ結果なんだな。
2022/02/07(月) 18:30:16.04ID:1qSznfbA0
>>958
「実行時エラー70書き込みできません kill」
で検索したら色々出てきた
多分開きっぱなしになっているので、.closeかなんかで閉じると良いと思う
2022/02/07(月) 18:44:59.26ID:UL1lTxQ90
ウイルスチェックやフォルダの同期(GoogleDrive)が邪魔してくれる事は良くある
2022/02/07(月) 20:17:13.59ID:rYqCZzs10
田中氏、いきなりようつべに復活したぽい
2022/02/07(月) 21:53:43.66ID:2n7cflzo0
>>962
そのファイルを誰かが開いてる

場合によってはエクスプローラーが開きっぱなしにすることがある
テンポラリフォルダの表示形式を一覧か詳細に変えてから閉じてみ
2022/02/08(火) 07:57:31.61ID:Kw22iHFld
>>962
ファイルを削除直前まで開いてたりすると削除で使用中の扱いになったりすることがあるから
ファイルを閉じる>Sleepで2秒程度またせる>削除
のようにするといいかもしれない。
自分はいつもこうしてる
2022/02/08(火) 22:22:07.82ID:VQAPYvrL0
ダウンロードファイルのVBAマクロをデフォルト無効化。Officeに仕様変更
https://pc.watch.impress.co.jp/docs/news/1386777.html
2022/02/09(水) 07:37:52.77ID:Fae4IrPy0
ダウンロードファイルなら無効にしておいたほうがいいだろうけど、
すぐに有効にしそう
2022/02/09(水) 09:21:32.50ID:9BkbymyAM
>>969
使うためにダウンするから難しいところだよね
2022/02/09(水) 09:47:40.14ID:mKkfmqYvd
社内のサイトからだとめんどくさいけどやらかすやつがいる以上はアプリ側でこういう対策をしてくれるのはありがたい
ファイルごとの指定だろうから既定値無効でいいと思うね
2022/02/09(水) 09:50:35.22ID:RWuYGaqJ0
こっそり入ってくるのを防ぐのが目的なんだから、マクロの存在をユーザーが認識できてるかどうかでしょ
自分で設定を切れるレベルの人は問題ないとみなすので、自己責任でどうぞ切って下さいってスタンス
2022/02/09(水) 10:56:38.64ID:9BkbymyAM
>>972
ウイルス単独というか元々あるVBAのコードを改編されるからコードが読めないと判断出来ないと思うよ
2022/02/09(水) 11:20:58.48ID:bDyl2u0GM
完璧に対策するのは不可能だから、まずは「添付の資料を見て下さい」っていう犯人からのメールきっかけで侵入されるパターンを想定してるのでは
975デフォルトの名無しさん (ワッチョイ b75f-PSKB)
垢版 |
2022/02/09(水) 12:06:08.78ID:kbHLXdYh0
マクロを理解してる人は、メールとかで送られてくる
Excelファイルなんて開かないけど、無能な素人が
開いちゃって、社内にウイルスがばら撒かれるから
無能のヒューマンエラー防止のための策でしょ?
2022/02/09(水) 12:22:38.83ID:j8hQF/oi0
公開されているcsvを読込むマクロで
csvファイルからウイルス広まる事例って
あるのかしら?
2022/02/09(水) 13:40:36.30ID:LKLk4DLKa
リンクを手当り次第クリックしちゃうアホがいるからね
2022/02/09(水) 13:43:15.59ID:Fae4IrPy0
誤クリを防ぐって意味ならたしかにかなり有用だと思う

>>976
言ってる意味がよく分からんが、
マクロはものすごくウィルスを添付しやすい
サイトで公開されているマクロ付きのエクセルファイルなんて開いちゃダメだぞ
コードを読んで、コピーして問題なければ使うのが基本だ
2022/02/09(水) 14:04:41.56ID:j8hQF/oi0
>>978
ああ。
.xlsmファイルをメールで送るつもりはさらさらなくて。

けど、
e-statなんかで公開されているcsvファイルを
読込んで処理するマクロを組んだ.xlsmファイルも
デフォルトでは開く度に毎回警告されるものだから。
2022/02/09(水) 14:20:22.38ID:RWuYGaqJ0
CSVは単なるテキストファイルだから、それ自体には感染能力はないけど、わざと文字化けさせたり巨大なデータを混入させてといて、読み込むアプリを誤作動されられる可能性ならある
簡単に実験できる範囲だと、セル内改行が大量にあるだけでExcelがプチフリするしね
2022/02/09(水) 14:20:22.44ID:Z/7LO9MU0
CSVに関数を書き込んで読み込んだExcelがそれを実行するって事例があった
2022/02/09(水) 14:25:00.32ID:I0u44nFvd
Excel VBA 質問スレ Part75
https://mevius.5ch.net/test/read.cgi/tech/1644384272/
2022/02/09(水) 14:27:15.27ID:RWuYGaqJ0
>>981
さすがにワークシート関数だけじゃ感染は無理なのでは
使用者を混乱させて誤操作を誘発するとかやらないと
2022/02/09(水) 15:29:31.91ID:h7C3sgPu0
>>982
なんたる有能
985デフォルトの名無しさん (オッペケ Sr0b-PSKB)
垢版 |
2022/02/09(水) 15:41:42.37ID:F+qQsHczr
大昔、2chの草創期に大流行した

ブラクラみたいな感じ
2022/02/09(水) 18:27:17.30ID:2Z/3/DW40
古いExcelは拡張子.xls でもマクロ書けたのと、test.csv.xls みたいなファイル名でOS設定で拡張子を表示しないとか
されていると気づかないで実行されることがあった
987デフォルトの名無しさん (ワッチョイ ffba-2cIz)
垢版 |
2022/02/09(水) 19:24:18.78ID:KYojXGCr0
どうすれば先頭の画像をクリックできるのでしょうか?
Sub func()
Dim url As String: url = "https://e-hentai.org/g/1727798/1fbe77a0a2/";
Dim buffer As String: buffer = ""
Dim objLink 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
buffer = objIE.document.getElementsByClassName("gdtm").outerHTML
Cells(1, 1).Value = buffer
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
2022/02/09(水) 19:45:46.68ID:Fae4IrPy0
>>987
ここから進まない
Do While objIE.Busy Or objIE.readyState <> READYSTATE_COMPLETE
DoEvents
Loop

最終的に何がしたいの?スクレイピング(画像のダウンロード)?
2022/02/09(水) 19:48:05.28ID:Fae4IrPy0
ダウンロードなら、右の「Archive Download」からダウンロードできるぽいのでそこで試してみては
2022/02/09(水) 21:24:05.75ID:Z/7LO9MU0
buffer = objIE.document.getElementsByClassName("gdtm").outerHTML

buffer = objIE.document.getElementsByClassName("gdtm")(0).outerHTML

みたいに添え字が必要。先頭だけでいいなら0

ちなみに、objIE.document.getElementsByClassName("gdtm").Length で何個あるかわかる
全部ほしければループする

リンク先が欲しいなら、outerHTMLじゃなくて、aタグのhrefだけ取得すればいいと思うよ
hoge = objIE.document.getElementsByClassName("gdtm")(0).getElementsByTagName("a")(0).href

あとは、objIE.navigate (hoge) でリンク先に飛ぶ
2022/02/09(水) 21:40:08.30ID:RWuYGaqJ0
>>987
そもそもe-hentai.orgはスクレイピング対策がけっこうキツめだからそんな単純な方法ではだめだったはず
2022/02/09(水) 21:44:33.64ID:oSWjz80sa
.click
2022/02/09(水) 22:14:49.52ID:MpMYHHoEd
どんな画像かわからんけど漫画なら作者なりが訴えたらまとめて賠償請求されるかもしれんのに
よく回答するねw
2022/02/09(水) 22:20:10.16ID:dWa1kwqW0
だって、教えたがりおじさんおばさんの巣窟だもん
2022/02/09(水) 22:31:13.14ID:WQvIAEnaM
回答者に賠償請求ですって?法律を知らない子はおかしなことをおっしゃるのね
2022/02/09(水) 22:43:06.13ID:qWGRAcWA0
質問者はどうしたらクリックできるか訊いてるんだけどね
なぜかダウンロードだのどうしたいだの
997デフォルトの名無しさん (ワッチョイ ffda-tymv)
垢版 |
2022/02/10(木) 01:00:09.82ID:hZgX7eKD0
マウスつなげる
2022/02/10(木) 07:30:31.61ID:j0eZpZqg0
If cnt=1000 Then MsgBox "ぬるぽ", vbOkOnly+vbCritical
2022/02/10(木) 09:01:43.57ID:YAVEwoPsM
vbaでWordの2ページ目にある表の中の文字列をエクセル転記したいです。
Wordの操作はできそうなのですが文字をどこまで細かく引っ張れるのでしょうか
2022/02/10(木) 09:33:43.50ID:cXcP1CjO0
>>999
条件次第
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 52日 7時間 52分 44秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


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

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

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

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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