Excel VBA 質問スレ Part73

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 4668-xJJl)
垢版 |
2021/09/13(月) 07:29:59.47ID:GNx0xRRz0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付けるナリ

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

※前スレ
Excel VBA 質問スレ Part70
https://mevius.5ch.net/test/read.cgi/tech/1616072923/
Excel VBA 質問スレ Part71
https://mevius.5ch.net/test/read.cgi/tech/1621914481/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2021/10/19(火) 20:26:31.01ID:DOUatBbL0
>>457
元のファイルがあるフォルダーのサブフォルダーに格納されるんで同じ名前でも大丈夫だよ。
459デフォルトの名無しさん (アウアウウー Sacf-8a12)
垢版 |
2021/10/20(水) 00:29:04.94ID:P5tYW80ga
質問者の勘違いとエスパーしたんじゃね
2021/10/20(水) 00:47:36.84ID:Xbyc9Pekd
わたしは、エスパー
今、質問者の脳内に、直接、回答を送っています
わたしは、エスパー
2021/10/20(水) 00:49:43.99ID:Xbyc9Pekd
残念です
夜中なので、質問者は、寝てました
残念です
462デフォルトの名無しさん (ワッチョイ 9f02-Avck)
垢版 |
2021/10/20(水) 00:53:24.04ID:VLQwVQRS0
なぜプログラム板でExcelVBAのスレが活発なのよ?
日本終わってんな
2021/10/20(水) 03:43:52.55ID:gq1XFNWx0
労働者の多くがExcel使ってんだから需要からしたら普通だろ
2021/10/20(水) 06:13:11.55ID:RXqG14DY0
まぁ年収ランキングとしてもそこそこ高い位置にいるし当然と言えば当然だな
https://xtech.nikkei.com/atcl/nxt/column/18/01068/111100004/
2021/10/20(水) 10:35:33.40ID:Nii7YXA70
>>462
なんでRubyスレにいかないの?
2021/10/20(水) 10:37:34.01ID:cqpH7rMEd
プログラマーじゃない人もたくさん使ってるから
人が増えるのは必然
2021/10/20(水) 17:58:56.42ID:DdoeWcxm0
>>456
https://lilia-study.com/excel/vba-sample/cellvalue-save/


Sub hozon()
Dim wb As Workbook
Dim ws As Worksheet
Dim hozonPath As String
Dim FolName As String
Dim FilName As String

Set wb = ThisWorkbook
Set ws = ActiveSheet

hozonPath = “K:\”
FolName = ws.Range(“A1”).Value
FilName = ws.Range(“A2”).Value

wb.SaveAs Filename:=hozonPath & FolName & “\” & FilName
End Sub

このvbaで
A1=A2にして、hozonPathをThisWorkbook.Pathにしたりすればできるかな?と思ったのですが上手く行かずです…
2021/10/20(水) 18:30:57.52ID:3UsBchoVM
ThisWorkbook.Pathにはケツの¥が付いてないから
ThisWorkbook.Path & ”¥” & FolName & “\” & FilName
に書き換えてみ
2021/10/20(水) 18:49:10.89ID:YqKlvam70
\
"
半角にしてね
2021/10/20(水) 20:45:15.20ID:Es2OjjC60
>>467
お前のPCにK:ドライブは存在するのか?
とりあえず
wb.SaveAs のまえに、
MsgBox hozonPath & FolName & “\” & FilName
いれて、表示された内容をかけ

個人名とか入ってたら適当に隠せよ
471デフォルトの名無しさん (ワッチョイ efda-KUiw)
垢版 |
2021/10/20(水) 22:22:06.11ID:mCILNp7G0
超初心者です 

以下の対応をさせたいです
@シートを支店分だけ増やす
Aシート名をそれぞれ「支店一覧」A2〜A18の支店名にする
B作成したシートのB5に支店名を入れる
C作成したシートの表のA列が"0"になっている行を削除する
D作成したシートのオートフィルタを解除する

以下のものではエラーになりますが、どこが悪いのでしょうか

