!extend:checked:vvvvv:1000:512
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part62
https://mevius.5ch.net/test/read.cgi/tech/1561303297/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
Excel VBA 質問スレ Part63
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ d3d0-EPXH)
2019/09/16(月) 19:34:59.04ID:emfTAhXr0388デフォルトの名無しさん (スフッ Sd32-FOpr)
2019/10/19(土) 13:01:01.88ID:pCXt87yDd389デフォルトの名無しさん (アークセー Sx47-vS/Z)
2019/10/19(土) 13:21:58.93ID:ZEihazemx >>388
俺は逆に発注側だけど、Excelの方が都合が良いというより、Excelしか想像できない奴に要件整理のタスクを与えて社内稟議まで通してRFP出してしまう感じ
Excelで作ろうが他のシステムで作ろうが発注側は中身が理解できないから取捨選択すらしてない
俺は逆に発注側だけど、Excelの方が都合が良いというより、Excelしか想像できない奴に要件整理のタスクを与えて社内稟議まで通してRFP出してしまう感じ
Excelで作ろうが他のシステムで作ろうが発注側は中身が理解できないから取捨選択すらしてない
390デフォルトの名無しさん (ワッチョイ 6bce-S3Tg)
2019/10/19(土) 13:22:25.60ID:Z3LWqSJp0 ある意味閉じた環境だからテストが楽なんだよ
もちろん完全なサンドボックスではないけど
もちろん完全なサンドボックスではないけど
39149 (スップ Sd52-Nocg)
2019/10/19(土) 13:27:49.07ID:EjAyXMTtd392デフォルトの名無しさん (ブーイモ MM5b-4MLx)
2019/10/19(土) 13:37:35.97ID:cIlA6SsdM csc教えてくれてありがとう。世界が広がったわ。
エクセルで社内chatアプリとか作り放題できそう。
エクセルで社内chatアプリとか作り放題できそう。
393デフォルトの名無しさん (ワッチョイ 2701-U7Hu)
2019/10/19(土) 23:16:31.79ID:Ryiq5UZK0 A1セルに飛びたいブックのアドレスが書いてある(C:\test1.xlsx)環境下
test1.xlsxが開いていなければWorkbooks.Open(Filepath)で開く
test1.xlsxが開いていなければハイパーリンクで飛ぶ(2重起動しないため)
にしたいのですが、どうしてもできません。
G4にハイパーリンクをせっていしましたが、できません・・・どこが悪いのでしょうか?
Dim myChkBook As Workbook
Dim bookname As String
On Error GoTo ErrHdl
Set myChkBook = Workbooks("test1.xlsx")
'"開かれています。"
'ハイパーリンク起動G4
Range("G4").Hyperlinks(1).Follow NewWindow:=True
Exit Sub
ErrHdl:
' "開かれていません。"
(↓pas_kombetu1は設定済みで以下のマクロは実行できます。)
Dim Filepath
Filepath = pas_kom1
Dim targetWorkbook As Workbook
Set targetWorkbook = Workbooks.Open(Filepath)
test1.xlsxが開いていなければWorkbooks.Open(Filepath)で開く
test1.xlsxが開いていなければハイパーリンクで飛ぶ(2重起動しないため)
にしたいのですが、どうしてもできません。
G4にハイパーリンクをせっていしましたが、できません・・・どこが悪いのでしょうか?
Dim myChkBook As Workbook
Dim bookname As String
On Error GoTo ErrHdl
Set myChkBook = Workbooks("test1.xlsx")
'"開かれています。"
'ハイパーリンク起動G4
Range("G4").Hyperlinks(1).Follow NewWindow:=True
Exit Sub
ErrHdl:
' "開かれていません。"
(↓pas_kombetu1は設定済みで以下のマクロは実行できます。)
Dim Filepath
Filepath = pas_kom1
Dim targetWorkbook As Workbook
Set targetWorkbook = Workbooks.Open(Filepath)
394デフォルトの名無しさん (ワッチョイ 2701-U7Hu)
2019/10/19(土) 23:20:25.07ID:Ryiq5UZK0 ↑393です。間違えました。訂正します
A1セルに飛びたいブックのアドレスが書いてある(C:\test1.xlsx)環境下
test1.xlsxが開いていなければWorkbooks.Open(Filepath)で開く
test1.xlsxが開いていればハイパーリンクで飛ぶ(2重起動しないため)
にしたいのですが、どうしてもできません。
G4にハイパーリンクをせっていしましたが、できません・・・どこが悪いのでしょうか?
Dim myChkBook As Workbook
Dim bookname As String
On Error GoTo ErrHdl
Set myChkBook = Workbooks("test1.xlsx")
'"開かれています。"
'ハイパーリンク起動G4
Range("G4").Hyperlinks(1).Follow NewWindow:=True
Exit Sub
ErrHdl:
' "開かれていません。"
(↓pas_kombetu1は設定済みで以下のマクロは実行できます。)
Dim Filepath
Filepath = pas_kom1
Dim targetWorkbook As Workbook
Set targetWorkbook = Workbooks.Open(Filepath)
A1セルに飛びたいブックのアドレスが書いてある(C:\test1.xlsx)環境下
test1.xlsxが開いていなければWorkbooks.Open(Filepath)で開く
test1.xlsxが開いていればハイパーリンクで飛ぶ(2重起動しないため)
にしたいのですが、どうしてもできません。
G4にハイパーリンクをせっていしましたが、できません・・・どこが悪いのでしょうか?
Dim myChkBook As Workbook
Dim bookname As String
On Error GoTo ErrHdl
Set myChkBook = Workbooks("test1.xlsx")
'"開かれています。"
'ハイパーリンク起動G4
Range("G4").Hyperlinks(1).Follow NewWindow:=True
Exit Sub
ErrHdl:
' "開かれていません。"
(↓pas_kombetu1は設定済みで以下のマクロは実行できます。)
Dim Filepath
Filepath = pas_kom1
Dim targetWorkbook As Workbook
Set targetWorkbook = Workbooks.Open(Filepath)
395デフォルトの名無しさん (ワッチョイ 2701-U7Hu)
2019/10/19(土) 23:20:42.32ID:Ryiq5UZK0 ↑393です。間違えました。訂正します
A1セルに飛びたいブックのアドレスが書いてある(C:\test1.xlsx)環境下
test1.xlsxが開いていなければWorkbooks.Open(Filepath)で開く
test1.xlsxが開いていればハイパーリンクで飛ぶ(2重起動しないため)
にしたいのですが、どうしてもできません。
G4にハイパーリンクをせっていしましたが、できません・・・どこが悪いのでしょうか?
Dim myChkBook As Workbook
Dim bookname As String
On Error GoTo ErrHdl
Set myChkBook = Workbooks("test1.xlsx")
'"開かれています。"
'ハイパーリンク起動G4
Range("G4").Hyperlinks(1).Follow NewWindow:=True
Exit Sub
ErrHdl:
' "開かれていません。"
(↓pas_kombetu1は設定済みで以下のマクロは実行できます。)
Dim Filepath
Filepath = pas_kom1
Dim targetWorkbook As Workbook
Set targetWorkbook = Workbooks.Open(Filepath)
A1セルに飛びたいブックのアドレスが書いてある(C:\test1.xlsx)環境下
test1.xlsxが開いていなければWorkbooks.Open(Filepath)で開く
test1.xlsxが開いていればハイパーリンクで飛ぶ(2重起動しないため)
にしたいのですが、どうしてもできません。
G4にハイパーリンクをせっていしましたが、できません・・・どこが悪いのでしょうか?
Dim myChkBook As Workbook
Dim bookname As String
On Error GoTo ErrHdl
Set myChkBook = Workbooks("test1.xlsx")
'"開かれています。"
'ハイパーリンク起動G4
Range("G4").Hyperlinks(1).Follow NewWindow:=True
Exit Sub
ErrHdl:
' "開かれていません。"
(↓pas_kombetu1は設定済みで以下のマクロは実行できます。)
Dim Filepath
Filepath = pas_kom1
Dim targetWorkbook As Workbook
Set targetWorkbook = Workbooks.Open(Filepath)
396デフォルトの名無しさん (ワッチョイ 1259-YrLK)
2019/10/19(土) 23:27:37.60ID:yen3fKlK0 ハイパーリンクでどこへ飛ぼうとしているのか?
天国か?
天国か?
397デフォルトの名無しさん (オッペケ Sr47-UVSK)
2019/10/20(日) 04:33:33.09ID:9oZ0eOj0r mychkbook.activate
range~
range~
398デフォルトの名無しさん (アークセー Sx47-UVSK)
2019/10/20(日) 14:29:15.27ID:udtUjyhnx >>395
やりたいことはこういうことかな?
処理の内容からみて、GoToでエラーハンドラに飛ばす必要はないと思う
' 開いているブックの集合に対してループを回し、順番にmyChkbookにセットして名前を調べ、test1.xlsxが見つかったらループを終了する
Dim myChkbook As Workbook
For Each myChkbook In Workbooks
If myChkbook.Name = "test1.xlsx" Then Exit For
Next myChkbook
' ループが終了した段階でmyChkbookにセットされているブックの名前がtest1.xlsxでない場合、test1.xlsxが開かれていないことを意味するので、test1.xlsxを開いてmyChkbookにセットする
If myChkbook.Name <> "test1.xlsx"
Then Set myChkbook = Workbooks.Open(pas_kom1)
' myChkbookをアクティブにしてハイパーリンクをフォローする
myChkbook.Activate
Range("G4").Hyperlinks(1).Follow NewWindow:=True
やりたいことはこういうことかな?
処理の内容からみて、GoToでエラーハンドラに飛ばす必要はないと思う
' 開いているブックの集合に対してループを回し、順番にmyChkbookにセットして名前を調べ、test1.xlsxが見つかったらループを終了する
Dim myChkbook As Workbook
For Each myChkbook In Workbooks
If myChkbook.Name = "test1.xlsx" Then Exit For
Next myChkbook
' ループが終了した段階でmyChkbookにセットされているブックの名前がtest1.xlsxでない場合、test1.xlsxが開かれていないことを意味するので、test1.xlsxを開いてmyChkbookにセットする
If myChkbook.Name <> "test1.xlsx"
Then Set myChkbook = Workbooks.Open(pas_kom1)
' myChkbookをアクティブにしてハイパーリンクをフォローする
myChkbook.Activate
Range("G4").Hyperlinks(1).Follow NewWindow:=True
399デフォルトの名無しさん (アウアウウー Sa43-hJjz)
2019/10/20(日) 17:59:43.40ID:WrbRE/qYa どうせ設定とかじゃね
400デフォルトの名無しさん (ワッチョイ 92ae-ZGIR)
2019/10/22(火) 08:37:21.30ID:Ppw3/Jpc0 プログラムじゃなくて、プログラミング言語とは…驚いた
学生の頃、友人がyaccとか字句解析とか構文解析とか言ってたが、その世界か…分からん
スーパー中学生誕生、プログラミング言語わずか数週間で開発、
U-22プログラミング・コンテスト2019 2019/10/21
https://www.bcnretail.com/market/detail/20191021_142131.html
「もっと人間にとって扱いやすい、自分の言語をつくってみたかった」。
10月20日に東京の秋葉原コンベンションホールで開催された第40回「U-22プログラミング・コンテスト2019」の
最終審査会で、見事、経済産業大臣賞(総合)を受賞した開成中学校3年の上原直人さん(15歳)は、
独自プログラミング言語「Blawn」を発表した。
IT業界の経営者など、並みいる審査員を驚かせたのは、完成度の高さはもちろんのこと、今年8月からわずか
数週間で完成させたスピードだった。
一次審査の応募期間7月1日〜9月2日に着想から開発、完成まで一人で仕上げたという。
◆C言語を使ったのは今年7月
それまでPythonを使っていたという上原さんは発表の中で、「今年の7月か8月にC++を始めたが、扱いにくかった。
もっと可読性の高い構文とメモリの安全性や速度を高めたいと思った」と、開発のきっかけについて語った。
質疑応答で審査員から、「7月にC++を使ったということは、Blawnはそれ以降につくられたということですか?」
と聞かれて、上原さんが「7月中旬に構想して構文解析を行って、プログラムを書き始めたのは8月ごろ」と答えると、
会場にどよめきが起きた。文句なしの受賞だった。
上原さんは、ほかにもスポンサー企業のデジタルガレージとサイボウズ2社の賞と、当日の模様を配信した
ニコニコ生放送の視聴者による賞など4冠を達成した。
Blawnの特徴は、型名の記述が一切不要、構文の可読性が高い、すべての関数/クラスがC++でいうところの
テンプレート関数/クラス、コンパイル速度と実行速度が速い、メモリが安全などだ。
また、Blawnの言語名は「Blue Lawn(青い芝)」からもじったもので、隣の芝が青く見えるほど、既存の言語の
不満を解消できるような良い言語にしたい気持ちを込めたという心憎い演出もあった。
学生の頃、友人がyaccとか字句解析とか構文解析とか言ってたが、その世界か…分からん
スーパー中学生誕生、プログラミング言語わずか数週間で開発、
U-22プログラミング・コンテスト2019 2019/10/21
https://www.bcnretail.com/market/detail/20191021_142131.html
「もっと人間にとって扱いやすい、自分の言語をつくってみたかった」。
10月20日に東京の秋葉原コンベンションホールで開催された第40回「U-22プログラミング・コンテスト2019」の
最終審査会で、見事、経済産業大臣賞(総合)を受賞した開成中学校3年の上原直人さん(15歳)は、
独自プログラミング言語「Blawn」を発表した。
IT業界の経営者など、並みいる審査員を驚かせたのは、完成度の高さはもちろんのこと、今年8月からわずか
数週間で完成させたスピードだった。
一次審査の応募期間7月1日〜9月2日に着想から開発、完成まで一人で仕上げたという。
◆C言語を使ったのは今年7月
それまでPythonを使っていたという上原さんは発表の中で、「今年の7月か8月にC++を始めたが、扱いにくかった。
もっと可読性の高い構文とメモリの安全性や速度を高めたいと思った」と、開発のきっかけについて語った。
質疑応答で審査員から、「7月にC++を使ったということは、Blawnはそれ以降につくられたということですか?」
と聞かれて、上原さんが「7月中旬に構想して構文解析を行って、プログラムを書き始めたのは8月ごろ」と答えると、
会場にどよめきが起きた。文句なしの受賞だった。
上原さんは、ほかにもスポンサー企業のデジタルガレージとサイボウズ2社の賞と、当日の模様を配信した
ニコニコ生放送の視聴者による賞など4冠を達成した。
Blawnの特徴は、型名の記述が一切不要、構文の可読性が高い、すべての関数/クラスがC++でいうところの
テンプレート関数/クラス、コンパイル速度と実行速度が速い、メモリが安全などだ。
また、Blawnの言語名は「Blue Lawn(青い芝)」からもじったもので、隣の芝が青く見えるほど、既存の言語の
不満を解消できるような良い言語にしたい気持ちを込めたという心憎い演出もあった。
401デフォルトの名無しさん (ワッチョイ 92a2-r0zP)
2019/10/22(火) 15:11:43.53ID:qPForpUI0 なぜ天才は日本語プログラミング言語を作ってくれないのか
402デフォルトの名無しさん (ワッチョイ 237c-HAen)
2019/10/22(火) 15:18:35.17ID:N/F1Z5u20 日本語プログラム言語あるけど流行ってない
403デフォルトの名無しさん (ワッチョイ f335-S3Tg)
2019/10/22(火) 15:19:56.38ID:xfWb2k0X0 変数に2バイト文字使えるだけでもかなりありがたいぞ
404デフォルトの名無しさん (アウアウウー Sa43-hJjz)
2019/10/22(火) 15:30:45.72ID:xJDh6jyea >>401
日本語が曖昧で向いてないだろ
日本語が曖昧で向いてないだろ
405デフォルトの名無しさん (アークセー Sx47-UVSK)
2019/10/22(火) 15:40:40.34ID:9HPDColwx 自然言語のルールそのままでプログラミング言語を実装するわけじゃないから日本語が曖昧云々ってのはズレてる
英語のit とかtheyとかbeだって曖昧極まりないし
英語のit とかtheyとかbeだって曖昧極まりないし
406デフォルトの名無しさん (ワッチョイ 1201-VRky)
2019/10/22(火) 16:09:09.07ID:GMYZfzoF0407デフォルトの名無しさん (ワッチョイ f335-S3Tg)
2019/10/22(火) 16:09:15.44ID:xfWb2k0X0 >>404みたいなのは何も考えてない+自分に自信を持てないアホだから相手しても時間の無駄だぞ
408デフォルトの名無しさん (ワッチョイ f335-S3Tg)
2019/10/22(火) 16:17:32.52ID:xfWb2k0X0409デフォルトの名無しさん (オッペケ Sr47-zzXu)
2019/10/22(火) 17:34:47.60ID:wz2D8YEyr410デフォルトの名無しさん (ワッチョイ 1201-VRky)
2019/10/22(火) 17:37:00.61ID:GMYZfzoF0 >>408
それこそVBAでも使えるしVisual Studioで使えるC/C++, C#, VB.NETはもとより、GCCとかPython3でも使える
それこそVBAでも使えるしVisual Studioで使えるC/C++, C#, VB.NETはもとより、GCCとかPython3でも使える
411デフォルトの名無しさん (オイコラミネオ MM8f-XaGA)
2019/10/22(火) 17:42:31.34ID:lfmCyloCM vlookupを最下行まで入れたくて、検索範囲を絶対参照にしたいんだけどできるの?
$maxrow$じゃだめだよね
$maxrow$じゃだめだよね
412デフォルトの名無しさん (ワッチョイ 237c-HAen)
2019/10/22(火) 18:05:19.82ID:N/F1Z5u20 >>411
.Rows.Count
.Rows.Count
413デフォルトの名無しさん (ワッチョイ 92da-GDtP)
2019/10/22(火) 19:26:57.40ID:yzv1f2K60 108万行探すつもりかよww
A:Aとかじゃダメなのか。
A:Aとかじゃダメなのか。
414デフォルトの名無しさん (ワッチョイ f335-S3Tg)
2019/10/22(火) 19:34:37.46ID:xfWb2k0X0 100行しかデータが入ってなくても、A:Aみたいに列全体にすれば自動的にA1:A100みたいに解釈してくれるよ
415デフォルトの名無しさん (スッップ Sd32-Nocg)
2019/10/22(火) 20:37:15.07ID:8AVeU+tzd416デフォルトの名無しさん (アークセー Sx47-UVSK)
2019/10/22(火) 20:49:46.38ID:IKwAwtn1x >>415
ApplicationレベルのWorkbookActivateイベントで何らかの処理を噛ませている可能性があるから、Activateメソッドが無意味とは言いきれない
ApplicationレベルのWorkbookActivateイベントで何らかの処理を噛ませている可能性があるから、Activateメソッドが無意味とは言いきれない
417デフォルトの名無しさん (ワッチョイ f335-S3Tg)
2019/10/22(火) 20:51:16.87ID:xfWb2k0X0 それは考えすぎw
ハンドラまで作れる人ならこんな質問しないよ
ハンドラまで作れる人ならこんな質問しないよ
418デフォルトの名無しさん (JP 0H82-S3Tg)
2019/10/22(火) 21:38:55.73ID:tIwQFwn0H Excelで、「行ごとに違う色をつけるが、1行目だけ何も色を付けない」というVBAの書き方を教えてくんさい。
419デフォルトの名無しさん (アウアウウー Sa43-tIsl)
2019/10/22(火) 21:46:01.16ID:lomrvhbna >>418
https://support.office.com/ja-jp/article/-1-行おきまたは-1-列おきに色を設定する-30002ce0-7a1c-4d70-a70c-4b6232f09f5e
VBAなど不要
どうしても一発でやりたいならマクロの記録を使えばいい
https://support.office.com/ja-jp/article/-1-行おきまたは-1-列おきに色を設定する-30002ce0-7a1c-4d70-a70c-4b6232f09f5e
VBAなど不要
どうしても一発でやりたいならマクロの記録を使えばいい
420デフォルトの名無しさん (ワッチョイ 9268-S3Tg)
2019/10/22(火) 21:48:09.80ID:fx5uI0000 >>418
3行目から始まる、4行ごとのsannpuru
色(65535の部分)はマクロの記録で取ってくれ
あともう少し真面目に聞いたほうが回答が尽きやすい
For i = 3 To 100 Step 4
Rows(i & ":" & i).Interior.Color = 65535
Next
End Sub
3行目から始まる、4行ごとのsannpuru
色(65535の部分)はマクロの記録で取ってくれ
あともう少し真面目に聞いたほうが回答が尽きやすい
For i = 3 To 100 Step 4
Rows(i & ":" & i).Interior.Color = 65535
Next
End Sub
421デフォルトの名無しさん (JP 0H82-S3Tg)
2019/10/22(火) 22:45:35.38ID:tIwQFwn0H >>420
すみません&有り難うございます。
具体的な目的を書かずに適当に質問してしまったのですが、やりたいことは
1.行ごとに違う色を入れる
2.1行目だけ何もしない(色を変えない)
3.2についてはIF文を使う
なのですが、3.が上手くいきません。
*************************************************************************:
Sub xxxxxxx()
Dim i As Integer
Dim z As Integer
Dim y As Integer
z = 500 '最大行数
y = 300 '最大列数
For i = 1 To z '繰り返し処理を使い、変数は1〜500
Range(Cells(i, 1), Cells(i, y)).Interior.ColorIndex = 22 'セル範囲の指定
Next i '500行目までを22番色で埋める
For i = 1 To z Step 2 '1行飛ばしで500行目までを13番色で埋める
Range(Cells(i, 1), Cells(i, y)).Interior.ColorIndex = 13 'セル範囲の指定
Next i
End Sub
**********************************************************************↓こういう感じのIF文を入れたい
If i = 1 Then '1行目だけ何もしない
Range(Cells(i, 1), Cells(i, y)).Interior.ColorIndex = 00
Else
すみません&有り難うございます。
具体的な目的を書かずに適当に質問してしまったのですが、やりたいことは
1.行ごとに違う色を入れる
2.1行目だけ何もしない(色を変えない)
3.2についてはIF文を使う
なのですが、3.が上手くいきません。
*************************************************************************:
Sub xxxxxxx()
Dim i As Integer
Dim z As Integer
Dim y As Integer
z = 500 '最大行数
y = 300 '最大列数
For i = 1 To z '繰り返し処理を使い、変数は1〜500
Range(Cells(i, 1), Cells(i, y)).Interior.ColorIndex = 22 'セル範囲の指定
Next i '500行目までを22番色で埋める
For i = 1 To z Step 2 '1行飛ばしで500行目までを13番色で埋める
Range(Cells(i, 1), Cells(i, y)).Interior.ColorIndex = 13 'セル範囲の指定
Next i
End Sub
**********************************************************************↓こういう感じのIF文を入れたい
If i = 1 Then '1行目だけ何もしない
Range(Cells(i, 1), Cells(i, y)).Interior.ColorIndex = 00
Else
422デフォルトの名無しさん (ワッチョイ 237c-HAen)
2019/10/22(火) 23:10:48.22ID:N/F1Z5u20 >>421
Ifにする必要がわからない
Range(Cells(1, 1), Cells(1, y)).Interior.ColorIndex = 0 を最後に入れるか、
最初に入れてForの開始行を1にしなければいいと思うんだが
上手くいかないとはどういかないの?
Ifにする必要がわからない
Range(Cells(1, 1), Cells(1, y)).Interior.ColorIndex = 0 を最後に入れるか、
最初に入れてForの開始行を1にしなければいいと思うんだが
上手くいかないとはどういかないの?
423デフォルトの名無しさん (ワッチョイ 124b-+Ykt)
2019/10/22(火) 23:10:49.55ID:Qb6PF4Ej0 そもそも2行目からスタートすればいいのでは
424デフォルトの名無しさん (アークセー Sx47-UVSK)
2019/10/22(火) 23:11:06.82ID:IKwAwtn1x 縞模様のテーブルスタイルをあらかじめ定義しておいて、テーブル変換してスタイルを適用してからテーブルを範囲に転換するのが一番楽だよ
425デフォルトの名無しさん (ワッチョイ 9268-S3Tg)
2019/10/23(水) 06:33:53.41ID:3xysxys80 >>421
ifは見づらいだけだよ
100%、forを2から始めた方が良い
For i = 1 To z '繰り返し処理を使い、変数は1〜500
if i >1 then
'ここに全部入れる
endif
Next i
ifは見づらいだけだよ
100%、forを2から始めた方が良い
For i = 1 To z '繰り返し処理を使い、変数は1〜500
if i >1 then
'ここに全部入れる
endif
Next i
426デフォルトの名無しさん (ワントンキン MM42-vsgv)
2019/10/23(水) 08:42:06.06ID:F6dTtsAKM >>421
範囲内を塗るだけなら、最初のFor〜Nextはいらない。
範囲全体を22番で塗った後に奇数行に処理するのではなく、
範囲全体を13番で塗った後に偶数行に処理する、
とすれば、1行目の処理のIf文いらない。
Sub xxxxxxx()
Dim i As Integer
Dim z As Integer
Dim y As Integer
z = 500
y = 300
Range(Cells(2, 1), Cells(z, y)).Interior.ColorIndex = 13
For i = 2 To z Step 2
Range(Cells(i, 1), Cells(i, y)).Interior.ColorIndex = 22
Next i
End Sub
>2.1行目だけ何もしない(色を変えない)
っていうのは元々色が付いていたらその色から変えてはいけないって意味だよね。
そうすると
1行目を含めて塗った後、勝手にInterior.ColorIndex = 00であったとと決めつけて処理するのはよろしくない。
範囲内を塗るだけなら、最初のFor〜Nextはいらない。
範囲全体を22番で塗った後に奇数行に処理するのではなく、
範囲全体を13番で塗った後に偶数行に処理する、
とすれば、1行目の処理のIf文いらない。
Sub xxxxxxx()
Dim i As Integer
Dim z As Integer
Dim y As Integer
z = 500
y = 300
Range(Cells(2, 1), Cells(z, y)).Interior.ColorIndex = 13
For i = 2 To z Step 2
Range(Cells(i, 1), Cells(i, y)).Interior.ColorIndex = 22
Next i
End Sub
>2.1行目だけ何もしない(色を変えない)
っていうのは元々色が付いていたらその色から変えてはいけないって意味だよね。
そうすると
1行目を含めて塗った後、勝手にInterior.ColorIndex = 00であったとと決めつけて処理するのはよろしくない。
427デフォルトの名無しさん (ワッチョイ 6f87-7R73)
2019/10/23(水) 08:44:11.12ID:u2hf1X8z0 >>422-425
有難うございます。
間違いなく、Forのところを2行目からにする方が簡潔でいいと思うのですが、無理矢理if文を入れるとするとどうすべきかを知りたかった部分もあったので、大変助かりました。
有難うございます。
間違いなく、Forのところを2行目からにする方が簡潔でいいと思うのですが、無理矢理if文を入れるとするとどうすべきかを知りたかった部分もあったので、大変助かりました。
428デフォルトの名無しさん (ワッチョイ 6f87-7R73)
2019/10/23(水) 08:56:18.27ID:u2hf1X8z0429デフォルトの名無しさん (ワッチョイ 1ef7-V+wO)
2019/10/23(水) 09:28:03.44ID:zKPC6jha0 奇遇判定ならIfよりSelect Caseで分けると楽かな
Dim cngRng As Excel.Range
Set cngRng = Excel.Application.Range("A1:E20")
'範囲から上一列を除外
Set cngRng = cngRng.Offset(1, 0).Resize(cngRng.Rows.Count - 1, cngRng.Columns.Count)
Dim colorNum As Long
Dim r As Excel.Range
For Each r In cngRng.Rows
Select Case r.Row Mod 2 '行番号を2で割った余り
Case 0
colorNum = 1 '1=Black
Case 1
colorNum = 6 '6=Yellow
End Select
r.Interior.ColorIndex = colorNum
Next r
Dim cngRng As Excel.Range
Set cngRng = Excel.Application.Range("A1:E20")
'範囲から上一列を除外
Set cngRng = cngRng.Offset(1, 0).Resize(cngRng.Rows.Count - 1, cngRng.Columns.Count)
Dim colorNum As Long
Dim r As Excel.Range
For Each r In cngRng.Rows
Select Case r.Row Mod 2 '行番号を2で割った余り
Case 0
colorNum = 1 '1=Black
Case 1
colorNum = 6 '6=Yellow
End Select
r.Interior.ColorIndex = colorNum
Next r
430デフォルトの名無しさん (ワントンキン MM42-+Ykt)
2019/10/23(水) 10:14:44.78ID:pOBwJdgAM リーダブルコードとか読んでみたらいいんじゃないか
431デフォルトの名無しさん (ワッチョイ 6bce-S3Tg)
2019/10/23(水) 10:35:16.84ID:Bv/wwg6O0 z = 500 '最大行数
For r = 2 To z Step 2
'偶数
Next
For r = 3 To z Step 2
'奇数
Next
For r = 2 To z Step 2
'偶数
Next
For r = 3 To z Step 2
'奇数
Next
432デフォルトの名無しさん (ワッチョイ 371a-8Pqf)
2019/10/23(水) 10:39:27.17ID:9YAnqBFd0 Rangeをつかってセルの範囲を指定した後に
条件を付け加えて条件に合うまで自動で繰り返し処理を行って条件通りになった時に選択セルに文字や数字を入れるにはその下にIfとかで条件を増やしていけばいいの?
条件を付け加えて条件に合うまで自動で繰り返し処理を行って条件通りになった時に選択セルに文字や数字を入れるにはその下にIfとかで条件を増やしていけばいいの?
433デフォルトの名無しさん (オッペケ Sr47-UVSK)
2019/10/23(水) 12:32:05.46ID:YTHJUc03r >>432
条件が簡単で範囲が狭ければ上にあるようにselect caseが分かりやすい
for each c in range("a5:b20")
select case c
case 1
c=c+1
end select
next
条件が簡単で範囲が狭ければ上にあるようにselect caseが分かりやすい
for each c in range("a5:b20")
select case c
case 1
c=c+1
end select
next
434デフォルトの名無しさん (スッップ Sd1f-5/kr)
2019/10/24(木) 12:24:28.14ID:UjAlYEh+d435デフォルトの名無しさん (ベーイモ MMff-CM8p)
2019/10/24(木) 18:18:50.61ID:uab6eG2kM ExcelでOutlookのメールを処理することについての質問なのですが、ここのスレでよろしいでしょうか。
https://docs.microsoft.com/ja-jp/office/vba/api/outlook.items.getlast
getlastメソッドで、メールを取得するのですが、たまに取得できないことがあります。(たぶんNothing?が帰ってくる。Nothingでない可能性もある。)(メールアイテム以外でも動作確認済。)
getlastメソッドで、取得失敗した場合には5秒待機してもう一度getlastメソッドを行い、最大20回繰り返す処理にしても、たまにメールの取得に失敗します。
ログを確認すると、メールを受信した時間にエラーが起きているようでした。(自身が送信したメールであるかは未確認)
ちなみに、共有受信フォルダに対して処理を行なっています。
メールの取得がうまくいかない原因として何が考えられるでしょうか?
また対策もお教えいただければ。
よろしくお願いします。
https://docs.microsoft.com/ja-jp/office/vba/api/outlook.items.getlast
getlastメソッドで、メールを取得するのですが、たまに取得できないことがあります。(たぶんNothing?が帰ってくる。Nothingでない可能性もある。)(メールアイテム以外でも動作確認済。)
getlastメソッドで、取得失敗した場合には5秒待機してもう一度getlastメソッドを行い、最大20回繰り返す処理にしても、たまにメールの取得に失敗します。
ログを確認すると、メールを受信した時間にエラーが起きているようでした。(自身が送信したメールであるかは未確認)
ちなみに、共有受信フォルダに対して処理を行なっています。
メールの取得がうまくいかない原因として何が考えられるでしょうか?
また対策もお教えいただければ。
よろしくお願いします。
436デフォルトの名無しさん (ワントンキン MMe7-9ZKN)
2019/10/24(木) 18:54:50.60ID:9FPqNGzPM getlastしようとしてるオブジェクトが空なんじゃないの
当然何度やってもダメでしょうし
オブジェクトの指定を見直すしかないのでは
当然何度やってもダメでしょうし
オブジェクトの指定を見直すしかないのでは
437デフォルトの名無しさん (オッペケ Sr47-7WON)
2019/10/24(木) 21:16:31.40ID:LTozGfJsr >>435
マクロ実行のタイミングで新着がある場合に失敗することがある
マクロ実行のタイミングで新着がある場合に失敗することがある
438デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/24(木) 22:19:08.24ID:k4Slgj9Ox >>435
outlookの受信処理と競合して、完全にダウンロードされていないアイテムを掴んで処理が失敗してしまってるんじゃないかな
ActiveExplorer.CommandBars.ExecuteMso ("ToggleOnline")でオンライン/オフラインのモードを切り替えられるので、オフラインモードにしてから受信済のアイテムを操作してみたらどうかな
outlookの受信処理と競合して、完全にダウンロードされていないアイテムを掴んで処理が失敗してしまってるんじゃないかな
ActiveExplorer.CommandBars.ExecuteMso ("ToggleOnline")でオンライン/オフラインのモードを切り替えられるので、オフラインモードにしてから受信済のアイテムを操作してみたらどうかな
439デフォルトの名無しさん (ワッチョイ ff42-CM8p)
2019/10/24(木) 23:23:46.93ID:Asf3hx3R0440デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/24(木) 23:31:06.94ID:0B+H0gI/x >>439
438をポストした者だけど、共有メールボックスではコマンドバー操作を試していないので、うまくいかなかったら申し訳ない
438をポストした者だけど、共有メールボックスではコマンドバー操作を試していないので、うまくいかなかったら申し訳ない
441デフォルトの名無しさん (ワッチョイ c31a-hRK6)
2019/10/25(金) 11:05:50.13ID:dGLThU1d0 >>434
どういう事?
どういう事?
442デフォルトの名無しさん (ワッチョイ 6f68-7KPZ)
2019/10/25(金) 11:29:44.18ID:cKRHja930 選択されてる範囲に勝手に入力されるのは困ると捉えるか
使う側が指定した範囲に効果を適用したいと捉えるかの違いでは
使う側が指定した範囲に効果を適用したいと捉えるかの違いでは
443デフォルトの名無しさん (ワッチョイ e301-X3cA)
2019/10/25(金) 22:22:49.14ID:l2RnHcFL0 >>429
むしろ遇奇なら一行ifを使ったほうが簡潔だよ
If r.Row Mod 2 Then r.Interior.ColorIndex = 6 Else r.Interior.ColorIndex = 1
また、「colorNum」を「r.Row Mod 2」の関数とみなせば
Dim colorNum(): colorNum = Array(1, 6) '配列で代用
(中略)
r.Interior.ColorIndex = colorNum(r.Row Mod 2)
という形になる。
また、「r.Row Mod *」の除数は「colorNum」の要素数なので
Dim modSecond as Long : modSecond = Ubound(colorNum) - Lbound(colorNum) + 1
r.Interior.ColorIndex = colorNum(r.Row Mod modSecond)
と一般化できる。
これはIf文やSelect文と違い、colorNumを与えれば三色以上にも動的に対応出来る。
>>441
Selectメソッド使わなくてもセルに入力できるよっていう話だと思う
マクロを記録すると当然セル選択(Select)も全部記録するし、「選択してから操作する」は直感的にも正しいから、
初めてVBAを触る人はSelect必須だと勘違いしやすい
実際は「マクロが動いてる様子が見れないと不安だ」っていう人も少なからずいて、わざとSelectすることはよくある
むしろ遇奇なら一行ifを使ったほうが簡潔だよ
If r.Row Mod 2 Then r.Interior.ColorIndex = 6 Else r.Interior.ColorIndex = 1
また、「colorNum」を「r.Row Mod 2」の関数とみなせば
Dim colorNum(): colorNum = Array(1, 6) '配列で代用
(中略)
r.Interior.ColorIndex = colorNum(r.Row Mod 2)
という形になる。
また、「r.Row Mod *」の除数は「colorNum」の要素数なので
Dim modSecond as Long : modSecond = Ubound(colorNum) - Lbound(colorNum) + 1
r.Interior.ColorIndex = colorNum(r.Row Mod modSecond)
と一般化できる。
これはIf文やSelect文と違い、colorNumを与えれば三色以上にも動的に対応出来る。
>>441
Selectメソッド使わなくてもセルに入力できるよっていう話だと思う
マクロを記録すると当然セル選択(Select)も全部記録するし、「選択してから操作する」は直感的にも正しいから、
初めてVBAを触る人はSelect必須だと勘違いしやすい
実際は「マクロが動いてる様子が見れないと不安だ」っていう人も少なからずいて、わざとSelectすることはよくある
444デフォルトの名無しさん (ブーイモ MM1f-FIMf)
2019/10/26(土) 12:54:04.66ID:eBBCRY7lM このまえ職場のITの人が
「サーバがコケた」と言ってました。
「コケた」とはなんですか?
サーバに足が二本あってその足がもつれてサーバが倒れた?
「サーバがコケた」と言ってました。
「コケた」とはなんですか?
サーバに足が二本あってその足がもつれてサーバが倒れた?
445デフォルトの名無しさん (ワッチョイ ff38-RFIa)
2019/10/26(土) 15:23:13.25ID:ByENxD/q0 すいません
「いま選択しているセル(1セルのみ選択します)の中心に、
[行の先頭(Aの左端)]から[設定されている印刷範囲の右まで]
オートシェイプの罫線を引く」
、というマクロを作成し始めているのですが、
[印刷範囲の右まで] という指定はどのように記述したらよいでしょうか?
いまのところ検索しつつ手習いでこんな記述になったのですが、
Sub マクロ名()
Dim R As Range
Set R = Selection
With ActiveSheet.Shapes.AddLine(R.Left - R.Left, R.Top + R.Height / 2, [ ], R.Top + R.Height / 2).Line
End With
End Sub
[ ]の中に[印刷範囲の右まで]という意味合いを
挿入すればできるのかしらと思っています
[Aの左端]を指定するのに
[選択範囲の右までの距離から、選択範囲の右までの距離を引いたもの]で
距離がゼロになったはウフフ としているのも
「・・・他にビシッとした命令文があるんじゃないかね」と思っているので
ここもご教示いただければ幸いです
「いま選択しているセル(1セルのみ選択します)の中心に、
[行の先頭(Aの左端)]から[設定されている印刷範囲の右まで]
オートシェイプの罫線を引く」
、というマクロを作成し始めているのですが、
[印刷範囲の右まで] という指定はどのように記述したらよいでしょうか?
いまのところ検索しつつ手習いでこんな記述になったのですが、
Sub マクロ名()
Dim R As Range
Set R = Selection
With ActiveSheet.Shapes.AddLine(R.Left - R.Left, R.Top + R.Height / 2, [ ], R.Top + R.Height / 2).Line
End With
End Sub
[ ]の中に[印刷範囲の右まで]という意味合いを
挿入すればできるのかしらと思っています
[Aの左端]を指定するのに
[選択範囲の右までの距離から、選択範囲の右までの距離を引いたもの]で
距離がゼロになったはウフフ としているのも
「・・・他にビシッとした命令文があるんじゃないかね」と思っているので
ここもご教示いただければ幸いです
446デフォルトの名無しさん (ワッチョイ ff95-mjLV)
2019/10/26(土) 15:26:44.03ID:a/Ne+y1n0 >>374
殿堂入りのコピペにしよう
殿堂入りのコピペにしよう
447デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/26(土) 15:51:51.18ID:LZqRDs7Rx >>445
印刷範囲はActiveSheet.PageSetup.PrintAreaで取得できる
印刷範囲の右端列のうち選択セルRと同じ行にあるセル範囲を取得するならば、こんな感じになるかな
試してないのでうまくいかなかったらごめん
With ActiveSheet
.Cells(R.Row, .PageSetup.PrintArea.Columns(.PageSetup.PrintArea.Columns.Count).Column)
End With
印刷範囲はActiveSheet.PageSetup.PrintAreaで取得できる
印刷範囲の右端列のうち選択セルRと同じ行にあるセル範囲を取得するならば、こんな感じになるかな
試してないのでうまくいかなかったらごめん
With ActiveSheet
.Cells(R.Row, .PageSetup.PrintArea.Columns(.PageSetup.PrintArea.Columns.Count).Column)
End With
448デフォルトの名無しさん (ワッチョイ 23c4-BHPo)
2019/10/26(土) 17:22:53.91ID:gStMXt400 列の右端左端の値を取ろうとxltoright/xltoleftを使ったやり方したんだけど、普通に値が入ってるのは大丈夫だったのだけど、計算式が入っているのはダメだった…
どうしたら計算式でも値が入ってる最終、最初の列の値を取れるのでしょう…
一応値貼り付けをしてみたけどダメでした。
どうしたら計算式でも値が入ってる最終、最初の列の値を取れるのでしょう…
一応値貼り付けをしてみたけどダメでした。
449デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/26(土) 17:42:49.95ID:r1v5ZtYZx >>448
RangeオブジェクトのCurrentRegionプロパティで解決できる
RangeオブジェクトのCurrentRegionプロパティで解決できる
450デフォルトの名無しさん (ワッチョイ b39e-KT7O)
2019/10/26(土) 18:39:46.37ID:iVpeMUgw0 listviewが使えない状態でフルパスをドラッグドロップで取得したいんですが可能ですか。
vbsでバッチファイル経由でも良いのですが
excel上にマクロボタンを設置し
listviewのようにバッチファイル自体にドラッグドロップするのではなく
エクセル内にドラッグドロップしフルパスを取得したいです。
ご教示お願いします。
vbsでバッチファイル経由でも良いのですが
excel上にマクロボタンを設置し
listviewのようにバッチファイル自体にドラッグドロップするのではなく
エクセル内にドラッグドロップしフルパスを取得したいです。
ご教示お願いします。
451デフォルトの名無しさん (スップ Sd1f-mumX)
2019/10/26(土) 19:02:55.77ID:fijtr2QZd OutlookとかVBAとかいつの時代を生きてんの?
そろそろ進もうよ
そろそろ進もうよ
452デフォルトの名無しさん (スフッ Sd1f-omNk)
2019/10/26(土) 19:12:27.63ID:KoMfhOgAd うちもOutlook。しかも2007
453デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/26(土) 19:24:57.11ID:2Jq8ZMU0x >>451
Office365でOutlookクライアントネイティブでマクロ実行するときもOutlook VBAが使えて便利だぞ
Excel VBAでもPowerPivotや PowerQueryみたいなモダンな機能を扱えるし何かと便利
あとVBAは古くて癖があるけど、やっぱりMS Office自体は有用だし、他言語でCOM生成したりMS Office Interopを使ったりする手間を考えたらVBAを使う手間と大差ない
Office365でOutlookクライアントネイティブでマクロ実行するときもOutlook VBAが使えて便利だぞ
Excel VBAでもPowerPivotや PowerQueryみたいなモダンな機能を扱えるし何かと便利
あとVBAは古くて癖があるけど、やっぱりMS Office自体は有用だし、他言語でCOM生成したりMS Office Interopを使ったりする手間を考えたらVBAを使う手間と大差ない
454デフォルトの名無しさん (ワッチョイ ffda-MdJ4)
2019/10/26(土) 21:43:16.86ID:3NuDJQUH0 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2019
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
ちょっと頭のおかしい感じにしてみたんですけど、どうでしょう?
Sub 猿()
'@@@@@@@@@@@@@@@@@@
Dim 日本脳炎, 邪教, 脳梗塞
'@@@@@@@@@@@@@@@@@@
End Sub
Sub 呪呪呪呪呪呪呪呪()
'死死死死死死死死死死死死
Dim あああああああああああ
'死死死死死死死死死死死死
End Sub
【2 Excelのバージョン 】 Excel2019
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
ちょっと頭のおかしい感じにしてみたんですけど、どうでしょう?
Sub 猿()
'@@@@@@@@@@@@@@@@@@
Dim 日本脳炎, 邪教, 脳梗塞
'@@@@@@@@@@@@@@@@@@
End Sub
Sub 呪呪呪呪呪呪呪呪()
'死死死死死死死死死死死死
Dim あああああああああああ
'死死死死死死死死死死死死
End Sub
455デフォルトの名無しさん (ワッチョイ b37c-JGMk)
2019/10/26(土) 21:44:56.09ID:w2sb5QGz0 >>454
ここはExcelスレじゃない
ここはExcelスレじゃない
456デフォルトの名無しさん (ワッチョイ 43c3-nkui)
2019/10/27(日) 04:54:35.83ID:iIC7Qe/E0 33sands's blog: VBAでpushやpopができる配列クラスを実装しました
http://33sands.blogspot.com/2012/03/vbapushpop.html
このブログで、VBA自作配列クラスが公開されていたようですが、ファイルが消えていました。
ここで公開されていたファイルをお持ちの方はいませんでしょうか?
http://33sands.blogspot.com/2012/03/vbapushpop.html
このブログで、VBA自作配列クラスが公開されていたようですが、ファイルが消えていました。
ここで公開されていたファイルをお持ちの方はいませんでしょうか?
457デフォルトの名無しさん (ワッチョイ ff68-mjLV)
2019/10/27(日) 07:39:28.03ID:LP8uAzFd0 いないよw
458デフォルトの名無しさん (ワッチョイ 53ce-mjLV)
2019/10/27(日) 07:48:21.99ID:5kDmbxH+0 WebArchive
459デフォルトの名無しさん (ワッチョイ 23c4-BHPo)
2019/10/27(日) 08:55:23.11ID:1nxyxlWe0460デフォルトの名無しさん (ワッチョイ ffda-MdJ4)
2019/10/27(日) 09:08:45.25ID:7A1wEn3c0 >>456
そこに書いてある Ubound(配列) + 1 ってのは、よく見かける見る例で、
ループ内で使うと思うんだけど、毎回配列の最大数調べてたら遅くならんかなぁ。
俺は a = a + 1 にしちゃうけど、変わらんか?
そこに書いてある Ubound(配列) + 1 ってのは、よく見かける見る例で、
ループ内で使うと思うんだけど、毎回配列の最大数調べてたら遅くならんかなぁ。
俺は a = a + 1 にしちゃうけど、変わらんか?
461デフォルトの名無しさん (ワッチョイ ff68-mjLV)
2019/10/27(日) 10:16:44.42ID:LP8uAzFd0 >>460
VBAでpushを実装しようと思うとこうするしかないぞ
VBAでpushを実装しようと思うとこうするしかないぞ
462デフォルトの名無しさん (ワッチョイ ff01-3qLD)
2019/10/27(日) 11:21:18.40ID:vcUKQgsd0463デフォルトの名無しさん (ワッチョイ 23c4-BHPo)
2019/10/27(日) 11:24:16.68ID:1nxyxlWe0 >>449
currentregionプロパティで下記のは可能でしょうか?
ABCDEFGHI(列名)
q 12 33 q
A〜I列の内、B〜H列内で数字がある最初と最後の列番号を取得したいと思ってます。
通常では448に書いたようにB〜H列を指定して.ENDでxltoleft/rightを使い2行と2つの変数に結果を入れる事でできたのですが、計算式だとNGだったので(どちらもH列が帰ってきました)
currentregionプロパティで下記のは可能でしょうか?
ABCDEFGHI(列名)
q 12 33 q
A〜I列の内、B〜H列内で数字がある最初と最後の列番号を取得したいと思ってます。
通常では448に書いたようにB〜H列を指定して.ENDでxltoleft/rightを使い2行と2つの変数に結果を入れる事でできたのですが、計算式だとNGだったので(どちらもH列が帰ってきました)
464デフォルトの名無しさん (ワッチョイ b37c-JGMk)
2019/10/27(日) 12:19:45.36ID:jv/fzOi30 >>456
なんで作者本人に連絡取らんの
なんで作者本人に連絡取らんの
465デフォルトの名無しさん (ワッチョイ cfdd-MdJ4)
2019/10/27(日) 13:19:15.84ID:5V6/K/A10 >>463
計算結果が数値の最初と最後の列ってこと?
xlToLeft; xlToRight; はセルが空かどうかでしか判断できないから使えないでしょ?
開始列と終了列からそれぞれなめて、IsNumeric(.value) で判定しないとダメじゃないかな。
なんかいい方法あるけ?
計算結果が数値の最初と最後の列ってこと?
xlToLeft; xlToRight; はセルが空かどうかでしか判断できないから使えないでしょ?
開始列と終了列からそれぞれなめて、IsNumeric(.value) で判定しないとダメじゃないかな。
なんかいい方法あるけ?
466デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/27(日) 14:10:23.14ID:lm+G5EAgx >>456
よく見てないけど計算量最適化できてなさそうだね
よく見てないけど計算量最適化できてなさそうだね
467デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/27(日) 14:42:36.79ID:lm+G5EAgx >>463
CurrentRegionでは恐らく無理
下のようにループを左右両側から回して調べるしかないんじゃないかな
列番号をチェックする行に含まれるセルを選択している状態という前提です
Dim RngA2I As Range 'チェック対象行のA列からI列までの範囲
Dim i As Long 'ループ用インデックス
Dim LMost As Long '左端列の列番号
Dim RMost As Long '右端列の列番号
With ActiveSheet
Set RngA2I = .Cells(.Cells(Selection.Row, 1), .Cells(Selection.Row, 9))
End With
For i = 2 To 8
If IsNumeric(RngA2I.Item(i).Value) Then
LMost = i
Exit For
End If
Next
For i = 8 To 2 Step - 1
If IsNumeric(RngA2I.Item(i).Value) Then
RMost = i
Exit For
End If
Next
CurrentRegionでは恐らく無理
下のようにループを左右両側から回して調べるしかないんじゃないかな
列番号をチェックする行に含まれるセルを選択している状態という前提です
Dim RngA2I As Range 'チェック対象行のA列からI列までの範囲
Dim i As Long 'ループ用インデックス
Dim LMost As Long '左端列の列番号
Dim RMost As Long '右端列の列番号
With ActiveSheet
Set RngA2I = .Cells(.Cells(Selection.Row, 1), .Cells(Selection.Row, 9))
End With
For i = 2 To 8
If IsNumeric(RngA2I.Item(i).Value) Then
LMost = i
Exit For
End If
Next
For i = 8 To 2 Step - 1
If IsNumeric(RngA2I.Item(i).Value) Then
RMost = i
Exit For
End If
Next
468デフォルトの名無しさん (ワッチョイ ff01-3qLD)
2019/10/27(日) 14:55:15.64ID:vcUKQgsd0 >>466
中身わからんのに計算量を推定できるとかエスパーかよw
中身わからんのに計算量を推定できるとかエスパーかよw
469デフォルトの名無しさん (ワッチョイ b37c-JGMk)
2019/10/27(日) 16:12:11.26ID:jv/fzOi30 >>463
With Range("B:H")
'最初
.Find(What:="*", LookIn:=xlValues, SearchOrder:=xlByColumns, SearchDirection:=xlNext).Column
'最後
.Find(What:="*", LookIn:=xlValues, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
End With
値が入ってるセルが1つも無いとエラーになるから事前にチェックしておく
With Range("B:H")
'最初
.Find(What:="*", LookIn:=xlValues, SearchOrder:=xlByColumns, SearchDirection:=xlNext).Column
'最後
.Find(What:="*", LookIn:=xlValues, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
End With
値が入ってるセルが1つも無いとエラーになるから事前にチェックしておく
470デフォルトの名無しさん (ワッチョイ cfdd-MdJ4)
2019/10/27(日) 16:59:16.22ID:5V6/K/A10471デフォルトの名無しさん (ワッチョイ b37c-JGMk)
2019/10/27(日) 17:02:26.90ID:jv/fzOi30 数字限定?なら>>469は忘れて
472デフォルトの名無しさん (スプッッ Sd1f-mumX)
2019/10/27(日) 17:36:39.44ID:aJJKs/ARd 今の時代でマルチスレッドが使えない時点で終わってる
>>472
マルチスレッドプログラミングは難しいので、なにか適切な抽象化方策が言語でとられるべきかと
マルチスレッドプログラミングは難しいので、なにか適切な抽象化方策が言語でとられるべきかと
474デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/27(日) 20:13:15.91ID:lm+G5EAgx >>468
Redimで連続アドレス領域を都度確保するのが効率悪いって言いたいだけなんだが
Redimで連続アドレス領域を都度確保するのが効率悪いって言いたいだけなんだが
475デフォルトの名無しさん (ワッチョイ 23c4-BHPo)
2019/10/27(日) 20:14:07.93ID:1nxyxlWe0 >>467
やはり両方から確認しにいくのが確実ですよね。
他の部署から来るデータで2シートだけは単純に空白と数値だけなのですが、他のファイルにある1シートだけは計算式入ってたので…
まぁ、最初と最後だけ確認してから他の作業をさせればいいので、これ参考にさせていただきます。
ありがとうございました。
やはり両方から確認しにいくのが確実ですよね。
他の部署から来るデータで2シートだけは単純に空白と数値だけなのですが、他のファイルにある1シートだけは計算式入ってたので…
まぁ、最初と最後だけ確認してから他の作業をさせればいいので、これ参考にさせていただきます。
ありがとうございました。
476デフォルトの名無しさん (ワッチョイ 23c4-BHPo)
2019/10/27(日) 20:16:11.25ID:1nxyxlWe0477デフォルトの名無しさん (ドコグロ MMc7-3qLD)
2019/10/27(日) 21:21:01.09ID:rrcAfXPkM478デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/27(日) 23:13:53.49ID:lm+G5EAgx479デフォルトの名無しさん (ワッチョイ 7f4b-9ZKN)
2019/10/27(日) 23:43:54.17ID:qu9l82Nk0 面倒臭いからVBA使うんだろ
480デフォルトの名無しさん (アークセー Sx47-7WON)
2019/10/27(日) 23:53:42.61ID:lm+G5EAgx AccessやPowerQueryを知らずに言ってるんだろうがテーブルへのクエリをExcel VBAでスクラッチする方が遥かに面倒だぞ
481デフォルトの名無しさん (ワッチョイ 7f4b-9ZKN)
2019/10/27(日) 23:55:56.34ID:qu9l82Nk0 448のどこがaccess、powerquery向きなのか理解出来ない
482デフォルトの名無しさん (アウアウウー Sa27-wnNP)
2019/10/28(月) 01:11:50.89ID:DN6aA2bKa 最初からデータをDBへ入れて扱っていれば「端の値を取る」などというトンデモ要件はそもそも出てこないということだろう
業務ロジックの中でシートの右だの左だの何列目だのとシート上でのレイアウトに依存したコードが散乱するのは典型的な悪夢
業務ロジックの中でシートの右だの左だの何列目だのとシート上でのレイアウトに依存したコードが散乱するのは典型的な悪夢
483デフォルトの名無しさん (アウアウクー MM47-BHPo)
2019/10/28(月) 08:44:07.27ID:ECOvCBlTM 448です。
元は手作業でやっていたのを自動化?したいとかで外の会社とかも関わってるので、DB化とかそういう話になるとメンドクサイ事になるらしいです。
自分は他から来ているので、あまり口出しできない状態。
あと、作業の行にカレンダーがあって、そのカレンダーに数字が入力されてる感じです。
なので月ごとに場所が変わったりするので…
そんなのが数百行あるので、少しでもその作業の先頭列が分かれば…と思っていたのですが…
元は手作業でやっていたのを自動化?したいとかで外の会社とかも関わってるので、DB化とかそういう話になるとメンドクサイ事になるらしいです。
自分は他から来ているので、あまり口出しできない状態。
あと、作業の行にカレンダーがあって、そのカレンダーに数字が入力されてる感じです。
なので月ごとに場所が変わったりするので…
そんなのが数百行あるので、少しでもその作業の先頭列が分かれば…と思っていたのですが…
484デフォルトの名無しさん (アウアウクー MM47-BHPo)
2019/10/28(月) 08:46:00.28ID:ECOvCBlTM >>482
確かに…
Excelで手作業だったって事もあって、項目によっては行が結合されていたりとかもあってさらにメンドクサイ状態。
そのへんなんとかしてほしいのだが、そうなると外の会社との折衝にもなるらしいのでNGっぽい…orz
確かに…
Excelで手作業だったって事もあって、項目によっては行が結合されていたりとかもあってさらにメンドクサイ状態。
そのへんなんとかしてほしいのだが、そうなると外の会社との折衝にもなるらしいのでNGっぽい…orz
485デフォルトの名無しさん (ワッチョイ cfd2-Z4kd)
2019/10/28(月) 11:38:38.31ID:aHKY+muw0 プログラミングスレで聞くのが妥当か分からないけど
マクロの記録を使って「データ分析」ツールをSheet1、Sheet2....Sheet13と起動していくマクロを作ろうとしてるんだけど、どういうわけか「データ分析」で生成された表が現れるSheetと現れないシートにムラがある
規則性はないように思われる
なにかわかることありますかね
マクロの記録を使って「データ分析」ツールをSheet1、Sheet2....Sheet13と起動していくマクロを作ろうとしてるんだけど、どういうわけか「データ分析」で生成された表が現れるSheetと現れないシートにムラがある
規則性はないように思われる
なにかわかることありますかね
486デフォルトの名無しさん (ワッチョイ c3b0-OGTw)
2019/10/28(月) 12:42:09.32ID:w6LeaWY50 Mac版でcontrol+Shift+5で%が付くようにしたのですがこの設定を元に戻すショートカットってありますか?
487デフォルトの名無しさん (ブーイモ MM1f-DyET)
2019/10/29(火) 04:42:35.22ID:pjDEMxXCM userformの選択されているcheckboxのcaptionを変数にまとめてautofilterでデータ抽出しようとしているのですがうまくいきません
ちなみにそのような方法でautofilterをかけることは可能でしょうか?
よくわかんない質問ですいませんがよろしくお願いします
ちなみにそのような方法でautofilterをかけることは可能でしょうか?
よくわかんない質問ですいませんがよろしくお願いします
488デフォルトの名無しさん (ワッチョイ ffea-/P2k)
2019/10/29(火) 05:23:49.56ID:5vXI5Cgx0■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 最新版Z級クソ映画ランキングが決定! [牛丼★]
- 【STARTO ENTERTAINMENT】SUPER EIGHTの横山裕、フジ『ドッキリGP』ロケで全治2ヶ月の重傷 [Ailuropoda melanoleuca★]
- 「1800万円の売り上げゼロに…」中国インバウンドに特化の宿の今 ★2 [蚤の市★]
- 公用車カーナビのNHK受信料「全額免除を」 千葉市議会、国に制度創設求める意見書可決 [少考さん★]
- 【食】「シャウエッセンは焼くべからず」暗黙のルールを破り売上高過去最高…日本ハム社員たちが「夜味」にかけた情熱 [ぐれ★]
- 地震 [Hitzeschleier★]
- プロレスラーってフォールしてる時ペチンと叩かれただけでフォール解くけど
- 仮に放射線混ざってたとしてもテムとアリエク使うわ
- ドーは
- 親父が同級生(クラスの真面目委員長JK)の母親と結婚した。ウソじゃない。事実なんだ
- なあ、「石破さんにもう一回やって頂く」って選択肢って…ないか? [976717553]
- 【朗報】南鳥島のレアアース、中国産の「20倍の純度」青山繁晴氏「日本は資源大国」日本復活のファンファーレが鳴り響く! [673057929]
