Excel VBA 質問スレ Part54

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/05/26(土) 20:37:37.74ID:Lty78diJ
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK


最近プロによる書き込みが多々見うけられますが
彼らに絡むと話がこじれるので質問したい方は適当にスルーしてください


※前スレ
Excel VBA 質問スレ Part53
http://mevius.5ch.net/test/read.cgi/tech/1524823358/
161デフォルトの名無しさん
垢版 |
2018/06/05(火) 18:58:20.64ID:thULTm5+
>>160
ランサーズとかに発注したら
162156
垢版 |
2018/06/05(火) 19:01:53.33ID:aRuW/xf4
質問の仕方を間違えたみたいで申し訳ありません
自分のレスは忘れてください
スレ汚し済みませんでした
163デフォルトの名無しさん
垢版 |
2018/06/05(火) 20:09:13.45ID:NEmYpB3L
>>156
http://www9.plala.or.jp/siouxsie/excel/date06.html
164デフォルトの名無しさん
垢版 |
2018/06/05(火) 20:14:15.59ID:2NfSKm9E
>>163
これはネタなのか?文字化けなのか?
2018/06/05(火) 21:08:08.34ID:wUJpbb1/
すげぇ 片手に余るレスでお客さん追い返してやんの
桜井佐那(戸田恵梨香)が来る前の崖っぷちホテルか
>>158 がくっきー(野生爆弾)の顔で睨んだとイメージ
2018/06/05(火) 21:50:13.58ID:c4uzLsyW
>>156
作りかけのファイルアップしてくれたら何とかできるかも。

イベントの条件など、その人にしか分からないことが多いから自分でコード書くのが一番いいんだけど。例えばA列限定なのか、A列からJ列なのか、全ての列なのかでコードは変わってくるでしょう?
データも、縦方向に連続しているのか空白があるのか、空白が5行続いた場合どうするのか、空白と0を区別するのか、などなど。

あと、ここよりエクセル総合質問スレの方が親切な気がする。
167デフォルトの名無しさん
垢版 |
2018/06/05(火) 22:13:04.46ID:OTFnbEJY
つーかそんだけ条件はっきりしてんならちょっと考えたらわかるやろ。しかもほとんど自力でって言ってんだし
2018/06/06(水) 01:08:15.90ID:E+CHUf1c
>>160
見かけ上は空白セルということは実際の値は何でしょうか、例えば文字列""であるとか。
自動実行は>>163のURLが分かりやすいですが、もし文字化けしているのならばWorkSheet changeで調べると良いかと思います。
2018/06/06(水) 04:28:37.07ID:CT76euXG
>>164の意味がわからない
うちでは>>163のリンク先は普通に見えてるけど、文字化けして読めない環境の人もいるってこと?
2018/06/06(水) 08:35:29.70ID:dirBD7kG
質問
再利用性高いプログラム書いたとしてそれをどこに保存してどう活用するの。
例えば〇〇出来るマクロ作れ!言われてファイル開く部分は前作ったsubプロシージャで良いなと思っても今は前のソースからコピペしてる
クソなことしてる自覚はあるけどどうすればクソ脱却するか分からん
2018/06/06(水) 08:41:20.51ID:1qUEGpfN
>>169
MIMEの文字コード種別の記述と実際の文字コードが違うとかあると、ブラウザによっては文字化けするよ。
172デフォルトの名無しさん
垢版 |
2018/06/06(水) 09:47:21.88ID:zTT9nffr
>>169
lPhoneのJanestyle アプリで開いたから文字化けしてた
流れ的に高度なネタなのか判断が出来なかったので
173デフォルトの名無しさん
垢版 |
2018/06/06(水) 10:32:45.85ID:cIbpUMGv
>160
計算式が入っているってどういうことだろう
2018/06/06(水) 10:47:00.30ID:E+CHUf1c
>>170
Runで呼び出すのはどうでしょう
2018/06/06(水) 11:44:10.21ID:EAoXenc1
>>169
原因は>>171なんだろうけど大抵のブラウザはMIME無視して文字コードを指定して表示する方法がある
そんなことも知らないで>>164みたいなレスする奴のレベルは知れてるから相手しなくていいよ
2018/06/06(水) 12:12:22.29ID:gabeefJ7
>>170
C#かVB.NETでCOM dllを作ってシステムに登録
ブックから参照の追加で↑を再利用
かな
addinでもいいんだろうけど使いにくかったので俺はaddinの利用をやめた
2018/06/06(水) 13:14:46.89ID:1VAtV2oI
>>176
addinてなんだっけ?
自分はexamの運用で特に不自由感じてないけど、使い方によってデメリットあるのかな
2018/06/06(水) 14:59:12.02ID:Loe1X+88
クッソ、さっきから頭の中で小さな男女が楽しそうにマイムマイム踊ってやがる。
2018/06/06(水) 17:28:57.66ID:r8NrOT0a
俺なんて引き出し開けたら大名行列がいたぞ
180デフォルトの名無しさん
垢版 |
2018/06/06(水) 17:56:03.28ID:JJ061DfG
トイレの中に魔法使いがいる
2018/06/06(水) 20:52:40.89ID:qbv3xFkn
机からメス猫形ロボットが出てきた
2018/06/07(木) 00:52:14.51ID:l2af3llu
シートをコピーして名前を付けるときにすでにそのシート名が存在し、重複した場合、メッセージとして、"既にその名前のシートは存在しているのでコピーしません。"
とメッセージボックスに表示し、シートをコピーしないようにしたいのですがどのようにすればよいのでしょうか。
現状は、重複する場合、コピーの元となったシートに(2)などデフォルトで付いてしまってこまっています。
どなたか教えていただけると幸いです。
2018/06/07(木) 01:04:11.81ID:0bVyIKBb
>>182
事前に名前を取得すればいいだろ
馬鹿なの?
184デフォルトの名無しさん
垢版 |
2018/06/07(木) 01:32:35.30ID:+AIz84RJ
>>182
Private Sub hoge()
Dim title As String
Dim pro As String
Dim default As String
Dim rtn As String