Sub シート作成
Dim 支店名 As Range
For Each 名前 In Worksheets("支店一覧").Range("A2:A18")
Worksheets("原本").Copy After:=Worksheets(Worksheets.Count)
With ActiveSheet
.Name = 支店名.Value
.Range("B5") = 支店名.Value
End With
  Range("B3").AutoFilter 1, "0"
With Range("B3").CurrentRegion.Offset(1, 0)
.Resize(.Rows.Count - 1).EntireRow.Delete
  Range("B3").AutoFilter
End With
Next 支店名
End Sub
472471 (ワッチョイ efda-KUiw)
垢版 |
2021/10/20(水) 22:24:48.55ID:mCILNp7G0
Cは「B列が"0"になっている行を削除する」の誤りでした
473デフォルトの名無しさん (ワッチョイ ef68-KUiw)
垢版 |
2021/10/20(水) 22:37:03.53ID:SCNNHF4n0
とりあえずここだと思う
下の方はサンプル作ってくれれば試すけど、手元にないからよくわkらん

Sub シート作成()
For Each 支店名 In Worksheets("支店一覧").Range("A2:A18")
474471 (ワッチョイ efda-KUiw)
垢版 |
2021/10/20(水) 22:41:41.27ID:mCILNp7G0
>>473
大変失礼いたしました
あるページからコードをコピーしてきたときに修正し忘れました
実際は名前→支店名にしていましたが、エラーとなっていました
エラーの内容の詳細が必要でしたら、明日投稿します
(現在手元にExcelファイルがなく、すみません)
2021/10/20(水) 23:13:32.77ID:dYcbK4WK0
安心して
手元にエクセルファイルが無いのに記憶だけでそこまで書ければ超初心者じゃないよ
2021/10/21(木) 05:25:42.24ID:wIUVM+qQM
>>474
> エラーの内容の詳細が必要でしたら、明日投稿します
なぜ最初から書かないの?
477デフォルトの名無しさん (ワッチョイ ef68-KUiw)
垢版 |
2021/10/21(木) 06:18:01.89ID:8cr/BFDG0
>>471
あと、
・どこで
・どんな
エラーになるのか書いて
2021/10/21(木) 06:54:51.77ID:MLEFHfinM
Select Caseにbreakがないのは何故なんでしょうか
beakがないから最初に一致した条件以降のCaseも
実行されると勘違いしやすい
仕事で大きなトラブルを起こしてしまった…
2021/10/21(木) 07:06:17.27ID:mcI3miqCM
Select Caseって上から順に見て真っ先に当てはまったCaseのみ実行じゃなかった?違うんだっけ?
2021/10/21(木) 07:46:09.23ID:Ue09v+2oM
>>478
> Select Caseにbreakがないのは何故なんでしょうか
そういう仕様だから
Pascal とかと同じ

> beakがないから最初に一致した条件以降のCaseも実行されると勘違いしやすい
むしろCとかでbreak忘れてトラブる奴の方が多いだろ
なのでC# はコンパイルエラーにするぐらいだし

> 仕事で大きなトラブルを起こしてしまった…
仕事で使うならちゃんとテストしろよ…
2021/10/21(木) 11:01:11.45ID:kxdLHT3P0
>>479
違うよ
Select Case の後にTrueとか書いて
Case の後にTrueとかFalseとか書くと
簡単に確認出来るよ
2021/10/21(木) 11:14:41.56ID:kxdLHT3P0
>>478
これはVBAとかCase文に限らず今自分がやってる言語→ 他言語に切り替える際には何か違う挙動するなー、て言うのはあるあるなことだからまぁいい勉強になったって思うべきだね。

>>480の人が言う通り仕事で使用するならキチンとテストするべきだったね。
UTとして証跡残すのがセオリーだけど、せめて一度走らせて挙動確認しておけば今回の件は防げたはず。

その言語仕様を嘆くよりそういったこともあるって次回に生かした方が幸せになれると思うよ。
2021/10/21(木) 12:11:34.23ID:8w0PnAXQ0
select case 普通に動作するんだが、どうやったらトラブル起こせるんだ?
2021/10/21(木) 17:55:34.88ID:88nPUo+s0
>>470

https://d.kuku.lu/8dd3704ad


