ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part65
https://mevius.5ch.net/test/read.cgi/tech/1584430040/
※デフォルト設定
探検
Excel VBA 質問スレ Part66
■ このスレッドは過去ログ倉庫に格納されています
11000
2020/05/10(日) 13:43:45.00ID:Nkoph0aj264デフォルトの名無しさん
2020/05/25(月) 16:41:06.92ID:arQu/7J9 >>262
説明が下手ですいません
やりたい事は以下のとおりです。
@表示する場合
・機器と通信して、通信データ読み出すとIndex(数値)が取得できる。(変更不可)
・取得値が1の場合、選択リスト要素が"aa,bb,cc,dd"とするとセルにはaaが選択される。
A取得する場合
・セルの選択リストの選択要素が"dd"だった場合、4を返すとなる
・Index=4を通信で送る
コンボボックスだと楽に出来るのですが、セルを使った場合の対処に困っています。大量に項目があるのでコンボボックス一つずつ作成は対応できなくて。
説明が下手ですいません
やりたい事は以下のとおりです。
@表示する場合
・機器と通信して、通信データ読み出すとIndex(数値)が取得できる。(変更不可)
・取得値が1の場合、選択リスト要素が"aa,bb,cc,dd"とするとセルにはaaが選択される。
A取得する場合
・セルの選択リストの選択要素が"dd"だった場合、4を返すとなる
・Index=4を通信で送る
コンボボックスだと楽に出来るのですが、セルを使った場合の対処に困っています。大量に項目があるのでコンボボックス一つずつ作成は対応できなくて。
265デフォルトの名無しさん
2020/05/25(月) 18:18:30.74ID:pvRy3Vo6 PDF出力をするときに、ファイル名をBK19にして、同じフォルダ内の、
"納品書"というフォルダ内に保存したいのですが、保存場所が同じフォルダの同じ階層になってしまいます。
"納品書"フォルダに保存する方法をお願いします
Dim PATH_ As String 'このブックと同じフォルダの"納品書"フォルダ
〜途中省略
PATH_ = ThisWorkbook.Path & "\" & 納品書
〜途中省略
sh.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PATH_ & Range("BK19"), OpenAfterPublish:=False
それと、ネット上のサンプルの中に、For文のNextの後の変数が書いていないものがありますが、どういう時に書かなくていいんですか
"納品書"というフォルダ内に保存したいのですが、保存場所が同じフォルダの同じ階層になってしまいます。
"納品書"フォルダに保存する方法をお願いします
Dim PATH_ As String 'このブックと同じフォルダの"納品書"フォルダ
〜途中省略
PATH_ = ThisWorkbook.Path & "\" & 納品書
〜途中省略
sh.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PATH_ & Range("BK19"), OpenAfterPublish:=False
それと、ネット上のサンプルの中に、For文のNextの後の変数が書いていないものがありますが、どういう時に書かなくていいんですか
266260
2020/05/25(月) 18:21:44.47ID:arQu/7J9 出来ました。
267デフォルトの名無しさん
2020/05/25(月) 19:12:11.07ID:kYm8Dr+5 > PATH_ = ThisWorkbook.Path & "\" & 納品書
PATH_ = ThisWorkbook.Path & "\納品書"
PATH_ = ThisWorkbook.Path & "\納品書"
268デフォルトの名無しさん
2020/05/25(月) 19:17:16.20ID:0mNo0xGU すみませんエクセルですが教えてください
セルに2020/5/25と入っている。
2020/5/25(月)というテキストにしたい。
セルに2020/5/25と入っている。
2020/5/25(月)というテキストにしたい。
270デフォルトの名無しさん
2020/05/25(月) 19:32:32.80ID:RZDTWD0g >>268
セルの書式設定から表示形式をユーザー定義の yyyy/m/d(aaa) にする
セルの書式設定から表示形式をユーザー定義の yyyy/m/d(aaa) にする
271デフォルトの名無しさん
2020/05/25(月) 19:37:30.13ID:voBvEsJz ごめ
PATH_ = ThisWorkbook.Path & "\納品書\"
これは?
PATH_ = ThisWorkbook.Path & "\納品書\"
これは?
273デフォルトの名無しさん
2020/05/25(月) 20:09:54.13ID:0mNo0xGU274デフォルトの名無しさん
2020/05/25(月) 20:55:09.30ID:+lR6vdzO >>273
text関数
text関数
275デフォルトの名無しさん
2020/05/25(月) 21:16:44.80ID:Xi2PhkBU >>273
死ね
死ね
276デフォルトの名無しさん
2020/05/25(月) 21:40:54.06ID:oBwL7wIu >>275
この馬鹿モンが!
この馬鹿モンが!
277デフォルトの名無しさん
2020/05/25(月) 22:09:44.88ID:5DLeDpsM dim sine as object
278デフォルトの名無しさん
2020/05/25(月) 22:59:11.20ID:SN+Wx3Rt Set sine = Nothing
279デフォルトの名無しさん
2020/05/25(月) 23:18:40.90ID:jPur8MoZ テンプレから複数作ってく場合テンプレの右にどんどんコピーしていって
あとでテンプレシート以外を新しいブックに保存
これだとなぁ、おばちゃんがややこしいと文句言うかも
悩むなぁ
あとでテンプレシート以外を新しいブックに保存
これだとなぁ、おばちゃんがややこしいと文句言うかも
悩むなぁ
280デフォルトの名無しさん
2020/05/26(火) 10:12:12.68ID:TGtSSAvG ややこしや
281デフォルトの名無しさん
2020/05/26(火) 12:54:30.53ID:aCjjmYBU 所属してる部署や業務によってやりたい処理が違うから全部まんべんなく覚えていきたいという無駄な欲を捨てんといかんなぁ
はぁぁ大学行かずに専門とかで情シス専攻すればよかった
はぁぁ大学行かずに専門とかで情シス専攻すればよかった
282デフォルトの名無しさん
2020/05/26(火) 15:22:17.74ID:QaHLpt3K アホはしね
283デフォルトの名無しさん
2020/05/26(火) 15:33:26.20ID:aCjjmYBU 毎回それ言うためだけに見に来てるんなら
見なきゃいいのに
見なきゃいいのに
284デフォルトの名無しさん
2020/05/26(火) 17:01:22.50ID:xe35/PQB IT畑の人間は既存の業務フローを神聖不可侵な絶対的公理と考えてそれを自動化しようという発想をしがちだけど、それは注意が必要だと思うわ
自動化以前にそもそも無駄な業務って沢山ある
特にVBAで安易に自動化したくなるような業務はその傾向が強くて、現場の人間とちゃんと話せばあっさり消滅したりするもんだ
自動化以前にそもそも無駄な業務って沢山ある
特にVBAで安易に自動化したくなるような業務はその傾向が強くて、現場の人間とちゃんと話せばあっさり消滅したりするもんだ
285デフォルトの名無しさん
2020/05/26(火) 17:18:49.31ID:2eoVc4aq 客の業務自体の改善に付き合うなんていうめんどくさい事はしないよ
286デフォルトの名無しさん
2020/05/26(火) 18:59:45.92ID:LKm82hyE 客じゃなくて自分の会社なんだろ
287デフォルトの名無しさん
2020/05/26(火) 19:26:44.98ID:VDow7UZ6 これはおかしくね?と思っても依頼されたように作るしかない
288デフォルトの名無しさん
2020/05/26(火) 19:38:37.28ID:4UYpyuwL ああ、上司の命令ならな。
反論しろって?
10個の工程をPGが3工程くらいに短縮すると、理解できなかったりするんだよな。
反論しろって?
10個の工程をPGが3工程くらいに短縮すると、理解できなかったりするんだよな。
289デフォルトの名無しさん
2020/05/26(火) 19:50:36.19ID:e8iGmvo7 そりゃおまいさんが問題の分離ができてないのでは
290デフォルトの名無しさん
2020/05/26(火) 19:52:38.59ID:MDEhHweB 自社の業務改善って自分もしくは管理下の範疇でしかしないわな
責任取れる範囲でやらないと痛い目みるし、ドキュメントだ体制だルールだなんだ面倒だしな
基本周りは全部敵だよ
責任取れる範囲でやらないと痛い目みるし、ドキュメントだ体制だルールだなんだ面倒だしな
基本周りは全部敵だよ
291デフォルトの名無しさん
2020/05/26(火) 20:18:36.27ID:l4mmL3sO そういう組織は長生きしないだろうな
292デフォルトの名無しさん
2020/05/26(火) 20:25:34.60ID:EtaD8bXQ >>230
Ruby で作ってみたけど、めちゃめちゃ複雑な仕様だった!
2020/05/21 〜 2023/02/12
を以下の、3つの期間に分けて、[0, 94, 5] となった!
〜2019/12/31
2020/1/1〜2022/12/31
2023/1/1〜
Ruby で作ってみたけど、めちゃめちゃ複雑な仕様だった!
2020/05/21 〜 2023/02/12
を以下の、3つの期間に分けて、[0, 94, 5] となった!
〜2019/12/31
2020/1/1〜2022/12/31
2023/1/1〜
293292
2020/05/26(火) 20:30:27.90ID:EtaD8bXQ 10日ごとの期間の数が、[0, 94, 5]
294デフォルトの名無しさん
2020/05/26(火) 20:41:03.58ID:I81g2H63 所定のフォルダの中に「AAA.xlsx」という名前のエクセルファイルがあった場合、そのファイルを削除し、
その後同一フォルダ内のエクセルファイルを「AAA.xlsx」というファイル名に変更する、という処理を
しています。マクロ作成当初は問題なく処理できていたのですが、数日前からファイルを削除した後
実際にはエクセルファイルがあるにもかかわらず「エラー53 ファイルが見つかりません」とエラーが
でるようになりました。終了ボタンを押してエラーウィンドウを閉じた後、同じ処理をすると今度は
エラーが出ずに処理できます。
コード自体は変更していないのですが、このように実際には該当するファイルがあるにもかかわらず、
1度目(ファイル削除後ファイル名変更。ファイル削除処理は正常終了)はファイルが見つからずエラー、
2度目(削除するファイルがない状態でファイル名変更)は正常に処理が終了、となってしまう原因で
なにか思い当たるものがある人いますか?
具体的には
AAA.xlsx
20200526.xlsx
↓(AAA.xlsxを削除)←1回目はこの処理の後エラー53
20200526.xlsx
↓(ファイル名変更)
AAA.xlsx
となり、2回目は
20200526.xlsx
↓
AAA.xlsx
で正常に処理ができます。
ファイル名変更は
Name "*.xlsx" as "AAA.xlsx"
で処理しています
その後同一フォルダ内のエクセルファイルを「AAA.xlsx」というファイル名に変更する、という処理を
しています。マクロ作成当初は問題なく処理できていたのですが、数日前からファイルを削除した後
実際にはエクセルファイルがあるにもかかわらず「エラー53 ファイルが見つかりません」とエラーが
でるようになりました。終了ボタンを押してエラーウィンドウを閉じた後、同じ処理をすると今度は
エラーが出ずに処理できます。
コード自体は変更していないのですが、このように実際には該当するファイルがあるにもかかわらず、
1度目(ファイル削除後ファイル名変更。ファイル削除処理は正常終了)はファイルが見つからずエラー、
2度目(削除するファイルがない状態でファイル名変更)は正常に処理が終了、となってしまう原因で
なにか思い当たるものがある人いますか?
具体的には
AAA.xlsx
20200526.xlsx
↓(AAA.xlsxを削除)←1回目はこの処理の後エラー53
20200526.xlsx
↓(ファイル名変更)
AAA.xlsx
となり、2回目は
20200526.xlsx
↓
AAA.xlsx
で正常に処理ができます。
ファイル名変更は
Name "*.xlsx" as "AAA.xlsx"
で処理しています
295デフォルトの名無しさん
2020/05/26(火) 20:46:55.97ID:VDow7UZ6 >>294
エラーが出るコードを見なきゃわからん
エラーが出るコードを見なきゃわからん
296デフォルトの名無しさん
2020/05/26(火) 21:22:32.89ID:EtaD8bXQ >Name "*.xlsx" as "AAA.xlsx"
何となく、この、* がヤバそうw
何となく、この、* がヤバそうw
297デフォルトの名無しさん
2020/05/26(火) 21:32:47.20ID:PZVl0MiE プロパティのセットで配列や複数の引数を渡したいんだけど、送り手側の構文エラーにしかならない
調べても見つからないんだけど普通やらないの?
Variantで宣言しておけば通るっぽいけど
調べても見つからないんだけど普通やらないの?
Variantで宣言しておけば通るっぽいけど
298デフォルトの名無しさん
2020/05/26(火) 22:38:28.15ID:3xGTmG1z Sub テキストをエクセル() 'txtをエクセル化
With CreateObject("wscript.shell")
.currentdirectory = "C:\"
End With
Application.Dialogs(xlDialogOpen).Show "*txt.*"
End Sub
色々調べて作ってみたんですが
テキストファイルウィザードのウィンドウが出て完了を押す という手間が残りやす…
この手間をスキップというか直接Excelにデータ変換…教えてください
With CreateObject("wscript.shell")
.currentdirectory = "C:\"
End With
Application.Dialogs(xlDialogOpen).Show "*txt.*"
End Sub
色々調べて作ってみたんですが
テキストファイルウィザードのウィンドウが出て完了を押す という手間が残りやす…
この手間をスキップというか直接Excelにデータ変換…教えてください
299デフォルトの名無しさん
2020/05/26(火) 23:46:26.84ID:l/nHkMvV また馬鹿が来た
馬鹿は何をやりたいかすら自分で把握すらしていないから馬鹿なんだよ
馬鹿は何をやりたいかすら自分で把握すらしていないから馬鹿なんだよ
300292
2020/05/26(火) 23:56:54.38ID:EtaD8bXQ301デフォルトの名無しさん
2020/05/27(水) 01:10:50.60ID:bxZskA6m >>291
組織なんて巨大になるほど無駄が増えていくもんだ
組織なんて巨大になるほど無駄が増えていくもんだ
302デフォルトの名無しさん
2020/05/27(水) 15:11:46.06ID:ILM8Kvmo >>298
開きかたがそもそも違う
開きかたがそもそも違う
303デフォルトの名無しさん
2020/05/27(水) 20:47:31.58ID:5ROZxNJ2 >>297
配列のプロパティは代入と同じくLet(値渡し)での宣言になる
でも配列は参照渡ししかできないので矛盾が起きて渡せない(ByRel宣言しろと怒られる)
Variantか、インスタンス変数をPublicにするか、Javaみたいにアクセスメソッドを作る
SetterがあるならGetterもあるだろうからPublic宣言がいいんじゃないかな
配列のプロパティは代入と同じくLet(値渡し)での宣言になる
でも配列は参照渡ししかできないので矛盾が起きて渡せない(ByRel宣言しろと怒られる)
Variantか、インスタンス変数をPublicにするか、Javaみたいにアクセスメソッドを作る
SetterがあるならGetterもあるだろうからPublic宣言がいいんじゃないかな
304デフォルトの名無しさん
2020/05/27(水) 20:55:13.77ID:trt6Afr5 294です。エラーが出るコードは以下です
--------------------------------------------------------------------
Sub 入力用フォルダ内の入力用ファイル削除()
Dim myPath As String
myPath = ThisWorkbook.Path & "\入力用\" '入力用.xlsxがすでに存在したら削除
If Dir(myPath & "入力用.xlsx") <> "" Then
Kill myPath & "入力用.xlsx"
End If
End Sub
--------------------------------------------------------------------
Sub 入力用フォルダ内のファイル名変更()
Dim myPath As String
Dim myFile As String
myPath = ThisWorkbook.Path & "\入力用\" '事前にこのフォルダにファイルを入れておく
myFile = Dir(myPath & "*.xlsx")
Call 入力用フォルダ内の入力用ファイル削除 '前回の入力用.xlsxが残っていたら先に削除
Name myPath & myFile As myPath & "入力用.xlsx" 'ファイル名変更
・
・
--------------------------------------------------------------------
エラー53の際にデバッグボタンを押すと最後の
Name myPath & myFile As myPath & "入力用.xlsx"
の行が選択されているので。「myPath」内に「*.xlsx」がない、ということでエラーになっていると
思いますが、実際にはファイルはあるのでもう一度マクロを実行するとファイル名が変更される
という状況です
--------------------------------------------------------------------
Sub 入力用フォルダ内の入力用ファイル削除()
Dim myPath As String
myPath = ThisWorkbook.Path & "\入力用\" '入力用.xlsxがすでに存在したら削除
If Dir(myPath & "入力用.xlsx") <> "" Then
Kill myPath & "入力用.xlsx"
End If
End Sub
--------------------------------------------------------------------
Sub 入力用フォルダ内のファイル名変更()
Dim myPath As String
Dim myFile As String
myPath = ThisWorkbook.Path & "\入力用\" '事前にこのフォルダにファイルを入れておく
myFile = Dir(myPath & "*.xlsx")
Call 入力用フォルダ内の入力用ファイル削除 '前回の入力用.xlsxが残っていたら先に削除
Name myPath & myFile As myPath & "入力用.xlsx" 'ファイル名変更
・
・
--------------------------------------------------------------------
エラー53の際にデバッグボタンを押すと最後の
Name myPath & myFile As myPath & "入力用.xlsx"
の行が選択されているので。「myPath」内に「*.xlsx」がない、ということでエラーになっていると
思いますが、実際にはファイルはあるのでもう一度マクロを実行するとファイル名が変更される
という状況です
305デフォルトの名無しさん
2020/05/27(水) 21:41:05.84ID:d63wepvX306デフォルトの名無しさん
2020/05/27(水) 22:17:38.57ID:auut2Mwo >>304
なぜエラーになった時のmyFileの値を確認しないの?
なぜエラーになった時のmyFileの値を確認しないの?
307デフォルトの名無しさん
2020/05/28(木) 09:11:03.73ID:oSYrowbf Dir関数って何でコレクション返さずに、あんな奇妙な実装なんだろ
なんか訳があるのか
なんか訳があるのか
308デフォルトの名無しさん
2020/05/28(木) 09:41:03.97ID:2MUNkHgk309デフォルトの名無しさん
2020/05/28(木) 09:59:38.59ID:8QzLeV6c FDなんかでディレクトリエントリの順番変えて高速化とかの時代
310デフォルトの名無しさん
2020/05/28(木) 12:03:25.03ID:u/WM2FVL vlookupの参照値がエラーの場合に違うところに飛んでしまいます。エクセルの関数みたいにIFERROE(VLOOKUP(**,**,3,FALSE),"")みたいな処理をするためのコードを教えてください
Dim bigcnt As Long
Sub test()
Dim Pagecnt As Long
Dim rycnt As Long
Dim syouhin As Long
Dim Rowcnt As Long
For Pagecnt = 1 To MaxPage Step 1
Range("DX8").Value = Pagecnt
Rowcnt = 1
For tycnt = 12 To 30 Step 2
On Error Resume Next
Range("K" & tycnt).Value = _
Application.WorksheetFunction.VLookup( _
Application.WorksheetFunction.VLookup(bigcnt,Sheets("uuu").Range("A:C"), 2, False) & "P" & (Pagecnt * 10) - 10 + Rowcnt, _
Sheets("list").Range("B:FU"), 107, False)
Rowcnt = Rowcnt + 1
Next tyucnt
Dim bigcnt As Long
Sub test()
Dim Pagecnt As Long
Dim rycnt As Long
Dim syouhin As Long
Dim Rowcnt As Long
For Pagecnt = 1 To MaxPage Step 1
Range("DX8").Value = Pagecnt
Rowcnt = 1
For tycnt = 12 To 30 Step 2
On Error Resume Next
Range("K" & tycnt).Value = _
Application.WorksheetFunction.VLookup( _
Application.WorksheetFunction.VLookup(bigcnt,Sheets("uuu").Range("A:C"), 2, False) & "P" & (Pagecnt * 10) - 10 + Rowcnt, _
Sheets("list").Range("B:FU"), 107, False)
Rowcnt = Rowcnt + 1
Next tyucnt
311310
2020/05/28(木) 12:03:59.29ID:u/WM2FVL つづき
Rowcnt = 1
For syouhin = 12 To 30 Step 2
On Error Resume Next
Range("AC" & syouhin).Value = _
Application.WorksheetFunction.VLookup( _
Application.WorksheetFunction.VLookup(bigcnt, Sheets("uuu").Range("A:C"), 2, False) & "P" & (Pagecnt * 10) - 10 + Rowcnt, _
Sheets("list").Range("B:FU"), 63, False)
Rowcnt = Rowcnt + 1
Next syouhina
Next Pagecnt
End Sub
↓のこの変でエラーがでると、次の処理が予測不能な参照値に飛びます
bigcnt,Sheets("uuu").Range("A:C"), 2, False) & "P" & (Pagecnt * 10) - 10 + Rowcnt, _
"On Error GoTo 0"にしてもvlookupで参照できずにとまり、やはり予測不能な参照値に飛びます
bigcntは正しい値に更新されていました
Rowcnt = 1
For syouhin = 12 To 30 Step 2
On Error Resume Next
Range("AC" & syouhin).Value = _
Application.WorksheetFunction.VLookup( _
Application.WorksheetFunction.VLookup(bigcnt, Sheets("uuu").Range("A:C"), 2, False) & "P" & (Pagecnt * 10) - 10 + Rowcnt, _
Sheets("list").Range("B:FU"), 63, False)
Rowcnt = Rowcnt + 1
Next syouhina
Next Pagecnt
End Sub
↓のこの変でエラーがでると、次の処理が予測不能な参照値に飛びます
bigcnt,Sheets("uuu").Range("A:C"), 2, False) & "P" & (Pagecnt * 10) - 10 + Rowcnt, _
"On Error GoTo 0"にしてもvlookupで参照できずにとまり、やはり予測不能な参照値に飛びます
bigcntは正しい値に更新されていました
312デフォルトの名無しさん
2020/05/28(木) 12:27:26.72ID:CwUX9Txr next に変なカウンタつけるなよ
313310
2020/05/28(木) 13:05:26.67ID:u/WM2FVL すみません。
rycnt→tycnt
tyucnt→tycnt
syouhina→syouhin
rycnt→tycnt
tyucnt→tycnt
syouhina→syouhin
314デフォルトの名無しさん
2020/05/28(木) 13:15:00.91ID:8QzLeV6c 読む気無いけどvlookup使うのは高速化とかが目的?
VBAerなら自分で探したほうが融通効かないか?
VBAerなら自分で探したほうが融通効かないか?
315デフォルトの名無しさん
2020/05/28(木) 13:28:52.23ID:VMjOSmuX 悪いけど、vlookup使う方がセンスいいと思うよ
316デフォルトの名無しさん
2020/05/28(木) 13:51:27.19ID:EbwElpou 俺もそう思う
317デフォルトの名無しさん
2020/05/28(木) 14:17:55.81ID:fQiHMFwM 正直まともに読む気がしなくなる
・誤字が多すぎてエラーにならないわけがない(手打ちしてるんだろ)
・シート上の範囲とかシート名、構成が不明すぎる
・同じく変数が不明すぎる(こちらはbigcntとかmaxpageとか全く知らない)
・何でデバッグで一時変数に入れるとかしないのか(二つめと四つめのVlookupは返り値とれるやろ。エラーがでるならそこかもしれんやろ、しらんが)
・なんでon errorはその二つしか試してないの、てかデバッグするなら回避しなければいいのに
速度求めるのにworksheetfunction使うのはいいけど、
こんな感じで雑に使うと可読性下がるから、そこは理解してつかって
・誤字が多すぎてエラーにならないわけがない(手打ちしてるんだろ)
・シート上の範囲とかシート名、構成が不明すぎる
・同じく変数が不明すぎる(こちらはbigcntとかmaxpageとか全く知らない)
・何でデバッグで一時変数に入れるとかしないのか(二つめと四つめのVlookupは返り値とれるやろ。エラーがでるならそこかもしれんやろ、しらんが)
・なんでon errorはその二つしか試してないの、てかデバッグするなら回避しなければいいのに
速度求めるのにworksheetfunction使うのはいいけど、
こんな感じで雑に使うと可読性下がるから、そこは理解してつかって
318デフォルトの名無しさん
2020/05/28(木) 14:35:32.74ID:1No7OPPN こんな感じかな
Function myVLookup(lookup, tbl As Range, col As Integer, Optional flg = True) '個人的にはflg=Falsebノしたいけど
On Error GoTo err1
myVLookup = WorksheetFunction.VLookup(lookup, tbl, col, flg)
Exit Function
err1:
'Debug.Print lookup, tbl.Address
myVLookup = ""
End Function
Function myVLookup(lookup, tbl As Range, col As Integer, Optional flg = True) '個人的にはflg=Falsebノしたいけど
On Error GoTo err1
myVLookup = WorksheetFunction.VLookup(lookup, tbl, col, flg)
Exit Function
err1:
'Debug.Print lookup, tbl.Address
myVLookup = ""
End Function
319デフォルトの名無しさん
2020/05/28(木) 14:55:35.18ID:1No7OPPN 訂正
× Optional flg=True
○ Optional flg=1
VBAだから、True=-1だっけ
× Optional flg=True
○ Optional flg=1
VBAだから、True=-1だっけ
320デフォルトの名無しさん
2020/05/28(木) 15:47:43.10ID:A0D9Z3DQ vbaerってなんでしょうか?
321デフォルトの名無しさん
2020/05/28(木) 16:26:49.63ID:Xg+0aVY9322デフォルトの名無しさん
2020/05/28(木) 17:23:33.07ID:vsv+AImU 測定系の部署だから
エクセル関数でもリスト作ったりとかそういうのは使わないんだよぁ
計算系はすんげぇ使う
エクセル関数でもリスト作ったりとかそういうのは使わないんだよぁ
計算系はすんげぇ使う
323デフォルトの名無しさん
2020/05/28(木) 17:32:02.90ID:NxeE/SGI 100万行以上ある表で特定の範囲に太字があるセルがある場合にTrueを返却したいのですが、
セルをループする以外で判定する方法はないでしょうか。
ループだと遅いので他の方法を探しています。
セルをループする以外で判定する方法はないでしょうか。
ループだと遅いので他の方法を探しています。
324デフォルトの名無しさん
2020/05/28(木) 17:40:50.70ID:YLdey8mA 太字で判定するしかない設計を見直す
325デフォルトの名無しさん
2020/05/28(木) 17:53:26.74ID:6oAsq0wQ326デフォルトの名無しさん
2020/05/28(木) 18:24:58.06ID:NxeE/SGI327デフォルトの名無しさん
2020/05/28(木) 18:33:29.93ID:1No7OPPN 例えば、セルB1にして =GET.CELL(20,A1)*1 を LeftIsBold とでも名前定義
太字を確認したい列の右隣に、=LeftIsBold と入力して、それを合計する
遅いか速いかは知らないけど、Excel4.0マクロだから、ユーザー定義関数関数使うよりは早いと思う
あと、文字単位の太字には未対応
太字で判定する設計が良くないのは同意
太字を確認したい列の右隣に、=LeftIsBold と入力して、それを合計する
遅いか速いかは知らないけど、Excel4.0マクロだから、ユーザー定義関数関数使うよりは早いと思う
あと、文字単位の太字には未対応
太字で判定する設計が良くないのは同意
328デフォルトの名無しさん
2020/05/28(木) 18:44:24.85ID:nu6DWAbq ユーザーフォームを印刷したいんだけどA4横印刷で一枚に収まるように倍率変更って出来ない?
ちょろっと調べると印刷設定に依存するとか書いてある。
吐き出し用のシートやらコード書くの面倒だし、フォームだけが印刷出来ればいいんだが本当に無理?
ちょろっと調べると印刷設定に依存するとか書いてある。
吐き出し用のシートやらコード書くの面倒だし、フォームだけが印刷出来ればいいんだが本当に無理?
329デフォルトの名無しさん
2020/05/28(木) 19:09:14.00ID:HPtbnCn7 >>328
1回PDFにして、PDFビューアの機能でA4フィット印刷 じゃだめ?
1回PDFにして、PDFビューアの機能でA4フィット印刷 じゃだめ?
330デフォルトの名無しさん
2020/05/28(木) 19:19:51.07ID:GEIkGrn6 >>326
XMLで読み込めば判るんじゃないの?
XMLで読み込めば判るんじゃないの?
331デフォルトの名無しさん
2020/05/28(木) 20:56:43.74ID:0S10FlCu >>330
100万行のワークシートをXMLにするとデータ量が10陪ぐらいになることもあるから、たぶんワークシートをVBAで直接調べた方が早い
100万行のワークシートをXMLにするとデータ量が10陪ぐらいになることもあるから、たぶんワークシートをVBAで直接調べた方が早い
332デフォルトの名無しさん
2020/05/28(木) 21:21:26.06ID:PIoPunSP >>323
usedrangeの範囲を太字で検索してあればtrueは?
usedrangeの範囲を太字で検索してあればtrueは?
333デフォルトの名無しさん
2020/05/28(木) 21:44:10.77ID:GEIkGrn6334デフォルトの名無しさん
2020/05/28(木) 22:37:07.33ID:0S10FlCu >>333
ネットを経由したらもっと遅くなると思うぞ
ネットを経由したらもっと遅くなると思うぞ
335デフォルトの名無しさん
2020/05/28(木) 22:48:39.38ID:0S10FlCu336323
2020/05/28(木) 23:44:38.45ID:AwZmzoZa みなさんいろいろありがとうございます。
結局ループですることになりそうです
>>335さんのコードと同じような気がしますが、その数秒〜十数秒が短縮できないかなと思ってました。
ありがとうございました。
結局ループですることになりそうです
>>335さんのコードと同じような気がしますが、その数秒〜十数秒が短縮できないかなと思ってました。
ありがとうございました。
337デフォルトの名無しさん
2020/05/29(金) 00:08:23.93ID:QVnkNeSg まあどう考えても>>324
338デフォルトの名無しさん
2020/05/29(金) 06:08:45.93ID:OHJZg62K 業務上100万件のデータ処理が必要なら専用のソフトを独自に作るべきだろう
初心者にVBAでやらせる上司が無能としか言いようがない
今までその業務手作業でやってたんだとしたらそのままのやり方続けていればいいんじゃね
初心者にVBAでやらせる上司が無能としか言いようがない
今までその業務手作業でやってたんだとしたらそのままのやり方続けていればいいんじゃね
339デフォルトの名無しさん
2020/05/29(金) 06:43:32.30ID:z6j/3IlC >>329
印刷出来れば構いません。
印刷出来れば構いません。
341デフォルトの名無しさん
2020/05/29(金) 12:52:21.52ID:UXGV4L+b 物凄いコードを3つ
前スレで教えてくれたあの人たちが
今でもここを見てくれてますように
前スレで教えてくれたあの人たちが
今でもここを見てくれてますように
342デフォルトの名無しさん
2020/05/29(金) 12:59:11.86ID:wRO7TzMi >>323
その範囲.Font.Bold
その範囲.Font.Bold
343デフォルトの名無しさん
2020/05/29(金) 13:16:11.31ID:I8K8veff 指定したフォルダ内の"B"で始まるxlsファイルの"表紙"シートの各箇所を
このブックの"comp"シートA〜C列の2行目以降に書き出していくコードを教えてください
Dim path As String ,buf As String, i As Long
Dim mysheet As Worksheet, srcbook As Workbook, srcsheet As Worksheet
With Application.FileDialog(msoFileDialogFolderPicker)'フォルダを選択する
If .Show = 0 Then
MsgBox "キャンセルされました。"
Exit Sub
End If
path = .SelectedItems(1)
End With
Set mysheet = ThisWorkbook.Worksheets("comp")
buf = Dir(path & "B*.xls")
Do While buf <> ""
i = i + 1
Set srcbook = Workbook.Open(path + buf)
Set srcsheet = srcbook.Worksheets("表紙")
mysheet.Cells(i, 1).Value = srcsheet.Cells(3, 13)
mysheet.Cells(i, 2).Value = srcsheet.Cells(5, 2)
mysheet.Cells(i, 3).Value = srcsheet.Cells(7, 2)
srcbook.Close False
buf = Dir()
Loop
を試したのですが、だめでした
このブックの"comp"シートA〜C列の2行目以降に書き出していくコードを教えてください
Dim path As String ,buf As String, i As Long
Dim mysheet As Worksheet, srcbook As Workbook, srcsheet As Worksheet
With Application.FileDialog(msoFileDialogFolderPicker)'フォルダを選択する
If .Show = 0 Then
MsgBox "キャンセルされました。"
Exit Sub
End If
path = .SelectedItems(1)
End With
Set mysheet = ThisWorkbook.Worksheets("comp")
buf = Dir(path & "B*.xls")
Do While buf <> ""
i = i + 1
Set srcbook = Workbook.Open(path + buf)
Set srcsheet = srcbook.Worksheets("表紙")
mysheet.Cells(i, 1).Value = srcsheet.Cells(3, 13)
mysheet.Cells(i, 2).Value = srcsheet.Cells(5, 2)
mysheet.Cells(i, 3).Value = srcsheet.Cells(7, 2)
srcbook.Close False
buf = Dir()
Loop
を試したのですが、だめでした
344デフォルトの名無しさん
2020/05/29(金) 13:36:39.75ID:Afg8U+25 debug.print入れまくれ
で、どこがどうだめだったの?
で、どこがどうだめだったの?
345デフォルトの名無しさん
2020/05/29(金) 13:38:45.34ID:x/xJoOz3 buf = Dir(path & "B*.xls")
の後ろに、
Debug.print buf
Debug.print path & "B○○.xls" <--実際のファイル名を入れる
で、何か気づくと思うよ
の後ろに、
Debug.print buf
Debug.print path & "B○○.xls" <--実際のファイル名を入れる
で、何か気づくと思うよ
346デフォルトの名無しさん
2020/05/29(金) 14:59:14.36ID:4ofbCjLS xls形式って古くね
347デフォルトの名無しさん
2020/05/29(金) 15:00:54.79ID:xfksWnzq Dir君はいい加減デバッグ機能覚えようぜ
ローカルウインドウ見ながらステップイン連打しよう
ローカルウインドウ見ながらステップイン連打しよう
348343
2020/05/29(金) 16:23:07.80ID:I8K8veff >>344,345,346,347
できました!ありがとうございます。
path & "B*.xls"
↓↓↓↓↓↓
path & "\B*.xls"
Workbook.Open(path + buf)
↓↓↓↓↓↓
Workbooks.Open(path &"\"& buf)
だったみたいです
できました!ありがとうございます。
path & "B*.xls"
↓↓↓↓↓↓
path & "\B*.xls"
Workbook.Open(path + buf)
↓↓↓↓↓↓
Workbooks.Open(path &"\"& buf)
だったみたいです
349デフォルトの名無しさん
2020/05/29(金) 18:24:55.94ID:ofRjPTJp 教えてください
クリップボードにあるキャプチャを全て貼り付けるマクロできますか。
ちなみに、win+Vで、過去のキャプチャ履歴が出てきます
クリップボードにあるキャプチャを全て貼り付けるマクロできますか。
ちなみに、win+Vで、過去のキャプチャ履歴が出てきます
350デフォルトの名無しさん
2020/05/29(金) 18:44:55.24ID:FhfEW/N2 過去の履歴はクリップボードにはもうありません
351デフォルトの名無しさん
2020/05/29(金) 19:17:03.09ID:/mLagXjz 馬鹿の特徴
教えて、助けて系で始まる書き込みをする
教えて、助けて系で始まる書き込みをする
352デフォルトの名無しさん
2020/05/29(金) 19:46:11.43ID:ofRjPTJp353デフォルトの名無しさん
2020/05/29(金) 20:15:13.52ID:o3jQNOd+ >>350
昔はフリーウェアで対応してたけど、Win10のクリップボードには履歴機能が標準で付いた
昔はフリーウェアで対応してたけど、Win10のクリップボードには履歴機能が標準で付いた
354デフォルトの名無しさん
2020/05/29(金) 20:22:58.37ID:rds5fVij 馬鹿は、Win10全てが同じだと思っている
355デフォルトの名無しさん
2020/05/29(金) 21:14:41.12ID:Z5PYtswD なるほどね
APIが公開されているからそれを使えばいいと思うよ
APIが公開されているからそれを使えばいいと思うよ
356デフォルトの名無しさん
2020/05/29(金) 21:47:35.41ID:be+QuDfe Debug.Printの代わりにMsgbox
↓
うっかりループで使う
↓
必死に×とかEsc連打
↓
うっかりループで使う
↓
必死に×とかEsc連打
357デフォルトの名無しさん
2020/05/30(土) 00:10:31.73ID:r1iWOzqa VBAで親クラスのインスタンスを子クラスに渡して子クラスから親クラスのメソッドにアクセスする方法ってあります?
358デフォルトの名無しさん
2020/05/30(土) 05:29:34.61ID:n48qxrxQ 母のパンティを娘に渡して
娘から母のセックスにチェンジする方法はあるよ
娘から母のセックスにチェンジする方法はあるよ
359デフォルトの名無しさん
2020/05/30(土) 06:41:58.45ID:lz52cF2O >>350
いつまでXP使ってるんだよ
いつまでXP使ってるんだよ
360デフォルトの名無しさん
2020/05/30(土) 10:18:37.36ID:Lg+IyK0J 仕様書みたいの書かないとダメだな
数年前に自分で作ったの手直ししなきゃなんだけど
結構でかいんでコード理解して全体像を把握するのが大変だわ
仕様書とかそういうのってたぶん書き方があるんだろうね
その辺勉強しなきゃダメだね
数年前に自分で作ったの手直ししなきゃなんだけど
結構でかいんでコード理解して全体像を把握するのが大変だわ
仕様書とかそういうのってたぶん書き方があるんだろうね
その辺勉強しなきゃダメだね
361デフォルトの名無しさん
2020/05/30(土) 10:44:24.19ID:A129boaw 過去の自分が書いたソースは他人が書いた物
362デフォルトの名無しさん
2020/05/30(土) 10:47:20.95ID:gDHPXROS @画面をプリントスクリーン
Aエクセルなりを開いてペースト
B戻る
ABがいちいち面倒くさいので、理想的にはプリントスクリーンすれば勝手にそれがペーストされていけば良いのですが。できないかな。
Aエクセルなりを開いてペースト
B戻る
ABがいちいち面倒くさいので、理想的にはプリントスクリーンすれば勝手にそれがペーストされていけば良いのですが。できないかな。
363デフォルトの名無しさん
2020/05/30(土) 11:13:20.00ID:gDHPXROS 続き
あるいはwin+Vで貯まってるキャプチャを自動的にダウンロード出来れば、と思いました
あるいはwin+Vで貯まってるキャプチャを自動的にダウンロード出来れば、と思いました
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「偽サッチャー」「自滅的」「時代遅れ」 高市首相の経済政策を海外メディアが酷評 [蚤の市★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★2 [蚤の市★]
- 【ド軍】山本由伸、WBC出場を決断!ドジャースが本人の意向を尊重、佐々木朗希はチームが故障歴を懸念で不参加 [鉄チーズ烏★]
- 米大統領報道官「日本と強固な同盟維持、中国とも協力」 [少考さん★]
- JA全農が「新おこめ券」…来年9月末の有効期限を新設、必要経費のみ上乗せ ★2 [蚤の市★]
- 【映画】『スーパーマン』のDNAを引き継ぐZ世代の最強ヒロイン!『スーパーガール』 2026年夏に公開予定 予告編も公開 [冬月記者★]
- 今年の漢字、きょう発表😉 [583597859]
- 女の子集合!
- 中国人、超ド正論。「チベットやウイグルに住んでるのはチベット族やウイグル族だが、アイヌから奪った土地に住んでる日本人こそ侵略者」 [314039747]
- 百合営業してるアイドル「これは営業だから…んっクチュクチュ」←これ
- (´・ω・`)ニュー速VIPのみんなへ
- ひまでんぼ