On Error GoTo Errhd

ThisWorkbook.Worksheets(1).Copy after:=ThisWorkbook.Worksheets(1)
title = "シート名の入力"
pro = "追加したシート名の名前を入力して下さい"
pro = pro & vbCrLf & "キャンセルすると規定のシート名です"
default = "ここに入力してね"
rtn = InputBox(pro, title, default)
If Len(Trim(rtn)) <> 0 Then
ActiveSheet.Name = rtn 'ActiveSheetは使いたくないなー
End If
Exit Sub

Errhd:
If Err.Number = 1004 Then
MsgBox "シート名が重複してます。規定のシート名にします"
Else
MsgBox "エラー:" & Err.Description & "エラーNo:[" & CStr(Err.Number) & "]"
End If
End Sub
185デフォルトの名無しさん
垢版 |
2018/06/07(木) 06:57:02.78
>>184
VBAの前に日本語を勉強しようか
2018/06/07(木) 08:28:08.10ID:5slOqNk5
>>185
流石プロ
いう事が違う
2018/06/07(木) 08:33:39.02ID:SHzt2OxM
>>185
そだねー
2018/06/07(木) 12:07:36.63ID:iCODZEhm
>>184
文法がすげぇ
189デフォルトの名無しさん
垢版 |
2018/06/07(木) 18:44:38.31ID:7ubMCfWs
プロさんはソースコードレビューでコメントの日本語の指摘ばかりうけるので
ここで日本語の指摘して憂さ晴らししとるんやで
察してさしあげろ
190デフォルトの名無しさん
垢版 |
2018/06/07(木) 21:10:45.98ID:3qk59262
カーネルナンチャラのいみがわからん
191デフォルトの名無しさん
垢版 |
2018/06/07(木) 21:14:30.25
>>189
いやそもそも>>182の要件を一切満たしてないし