すみませんimgurが使えないのでよくわからんあぷろだですが…

やはりエラーが出ます、
2021/10/21(木) 18:43:47.31ID:mcI3miqCM
だからhozonPathとFoINameの間に¥を入れろって
486デフォルトの名無しさん (ワッチョイ 2b8e-g8Px)
垢版 |
2021/10/21(木) 21:55:14.75ID:fbrP1i9b0
>>484
お前みたいな馬鹿にはVBAは無理だと思うよ
487デフォルトの名無しさん (ワッチョイ ef68-KUiw)
垢版 |
2021/10/21(木) 22:14:08.48ID:8cr/BFDG0
>>484
最強料理はケバブ
488デフォルトの名無しさん (ワッチョイ ef68-KUiw)
垢版 |
2021/10/21(木) 22:16:16.48ID:8cr/BFDG0
コピペ間違えた

>>484
wb.SaveAs Filename:=hozonPath & "\" & FolName & “\” & FilName


あと
FolderName
を無理に
FolName
と変に略すと、あとで何書いてるかわからなくなるぞ。
2021/10/21(木) 23:15:26.60ID:5CobycYg0
パス区切りに、/ は使えないの?

例えば、Ruby なら、

glob_pattern = "C:/Users/Owner/Documents/*.txt"

p Dir.glob( glob_pattern )

出力
[ "C:/Users/Owner/Documents/a.txt",
"C:/Users/Owner/Documents/b.txt" ]
490デフォルトの名無しさん (アウアウウー Sa45-/pkb)
垢版 |
2021/10/22(金) 00:34:42.64ID:2cM8PEAKa
やってみればわかるんじゃないの?
491デフォルトの名無しさん (ワッチョイ e98e-Ti9O)
垢版 |
2021/10/22(金) 00:44:00.08ID:1RQkewhE0
あまりに馬鹿過ぎると思ったらやっぱりruby馬鹿か
2021/10/22(金) 00:46:54.73ID:5YslU4UB0
>>484
何をやりたいのかよくわからんけど、連続して2回以上実行すると、実行回数分のネストしたフォルダが必要になるのでエラー吐く。
あと、コピー先のフォルダ/ファイル名はActiveSheetを参照しているので、複数ブック開いていたりするとおかしなことになる。
2021/10/22(金) 01:17:15.93ID:MBOrFbAX0
>>484
保存先のフォルダがないとそのエラーになるから、wb.SaveAsの直前にその確認を入れる
↓で動いたの確認した

'※hozonPathはあるのか
Dim ExistHozonPath As Boolean
ExistHozonPath = Len(Dir(hozonPath, vbDirectory))

If Not ExistHozonPath Then MsgBox hozonPath & "ドライブは存在しません。"

'※FolNameはあるのか
Dim FolFullName As String, ExistFol As Boolean
FolFullName = hozonPath & FolName
ExistFol = Len(Dir(FolFullName, vbDirectory))

If Not ExistFol Then
Dim Question As String
Question = "「" & FolFullName & "」フォルダが存在しません。作成しますか?"
Select Case MsgBox(Question, vbYesNo)
Case vbYes 'はい→作る
MkDir FolFullName
Case vbNo 'いいえ→終了
Exit Sub
End Select
End If

wb.SaveAs Filename:=hozonPath & FolName & "\" & FilName
2021/10/22(金) 01:25:21.34ID:MBOrFbAX0
>>493
ドライブない時に終了させるの忘れてた
2021/10/22(金) 07:57:46.72ID:uyzrt+dja
ユーザーフォーム自体(コードではなくてボタンとかが表示されている方)を印刷する時、
デフォルトで用紙が縦になるんですが、横に出力する方法はないでしょうか?
496デフォルトの名無しさん (ワッチョイ 05e5-NSZO)
垢版 |
2021/10/22(金) 09:34:10.25ID:EjatPKif0
>>495
Windowsの設定(コンパネ)のプリンタで用紙設定しておく
2021/10/22(金) 12:17:25.64ID:uyzrt+dja
あー、あの縦か横かをオプションボタンで選ぶ画面ですね。
VBA以前の問題でした。失礼しました。
帰宅したら試します。
2021/10/22(金) 19:20:10.02ID:eWxCtPi7a
横1列に並んだセルを
A B C D E F
1 あああ いいい ううう 阿嗚呼 伊井伊 雨右鵜
2 かかか ききき くくく 可化歌 機器機 久々九
3

