!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付けるナリ
ExcelのVBAに関する質問スレナリ
コード書き込みや作成依頼もOKナリ
※前スレ
Excel VBA 質問スレ Part70
https://mevius.5ch.net/test/read.cgi/tech/1616072923/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
Excel VBA 質問スレ Part71
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 0f5f-nIK+)
2021/05/25(火) 12:48:01.06ID:mepUVc/i075デフォルトの名無しさん (スププ Sdb3-YvNE)
2021/06/01(火) 22:41:37.93ID:u+h0cgO6d VBA Chromeでググれば色々でるが
お前がどう動かしたいか答えるのはエスパーしか無理
お前がどう動かしたいか答えるのはエスパーしか無理
76デフォルトの名無しさん (テテンテンテン MM4b-WbRb)
2021/06/01(火) 23:08:53.66ID:h5EIZiJKM Chrome使っていいんだったらエクステンション作ればよくね
VBAに固執する意味がない
VBAに固執する意味がない
77デフォルトの名無しさん (スプッッ Sd2d-ejzC)
2021/06/02(水) 10:29:31.20ID:6cAiGaxYd A列は途中で未記入の行は無し。B列以降は行によって列範囲は不明。途中の抜けは無し。この条件で一番右まで記入されている列は何列目なのかを知る方法をご教示願います。
この列の右に別の列を追加したいのです。
この列の右に別の列を追加したいのです。
78デフォルトの名無しさん (JP 0H75-6ypv)
2021/06/02(水) 11:11:55.45ID:Xo9eImhQH >>77
UsedRange.Column
UsedRange.Column
79デフォルトの名無しさん (ワッチョイ 9301-F81p)
2021/06/02(水) 11:20:06.26ID:Kwk6Ddry0 VBAでIE動かしたいっていうのは社内システムの操作じゃね
自動化しようにもそれしか選択肢がないっていうケース
自動化しようにもそれしか選択肢がないっていうケース
80デフォルトの名無しさん (JP 0H75-6ypv)
2021/06/02(水) 11:27:04.16ID:Xo9eImhQH そういうのは末端の社員が勝手に自動化して楽しようとしてるケースに限られる
そうでなければシステム部とか管理部がちゃんと対応してくれるはずだし
そうでなければシステム部とか管理部がちゃんと対応してくれるはずだし
81デフォルトの名無しさん (ワッチョイ 9301-F81p)
2021/06/02(水) 11:35:10.46ID:Kwk6Ddry0 末端しかこんなところにはこねーよ
82デフォルトの名無しさん (ワッチョイ 518f-w12y)
2021/06/02(水) 11:40:00.72ID:IWT/q5/E0 IEが2022/6/15にサポート終了する件なんだけど、VBAのIE操作もできなくなるの?
83デフォルトの名無しさん (ワッチョイ 934f-urWM)
2021/06/02(水) 11:40:36.31ID:y9OF8J1M084デフォルトの名無しさん (JP 0H75-6ypv)
2021/06/02(水) 12:15:32.36ID:Xo9eImhQH85デフォルトの名無しさん (ワッチョイ 518f-w12y)
2021/06/02(水) 12:23:59.65ID:IWT/q5/E0 >84
そうだとありがたいんだよね。
ただ記事で「2022年6月16日になっても、iexplore.exeは削除されないものの、アクセスしようとするとIE11は起動せずEdgeにリダイレクトされる」って書いてあったから不安なんだ
そうだとありがたいんだよね。
ただ記事で「2022年6月16日になっても、iexplore.exeは削除されないものの、アクセスしようとするとIE11は起動せずEdgeにリダイレクトされる」って書いてあったから不安なんだ
86デフォルトの名無しさん (ラクッペペ MM4b-hX9V)
2021/06/02(水) 13:20:52.87ID:JznBaFAoM createObjectで呼び出すんじゃないの?
87デフォルトの名無しさん (JP 0H75-6ypv)
2021/06/02(水) 16:05:40.28ID:Xo9eImhQH アプリは起動できなくされるけど、オブジェクトはさわれると予想
MS-Officeがもともとそういう構造だったし
MS-Officeがもともとそういう構造だったし
88デフォルトの名無しさん (ワッチョイ b95f-jY/U)
2021/06/02(水) 16:34:22.01ID:5rGltuVI0 ieが来年サポート終了するからchromeとseleniumで動かして見ようと思ったら
webdriverが若干古いのしか公開されてなくて詰んだ
頻繁に更新するchromeをどうやって制御すりゃいいんだよ…
webdriverが若干古いのしか公開されてなくて詰んだ
頻繁に更新するchromeをどうやって制御すりゃいいんだよ…
89デフォルトの名無しさん (オッペケ Sr8d-Q+hs)
2021/06/02(水) 23:09:59.70ID:qivQYfz/r すみません、教えてください
配列の一部の最大値を取得する方法ってないでしょうか?
例えば二次元配列で
a(1,1)=1
a(2,1)=2
a(3,1)=3
‥
a(100,1)=100
という配列があったとして、a(10,1)〜a(20,1)の間の最大値を出す方法です
for文で調べたい配列すべて調べて最大値を出す方法しか思い付かないのですが、他に方法はないでしょうか?
配列の一部の最大値を取得する方法ってないでしょうか?
例えば二次元配列で
a(1,1)=1
a(2,1)=2
a(3,1)=3
‥
a(100,1)=100
という配列があったとして、a(10,1)〜a(20,1)の間の最大値を出す方法です
for文で調べたい配列すべて調べて最大値を出す方法しか思い付かないのですが、他に方法はないでしょうか?
90デフォルトの名無しさん (ワッチョイ 9342-bBgm)
2021/06/02(水) 23:12:53.59ID:GkUPJJQl0 それはギャグで言ってるのか
91デフォルトの名無しさん (ワッチョイ 934f-urWM)
2021/06/02(水) 23:43:12.68ID:y9OF8J1M0 Rubyなら何ちゃらかんちゃらの前置きだろ
92デフォルトの名無しさん (ワッチョイ abda-6ypv)
2021/06/02(水) 23:59:28.51ID:6j/qqwIU0 >>89
全部の配列を一旦シートにコピーして関数つかえばいいんじゃね
全部の配列を一旦シートにコピーして関数つかえばいいんじゃね
93デフォルトの名無しさん (ワッチョイ 2b8e-jepm)
2021/06/03(木) 00:15:46.47ID:bA/gzbc70 >>89
死ね
死ね
94デフォルトの名無しさん (ワッチョイ 512c-0h5H)
2021/06/03(木) 02:19:06.04ID:Ers5yK+g0 >>88
Ruby には、Webdriver を自動的にダウンロードする、モジュール・gem がある。
タスクランナーみたいなもの
ブラウザの起動前に、ブラウザのバージョンを調べて、
Webdriver のバージョンが、それと一致しない場合、
それと一致するWebdriver をダウンロードしてから、処理を開始する
Ruby には、Webdriver を自動的にダウンロードする、モジュール・gem がある。
タスクランナーみたいなもの
ブラウザの起動前に、ブラウザのバージョンを調べて、
Webdriver のバージョンが、それと一致しない場合、
それと一致するWebdriver をダウンロードしてから、処理を開始する
95デフォルトの名無しさん (スップ Sdf3-6ypv)
2021/06/03(木) 03:06:46.55ID:WSKbBpAyd まともな企業のLANだとネットアクセスとかダウンロードに制限かかってそう
96デフォルトの名無しさん (ワッチョイ d97c-D/jZ)
2021/06/03(木) 10:13:44.82ID:oKNqyVQK0 臀痛は5ch繋がらないω
97デフォルトの名無しさん (ワッチョイ 934f-urWM)
2021/06/03(木) 11:26:30.81ID:jnApLDzu098デフォルトの名無しさん (ブーイモ MMab-OJVb)
2021/06/03(木) 11:51:09.60ID:B6Wkxzx6M 申請なしに何かをインストールする事も出来ないし、申請しても通らないから業務の効率化ってなるとソフトウェア開発の部署に発注するかVBAで作る以外の選択肢がない
9994 (ワッチョイ 512c-0h5H)
2021/06/03(木) 12:27:51.20ID:Ers5yK+g0 自動更新するのは、個人のサイトとか
ちゃんとした企業の本番環境では、毎週1回テストしてから、モジュール・gemを更新する。
そもそも、ブラウザも自動更新しない
gemの更新を貯めないように。
基本は、毎週1回テストしてから更新する
これをやっていない会社は、運用しているとは言えない。
ほったらかし
ちゃんとした企業の本番環境では、毎週1回テストしてから、モジュール・gemを更新する。
そもそも、ブラウザも自動更新しない
gemの更新を貯めないように。
基本は、毎週1回テストしてから更新する
これをやっていない会社は、運用しているとは言えない。
ほったらかし
100デフォルトの名無しさん (アウアウウー Sac5-g3z+)
2021/06/03(木) 12:29:19.02ID:OO42x4fga そう上司にいえばやらんですむんじゃね
101デフォルトの名無しさん (ワッチョイ 934f-urWM)
2021/06/03(木) 12:47:20.61ID:jnApLDzu0 >>99
はー、都度テストするとはご苦労なこった
つまり大きなシステムになるとその分、
Rubyの場合は毎週テストに労力と人員割いて
金掛けて実施しないとダメってことか
かなり大きな会社じゃないとそこまで融通効かないだろうな
はー、都度テストするとはご苦労なこった
つまり大きなシステムになるとその分、
Rubyの場合は毎週テストに労力と人員割いて
金掛けて実施しないとダメってことか
かなり大きな会社じゃないとそこまで融通効かないだろうな
102デフォルトの名無しさん (スップ Sdf3-B4oC)
2021/06/03(木) 13:13:14.99ID:4GINtqWnd >>98
PowerShell便利だぞ
PowerShell便利だぞ
10394 (ワッチョイ 512c-0h5H)
2021/06/03(木) 13:36:20.37ID:Ers5yK+g0 毎週、モジュールを更新するのは基本。
更新を貯めたら、保守・修正できなくなるので、ダメ。
こまめに・ちょくちょく更新
例えば、サイボウズ・Kintone は、
Kubernetes で毎日システムを作り直しているとか、
Netflix は毎日、わざとシステムを攻撃して、落としてテストしたりする
ちゃんと運用していない会社は、更新をほったらかしにしてる
更新を貯めたら、保守・修正できなくなるので、ダメ。
こまめに・ちょくちょく更新
例えば、サイボウズ・Kintone は、
Kubernetes で毎日システムを作り直しているとか、
Netflix は毎日、わざとシステムを攻撃して、落としてテストしたりする
ちゃんと運用していない会社は、更新をほったらかしにしてる
10494 (ワッチョイ 512c-0h5H)
2021/06/03(木) 13:46:13.92ID:Ers5yK+g0 毎週1回、OS の更新も大変だから、
サーバーレス・自分でOSを管理しない、AWS Fargate を使えと言われる。
AWSが、OSの更新をやってくれるから
だから、YouTube で有名な、雑食系エンジニア・KENTA の、
Ruby on Rails 初心者用コースに、AWS Fargate も入っている
それで皆、くろかわこうへいのサロンで、AWSを勉強する
Railsも今まで1人で、Heroku で作っていたのが、
Fargate, Terraform に変わってきてる
今の1年の未経験者は、10年以上のプロよりも、技術力が上になってる
サーバーレス・自分でOSを管理しない、AWS Fargate を使えと言われる。
AWSが、OSの更新をやってくれるから
だから、YouTube で有名な、雑食系エンジニア・KENTA の、
Ruby on Rails 初心者用コースに、AWS Fargate も入っている
それで皆、くろかわこうへいのサロンで、AWSを勉強する
Railsも今まで1人で、Heroku で作っていたのが、
Fargate, Terraform に変わってきてる
今の1年の未経験者は、10年以上のプロよりも、技術力が上になってる
105デフォルトの名無しさん (ワッチョイ 934f-urWM)
2021/06/03(木) 14:22:18.35ID:jnApLDzu010694 (ワッチョイ 512c-0h5H)
2021/06/03(木) 14:37:37.44ID:Ers5yK+g0 KENTA・くろかわこうへい、Udemy の人気講師・山浦清透などが現れて、
Ruby on Rails の教育革命が起こった
ものすごい短期間で、効率的に学べる。
それで、1年ぐらい勉強した未経験者が、10年以上のプロよりも、技術力が上になった
東大合格マンガ「ドラゴン桜」みたいなもの
今の未経験者は、Docker Compose も必須
Ruby on Rails の教育革命が起こった
ものすごい短期間で、効率的に学べる。
それで、1年ぐらい勉強した未経験者が、10年以上のプロよりも、技術力が上になった
東大合格マンガ「ドラゴン桜」みたいなもの
今の未経験者は、Docker Compose も必須
107デフォルトの名無しさん (ワッチョイ f101-2Cmt)
2021/06/03(木) 19:23:17.96ID:TUnqxA7B0108デフォルトの名無しさん (ワッチョイ 9302-4Wjq)
2021/06/03(木) 20:56:05.21ID:uLpHnOIZ0 効率化できるけど使うやつらが池沼で勉強した意味なかったな
109デフォルトの名無しさん (ワッチョイ 9342-bBgm)
2021/06/03(木) 21:12:55.36ID:L0NZ98mH0 効率化よりもいかにシートの内容を壊されないようにするかの工夫ばかり必要なパターンだな
110デフォルトの名無しさん (ワッチョイ abda-6ypv)
2021/06/03(木) 22:14:51.09ID:D5fnCzXq0 自力でできることを質問した場合、解答がなくても困らんだろ
111デフォルトの名無しさん (ワッチョイ f101-2Cmt)
2021/06/03(木) 22:50:40.18ID:TUnqxA7B0 >>98
発注出来る開発部署があるなら、そっちに投げた方が楽なんじゃ?
発注出来る開発部署があるなら、そっちに投げた方が楽なんじゃ?
112デフォルトの名無しさん (JP 0H39-IO17)
2021/06/04(金) 01:48:20.45ID:JjzCcUaXH 朗報
やっぱりオブジェクトは残る
> MSHTML(Trident)エンジンに関しても、互換性維持のため
> すぐに削除されることはない。OS内部に「IE 11」由来の
> 機能は残る。「WebBrowser」コントロールを利用するアプリも
> 引き続き利用できる。
https://i.imgur.com/BWnVYki.png
やっぱりオブジェクトは残る
> MSHTML(Trident)エンジンに関しても、互換性維持のため
> すぐに削除されることはない。OS内部に「IE 11」由来の
> 機能は残る。「WebBrowser」コントロールを利用するアプリも
> 引き続き利用できる。
https://i.imgur.com/BWnVYki.png
113デフォルトの名無しさん (ワッチョイ 09fd-E4sj)
2021/06/04(金) 01:56:50.63ID:/SvJ4cKr0 >>111
別部署とのお金のやり取りが発生するからメチャクチャ渋るぞ
別部署とのお金のやり取りが発生するからメチャクチャ渋るぞ
114デフォルトの名無しさん (ワッチョイ 2501-kwJE)
2021/06/04(金) 02:06:55.76ID:ggq9OdP30 >>113
そんなん会社ごとによるし俺に言われても
そんなん会社ごとによるし俺に言われても
115デフォルトの名無しさん (ワッチョイ 6ddb-9b/0)
2021/06/04(金) 12:36:18.19ID:tGFTJ4F20 最初は、動いていたのですが、
そのうち、毎回6行目でエラーが出るようになってしまいました。
例えば
D5セルに入力した3桁の数字をした時に
D7に百の位、E7に十の位、F7に一の位を表示させたいのです。
入力した結果を見て、再入力することもあるので
関数⇒値貼り付けはやりたくないのです。
できれば、どなたかご教授をお願いします。
ファイルのシートは1枚のみです。
【1 OSの種類 】 Windows10
【2 Excelのバージョン】 office365
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Long
If (Target.Row >= 5 And Target.Row <= 161) And (Target.Row Mod 4 = 1) And (Target.Column = 4) Then
r = Target.Row
Cells(r + 2, 4) = Cells(r, 4) \ 100
Cells(r + 2, 5) = Cells(r, 4) \ 10 Mod 10 ← 実行時エラー1004
Cells(r + 2, 6) = Cells(r, 4) Mod 10
End If
End Sub
そのうち、毎回6行目でエラーが出るようになってしまいました。
例えば
D5セルに入力した3桁の数字をした時に
D7に百の位、E7に十の位、F7に一の位を表示させたいのです。
入力した結果を見て、再入力することもあるので
関数⇒値貼り付けはやりたくないのです。
できれば、どなたかご教授をお願いします。
ファイルのシートは1枚のみです。
【1 OSの種類 】 Windows10
【2 Excelのバージョン】 office365
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Long
If (Target.Row >= 5 And Target.Row <= 161) And (Target.Row Mod 4 = 1) And (Target.Column = 4) Then
r = Target.Row
Cells(r + 2, 4) = Cells(r, 4) \ 100
Cells(r + 2, 5) = Cells(r, 4) \ 10 Mod 10 ← 実行時エラー1004
Cells(r + 2, 6) = Cells(r, 4) Mod 10
End If
End Sub
116デフォルトの名無しさん (ワッチョイ 6ddb-9b/0)
2021/06/04(金) 12:48:38.27ID:tGFTJ4F20 >>115
補足
最初、エラーが出たやつ
Cells(r + 2, 4) = Left(Cells(r, 4).Text, 1)
Cells(r + 2, 5) = Mid(Cells(r, 4).Text, 2, 1)
Cells(r + 2, 6) = Right(Cells(r, 4).Text, 1)
修正しても
Cells(r + 2, 4) = Cells(r, 4) \ 100
Cells(r + 2, 5) = Cells(r, 4) \ 10 Mod 10 ← 実行時エラー1004
Cells(r + 2, 6) = Cells(r, 4) Mod 10
補足
最初、エラーが出たやつ
Cells(r + 2, 4) = Left(Cells(r, 4).Text, 1)
Cells(r + 2, 5) = Mid(Cells(r, 4).Text, 2, 1)
Cells(r + 2, 6) = Right(Cells(r, 4).Text, 1)
修正しても
Cells(r + 2, 4) = Cells(r, 4) \ 100
Cells(r + 2, 5) = Cells(r, 4) \ 10 Mod 10 ← 実行時エラー1004
Cells(r + 2, 6) = Cells(r, 4) Mod 10
117デフォルトの名無しさん (エムゾネ FFea-DLda)
2021/06/04(金) 12:49:56.32ID:UUHTR6cxF >>115-116
そのうちまた動くようになるさ
そのうちまた動くようになるさ
118デフォルトの名無しさん (ワッチョイ a149-oUQE)
2021/06/04(金) 12:50:19.85ID:4IT3M2Hh0 シートを保護したまま動かす前提で、何か色々修正したときに
E7のロックをうっかりONにしてしまったとか。
E7のロックをうっかりONにしてしまったとか。
119デフォルトの名無しさん (ワッチョイ 6ddb-9b/0)
2021/06/04(金) 13:06:45.09ID:tGFTJ4F20 >>118
ありがとうございます。
どうやらそれらしいです。
頑張ってみます。
ありがとうございます。
どうやらそれらしいです。
頑張ってみます。
120デフォルトの名無しさん (スップ Sdea-PlKh)
2021/06/04(金) 16:43:12.67ID:0sw3CVWxd >>115
Private Sub Worksheet_Change(ByVal Target As Range)
Dim n, n1, n2, n3 As Integer
If Target.AddressLocal = "$D$4" Then
If IsNumeric(Target.Value) Then
n = Target.Value
n1 = n \ 100
n2 = n \ 10 Mod 10
n3 = n Mod 10
Me.Range("D7").Value = n1
Me.Range("E7").Value = n2
Me.Range("F7").Value = n3
End If
End If
End Sub
もう見てないかもしれないけど、どうぞ。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim n, n1, n2, n3 As Integer
If Target.AddressLocal = "$D$4" Then
If IsNumeric(Target.Value) Then
n = Target.Value
n1 = n \ 100
n2 = n \ 10 Mod 10
n3 = n Mod 10
Me.Range("D7").Value = n1
Me.Range("E7").Value = n2
Me.Range("F7").Value = n3
End If
End If
End Sub
もう見てないかもしれないけど、どうぞ。
121デフォルトの名無しさん (ワッチョイ 8578-wkOw)
2021/06/04(金) 17:55:39.07ID:Ca/vMZLe0 それだとn3 だけがintegerになるんじゃね
122デフォルトの名無しさん (ワッチョイ 2d3d-d+P4)
2021/06/04(金) 18:05:42.24ID:Bit4dpt50 >>120
n3以外Variantでいいの?
n3以外Variantでいいの?
123デフォルトの名無しさん (テテンテンテン MMde-0Hzh)
2021/06/05(土) 09:03:08.07ID:rlNy9EJ3M 基本が出来てない典型
124デフォルトの名無しさん (ササクッテロラ Sped-q291)
2021/06/05(土) 09:19:02.29ID:6nlrivgRp 基本が出来ていなくても何となく動いてしまう
それがVBA
それがVBA
125デフォルトの名無しさん (ワッチョイ ca01-U9S2)
2021/06/05(土) 10:37:53.55ID:qQr0HMbe0 あの書き方でよしとするネット情報が多くておれも最初間違えてたわ
126デフォルトの名無しさん (ワッチョイ 4abd-lji7)
2021/06/05(土) 11:01:57.88ID:w++2yo+P0 VBAで、QueryTableを使ってUTF-8のCSVを読み込ませてるんですが、
この読み込みのマクロを使った後に、そのxlsmファイルを開いたままの状態で、何か別のCSVファイルを手動で開くと
中の2バイト文字がグチャグチャに文字化けされてしまいます
xlsmを閉じてからだと何の問題もないんですが、作業してるとちょっと不便なんですが原因は何なのでしょうか?
この読み込みのマクロを使った後に、そのxlsmファイルを開いたままの状態で、何か別のCSVファイルを手動で開くと
中の2バイト文字がグチャグチャに文字化けされてしまいます
xlsmを閉じてからだと何の問題もないんですが、作業してるとちょっと不便なんですが原因は何なのでしょうか?
127デフォルトの名無しさん (ワッチョイ c6da-IO17)
2021/06/05(土) 13:08:34.35ID:X22osQ9q0128デフォルトの名無しさん (ワッチョイ 86da-IO17)
2021/06/05(土) 13:18:33.33ID:+aLYn71C0 >>126
後段の「何か別のCSVファイルを手動で」は、
・別のbook(.xlsx)からPowerQueryでのcsv読込み?
・それともcsvファイルをダブルクリックで直接開き?
PowerQueryでのcsv読込みなら
エンコードを一度自動認識で読み込んでも
後からステップの「ソース」の設定(歯車または詳細エディター)で
固定することも出来るけど・・・
後段の「何か別のCSVファイルを手動で」は、
・別のbook(.xlsx)からPowerQueryでのcsv読込み?
・それともcsvファイルをダブルクリックで直接開き?
PowerQueryでのcsv読込みなら
エンコードを一度自動認識で読み込んでも
後からステップの「ソース」の設定(歯車または詳細エディター)で
固定することも出来るけど・・・
129デフォルトの名無しさん (JP 0H39-IO17)
2021/06/05(土) 13:51:45.19ID:PrzcCeEoH 入力の手間や長くなるのが嫌なら
Dim n%, n1%, n2%, n3%
で全部Integerになる
Dim n%, n1%, n2%, n3%
で全部Integerになる
130デフォルトの名無しさん (ワッチョイ 4abd-lji7)
2021/06/05(土) 14:28:09.00ID:w++2yo+P0 >>128
済みません、VBAでQueryTableを使ってUTF-8のCSVをシートに読み込んだ後、適当なShift-JISのCSVファイルをダブルクリックして直に開くと
開いたCSVの中の2バイト文字が文字化けしています
Excelで開いてるウィンドウを全部閉じてから、CSVを開き直すと文字化けしていません
済みません、VBAでQueryTableを使ってUTF-8のCSVをシートに読み込んだ後、適当なShift-JISのCSVファイルをダブルクリックして直に開くと
開いたCSVの中の2バイト文字が文字化けしています
Excelで開いてるウィンドウを全部閉じてから、CSVを開き直すと文字化けしていません
131デフォルトの名無しさん (ワッチョイ c1da-wkOw)
2021/06/05(土) 15:56:52.45ID:Ko2adBFs0 マクロだけじゃない、Excel全体は基礎ができてないとすぐ壁にぶち当たる
132デフォルトの名無しさん (ワッチョイ 355f-/CHb)
2021/06/05(土) 16:25:26.38ID:eGJ4gYzF0 基礎って何ですか?
133デフォルトの名無しさん (ブーイモ MM39-K8+H)
2021/06/05(土) 16:45:34.26ID:QYWEL8gWM134デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/05(土) 22:09:51.31ID:fW5GrJR10 例えばVBAの基礎と言えば
・モジュールの先頭にはOption Explisit書いて全ての型は明示的に記述すること。
・行、列を扱うときは使用範囲の最大値を考慮してIntegerでなくLong型で定義すること。
・モジュール、関数、変数の名称は一見して何を意味しているのか分かるようにつけること。
・モジュール、メソッド、関数には複数の役割を持たせて作らないこと。
・基本、ひとつの変数に複数の型のインスタンスを代入する場合、Object型を使わずにインターフェースを作成して代入すること。
・グローバル変数は使用せず、プロパティを使用すること。
・VBA上では四捨五入を求めるROUNDは銀行丸めなので必要に応じてWorksheetFunctionのROUNDを使うこと
小数点以下の計算を行う場合、DoubleやSingle型は浮動小数点数扱いでIEEE754準拠のため誤差が発生
することがあることを念頭においておくこと。
まだまだ沢山あるけど
人や会社の厳しさや緩さによって多少は変わるけど
こういった最初の内から押さえていないとマズいことだと思う。
・モジュールの先頭にはOption Explisit書いて全ての型は明示的に記述すること。
・行、列を扱うときは使用範囲の最大値を考慮してIntegerでなくLong型で定義すること。
・モジュール、関数、変数の名称は一見して何を意味しているのか分かるようにつけること。
・モジュール、メソッド、関数には複数の役割を持たせて作らないこと。
・基本、ひとつの変数に複数の型のインスタンスを代入する場合、Object型を使わずにインターフェースを作成して代入すること。
・グローバル変数は使用せず、プロパティを使用すること。
・VBA上では四捨五入を求めるROUNDは銀行丸めなので必要に応じてWorksheetFunctionのROUNDを使うこと
小数点以下の計算を行う場合、DoubleやSingle型は浮動小数点数扱いでIEEE754準拠のため誤差が発生
することがあることを念頭においておくこと。
まだまだ沢山あるけど
人や会社の厳しさや緩さによって多少は変わるけど
こういった最初の内から押さえていないとマズいことだと思う。
135デフォルトの名無しさん (ワッチョイ c6da-IO17)
2021/06/05(土) 22:10:33.71ID:X22osQ9q0 >>130
問題が起きないように使えばいいのでは?
問題が起きないように使えばいいのでは?
136デフォルトの名無しさん (スプッッ Sd72-9b/0)
2021/06/05(土) 22:37:56.35ID:NS39OhGXd137デフォルトの名無しさん (ワッチョイ 4a10-p9zx)
2021/06/05(土) 22:53:56.98ID:zpL5HDoS0 RowがLongなのはわかるけど、
ColumnはIntegerで足りね?
ColumnはIntegerで足りね?
138デフォルトの名無しさん (ワッチョイ 355f-pu9w)
2021/06/05(土) 22:58:04.78ID:OxA9wcds0 WindowsAPIのmciSendString関数を使おうとサンプルコードを見ているのですが、
Callで呼び出さずにrc=と記述されたものばかり見受けられます。
rc=の意味を調べてもなかなか回答が見つからず…これって何なのでしょうか。
Callで呼び出さずにrc=と記述されたものばかり見受けられます。
rc=の意味を調べてもなかなか回答が見つからず…これって何なのでしょうか。
139デフォルトの名無しさん (JP 0H39-IO17)
2021/06/05(土) 23:01:50.30ID:PrzcCeEoH >>138
return code
return code
140デフォルトの名無しさん (ワッチョイ 86da-IO17)
2021/06/05(土) 23:05:55.78ID:+aLYn71C0 1つのbookにシート数44、1シートに1クエリーがあり、
「すべて更新」ボタンでやると部分的にクエリー更新に失敗することが多いため、
一覧表作ってシート名とクエリー名を変数にして
For To Next で順番にクエリーを更新していくマクロを組んだ。
それまではちゃんと機能していたものの、シートの改造・追加・並び替えをしたら、
実行時エラー '-2147319767 (80028029)':
オートメーション エラーです。
無効な前方参照か、コンパイルされていない種類への参照です。
と、エラーが出て途中で止まったでござる。
検索すると「メモリーの使いすぎ?」みたいな話はヒットするも、よくわからず。
プロジェクトエクスプローラー眺めてて、
「シートの順番入れ替えたりしたので、シート名の順番がぐちゃぐちゃになってるな・・・」
と、各シートのプロパティで、
sheet01 (○○○)、sheet02 (□□□)、sheet03 (△△△)・・・
と直してみたら、今度はエラーも出ず、1発で44クエリーが最後までマクロが実行されてもうた。
Dim tblQ As ListObject ' 対象となるクエリーの変数宣言
Dim ws As String ' sheet名の文字列変数宣言
Dim q As String ' クエリー名の文字列変数宣言
(中略)
Set tblQ = ThisWorkbook.Worksheets(ws).ListObjects(q) ←ここで止まった
tblQ.QueryTable.Refresh BackgroundQuery:=False
としてたのだけど、sheet名がマクロの実行順に並んでいないと、
VBAはwsやqの検索に失敗することがある (特にシート数が多い場合)
という理解でいいのかな?
「すべて更新」ボタンでやると部分的にクエリー更新に失敗することが多いため、
一覧表作ってシート名とクエリー名を変数にして
For To Next で順番にクエリーを更新していくマクロを組んだ。
それまではちゃんと機能していたものの、シートの改造・追加・並び替えをしたら、
実行時エラー '-2147319767 (80028029)':
オートメーション エラーです。
無効な前方参照か、コンパイルされていない種類への参照です。
と、エラーが出て途中で止まったでござる。
検索すると「メモリーの使いすぎ?」みたいな話はヒットするも、よくわからず。
プロジェクトエクスプローラー眺めてて、
「シートの順番入れ替えたりしたので、シート名の順番がぐちゃぐちゃになってるな・・・」
と、各シートのプロパティで、
sheet01 (○○○)、sheet02 (□□□)、sheet03 (△△△)・・・
と直してみたら、今度はエラーも出ず、1発で44クエリーが最後までマクロが実行されてもうた。
Dim tblQ As ListObject ' 対象となるクエリーの変数宣言
Dim ws As String ' sheet名の文字列変数宣言
Dim q As String ' クエリー名の文字列変数宣言
(中略)
Set tblQ = ThisWorkbook.Worksheets(ws).ListObjects(q) ←ここで止まった
tblQ.QueryTable.Refresh BackgroundQuery:=False
としてたのだけど、sheet名がマクロの実行順に並んでいないと、
VBAはwsやqの検索に失敗することがある (特にシート数が多い場合)
という理解でいいのかな?
141デフォルトの名無しさん (ワッチョイ 2d8e-Wt59)
2021/06/05(土) 23:06:05.26ID:HEfJq5i50 >>138
その程度の馬鹿頭でWindows APIなんか使うなよ
その程度の馬鹿頭でWindows APIなんか使うなよ
142デフォルトの名無しさん (ワッチョイ 355f-pu9w)
2021/06/05(土) 23:09:38.86ID:OxA9wcds0143デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/05(土) 23:22:29.75ID:fW5GrJR10 >>135
問題が起きにくくするようにのための決めごとだよ
もっとも、やってる仕事場のプログラマーが歩んできた経験則に大きく左右されたりもするから
そこは仕事場ごとのコーディング規約に基づいて組めばいいんじゃないかな。
それはプログラマーのお仕事としての基本になるかな。
>>136
面倒くさいよ。でも他の言語とは比較にならないくらい楽な方だよ。
>>137
またいつシートの行や列が増えないとも限らないじゃん。とある銀行系のところは行や列が増える以前からそんな想定をしてて最初からLong型を使うことがコーディング規約に記載されてたよ。
それにどうせInteger型はLong型を半分マスクしたものだからLong使って処理が遅くなったり容量余計食ったりすることないしね。
問題が起きにくくするようにのための決めごとだよ
もっとも、やってる仕事場のプログラマーが歩んできた経験則に大きく左右されたりもするから
そこは仕事場ごとのコーディング規約に基づいて組めばいいんじゃないかな。
それはプログラマーのお仕事としての基本になるかな。
>>136
面倒くさいよ。でも他の言語とは比較にならないくらい楽な方だよ。
>>137
またいつシートの行や列が増えないとも限らないじゃん。とある銀行系のところは行や列が増える以前からそんな想定をしてて最初からLong型を使うことがコーディング規約に記載されてたよ。
それにどうせInteger型はLong型を半分マスクしたものだからLong使って処理が遅くなったり容量余計食ったりすることないしね。
144デフォルトの名無しさん (スプッッ Sd72-9b/0)
2021/06/05(土) 23:35:33.21ID:NS39OhGXd145デフォルトの名無しさん (ワントンキン MM5a-Srd6)
2021/06/06(日) 00:10:56.51ID:AEt8vzaWM いつものruby馬鹿の自演
146デフォルトの名無しさん (ワッチョイ 355f-pu9w)
2021/06/06(日) 01:19:16.01ID:X88mu3QB0 >>144
ありがとうございます!
ありがとうございます!
147デフォルトの名無しさん (スッップ Sdea-gD/l)
2021/06/06(日) 02:19:15.47ID:rqYM4O//d いつものあいつ
148デフォルトの名無しさん (アウアウウー Sa11-wkOw)
2021/06/06(日) 04:32:20.52ID:V1i0NaJEa >>140
シート順を駄目な順に戻して再現するならそうかも
シート順を駄目な順に戻して再現するならそうかも
149デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/06(日) 10:05:15.65ID:s0YManYn0 Ruby信者はあわしろいくやという人の手先らしい
こんなスレまでわざわざ荒らしに来るちょっと頭が残念な人
こんなスレまでわざわざ荒らしに来るちょっと頭が残念な人
150デフォルトの名無しさん (テテンテンテン MMde-7vXX)
2021/06/06(日) 11:13:17.21ID:GvzTzrtAM151デフォルトの名無しさん (ササクッテロル Sped-q291)
2021/06/06(日) 11:44:13.88ID:kiIZdW9jp まーたあわしろいくやか
152デフォルトの名無しさん (ワッチョイ c1da-wkOw)
2021/06/06(日) 13:08:52.04ID:JiG+HYt80 基礎ってなんですか?って質問している時点で恐ろしいわ。。。
基本を知らずにExcelを操作している社員がいる職場のシートは難解なんだろうなきっと。。。
基本を知らずにExcelを操作している社員がいる職場のシートは難解なんだろうなきっと。。。
153デフォルトの名無しさん (アウアウウー Sa11-/CHb)
2021/06/06(日) 13:48:07.37ID:g5KkmiV+a >マクロだけじゃない、Excel全体は基礎ができてないとすぐ壁にぶち当たる
と言われたらまず基礎がどのぐらいか定義してもらわないと
何言ってるか分からないからだ
と言われたらまず基礎がどのぐらいか定義してもらわないと
何言ってるか分からないからだ
154デフォルトの名無しさん (アウアウウー Sa11-PpBj)
2021/06/06(日) 14:25:18.18ID:+MyNHKVga グローバル変数は許せよ
155デフォルトの名無しさん (ワッチョイ 4abd-lji7)
2021/06/06(日) 15:13:22.89ID:WJZoQhbE0 その変数の問題だと思うんですが、subの中からFunctionをコールして、String型変数を引数で渡しても
Functionの中でその変数が空っぽになります。どうして文字列が渡せないんでしょうか
Function aaa(ByVal hoge As String) As Long を Call aaa(hoge) と書くとaaa内でhogeが空っぽです
Public hoge とかしてみても駄目でした
Functionの中でその変数が空っぽになります。どうして文字列が渡せないんでしょうか
Function aaa(ByVal hoge As String) As Long を Call aaa(hoge) と書くとaaa内でhogeが空っぽです
Public hoge とかしてみても駄目でした
156デフォルトの名無しさん (ワッチョイ d95f-VpLq)
2021/06/06(日) 15:52:47.68ID:1YH+vaIj0 それ自分を呼び出してるだけじゃね
157デフォルトの名無しさん (ワッチョイ c6da-wkOw)
2021/06/06(日) 16:34:01.92ID:vQVSsWXH0 また
158デフォルトの名無しさん (JP 0H39-IO17)
2021/06/06(日) 17:16:44.69ID:PdUE2wOEH >>155
まずはモジュールの先頭にOption Explisitって書いてみ
まずはモジュールの先頭にOption Explisitって書いてみ
159デフォルトの名無しさん (ブーイモ MM2e-E4sj)
2021/06/06(日) 17:31:48.02ID:efAmahNiM 値渡しするならCall aaa((hoge))が望ましい
っていうか返り値があるFunctionってCallで呼び出す?返り値と同じ型の変数に代入とか演算に使ったりしない?
っていうか返り値があるFunctionってCallで呼び出す?返り値と同じ型の変数に代入とか演算に使ったりしない?
160デフォルトの名無しさん (ワッチョイ 1abd-t/gr)
2021/06/06(日) 18:21:18.04ID:pNkKMnVc0 VBAだけではないと思うんだけど、コードって使い回すじゃん?切った貼ったの繰り返しで完成後汚えなぁと思うことない?
あと、コードを保管方法ってなんかないかな?使ったエクセル開いてコピーとかメモ帳とかいろいろやったけど不便でならない。
あと、コードを保管方法ってなんかないかな?使ったエクセル開いてコピーとかメモ帳とかいろいろやったけど不便でならない。
161デフォルトの名無しさん (ワッチョイ 4abd-lji7)
2021/06/06(日) 18:26:33.85ID:WJZoQhbE0 FunctionとSubの違いもよく分かってなかったんですが、Functionの返り値を変数で受けようとした所
そもそも渡したい文字列がFunctionに渡せなくて困ってました
単に、自作の関数を呼び出す時に引数を渡してやればいいだろと思ってたんですが、それが出来ないので
VBAはその辺が厳密なんですかね……?
そもそも渡したい文字列がFunctionに渡せなくて困ってました
単に、自作の関数を呼び出す時に引数を渡してやればいいだろと思ってたんですが、それが出来ないので
VBAはその辺が厳密なんですかね……?
162デフォルトの名無しさん (ブーイモ MM2e-E4sj)
2021/06/06(日) 18:32:25.23ID:efAmahNiM 例えばFunctionで返り値をString型が欲しい場合求める場合
Public Function aaa(ByVal hoge)As String
ってString型を指定してやってFunction内でaaa = 【返したい文字列】ってやる必要があるのは分かる?
Public Function aaa(ByVal hoge)As String
ってString型を指定してやってFunction内でaaa = 【返したい文字列】ってやる必要があるのは分かる?
163デフォルトの名無しさん (ブーイモ MM2e-E4sj)
2021/06/06(日) 18:35:37.03ID:efAmahNiM Functionを呼ぶ側は
bbb = aaa((hoge))
ってやるんよ
参照渡し(ByRef)の場合は変数をダイレクトに書いて良いけど、値渡し(ByVal)の場合は変数を括弧でくくってやらんと上手く渡せない場合がある。
bbb = aaa((hoge))
ってやるんよ
参照渡し(ByRef)の場合は変数をダイレクトに書いて良いけど、値渡し(ByVal)の場合は変数を括弧でくくってやらんと上手く渡せない場合がある。
164デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/06(日) 19:11:37.69ID:s0YManYn0165デフォルトの名無しさん (スプッッ Sdca-7DC9)
2021/06/06(日) 19:27:28.02ID:HeHF5+P0d 場合って何よ 具体的に書きなよ
166デフォルトの名無しさん (ブーイモ MM2e-E4sj)
2021/06/06(日) 19:56:36.98ID:efAmahNiM >>165
参照渡しと値渡しを同時に行う際、値渡しの変数に括弧をつけておらず、尚且つ変数のみである場合、参照渡しとして認識されるが呼び先では値渡し指定なので不一致であるとエラーを吐いて停止する(但し変数に対して演算を行っていた場合は値渡しとして認識される)から値渡しする時は括弧つける癖をつけろ。その方が可読性もあがる。
って言えば満足か?
参照渡しと値渡しを同時に行う際、値渡しの変数に括弧をつけておらず、尚且つ変数のみである場合、参照渡しとして認識されるが呼び先では値渡し指定なので不一致であるとエラーを吐いて停止する(但し変数に対して演算を行っていた場合は値渡しとして認識される)から値渡しする時は括弧つける癖をつけろ。その方が可読性もあがる。
って言えば満足か?
167デフォルトの名無しさん (JP 0H39-IO17)
2021/06/06(日) 20:01:57.50ID:PdUE2wOEH >>164
言うか言わないかは個人の認識の問題
言うか言わないかは個人の認識の問題
168デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/06(日) 20:28:43.00ID:s0YManYn0 >>166
うん?
それ何か違う気がする
演算した後値渡しでエラーになると言うことは、そもそも渡す引数の呼び出す側の値が呼び出される関数の引数の型で許容されるものでは無かったってことじゃないの?
例えば呼ぶ側でVariant型を定義した変数に“1”という文字列を入れていて、それを受ける呼び出される側の引数が
Integer型に宣言されていた場合は型違いでエラーになるけど、呼び出し前にその変数に対して+1したものを代入すればその時点で暗黙の変化によりVariantの
内部型はIntegerになるから型が合ってエラーにはならない。という状況で、
括弧の話とはあまり関係ない気がするんだけど認識違う?
うん?
それ何か違う気がする
演算した後値渡しでエラーになると言うことは、そもそも渡す引数の呼び出す側の値が呼び出される関数の引数の型で許容されるものでは無かったってことじゃないの?
例えば呼ぶ側でVariant型を定義した変数に“1”という文字列を入れていて、それを受ける呼び出される側の引数が
Integer型に宣言されていた場合は型違いでエラーになるけど、呼び出し前にその変数に対して+1したものを代入すればその時点で暗黙の変化によりVariantの
内部型はIntegerになるから型が合ってエラーにはならない。という状況で、
括弧の話とはあまり関係ない気がするんだけど認識違う?
169デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/06(日) 20:30:46.16ID:s0YManYn0 暗黙の変化ってなんだよ暗黙の変換ね
170デフォルトの名無しさん (ワッチョイ 09fd-E4sj)
2021/06/06(日) 20:42:48.07ID:aS7dMAuf0 Public Sub aaa()
Dim aa As String, bb As String, cc As Long
bb = ″b″
cc = 2
aa = bbb(bb, cc)
End Sub
Public Function bbb(ByRef b As String, ByVal c As Long)As String
(中略)
End Sub
ってやるとFunction入る前にエラーで弾かれて
aa = bbb(bb, (cc))ってやったりaa = bbb(bb, cc + 1)ってやったりすると通るんだがおま環だった?
Dim aa As String, bb As String, cc As Long
bb = ″b″
cc = 2
aa = bbb(bb, cc)
End Sub
Public Function bbb(ByRef b As String, ByVal c As Long)As String
(中略)
End Sub
ってやるとFunction入る前にエラーで弾かれて
aa = bbb(bb, (cc))ってやったりaa = bbb(bb, cc + 1)ってやったりすると通るんだがおま環だった?
171デフォルトの名無しさん (ワッチョイ d95f-VpLq)
2021/06/06(日) 20:47:53.29ID:1YH+vaIj0 なにエラー?
172デフォルトの名無しさん (ワッチョイ 86da-IO17)
2021/06/06(日) 21:00:41.59ID:qWOh0TID0173デフォルトの名無しさん (ワッチョイ ca4f-q291)
2021/06/06(日) 21:34:20.79ID:s0YManYn0 >>170
コピーして実行してみたけど
まず“b”のダブルクォーテーションが全角なのと、Functionを閉じているところがEnd Subになっている。
コンパイルした時点でエラーで弾かれたよ。
そこを修正したらエラーが出なくなった。
コピーして実行してみたけど
まず“b”のダブルクォーテーションが全角なのと、Functionを閉じているところがEnd Subになっている。
コンパイルした時点でエラーで弾かれたよ。
そこを修正したらエラーが出なくなった。
174デフォルトの名無しさん (ワッチョイ c6da-IO17)
2021/06/06(日) 22:08:04.98ID:vQVSsWXH0 >>170
ファイル壊れてんじゃね
ファイル壊れてんじゃね
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「中国側も日本機のレーダーを感知していた」 中国メディアが報道 [♪♪♪★]
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 高市早苗首相、消費税減税に後ろ向き 足かせはレジシステム? 「責任ある積極財政」期待高いが [蚤の市★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 低所得層のマクドナルド離れが深刻に 広がる「ファストフード格差」の真相 米国 [少考さん★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★7 [七波羅探題★]