読解力はどこへ行ったのか
2018/06/07(木) 21:42:02.76ID:WN2hA1TZ
>>182
勝手に(2)になるってことは、シートのコピー自体をマクロでやってるってことかな?
1枚だけならともかく、複数シートのコピーとか考慮するとかなり難しいと思う。
1枚でも同じ名前があればコピー中止するのか、(2)になるのだけを中止するのか。
現在のコード見てみないとなんとも言えないを
193デフォルトの名無しさん
垢版 |
2018/06/07(木) 21:47:48.41ID:uqa5AZHU
foreachでシート名取得すればどうとでも出来ねーか?
2018/06/07(木) 21:50:54.59ID:G9c1fl5R
ForEachでWorksheetsコレクション回してコピー元のシート名と一致するか見れば済む話だろ
答える側のレベルも低すぎ
195デフォルトの名無しさん
垢版 |
2018/06/07(木) 22:29:02.37
For Each 回したりするくらいならこうだろ

Dim wks as Worksheet
On Error Resume Next
Set wks = Worksheets(sheetname)
On Error GoTo 0
If Not wks Is Nothing Then …(重複時の処理)…
2018/06/07(木) 22:31:47.53ID:l2af3llu
182です。
みなさんありがとうございます。
今の状況はこんなコードです。

Dim i As Long
i = Worksheets("マスタ").Range("B3").Value

Worksheets("鑑").Copy After:=Worksheets(Worksheets.Count)

Worksheets(Worksheets.Count).Name = i

というコードです。
197デフォルトの名無しさん
垢版 |
2018/06/07(木) 22:52:24.42ID:l2af3llu
こんな表を書きたいのですが、どのようにコードを書けばいいのでしょうか?
http://iup.2ch-library.com/i/i1912882-1528379316.png
198192
垢版 |
2018/06/07(木) 22:53:31.56ID:BzIZrc7A
>>196

これならcopyの前に、その名前のシートがあるか判定してアラート出せばいいでしょ。

Sub test()

Dim myShName As String
Dim myWS As Worksheet
Dim myFlag As Boolean

myShName = Worksheets("マスタ").Range("B3").Value

For Each myWS In Worksheets
If myWS.Name = myShName Then
myFlag = True
End If

Next myWS

If myFlag = True Then
MsgBox "すでにあるためコピーしません", vbInformation
Else
Worksheets("鑑").Copy after:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Name = myShName
End If


End Sub
2018/06/07(木) 22:53:51.61ID:l2af3llu
ごめんなさい。197はスレを間違えました。失礼しました。
200192
垢版 |
2018/06/07(木) 22:59:58.47ID:BzIZrc7A
>197