A B C
1 あああ いいい ううう
2 阿嗚呼 伊井伊 雨右鵜
3 かかか ききき くくく
4 可化歌 機器機 久々九
のように1行飛びに成形するにはどうしたら良いですか?
2021/10/22(金) 19:23:55.44ID:mTcFiW+U0
頑張ってコピペしろ
2021/10/22(金) 19:26:54.87ID:cisRZQTm0
>>498
一組が1行✕6列からなるセル範囲を別シートの
2行✕3列に出力するマクロでいいのでは?
2021/10/22(金) 20:37:51.08ID:pZfGL40n0
こういうの自力でできないようじゃ教わってもしょうがないんじゃね
2021/10/22(金) 20:47:03.46ID:Fa1Ohywp0
>>493
ありがとうございます。満足いく挙動になりました!
2021/10/22(金) 22:34:54.56ID:0NScRLlYa
>>499
現状頑張ってコピってます
>>500
ありがとうございます
もちろんDBから引っ張って来たシートとは
別の印刷用シートのセルに=で参照させるんですが・・
マクロの記録を頼りにしてみます
>>501
自力で・・
2021/10/22(金) 22:59:58.93ID:4e59Jt0n0
関数でできる
Sheet1のデータをSheet2に出力するとして、Sheet2のA1に次の式を入力してコピペ
「Sheet1!$A$1:$F$999」は範囲なので適当に直して

=INDEX(Sheet1!$A$1:$F$999,ROUNDUP(ROW()/2,0),IF(MOD(ROW(),2)=1,COLUMN(),COLUMN()+3))
505デフォルトの名無しさん (ワッチョイ 824f-iBLV)
垢版 |
2021/10/22(金) 23:08:32.12ID:Jvo+jO0O0
>>498
'標準モジュール側
Sub hoge()
Dim list As New Collection
Dim entity As Class1
Dim i As Integer
Dim j As Integer

For i = 1 To 3
For j = 1 To 4 Step 3
Set entity = New Class1
entity.value1 = Cells(i, j)
entity.value2 = Cells(i, j + 1)
entity.value3 = Cells(i, j + 1)
Call list.Add(entity)
Next
Next

Range("A1:F3").ClearContents

For i = 1 To 6
Cells(i, 1) = list(i).value1
Cells(i, 2) = list(i).value2
Cells(i, 3) = list(i).value3
Next

End Sub

'クラスモジュール側(Class1)
Public value1 As String
Public value2 As String
Public value3 As String
2021/10/22(金) 23:11:35.60ID:Jvo+jO0O0
おっと
ちょい間違い

どこ間違ってるか探してみて
2021/10/22(金) 23:21:55.85ID:MBOrFbAX0
>>503
というか、普通に手作業でやってる手順をVBAで書き下せばいいだけだよ

コピペ元の範囲の場所を示す
dim srcRow as long
dim srcCol as long
と、
コピペ先の範囲を示す
dim dstRow as long
dim dstCol as long
を作って、

1〜3列目は同じ列、4〜6列目は次の行にコピペ

っていう作業を繰り返せばいい。
ペアになる変数はユーザー定義型を使うと見易くなる

type MatrixIndex
Row as long
Col as long
end type
dim src as MatrixIndex,dst as MatrixIndex
2021/10/22(金) 23:34:57.82ID:MCKX1YxAa
>>504
偶数奇数の数列ですね!ありがたやー
>>505
んー データシートの消し込みって一般常識なんですかね?
まっコメントアウトするだけだし
 iとjが逆かな? でもなんとかなりそう!