ふつうにマクロの記録でできると思います。
が、それをマクロでやる意味があるのかどうかは分かりません。
手作業でなくマクロを使いたいのはなぜ?
2018/06/07(木) 23:28:43.72ID:NUSkSgba
ID:l2af3llu
馬鹿過ぎ
2018/06/07(木) 23:43:46.34ID:DZn2zH5X
excelはめんどくせえなぁ
2018/06/08(金) 00:04:23.94ID:yxBs3du0
>>202
優しくしてねハート
2018/06/08(金) 01:15:25.48ID:4Sm8z/zL
>>196
flgを立てないパターン。
Dim sheet_name As String
Dim ws As Worksheet
sheet_name = Worksheets("Sheet1").Range("B3").Value
For Each ws In Worksheets
If ws.Name = sheet_name Then
MsgBox "alert", vbInformation
Exit For
Else
If ws.Name = Worksheets(Worksheets.count).Name Then
Worksheets("Sheet1").Copy After:=Worksheets(Worksheets.count)
Worksheets(Worksheets.count).Name = sheet_name
End If
End If
Next
2018/06/08(金) 01:45:24.10ID:r8MI6JEs
ファイルの上書き保存を禁止するマクロって組めるの?
それともファイルを開いたら自動的に複製が作られるようなのを組んだ方が楽かな
チームで1つのファイルを使ってて加筆することはあっても消す事は出来ないようにしたい
206192
垢版 |
2018/06/08(金) 02:24:44.07ID:gKLQw3te
>>205
before save イベントで、ある程度はできそうだけど、「上書き保存できないように」「加筆することはあっても消すことはできない」あたりが、ちょっと何をしたいのかよく分からないですね。
2018/06/08(金) 03:51:17.27ID:OuLpGoMA
>>205
svn導入したら?
208デフォルトの名無しさん
垢版 |
2018/06/08(金) 05:17:01.97ID:js+z/PTh
悪いこと言わないからWebアプリを覚えた方が良いって
共有も簡単
同時入力も出来る
端末も場所も選ばない
覚えるのはSQL C# html css JavaScript
たったこんだけで飛躍的に変わるんだから
2018/06/08(金) 06:50:16.72ID:YFpIx0sU
>>205
操作ミスを防ぎたいだけなら「読み取り専用を推奨する」を設定しておくのじゃダメかな
http://www.moug.net/tech/exopr/0060021.html
2018/06/08(金) 12:13:41.25ID:6N8w+kEg
>>205
エクセル上の上書き保存を禁止するだけなら、プロパティで読み取り専用にする方法と、Open時にパスとRead Onlyフラグを見て判定する方法と、before saved時にcancelする方法が考えられる。application.UserNameと組み合わせて自分以外は保存出来ないようにするとかね。
2018/06/08(金) 14:09:42.72ID:pgnN0/Vq
びふぉーせーぶきゃんせるしたらマクロほぞんできなくねて思って調べたらマクロ実行中にcancel trueにするとか書いてて目から鱗
使わんけど
212デフォルトの名無しさん
垢版 |
2018/06/10(日) 06:38:13.95ID:DGfRCW8U
>>205
>>207の言う通りファイルを複数人で共有して管理するなら
SVNとかTFSとかGITとかの導入を考えた方がいいかも
それなら間違って書いて上書きしてしまっても誰がいつ書き換えたかも分かるしすぐに直せる
もちろん何かしらでファイルが消されてしまってもすぐに復活出来る。

個人や会社の研修に使う程度の小規模のものなら
これをONE DRIVE、GOOGLE DRIVE、DROP BOX等と併用して使えば
インターネットに繋がる端末であればどこからでも
参照することが出来るようになる。
ただしセキュリティ面に関しては自己責任で。
2018/06/10(日) 11:36:18.83ID:c2C6yQT0
と、無職が書いてます
2018/06/10(日) 11:43:27.28ID:kZ6+r7gZ
ビジネスマンは認証なしファイルサーバーでエクセル共有が常識
徹底的に無駄をそぎ落とせ
215デフォルトの名無しさん
垢版 |
2018/06/10(日) 12:53:16.88ID:tSaaEFeX
>>214
共有ってもエクセルって同時に開けないでしょ?
2018/06/10(日) 13:05:50.36ID:Fn8GdORp
>>215
エクセルを共有し、複数人で同時に書き込むの面白いよ

会議とかでエクセルで議事録を書き、それを共有する
(同時にプロジェクターで映し出すのもいい)
それを各自が見ながら発言し、適宜各自が修正などを加えていく…
4〜5人のお馴染みのメンバーによる会議なら、議事録作成はこれが一番手間いらずだったな
2018/06/10(日) 13:08:10.31ID:4Fo/ClCp
共有ってのは情報を共有するってこと
ファイルがみんなの目に触れられるところにあればそれは共有してると言える
同時に開けるか否かは関係ない
社長のスケジュールを社員全員が共有する、みたいな
218デフォルトの名無しさん
垢版 |
2018/06/10(日) 13:21:16.74ID:kZ6+r7gZ
入力しにくい、同時作業しにくい、検索しにくい
エクセルは情報共有ツールじゃないということだ
実は表計算ツールなんだよね
219デフォルトの名無しさん
垢版 |
2018/06/10(日) 14:24:40.68
ExcelはDTPソフトにもデータベースソフトにも統合開発環境にもなる

何か一つしかアプリをインストールできないとなれば間違いなくExcelを選ぶ
2018/06/10(日) 15:03:32.84ID:kZ6+r7gZ
何かひとつならdotnetインストールするわ
2018/06/10(日) 15:26:15.87ID:0BrTvT6v
単にエクセルしか使えないだけ
222デフォルトの名無しさん
垢版 |
2018/06/10(日) 15:32:22.56ID:5Z7WXmtC
単に向上心がないだけ
223デフォルトの名無しさん
垢版 |
2018/06/10(日) 16:32:55.66ID:31HL9wlr
>>215
一応あるぞ
https://support.office.com/ja-jp/article/%E5%85%B1%E6%9C%89%E3%83%96%E3%83%83%E3%82%AF%E6%A9%9F%E8%83%BD%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6-49b833c0-873b-48d8-8bf2-c1c59a628534
2018/06/10(日) 18:16:45.90ID:stgWZmbr
共有はオブジェクトが扱えないのがなぁ
225デフォルトの名無しさん
垢版 |
2018/06/11(月) 01:50:54.91ID:z84MX3Hd
じゃあなんでexcelがこんなに普及してんの?
ここであれこれ名前が上がるけど、マイオナにしか聞こえん
226デフォルトの名無しさん
垢版 |
2018/06/11(月) 02:28:17.34ID:kgcyA64B
普及してるのは最初から入ってるから
でも今では会社じゃほとんど使わないですよ
使ってもメモ替わり程度
それ以上の用途はそれぞれの専用アプリを使います
なければWebアプリを中心に作ります
エクセルメインって弱小零細企業なんだろうけどテクノロジーは恐ろしいスピードで変化してますよ
227デフォルトの名無しさん
垢版 |
2018/06/11(月) 03:08:00.26ID:UR89H75b
日本の過半数は中小で政府の提供ファイルもExcelやぞ
http://www.chusho.meti.go.jp/pamflet/hakusyo/H27/h27/shoukibodeta/h27/html/b1_1_1_2.html
228デフォルトの名無しさん
垢版 |
2018/06/11(月) 03:19:33.44ID:kgcyA64B
今はPDFが多いだろ
エクセルとかワードファイルなんて必要項目以外も編集出来ちゃってもとファイルの意味ないじゃん
いつの時代の話をしてるの?
2018/06/11(月) 03:28:33.20ID:Yoq0VGap
俺は派遣でかなり大きな会社(SONYとかと同レベル)で働いているけどExcelめいいっぱい使ってるぞ。
VBAも使いまくってる。
というかVBAの仕事なんだけどね。
2018/06/11(月) 03:35:25.80ID:Yoq0VGap
現実と願望の区別が出来ない人がいるみたいだね。
それが進むとコンピュータ使うのなんて中小ぐらいしかないなどとなる。
231デフォルトの名無しさん
垢版 |
2018/06/11(月) 03:56:13.19ID:vx8oiu6e
派遣の人にさせる雑用事務仕事ならエクセルくらいしか使えないだろうから仕方ないかな
232デフォルトの名無しさん
垢版 |
2018/06/11(月) 07:19:30.73ID:z84MX3Hd
>>228
まさにこういう人の意見なんだけど、何をもってほとんど使わないと言ってるんだろう?
そんなにたくさんの会社を見てるの?
2018/06/11(月) 07:39:59.32ID:fIKXCmX7
入力装置としては悪くないプラットフォームだと思う
もちろん神エクセルは論外だけど
小規模のテーブルデータをサクッと作るには便利
ただエクセルのままデータや文書として交換するのはやめてほしいね
2018/06/11(月) 07:56:19.19ID:Yoq0VGap
>>231
お前より給料貰ってるけどな。

言い訳ばかりじゃたかが知れてる。
何を言っても零細は間違いというわけだ。
235デフォルトの名無しさん
垢版 |
2018/06/11(月) 08:03:09.89ID:z84MX3Hd
>>234
急に給料の話持ち出してどうしたの
2018/06/11(月) 08:41:00.99ID:Yoq0VGap
雑用事務じゃないってことだろ。
2018/06/11(月) 09:03:51.14ID:3FHBrWqi
ID:kgcyA64B