ありがとうございましたア!
2021/10/22(金) 23:40:58.45ID:rmoybpwYa
>>507
プログラムは作業の手順書とはいえ
>>505さんのクラスモジュールを使うだとか
ユーザー定義型変数を使うという発想に至りませんで・・・
皆様ありがとうございました。
510デフォルトの名無しさん (ワッチョイ e98e-Ti9O)
垢版 |
2021/10/23(土) 02:07:03.33ID:3lNDidpi0
いつものあいつ
2021/10/24(日) 01:40:51.53ID:BvAAjUlj0
>>498
G列に上から1,2と入れて、さらに下方のデータの無いG列に1,2とコピペする
表全体を選択してフィルターを適用。G列でソートする
以上で一行ごとに空行が挿入される
つづいてD1:F2を選択、コピー
A2に形式を選択して貼り付け(空白を無視する)
出来上がり
2021/10/24(日) 02:32:09.51ID:k5qcq0CGa
>>511
別解ありがとうございます
テンプレートファイルがあればそれで良いかもしれませんね
2021/10/24(日) 10:50:30.38ID:m64p+skw0
VBAで作ったプロシジャーにショートカットキーを割当てたのですがうまくいきません。
議論用に下のような簡単なプロシジャーをつくり(実際はもっと複雑です)
testShortCutKeyにはCtr+Shift+I
testShortCutKey02にはCtr+Shift+F
を割り当てました。

エクセルのウインドウをアクティブにした状態で
Ctr+Shift+Fを押すと別のアプリのEverNoteがアクティブになり
Ctr+Shift+Iを押すと別のアプリがアクティブになります。
ワードのVBAでも同じくショートカットキーを正しく設定しているのに使えません。

少なくとも今年前半はこんなことはなかったのですが…。
対策はあるでしょうか?

Sub testShortCutKey()
Stop
End Sub

Sub testShortCutKey02()
Stop
End Sub

https://imgur.com/S9WxsoT
2021/10/24(日) 10:52:43.48ID:m64p+skw0
>>513
自己レスです。
スクリンショットのリンク先を間違えました。
https://imgur.com/qJeXnl9
が正しいです。
515デフォルトの名無しさん (ワッチョイ 02a5-iXiw)
垢版 |
2021/10/24(日) 12:20:50.22ID:LZG5kY/b0
普段よく使う色んな独自マクロ機能を右クリックメニューに登録して、
どんな時にも使えるようアドインファイル(.xlam)化して
XLSTARTフォルダにおいて使っています。

ThisWorkbookに下記コードで、登録と終了時の処理を書いているのですが、
Excelを起動終了するたびに、Excel15.xlbのファイルサイズが肥大化していく
現象で困っています。

Sub Workbook_Open()
Call AddRightClickMenu '右クリックメニュー追加
End Sub

Sub Workbook_BeforeClose(Cancel As Boolean)
Application.CommandBars("Cell").Controls("xxxxx").Delete
End Sub

BeforeCloseの中にExcel15.xlbの強制削除を入れても、勝手にサイズUPした
ファイルが作成されてしまいます。

これを解決する方法があれば、教えてください。
2021/10/24(日) 14:29:28.09ID:phaY1aKk0
ひとつのシートボタンだけ
まとめたほうが楽じゃないの?
517デフォルトの名無しさん (ワッチョイ c668-OyHA)
垢版 |
2021/10/24(日) 14:39:49.48ID:DK1tlC+k0
>>513
他ソフトのショートカットと干渉してる可能性がある
例えばalt+F11はGeforceとかぶって使えなかったりする。めんどい
518デフォルトの名無しさん (ワッチョイ c668-OyHA)
垢版 |
2021/10/24(日) 14:40:27.40ID:DK1tlC+k0
>>513
問題の切り分けとして、
Ctr+Shift+F
をCtr+Shift+KなりCtr+Shift+Uなり、色々試してみて
2021/10/25(月) 13:04:03.44ID:wahm2g0s0
>>517,518
有難うございました。
Ctr+Shift+Uは干渉しませんでした。
Ctr+Shift+FとCtr+Shift+Iが他のアプリに割り振られているようです。
Ctr+Shift+Fはそのアプリの設定を外すことができました。
Ctr+Shift+Iは外す方法が見つかりませんので別の組み合わせに変更します。
2021/10/25(月) 21:49:13.26ID:YikV54AJ0
ショートカットに拘るのが
わからん
521471 (ワッチョイ 2eda-OyHA)
垢版 |
2021/10/26(火) 13:17:41.14ID:NeMLM07o0
>>471,472,474です。
間があいてしまい、申し訳ございません。