いつものフリーターの妄想です
2018/06/11(月) 12:38:18.86ID:l6P//bWH
表計算するのに使ってる
2018/06/11(月) 17:42:17.84ID:FzOvR6AO
↑それには気付かなかった!
2018/06/11(月) 18:01:59.04ID:uMLVNrv/
フォームを使っていろいろ勉強しながら遊んでるんですが、コードが長ったらしくなるときはcallで別に書いてるんですが、functionの使いどころというかこういうときは絶対functionだ!ってあるんですか?
引数やら戻り値やらネットでみたりするけど使いどころがいまいちで...
2018/06/11(月) 18:49:21.09ID:reMFgRN5
>>240
何度も呼び出す機能はfunction
同じ処理をコピペであちこちに書くと
直すとき大変ですし
スコープが狭くなると把握しやすくなるよね
2018/06/11(月) 19:01:52.91ID:ga7441Wg
>>240
むしろ関数の方が基本
ここぞというところだけプロシージャ
2018/06/11(月) 20:23:25.35ID:Jd6lebUg
>>242
戻りが必要なときがFunctionだと思ってた。
「ここぞ」ってどんなとき?
2018/06/11(月) 20:38:01.83ID:MCKH0IFJ
プロシャージャから呼ばれるものは原則ファンクション。とりあえずブーリアン型にしてtrueを返してるわ
プロシャージャはイベントハンドラと、ファンクションのデバッグ用くらいかなー
2018/06/11(月) 21:11:25.77ID:Jd6lebUg
>>244
ProcからSubProcを呼ぶのは邪道ってこと?
2018/06/11(月) 21:29:44.32ID:WRNhFr5s
ほとんど哲学の話だから気にしなくていいよ
2018/06/11(月) 23:00:51.68ID:IkuRhDJZ
>>240
馬鹿は死ねよ
248デフォルトの名無しさん
垢版 |
2018/06/11(月) 23:00:58.03
値の戻し方だって
関数の戻り値か、ByRef引数か、グローバル変数か、セルか、テキストファイルかは自由自在
2018/06/11(月) 23:08:19.54ID:VLKc0T55
>何度も呼び出す機能はfunction
さすがプロは違うなあ
2018/06/11(月) 23:20:37.50ID:ToxnEFH5
>>248
Document Properyもね。
2018/06/11(月) 23:21:58.92ID:ToxnEFH5
>>248
Document Properyもね。
>>250
あちゃ、Properyってなんだ?
2018/06/11(月) 23:43:56.97ID:ga7441Wg
関数のありがたみがわからない初心者のみんなは副作用、参照透過性、例外安全という観点で関数とプロシージャを比較してみよう
それだけでスキルアップだ
コードがグンと洗練されるぞ
やったね!
2018/06/12(火) 05:17:47.61ID:UBgzW1A3
> 副作用、参照透過性、例外安全
最近覚えたので使いたくてしょうがないんだろうな w
頓珍漢過ぎて笑うしかないけど
254デフォルトの名無しさん
垢版 |
2018/06/12(火) 05:37:01.98ID:bL9bvKzR
いつも行と列がわからなくなるんだがいい覚え方ある?
列方向とか言われると頭が混乱する
2018/06/12(火) 06:10:19.11ID:08LecQze
>>253
初心者くん
お勉強は大事だぞ
2018/06/12(火) 06:30:13.12ID:ujVgl+Aq
>>254
Row
Column
それぞれの先頭文字見たら
2018/06/12(火) 06:33:02.24ID:ujVgl+Aq
>>254
途中で書き込んでしまった

https://lambdalisue.hatenablog.com/entry/2013/07/18/134507

見ろ
2018/06/12(火) 06:37:59.94ID:rsKFgPQp
>>254
今時ほとんど横書きだから「行」と言えば横方向でしょ
一行目って言われて縦読みする奴はあまりいないし w
2018/06/12(火) 06:39:41.54ID:rsKFgPQp
頓珍漢なお勉強した結果 ⇒ >>255 w
260デフォルトの名無しさん
垢版 |
2018/06/12(火) 07:06:59.16ID:bL9bvKzR
ありがとうございます
これで行列を判別できそうです
2018/06/12(火) 08:05:50.28ID:08LecQze
>>259
そのうち君にもわかる時が来る
めげずに勉強しよう
今はわからなくても大丈夫だ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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