マクロを実施すると、「支店一覧」A2:A18のA2,A3,A4のシートまでは対応が完了するのですが、
その後A5名のシートが作成されず、「原本(2)」というシートが作成されたあと、以下エラーとなります。
「実行時エラー'1004':
この名前は既に使用されています。別の名前を入力してください。」
.Name = 支店名.Value
の部分が黄色くなっています。

こちらで「支店一覧」をみるかぎりではおかしなところはみあたりません
(もちろんA2:A18に重複もありません)
2021/10/26(火) 14:40:57.52ID:geAm6QgM0
「この名前は既に使用されています。」って言ってんだからそのシートが存在するんでしょ。見当たらないなら非表示になってるか
2021/10/26(火) 15:44:08.87ID:W8WFYMpad
以下の処理について質問です
「条件→A列に1行目から文字列が多数行入力されていて、文字列にはa、b、cのアルファベットのどれか一つのみが必ず含まれている。(例 ”15あうa” 例"7c8-of")
やりたいこと→B列に連番を振りたい。aを含む文字列だけで1,2,3,4... bを含む文字列だけで1,2,3,4...のような感じで振りたい。」

一応自分で次のようにやってみたら出来ました
セルC1 C2 C3に a b cと入力して、for eachでC1~C3を括る?
さらにfor eachでA列を括る。
そしてA列にて上のセルから順番にaを含むかif文で判断して連番を入力させる。
b,cについても同様に行うと


for とか ifしか使えないためこのようなやり方をしたのですが、もっと適切な方法があれば教えて頂きたいです。
524471 (ワッチョイ 2eda-OyHA)
垢版 |
2021/10/26(火) 15:50:27.98ID:NeMLM07o0
>>522
非表示でもないです
そもそも「原本(2)」という名前のシートがなぜ作成されるかも謎なんです
(「原本」があるので、「原本(2)」が作成されるときに記載のエラーになるのでは
と推測しています)
2021/10/26(火) 16:18:01.43ID:Uox0HVAS0
>>520
ショートカット以外だとリボンにカスタム登録するしかないけどいちいちマウスを使うと
キーボード操作の流れが途切れる。
2021/10/26(火) 16:35:47.94ID:cmR9o8NP0
そりゃ原本ってシートをコピーしたんだから原本(2)って名前のシートができるだろ
2021/10/26(火) 17:04:12.98ID:geAm6QgM0
>>523
連番をカウントする変数を3つ作ればいい
528471 (ワッチョイ 2eda-OyHA)
垢版 |
2021/10/26(火) 17:28:50.64ID:NeMLM07o0
ほんとバカですみません、、、
自分が嫌になります
それなのにみなさま返信有難うございます

追加ですみません
支店名シートのA2:A18の中で、★が支店名に含まれているものは
シートを作成しなくてよいという条件を組み込むことはできますか?
あと、各シートを作成したあとに、シートの数式をすべて値にしたいですが
できますか?

Sub シート作成
Dim 支店名 As Range
For Each 名前 In Worksheets("支店名").Range("A2:A18")
Worksheets("原本").Copy After:=Worksheets(Worksheets.Count)
With ActiveSheet
.Name = 支店名.Value
.Range("B5") = 支店名.Value
End With
  Range("B3").AutoFilter 1, "0"
With Range("B3").CurrentRegion.Offset(1, 0)
.Resize(.Rows.Count - 1).EntireRow.Delete
  Range("B3").AutoFilter
End With
Next 支店名
End Sub
2021/10/26(火) 17:29:10.65ID:W8WFYMpad
>>527
分かりませんでした!もう少し詳しく教えていただけないでしょうか!
2021/10/26(火) 17:39:37.61ID:geAm6QgM0
a=1:b=1:c=1
for i=1 to 最後の行
if instr(cells(i,1),"a")>0 then
cells(i,2)=a
a=a+1
elseif instr(cells(i,1),"b")>0 then
cells(i,2)=b
b=b+1

end if
next i
みたいな
2021/10/26(火) 22:18:39.74ID:GuH7IxvP0
>>523
ここまでせんでもって思うけど
https://i.imgur.com/RQpkaWZ.png


Sub foo()

'準備
myarray = Array("aa", "bb", "cc")

'初期化
Set myDic = CreateObject("Scripting.Dictionary")
For Each x In myarray
myDic.Add x, 0
Next

'本体
最終行 = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To 最終行
For Each x In myarray
If InStr(Cells(i, 1), x) <> 0 Then
myDic(x) = myDic(x) + 1
Cells(i, 2).Value = myDic(x)
End If
Next
Next
End Sub
2021/10/26(火) 22:19:38.61ID:GuH7IxvP0
暇だから書いたけど、実際やるなら>>530みたいなので済ます戸思う
2021/10/26(火) 23:37:03.27ID:HhcOopAn0
D列のセルに文字を入力するとJ列のセルが塗りつぶされる処理をしたいのだがどうしたら良いものか

Sub Macro1()

If InStr(Range("D1").Value, "") > 0 Then
Range("D1").Offset(0,6).Interior.ColorIndex = 16
Else
Range("D1").Offset(0, 6).ClearFormats

End If
End Sub
2021/10/27(水) 00:02:27.06ID:d3yRZmnd0
条件付き書式でいいんじゃね
2021/10/27(水) 00:17:15.91ID:PN2o+9fe0
条件付き書式でいいが、どうせVBAでやるなら入力のたびに書式をクリアしてから再設定する方がいいよね
2021/10/27(水) 19:45:59.71ID:DgEx7n5q0
条件付き書式がいいんじゃないかなぁ
2021/10/27(水) 20:46:04.85ID:Pols7qyl0
>>533
If Range("D1").Value <> "" Then
あとはChangeイベントにする
2021/10/28(木) 11:45:30.63ID:WDBBEMQR0
コードを一括エクスポートするアドインでおすすめのってないですか?
Windows10のMicrosoft 365を使っていますが、下記は動作しませんでした。

https://moondoldo.com/DoldoWorkz/?Excel%E3%83%9E%E3%82%AF%E3%83%AD/VBA%E3%83%9E%E3%82%AF%E3%83%AD%E3%81%AE%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%82%92%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%88
ExcelVBAExport2007_xlam_20100321.ZIP → ExcelVBAExport2007.xlam
2021/10/28(木) 11:50:21.99ID:WDBBEMQR0
>>538
できた!これから手順を書いていく。
2021/10/28(木) 12:12:13.13ID:WDBBEMQR0
>>538
上記サイトに記載されているとおり、
アドインフォルダに.xlamファイルをコピーし、アドイン登録を済ませて、
[Visual Basic プロジェクトへのアクセスを信頼する]のチェックボックスをオンにした状態でも、
[開発]タブに[エクスポート][選択エクスポート]が表示されなかったので、
最新のExcelでは使えないと勘違いしていたが、下記の手順で使えるようになった。

@エクスポート対象のxlsmファイルを開く。
A[開発]-[Excelアドイン]をクリックする。
B有効なアドイン一覧に、既に登録済みのExcelvbaexport2007がある。
C既にチェックボックスはオンになっているが、そのまま[参照]ボタンを押す。
Dアドインフォルダ(〜Roaming\Microsoft\AddIns)が開く。その中のExcelVBAExport2007.xlamを選択する。
E「この場所に'〜Roaming\Microsoft\AddIns\ExcelVBAExport2007.xlam'という名前のファイルが既にあります。置き換えますか?」と聞かれる。
F[はい]を選択する。
G[OK]ボタンを押してアドインウィンドウを閉じる。

[開発]タブ内の右端に[エクスポート][選択エクスポート]が現れる。
541デフォルトの名無しさん (ワッチョイ 0605-/PVD)
垢版 |
2021/10/28(木) 16:45:24.43ID:IU5+Uq0S0
Excel 2019
「オプション」−「詳細設定」の「グラフィックアクセラレータを無効にする」のチェックを
VBAで設定するにはどうすればいいでしょうか?
AccessだとApplicationのSetOptionやGetOptionでできるんだけど、
Excelには見当たらないのでよろしくお願いします。
2021/10/28(木) 19:13:26.37ID:t5V0CZ4Da
https://ja.play-and-more.com/4226-turn-off-hardware-graphics-acceleration-office-2013
ハードウェア アクセラレータ―の設定については、
Excel と Word の設定が連動しているので、
Excel のオプションから設定を変更することで
Word 側にも設定を反映することはできます。
2021/10/28(木) 20:43:34.51ID:rkEXdrl2d
>>530
>>531
ありがとうございます!
別のケースに応用できるのでありがたいです!
2021/10/29(金) 13:13:50.85ID:A+QIge6G0
同じpersonal..xlsbを複数の端末で使いたいので xlstart フォルダーから同期フォルダーに移動し
xlstart フォルダーではかわりに同期フォルダー内のpersonal.xlsb へのショートカットを置きました。
期待通り起動時にpersonal.xlsbを読み込みますが毎回マクロの実行許可を求めるので面倒です。
マクロ有効ファイル一般の仕様であることは理解しておりますが、特定のマクロファイルのみ確認を省略するか、
またはxlstart内にpersonal..xlsbにおいたまま同期する方法はないでしょうか。
xlstartフォルダー自身を同期フォルダーに設定することも検討しましたが、
googlドライブの場合は同期フォルダーは全てGドライブに移動するので
xlstartフォルダ自体が自動実行できなくこと、またpersonal.xlsb起動時にマクロを有効にするか確認
がはいり解決になりません。
2021/10/30(土) 12:52:49.36ID:MclRPTdP0
>544
信頼できる場所に追加するとか、デジタル署名付けるとかしたら行けるんじゃ?
しらんけど
2021/10/30(土) 15:59:41.68ID:jbS9woJL0
>>545
知らんのかい
2021/10/30(土) 16:14:32.06ID:jbS9woJL0
>>545
personal.xlsbを信頼できるドキュメンに設定したらできました.
無礼な物言いごめんなさい.
548デフォルトの名無しさん (アウアウキー Sa55-Jw6B)
垢版 |
2021/10/30(土) 16:52:18.20ID:u+oDsXHga
ゆるさん、打ち首じゃ
2021/10/30(土) 18:39:08.12ID:jbS9woJL0
めんご
2021/10/30(土) 18:39:42.42ID:q+2005If0
りんご
2021/10/30(土) 18:44:01.08ID:8M2WunKL0
マンゴ
2021/10/30(土) 22:30:09.59ID:hcWJ/Uj70
三兄弟
2021/11/04(木) 12:18:24.94ID:onPWkBOz0
for i = 1 to 100 step 1

  '最終行は処理中に変動するため栗けしの都度最終行を取得する
  Worksheets(OutputSheetName).Cells(1000, 1).Select
  Selection.End(xlUp).Select
  iRastrow = Selection.Row

  for j =2 to iLastrow step 1
   何らかの処理
  next j
next i

上記のようなプログラムがあったとして j=2、iLastrow=1のように最初から子ループの終了条件を満たしているようなケースで
子ループの j が 2でクリアされず親ループの繰り返しの都度 3,4...と加算されていくケースがあるんだけどさ

最初からループの終了条件を満たしている場合は、for j=2 … の部分の変数値のクリアはされないものなの?
終了条件を満たしているか満たしていないかに限らず、この行にきたら j=2 でクリアしてくれると思ってたんだが…
554デフォルトの名無しさん (アウアウキー Sa55-Jw6B)
垢版 |
2021/11/04(木) 12:30:43.13ID:h43gOvN2a
LとRはいいの?
2021/11/04(木) 12:43:19.95ID:onPWkBOz0
ごめん、そこは単なる書き間違い
実際のコードはLで統一されとります
2021/11/04(木) 13:10:37.18ID:5T7tzysMd
--ここから読む--
2021/11/04(木) 16:49:49.42ID:or1HotUn0
コボル、フォートラン、LISP、VBA、、、
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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