[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 07/02 04:32 / Filesize : 267 KB / Number-of Response : 1038
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part66



1 名前:1000 [2020/05/10(日) 13:43:45 ID:Nkoph0aj.net]
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

※前スレ
Excel VBA 質問スレ Part65
https://mevius.5ch.net/test/read.cgi/tech/1584430040/

※デフォルト設定

439 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 12:42:20 ID:C8J9R7KI.net]
>>413
あーなるほど
そこを考えるんですか、勉強になりましたわ
ただ、改めて疑問に思ったのは、同じブロックスコープ内で再度宣言してもエラーでないのはどういうことなんだろーとか
Forの中での宣言だと繰り返しといっても宣言部分は無視されるってことかな
ま、同じ事しないようにちゃんとおぼえておこ・・・

>>415
このプログラムだとそうなんだけど
ary = Sheet1.Range(Cells(1, i), Cells(5, i))
この部分が、ある条件を満たした場合のみ代入するっていうコードだとします
んで、条件満たさなかった場合には代入されないため、A列のデータがaryに残っちゃっておかしな事になっちゃってたわけですよ
自分で実際に組んでるコードはも少し複雑なものなので

440 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 12:44:02 ID:C8J9R7KI.net]
>>418
ありがとうございます
全然知らなかったです
ちょい調べてみます

441 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 13:55:17.54 ID:W/GxV3g0.net]
>>401
お前は周りにない知識が多少あることに優越感持ってるだけで仕事できる人間の言い分に見えんのよなぁ

442 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 14:13:51 ID:GcFwCYXw.net]
仕事ができる人なら、コードを書くのに何人時かかりますっていう見積もりをざっくりでいいから依頼主にちゃんと提示する
それで依頼を取り下げるかどうかはクライアントの決めること
想定外のトラブルで納期が遅れそうならホウ・レン・ソウして迷惑をかけないようにする

難しいからって愚痴るのはまったく建設的じゃないし、なんの解決にもならない

443 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 15:00:37 ID:py7qoVDy.net]
なんでそんなにかかるの?
どこに時間かかる要素があるの?
やればいいだけでしょ?
○○さんはもっと早かったよ?
次の仕事があるんならそれでいいよ?

444 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 15:05:53 ID:ztYbO9r8.net]
報連相つらいよね…プログラムの難しさよりも報連相の方がつらい…

445 名前:デフォルトの名無しさん [2020/05/31(日) 16:55:11 ID:uJxLAScO.net]
すみませんド素人ですがご教授下さい。

「あるセルを選択して実行すると選択したセル行のA〜D列以外が全て1.1倍される」
というマクロを組みたいです。
ネットで調べて少し作ろうとしてみましたが
知識がありません。

Sub 倍掛け()
Dim SELU As Range '変数名の絶望的センス名
For Each SELU In Selection
SELU.Value = SELU.Value * 1.1
Next SELU
End Sub

Sub 選択したセルの行全選択()
ActiveCell.EntireRow.Select
End Sub

この2つのプロシージャが何となく使えるのかすらわからないのですが試行錯誤しています。
A〜D列を除外というやり方もわかりません。

すみませんが

446 名前:教えていただけないでしょうか。 []
[ここ壊れてます]

447 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/05/31(日) 17:39:48 ID:w6MuXuh+.net]
>>425
Excel for Windows 95で動作確認。

Sub Record1()
Application.Worksheets(1).Select
For I = 5 To 20
For J = 1 To 20
Cells(J, I).Select
ActiveCell.FormulaR1C1 = Val(ActiveCell.FormulaR1C1) * 1.1
Next J
Next
End Sub



448 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/05/31(日) 17:50:31 ID:w6MuXuh+.net]
>>426 「To 20」のところは適当に変更してね。

449 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 18:34:56.03 ID:Gn3uBA4V.net]
>>425
選択した範囲が処理の起点なので、、

  Dim r As Range
  For Each r In Selection
    If r.colunm < 5 Then GoTo nextLoop
    If r.Value = "" Then GoTo nextLoop

    r.Value = r.Value * 1.1
nextLoop:
  Next

こんな感じ?
行全体を対象にしたいみたいだけど、その時はFor文の前に

  Selection.EntireRow.Select

を差し込めばいい。
1万列処理されるけど、、、

450 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 18:39:34 ID:Gn3uBA4V.net]
>>428
綴りを間違っとった
    If r.Column < 5 Then GoTo nextLoop

文字列セルを避けたければ、、以下も追加
    If Not IsNumeric(r.Value) Then GoTo nextLoop

451 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 19:13:07.80 ID:4iioSPSZ.net]
>>424
ああつらい。
上司がメール読まないタイプだと特に。

452 名前:デフォルトの名無しさん [2020/05/31(日) 21:17:59.30 ID:yITbq02Q.net]
馬鹿に馬鹿が答えて滅茶苦茶
簡単な質問だとしゃしゃり出てくるからおかしくなる

453 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 22:48:28.20 ID:6kaO8G32.net]
>>416
そうです!!
カッコ内に文字列です!

454 名前:デフォルトの名無しさん mailto:sage [2020/05/31(日) 22:49:04.73 ID:6kaO8G32.net]
>>417
呼び出し元…すみません、知識不足でした…

455 名前:デフォルトの名無しさん [2020/05/31(日) 23:06:33.42 ID:2V+gQfrN.net]
>>433
馬鹿には無理だと悟れよ、馬鹿

456 名前:デフォルトの名無しさん mailto:sage [2020/06/01(月) 18:21:12.15 ID:JWhdLJJl.net]
お前もだ

457 名前:デフォルトの名無しさん [2020/06/01(月) 18:38:31 ID:4Uk/Vywe.net]
異動した先輩が作ったマクロに少し追加しようと思って標準モジュール見てみたら
乱れ雪月花
地ずり残月
かすみ二段
パリィ
何これ???と思ったらゲームの技名なのか
見事なプロシージャだけど関連性が全くわからんかった…



458 名前:デフォルトの名無しさん mailto:sage [2020/06/01(月) 18:48:48 ID:jizMt7mj.net]
Sub 乱れ雪月花
  風雪即意付け
  月影の太刀
  三花仙
End Sub

459 名前:デフォルトの名無しさん mailto:sage [2020/06/01(月) 19:40:30 ID:o1fpUPSE.net]
取り敢えずマジックナンバーだらけのを保守しろとかいうのはやめてー
セル参照も起点ぐらいは定数宣言しといて欲しい

460 名前:デフォルトの名無しさん mailto:sage [2020/06/01(月) 19:48:00 ID:xzpno8fJ.net]
1列目の2行目から下にEXCELファイル名があります。(同一ファイル名あり)
それらを全て開く、処理、閉じるを繰り返すと時間がかかるので、同一ファイル名は一度だけ開いて閉じるをやりたいのですがどしたらいいですか?

1列目をソート
Do until 1列目
 ???
  処理

loop

ファイル名は数字(000001.xlsなどで桁数は同じ)
???の所で開くor閉じるをやりたいのですがどうしたらいいですか?

461 名前:デフォルトの名無しさん mailto:sage [2020/06/01(月) 20:00:55.95 ID:Ct20WAoS.net]
パリィは草

462 名前:デフォルトの名無しさん mailto:sage [2020/06/01(月) 20:10:21 ID:MDu2hpC8.net]
>>439
ひとつ上のセルが同じファイル名なら
なにもせず次へ

463 名前:デフォルトの名無しさん mailto:sage [2020/06/01(月) 20:42:10 ID:eRBcTATy.net]
重複禁止の処理は連想配列(VBAだとDictionaryオブジェクト)を使うと便利だよ。

既に連想配列に存在するなら何もしない、存在しないなら処理して連想配列に登録する。
Valueに結果を入れておいて、実行結果をシートに出力とかするとカッコイイよ。

464 名前:デフォルトの名無しさん mailto:sage [2020/06/01(月) 21:05:54 ID:Otvtnefa.net]
結果をシートに出すなら配列使わんと重複削除して

465 名前:ゥら開いた方が速くて楽じゃん []
[ここ壊れてます]

466 名前:デフォルトの名無しさん [2020/06/01(月) 23:34:24 ID:5NIHbXOS.net]
まだ22歳の学生社長が得た、23億円の「使い道」
あの橋本環奈をCMに使うバイトアプリの雄
https://toyokeizai.net/articles/-/319511
中学時代の車いす生活から、17歳で起業するまで
https://www.advertimes.com/20200130/article306925/
ミャンマー発 AIダイニングアプリ「Yathar」をしかける日本人起業家
https://roboteer-tokyo.com/archives/14840
自分の視野は「世の中の0.001%」と自覚せよ。ビジネスチャンスを掴む4つの習慣
https://headlines.yahoo.co.jp/hl?a=20200511-00010001-srnijugo-life
アプリの視聴率がわかる 高専卒起業家の独創力
https://www.nikkei.com/article/DGXMZO46695580Y9A620C1000000/
1万人の若者を支援!インターンが日本を変えるかも!? glowshipの若き創業者・足立卓也氏インタビュー
https://sogyotecho.jp/glowship-adachi-interview/
大学生起業家が設立1年で20億円調達! 単発バイトアプリに外食企業など出資【タイミー】
https://foodfun.jp/archives/3490

467 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 00:29:20 ID:hEtyTtKQ.net]
俺ならこうかな。

Sub サンペイグッドカメラ()
 どっきりカメラのキシフォート
 カメラのドイ
End Sub



468 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 00:35:26 ID:0adtr6kX.net]
VBAだしそういう名前面白いかもなw
簡単だけど保守したくないやつは、もう先輩や同僚の連絡先を名前にしようかな

469 名前:デフォルトの名無しさん [2020/06/02(火) 01:36:20.19 ID:rfJHDu9M.net]
Sub 馬鹿専用()
馬鹿には無理()
馬鹿は帰れ()
End Sub

470 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 02:01:31.67 ID:cr7Q5ahz.net]
Sub 鱸()
鰯()
鰹()
鮪()
End Sub

471 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 02:07:31.79 ID:SOkkDiQ6.net]
>>439
Ruby なら重複要素を許さない、集合を使って、

require 'set'

filenames = <<"EOT"
a/foo.txt
a/bar.txt
a/foo.txt
EOT

set = Set.new

filenames.each_line do |filename| # 1行ずつ処理する
filename.chomp! # 末尾の改行を削除する

# 同じ要素は追加できないので、追加できた時だけ、そのファイルを読み込む
p File.read( filename ) if set.add?( filename )
end

472 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 02:24:02 ID:cr7Q5ahz.net]
>>439
[データ]→[重複の削除] って機能あるけど

473 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 04:12:46 ID:xDFjMRpH.net]
>>439
ファイル名がリストアップされてる列があるなら
そこでまず回して重複排除したファイル名の配列 as Stringをつくればいいだけじゃ
てかその程度も思い浮かばないとなるとプログラミング向いてないような気がするわ

重複排除のプログラムって基礎の基礎でやるよ

便利な機能を使う前に順次・分岐・繰り返しでほぼほぼなんでも出来ちゃうことを学んだ方がいいわ
C言語の勉強するとそういうの鍛えられる感じする

474 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 08:37:46 ID:ZejDuh3H.net]
>>364
Readme読む限り、ちょっとこれはと思う。
一定間隔はあまり良くないな。
出来ればWM_DRAWCLIPBOARD捕まえるのが常套手段。

475 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 08:39:17 ID:ZejDuh3H.net]
>>386
まあ、プログラマ―としては糞コードの見本を強要されるわけだからねえ。

476 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 08:41:06 ID:ZejDuh3H.net]
>>398
引数という言葉を調べてみよう。

477 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 09:53:39.10 ID:DG4jD+ms.net]
い・・引数



478 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 10:17:05 ID:ZKdkos41.net]
いんすう、なの?
勝手に、ひきすう、って読んでた。

479 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 10:38:01.33 ID:HxakEXb6.net]
いんすうだと因数と間違えるから、わざとひきすうと読む慣習

480 名前:デフォルトの名無しさん [2020/06/02(火) 11:01:38 ID:P+GfDheU.net]
ソヒキスウブンカイとかあったよねー。

481 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 11:28:56 ID:Bxw1Fg+T.net]
淫吸だとエロい言葉に聞こえるからひきすうと読む

482 名前:デフォルトの名無しさん [2020/06/02(火) 12:59:58 ID:86yzZ856.net]
Sub セル2行を結合して出力()
    Sheets("雛型").Select
    ActiveSheet.Copy
 
    Dim gg As Long, rr As Long
    For gg = Cells(Rows.Count, "E").End(xlUp).Row To 11 Step -1
        Rows(gg + 1).Insert
        For rr = 5 To 31
            Cells(gg, rr).Resize(2).Merge
        Next rr
    Next gg
    HorizontalAlignment = xlCenter
    VerticalAlignment = xlCenter
    Range("A1") = "2行を結合して出力"
 End Sub

すみません、ネットで調べまくってる相変わらずのど初心者です。
セルの行挿入と結合を範囲指定して
2行を結合するのは何とか調べてできたのですが、
「セルの列挿入と結合を繰り返して
2列1行のセルにしたい」
というのができず。。ご教示頂けませんか。

理想は
「セルを2列挿入と結合をして3列1行のセルにする」や
「2列と2行の挿入と結合繰り返して2列2行のセルにする」
など、色々パターンを作りたいのですが。
ネットと入門編の本だとやはり限界を感じます。。
どなかた何卒お願いします。

483 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 13:09:54.31 ID:YHzZdfxN.net]
.resize(1,2).mergeとか
Range(rows(gg+1)rows(gg+2)).insertとか

484 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 14:39:08.29 ID:cr7Q5ahz.net]
セルの結合をマクロでやる設計者ってセンスないね

485 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 14:42:20 ID:cr7Q5ahz.net]
マクロとVBAな

486 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 16:30:35 ID:wladzkcs.net]
セル結合はなあ

487 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 17:14:02 ID:3pwUYc8f.net]
vlookupとセル結合をディスってはじめてexcel使い方として一人前



488 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 17:30:35.84 ID:ZKdkos41.net]
セル結合は帳票イメージでの最終手段。

489 名前:デフォルトの名無しさん [2020/06/02(火) 17:36:37.19 ID:86yzZ856.net]
セルの結合をする理由は
取引先の提出フォームが客先ごとに
1セルの結合の構成が本当に様々で8種類くらいパターンがあり
元のマクロで出した値の貼り付けが出来ないのが現状です。

なので元のマクロの1行1列のセルの値を
セルの構成を客先のに合わせたシートに出力
そのシートから客先提出フォームに値の貼りつけ
というのをやろうとしています。

490 名前:デフォルトの名無しさん [2020/06/02(火) 17:42:54.46 ID:86yzZ856.net]
>>461
すみません、どこにどう弄ったらいいか
教えて頂きたいです。
すみません、、

491 名前:デフォルトの名無しさん [2020/06/02(火) 17:45:43.97 ID:lB7mMLW8.net]
>>468
自分で考えろ

492 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 18:33:10 ID:0adtr6kX.net]
じゃあ8種類のテンプレでよくね

493 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 18:40:35 ID:bGVvB1yX.net]
結合したりvlookupとかしたいから、わざわざエクセル使ってるんじゃないの?

494 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 18:55:17 ID:R+Y1d9Tj.net]
セル結合された部分は別の結合とかできないから
その都度結合解除するとか
行の挿入や削除で表が壊れたり
見えなくなるプロパティがあったり
嫌な思い出しかない

495 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 19:17:40.08 ID:xDFjMRpH.net]
Application.OnKey ってプロシージャに引数渡せないのが残念だなぁ
これってキーごとにプロシージャ作らないといけないかね

496 名前:デフォルトの名無しさん mailto:sage [2020/06/02(火) 19:20:48.48 ID:ZejDuh3H.net]
>>462
そんなこたぁねえだろ。
確かに問題多いけど、分かった上で使うことあるぜ。
ゴミのSendkeys使うよりはあるね。

497 名前:デフォルトの名無しさん [2020/06/02(火) 19:31:05.26 ID:0+iVbcJA.net]
Sub 列挿入()
ActiveSheet.Copy

Dim i As Long
For i = 32 To 8 Step -1
Columns(i).Insert
Next

End Sub
ここまでは何とか、、ってとこです。
後は指定したの行を全部何とか
2列1行のセルに
道のりが遠すぎる…



498 名前:デフォルトの名無しさん [2020/06/02(火) 19:38:40.44 ID:xX39KyXM.net]
データモデルに入れたデータからSQLを使ってシートに出力する方法を教えてください。

ネットになかなか情報がなくて
ListObjects.Add(SourceType:=4, Source:=ActiveWorkbook.Connections("クエリ - パワークエリ名"), Destination:=Range("$A$1")).TableObject
から
.WorkbookConnection.OLEDBConnection.CommandText = "テーブル名" にするとテーブルを出力

.CommandText = Array("EVALUATE CALCULATETABLE('テーブル名' , 'テーブル名'[項目名] =""検索語"" ) ")
.CommandType = xlCmdDAX
のようにするとDAX式で加工したテーブルを出力できるようになりましたが、SQLを使用する方法がわかりません。

499 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 03:13:14.17 ID:4xNyRocT.net]
>>475
Sub 列挿入()
ActiveSheet.Copy

Dim i As Long, c As Long, r As Long 'カウント用
Const n As Long = 2 '列挿入, 列マージ数
Const sC As Long = 8, eC As Long = 32 '開始列, 終了列
Const sR As Long = 2, eR As Long = 10 '開始行, 終了行

With Excel.Application
.DisplayAlerts = False
.ScreenUpdating = False
End With

For c = eC To sC Step -1
For i = 1 To n - 1
Columns(c).Insert
Next i
Next c

For c = eC * n To sC Step -n
For r = sR To eR
Cells(r, c).Resize(1, n).Merge
Next r
Next

With Excel.Application
.DisplayAlerts = True
End With

End Sub

500 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 03:29:44 ID:4xNyRocT.net]
あっ行別の列マージならRange.Merge Across:=Trueってのがあるのか初めて知ったわ

501 名前:デフォルトの名無しさん [2020/06/03(水) 17:16:57.27 ID:AwTWg+pQ.net]
すいません。関数を使って集計する方法を教えていただけないでしょうか。
index matchの組み合わせもしくは、sumifもしくはindex match sumifの複合で表示させたいです。

画像の出荷と書かれたセルに関数を入れて集計したいです。
集計は参照シートの黄色で書かれた「販売+その他出荷」の合計を表示したいです。
sumifでは縦の計算になってしまい、横の足し算が出来ない印象です。
上の数字はmatchを使った際の引用条件になると思い入れました。

説明わかりづらくてすいません。関数を教えていただけないでしょうか。
具体例のエクセルは簡単に書いてますが、実際に書くエクセルはデータが膨大なものです。
なぜかindexもうまく引用できていませんでした。


https://d.kuku.lu/ca513f39a8

502 名前:デフォルトの名無しさん [2020/06/03(水) 17:19:07.42 ID:bl/wSmIk.net]
>>479
死ねよ、ここは何のスレかわかっているか?

503 名前:デフォルトの名無しさん [2020/06/03(水) 17:31:05 ID:AwTWg+pQ.net]
すれ違いでしたか。。 別のスレで質問してみます
失礼します

504 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 18:58:22.75 ID:ajKAwYcj.net]
>>481
説明が下手な質問には答えられない

505 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 19:02:55.47 ID:4xNyRocT.net]
>>479
Offsetっていうセルのサイズを変える関数があるが
この集計を関数でやるのは根本的にムリだね
1,10行目の数字とかに何の関連性もないから列が特定できない
元データ正規化すんのが先だよ

506 名前:デフォルトの名無しさん [2020/06/03(水) 21:04:01 ID:Wz ]
[ここ壊れてます]

507 名前:EARBto.net mailto: 前にも少し聞いたけど上級者はVBAどうやって作ってくもん?
そこそこボリュームのあるマクロを素人ながら作ってるんだけど
・標準モジュールにオブジェクト名付けて
そこに同じ名前のプロシージャを1つ作る

ユーザーフォームのボタンに
プロージャ名を2つや3つ並べたり 
とにかくボタンに割り当ててく
コードの表示見ると凄いシンプルに見えるけど
標準モジュールが30個とかあるんだが…
自己流だと全然だめねこれ
[]
[ここ壊れてます]



508 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 21:12:23 ID:eXcAe8GC.net]
そういうのは言語関係ない
上級者のコード読むなりプログラミング技法の初歩とかを勉強せえ

509 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 21:16:06 ID:jxQ4kFWw.net]
上級者じゃないんでわからんが
数こなしていくうちに上達するんじゃね

510 名前:デフォルトの名無しさん [2020/06/03(水) 22:45:33 ID:DFbqrKTL.net]
ネットで勉強してる初心者以前のレベルだけど
変数をiで宣言してるサイトが結構多いけど
テンプレ的な変数名なの?何かの略字?

511 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/06/03(水) 22:54:44 ID:fRs9+Xkd.net]
integer

512 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 22:55:14 ID:1Bet+/qH.net]
>>487
もともとはIntegerの頭文字から
とりあえず整数型変数にはI、もっと必要な時はJ、K以下略を使うというルールを70年ぐらい前にIBMの技術者が決めて、それが今まで慣習として残っている

513 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 22:58:16 ID:k+INKoSh.net]
テーブル(ListObject)の指定列に計算結果値をLoopで書き込む処理を作ったんだけど、
ひどく遅延します。事象の原因と対策わかる方いたら教えてください。

・(同一シートの)テーブルの枠外だと同じ行数でも瞬時に終わります。
・計算結果じゃなくて 1 を埋め込むのでも遅い。
・再計算Off
・ためしにEnableEvents = false もやってみたけど効果なし。

3000行くらいなんですが、しばらく帰ってこない感じ。
結局式埋込に変えたんだけど、その場合だと5〜6秒くらい。

テーブルなんてそんなもん、ということであればそう認識します。
詳しい方教えてください。

514 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 22:59:26 ID:uWfzdzS4.net]
>>484
モジュールが増えるのは、
他に流用するからとか、
スクロールが面倒だからとか、
そんな理由だと思うけど。

宣言は一番上派、使用する直前派。
参照設定派、CreateObject(xxx)派、
If a = True Then派、If a Then派、
色々だから気にすんなと。

515 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 23:02:38.52 ID:k+INKoSh.net]
>>489
iteratorが語源かと思った。

516 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 23:03:56.76 ID:LXJ+6sS7.net]
DEFINT A-Z

517 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 23:35:44.50 ID:6MdsocRT.net]
ループ変数にはiもよく使うけど、rとかcも割と使う。
列と行を入れ子にしてループ処理する時は、こちらの方が分かりやすい。



518 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 23:40:14.49 ID:K30dfupm.net]
>>487
古くは Fortran かな
I, J で始まる変数は無条件で整数型だった
Iがアルファベットの10番目だからという
よくわからない説もある

519 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 00:05:55 ID:k3k6AIFZ.net]
実際の慣例ではどうなのか知らないが、i〜tまでを使うって教えられた
intのtまでってことで
まあ大抵使ってもi,j,kぐらいだと思うが

520 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 00:09:42 ID:L9xk6UQ0.net]
視認性が悪いから、j とか l とか使いたくない。
なので、 i, k, n, とか適当に飛ばして使ってる。

521 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 00:09:53 ID:OnK1RXVm.net]
自分は最大nまで使うよ。
i、j、k、

522 名前:l、m、n []
[ここ壊れてます]

523 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 00:14:11 ID:L9xk6UQ0.net]
>>494
r は Range Loop用と決めてるから、r, c, はあまり使わない。
そんときは iR, iC ってやるな。
c は1文字入れるとき使うかも。
人それぞれやね。

524 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 01:00:45 ID:BD433+5i.net]
すみません、教えてください。<br>
caseの条件を変数で設定していると条件に一致しなくてelseに流れてしまいます。<br>
ベタ打ちで条件を記載した場合は、正しく処理へ流れるのですが・・・<br>

sub テスト() <br>
Dim a As String <br>
Dim temp As String
a = "みかん"
temp = "りんご"", ""みかん" 'ここはチェックボックスの選択によって可変にする予定

Select Case a
Case temp
Msgbox("冬")
Case Else
Msgbox("冬以外")

End Select

End sub

525 名前:500 mailto:sage [2020/06/04(Thu) 01:02:03 ID:BD433+5i.net]
<BR>は誤って記載したので無視してください。
すみません。

526 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 01:05:29 ID:bxYszK7T.net]
ダブルクォーテーション大好きなんだな

527 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 01:09:25.97 ID:22WZQRcv.net]
>>490
同じ行やってみたけど一秒かかんない
テーブルに数式列あると遅延したけどcalculation=falseで気にならなくなったし



528 名前:デフォルトの名無しさん [2020/06/04(木) 01:47:41.43 ID:OTCVkkK8.net]
馬鹿の特徴

教えて、助けて等で始まる書き込みをする

529 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 02:18:53.76 ID:oqMXr6z+.net]
>>500
Caseの条件が変数かどうかは関係ないから、どこか別のところが間違ってる
よく見直せ

530 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 03:10:03 ID:e1eCmfnY.net]
>>496
俺だけかな i1,i2,i3 とか、 iX,,iY, iCnt, iLoop, iStep みたいに使う

531 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 03:52:02 ID:e1eCmfnY.net]
命名規則とかハンガリアン表記とかあるよね

https://ja.wikipedia.org/wiki/命名規則_(プログラミング)

532 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 07:06:03.13 ID:iR1nViON.net]
>>489
Fortranが始まりが正解

533 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 08:16:07 ID:i/KeU7gc.net]
ループのiはindexのiかと思ってたわ
for(i=0;i<10;i++)
 value[i] = 〜〜的な

534 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 10:24:37 ID:lE9Ts1od.net]
C列が変数aと同じ値で、かつD列が変数bと同じ値で、かつE列が変数cと同じ値の各行で
Z列(整数)が最大値の行の行番号を変数iに代入する方法を教えてください

Dim r As Long,i As Long
Dim a As String, b As String, c As String

For r = 5 to lsr
If Cells(r,3) = a And
Cells(r,4) = b And
Cells(r,5) = c Then
Rows(r).???
End If
Next cnt

i = Application.WorksheetFunction.Max(???)

535 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 12:04:02 ID:0kTawYgE.net]
>>510
Z列の"暫定"最大値を保持する変数を使います。
Dim r As Long, i As Long
Dim a As String, b As String, c As String
Dim Z_v As Long   '追加部分
Dim lsr As Long  '定義漏れですよ
lsr = 処理範囲の最終行をセット
Z_v = 0    ' Z列の最大値が負になりそうなら-9999999999などとしておく
For r = 5 to lsr
  If Cells(r, 3).Value = a And _
    Cells(r, 4).Value = b And _
    Cells(r, 5).Value Then
    If Cells(r, "Z").Value > Z_v Then  ' 暫定最大値を超えたら
      Z_v = Cells(r, "Z").Value     ' 暫定最大値を更新
      i = r                 ' 行位置も更新
    End If
  End If
Next

最大値となる行が複数あった場合は、最初の行位置が i の値となります。

536 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 12:13:10.50 ID:0kTawYgE.net]
>>511 の修正
Cells(r, 5).Value Then
の行は
Cells(r, 5).Value = c Then  です

537 名前:510 mailto:sage [2020/06/04(Thu) 13:00:40 ID:lE9Ts1od.net]
>>511
ありがとうございます!いつも勉強になりますm(__)m



538 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 14:32:12.42 ID:L9xk6UQ0.net]
>>503
レスありがとう。
どうも同時に開いているブックに大量の関数が配置されているとListObject内でLoop入力時に遅延するみたい。再計算Offでも。
まっさらのブックにテーブル1個作ってLoop書き込みしたら瞬時だった。
そこに関数を多く含むブックを同時に開くことで、上記のテーブルで遅延が発生。特に自作関数が影響大きいみたい。
追加で開いたブックからシートを一つずつ削除→計測を繰り返したら、少しずつ早くなって、最終的に瞬時になった。
数行ならパラパラッって感じで気にしなくていいんだろうけど行数が多いとかなり待たされる。
ちなみに対象のテーブルを「範囲に変換」するとどんだけ関数を含んでいようが瞬時に書き込まれる。
こんなもんだと思うしかないのかもだけど、再計算Offでも影響を受けるのが納得いかない。
Win7 on vmwareな環境で試したので自宅のWin10でも試してみる。

539 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 15:52:15.99 ID:MXeQjX7b.net]
おれ、昔は i , j ばかり使ってたけど、最近は回す配列の名前を反映した変数を使ってる
Forブロックが単独で存在するならいいんだけど、if や 他のForブロックと組み合わさって
階層構造になってると、だいぶあとになってメンテするときに理解が遅れる

540 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 16:42:33 ID:9nIeytil.net]
いいね

他にもループ内の処理をそのまま関数にしてしまう方法もある
コメントを書かなくても処理の意味を関数名として記述できるし、再利用性も高まる。
おまけとしてVBAの構文にはないcontinue(処理を中断して次のループへ入る)が行える。

もしくは再帰関数を定義してfor文自体を無くすという凝った方法もある。

541 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 18:37:05 ID:08KHEEC1.net]
データモデルに入れたデータからSQLを使ってシートに出力する方法を教えてください。

ネットになかなか情報がなくて
ListObjects.Add(SourceType:=4, Source:=ActiveWorkbook.Connections("クエリ - パワークエリ名"), Destination:=Range("$A$1")).TableObject
から
.WorkbookConnection.OLEDBConnection.CommandText = "テーブル名" にするとテーブルを出力

.CommandText = Array("EVALUATE CALCULATETABLE('テーブル名' , 'テーブル名'[項目名] =""検索語"" ) ")
.CommandType = xlCmdDAX
のようにするとDAX式で加工したテーブルを出力できるようになりましたが、SQLを使用する方法がわかりません。

542 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 19:02:46.64 ID:fQr1zLSRu]
ガチのにわかでスレチかもしれませんが
エクセル上で123d+789という数字を10進数に直すことはできますか?

543 名前:デフォルトの名無しさん [2020/06/04(木) 19:00:14.86 ID:OTCVkkK8.net]
馬鹿ではなさそうだが、しつこい教えてクレクレに呆れる
ググれよ

544 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 19:01:01.58 ID:gQJ1UXfv.net]
>ネットになかなか情報がなくて

逆にそれを探し当てる方が難しいと思うんだが・・・。
とりあえず、マクロを記録しながらMSクエリを操作すれば答えが出ると思う。

545 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 19:03:34.01 ID:gQJ1UXfv.net]
>パワークエリ名

あ、2016以上か。
パワークエリがあるせいで、MSクエリにたどり着かなかったということか。

546 名前:デフォルトの名無しさん mailto:sage [2020/06/04(Thu) 19:43:02 ID:ZOeL7/nf.net]
>>516
同じ処理を関数にするのはよくあることだけど、同じ処理を括るよりは意味合いで括る方が上策だと思う。
適切に関数に分けていれば、そもそもそんなに入れ子にならんだろう。

再起なんて、それこそ意味合いで自然に出来上がるもんで、無理して作るもんじゃねえと思うんだが。

547 名前:デフォルトの名無しさん [2020/06/04(木) 22:08:56.53 ID:uauxSmqO.net]
Sub セル構成を2行3列に()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
 j = 2 '←ここで何列おき
 Set rng = ActiveSheet.UsedRange
 For i = rng.Columns.Count To 8 Step -1
rng.Cells(10,i).Resize(10,j).EntireColumn.Insert  Next  Set rng = Nothing
Range("G10", "I510").Merge Across:=True
Range("J10", "L510").Merge Across:=True
Range("M10", "O510").MergeAcross:=True
Range("P10", "R510").Merge Across:=True
Range("S10", "U510").Merge Across:=True
Range("V10", "X510").Merge Across:=True
Range("Y10", "AA510").MergeAcross:=True
Range("AB10", "AD510").Merge Across:=True
Range("AE10", "AG510").Merge Across:=True
Range("AH10", "AJ510").Merge Across:=True



548 名前:デフォルトの名無しさん [2020/06/04(木) 22:10:21.75 ID:uauxSmqO.net]
Range("AK10", "AM510").MergeAcross:=True
Range("AN10", "AP510").MergeAcross:=True
Range("AQ10", "AS510").Merge Across:=True
Range("AT10", "AV510").Merge Across:=True
Range("AW10", "AY510").MergeAcross:=True
Range("AZ10", "BB510").Merge Across:=True
Range("BC10", "BE510").Merge Across:=True
Range("BF10", "BH510").Merge Across:=True
Range("BI10", "BK510").Merge Across:=True
Range("BL10", "BN510").Merge Across:=True
Range("BO10", "BQ510").MergeAcross:=True
Range("BR10", "BT510").Merge Across:=True
Range("BU10", "BW510").MergeAcross:=True
Range("BX10", "BZ510").Merge Across:=True
Range("CA10", "CC510").MergeAcross:=True
Dim po As Long, ro As Long
For gg = Cells(Rows.Count, "E").End(xlUp).Row To 11 Step -1
Rows(po + 1).Insert
For ro = 5 To 79
Cells(po, ro).Resize(2).Merge
Next ro   Next po
HorizontalAlignment = xlCenter
VerticalAlignment = xlCenter
Application.DisplayAlerts = True
End Sub

VBAの勉強すらしてない俺が10個くらいのサイトからパクってつなげて一応希望通り動いた
setとかレンジ型とか意味わからんわ…

549 名前:デフォルトの名無しさん [2020/06/04(木) 22:13:08.78 ID:uauxSmqO.net]
For po = Cells(Rows.Count, "E").End(xlUp).Row To 11 Step -1

ここはこうだったな俺の変数癖だわ
なんかもう難しすぎて勉強するよりネットで検索してパクって繋げたほうが楽な気がする
39歳からVBA覚えるって脳みそがついていかんわ

550 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 22:15:04.15 ID:k3k6AIFZ.net]
そんな報告いらん
自分の日記スレでも立てればいい

551 名前:デフォルトの名無しさん [2020/06/04(木) 22:15:05.91 ID:OTCVkkK8.net]
隙あらば馬鹿が日記を書き込む

552 名前:デフォルトの名無しさん [2020/06/04(木) 22:19:18.86 ID:uauxSmqO.net]
隙あらば馬鹿って言いにきてんの?
定期的に馬鹿としか書いてないけど

553 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 22:22:05.20 ID:i/KeU7gc.net]
そうして精神を保ってるとでも思っておこう

554 名前:デフォルトの名無しさん [2020/06/04(Thu) 22:43:14 ID:OTCVkkK8.net]
>>528
馬鹿は黙っていろよ

555 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 22:57:09.20 ID:nxAuSZLn.net]
セルにコメント挿入して中の文字色を一部だけ変えれる事って出来ますか?

strTxt=111111(vbtab)223(vbtab)8975

例えばこんな文字列の223だけ赤色、それ以外は黒色。

556 名前:デフォルトの名無しさん [2020/06/04(木) 22:59:22.67 ID:c/xPJE8L.net]
>>528
お前の書き込みは馬鹿の自己満足以外の何物でもないぞ

557 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 00:25:19 ID:fHeju+Td.net]
>>531
Cells(1, 1).AddComment "あいうえおかきくけこさしすせそ"
Dim c As Excel.Characters
Set c = Cells(1, 1).Comment.Shape.TextFrame.Characters(2, 10)
c.Font.ColorIndex = 3

例えばこれだと、コメントを追加して2文字目から10文字のフォント色を色番号3=赤に変える
という処理になるよ。
他にもフォント,太字斜体,サイズとか、fontクラスのものなら何でも変えれるね。
処理的には変更開始と文字数をどう特定するかだけど頑張ってね



558 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 00:27:45 ID:2CjtUfu9.net]
>>531
comment.shape.textFrame.characters

559 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 00:50:59.98 ID:8UrD2y10.net]
39歳で限界とか。元々能力が低いとしか。

560 名前:デフォルトの名無しさん [2020/06/05(金) 05:51:53 ID:td6kQI8l.net]
>>535
なんだと、このハゲ!

561 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 06:27:32.36 ID:YMz2fC5g.net]
>>523
一応解説すると、、、

値にはいろんな型があるけど、
 文字リテラル(例:"Hello")
 数値リテラル(例:123)
 日付リテラル(例:#2020/6/5#)
 真偽値 (例:True)
 上記で構成される配列(例:Array("月","火","水") )
これらは(またはこれらの値を返す式)はイコールだけで変数にぶっ込めるけど、
これら以外はすべてオブジェクトと見なされるので、
 Set 左辺=右辺
の記述で変数に代入する必要がある。
例えば、ブック、シート、といったものはすべてオブジェクト扱い。
もちろんセル範囲(Range)もオブジェクトなので、Setが必要。

範囲オブジェクトを返すには Range("アドレス記述")で表せるけどこれだと
示してくれた例のように全部書き出す必要がありコードが冗長になる。
そんなときはCells(行,列)の記述で範囲オブジェクトを返すとLoop処理で
簡潔に記述できる。

Cells(行,列)だと1セルしか表せないからRangeと組み合わせて
 Range(Cells(行,列),Cells(行,列))
みたいに記述すれば指定範囲を表現できる。
または、
 Cells(行,列).Resize(500,3)
みたいに記述すれば範囲サイズを拡張できる。

あとはForで行、列の変数をうまうコントロールすればOK.

理解の助けになるといいけど、、

562 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 06:58:05 ID:Lq81HhXC.net]
>>536
年齢を言い訳に使ってる時点で人として残念な人でしょ

563 名前:デフォルトの名無しさん [2020/06/05(金) 07:40:51.89 ID:oZqvF/U1.net]
まったく最近の若者は……

564 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 08:25:59 ID:KlfmBaSN.net]
勉強の話が出てるけど上級者だって全てを覚えているわけじゃない。

>>533のCharactersの話だって、取りあえずこの後に"("を打って見れば説明が出てくるんで、そこから推理してる。
そして推理したら実際に別でテストする。
上手く動いたら、うっすら何となく覚える。
うっすら覚えてる場合は次回も"("打ってからの推理から始まる。
それで問題は起こらないし、何回か繰り返せば完全に覚える。

丸暗記は大変だし結果的に覚えない。

565 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 10:36:23 ID:fHeju+Td.net]
いや何となく覚えてたけど

566 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 12:39:12 ID:tnz6CDPA.net]
そのなんとなくでいんじゃねって話でなくて?

567 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 18:45:39 ID:IG+dLk9+.net]
>>525
そろそろ引退したらどうですか?



568 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 19:01:37 ID:7QZKDprx.net]
>>522
入れ子時の対策として言っただけで、普通は入れ子になりづらいとか急に言われても困る

あと意識せずに自然に再帰になるとかマ?
関数型以外じゃ意識しないと普通できないだろw
やるとしても配列の畳み込みメソッドぐらいなんでは?

569 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 20:18:14.26 ID:KlfmBaSN.net]
>>544
例えば初めて再起を使った時に再起なるものなんか知らなかった。
単純に自分を呼び出せば良くね?と思って書いたら再起だった。
再起なるものを知った後でも、基本的に自分を呼び出せば良いじゃんと思う場面が殆ど。

例えば、パスを与えたらそのフォルダの下のファイルやフォルダ名を全部列挙するという関数を考える。
列挙してる中でフォルダ名取得したら、そのフォルダ名で自分を呼び出せば良いわけだ。
そうすればその呼び出しで更に配下の列挙が得られるんだから。

もっとも、このファイル列挙では最初はDir関数グローバルな動きをすると知らなかったので上手く行かなかったけど。

570 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 20:57:20.30 ID:H0L/fXZL.net]
再起って何だろう?

571 名前:デフォルトの名無しさん [2020/06/05(金) 21:05:54 ID:rCWyQTVZ.net]
>>543
職場の業務というか海外含めて複数の支部で使われてるから出てくるデータを瞬時に処理できるコードをここで3つ教わってしまったからね
もうVBA続けるしかないわ

textデータにプローシージャコピーしてクラウドに保存してあるレベルの

572 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 21:08:38 ID:cCPYycaK.net]
>>546
たぶん再帰の変換ミスだろ

573 名前:デフォルトの名無しさん [2020/06/05(金) 21:32:27 ID:ZSs62RcL.net]
色々調べたのですが・・・。
コピーし貼り付けのマクロで

条件付き書式だけを除いて張り付ける、というマクロを探しています。

今の状態ですと条件付き書式の情報まで上書きされて困っています。
ご教授宜しくお願い致します。

574 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 21:43:17.50 ID:H0L/fXZL.net]
>>548
変換ミスにしては何度も使ってるぞ

575 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 21:47:17.22 ID:2CjtUfu9.net]
>>549
まず他スレの質問締め切るなり断り入れるなりして来いよ

576 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 21:47:20.00 ID:nvWU7/6f.net]
貼り付けた後に
.FormatConditions.Delete
で条件付き書式だけ削除じゃダメなの?

577 名前:548 [2020/06/05(金) 22:17:11 ID:ZSs62RcL.net]
>>552
有難うございます!
しかしそれでは出来ないのです。すいません。



578 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 22:21:45.02 ID:WwtDf+8P.net]
>>549
そもそも"コピー"する必要はあるの?

579 名前:デフォルトの名無しさん mailto:sage [2020/06/06(土) 02:50:09 ID:2JXrsjtz.net]
pasteSpecial繰り返して必要なものだけ貼り付けるしかないんじゃない?

580 名前:デフォルトの名無しさん mailto:sage [2020/06/06(土) 07:05:32 ID:boE/wbIl.net]
何度でも蘇るのが再起だろうな

581 名前:デフォルトの名無しさん mailto:sage [2020/06/06(土) 08:07:18.40 ID:dTKuJKfw.net]
>>436
ロマサガ3とはなかなか分かってる先輩だなw

582 名前:デフォルトの名無しさん mailto:sage [2020/06/06(土) 12:47:06 ID:EOD/vRIp.net]
VBAの配列にもCount使わせて欲しい・・・・
面倒でたまらないわぁ
ちなみにSplitで空配列になったときってUBoundは必ず-1返すのかな
まぁSplitする前の文字列が空かどうかで判別すればいいんだけど

583 名前:デフォルトの名無しさん mailto:sage [2020/06/06(土) 14:19:39.59 ID:nsmtjJW2.net]
SetTimerのコールバック関数内でSetTimerしなおすやつは、再起といっていいかも
あれ、再帰じゃないし

584 名前:デフォルトの名無しさん mailto:sage [2020/06/06(土) 14:24:54.65 ID:FUHWS7EH.net]
>>558
そういうのはラッパークラス定義しちゃえばいい

要素を持たない配列はuboundで-1になるけど、
配列を返す関数をそのままuboundの引数にするとメモリが解放されないらしい
一度変数に代入してから、その変数を引数にするしかない

585 名前:548 [2020/06/06(土) 19:20:06 ID:evXurMFK.net]
>>555
有難うございます!そういうやり方もありますね。勉強になりました。

あれからIF関数と条件付き書式を組み合わせて問題克服できました。
相談に乗っていただけた方みなさん有難うございます。
お騒がせしますた。

586 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 01:10:37.79 ID:czcu/Wo5.net]
ボタンを押してランダムに1ー100の数字をコンピュータに選ばせて、その結果をセルに表示させたいと思いマクロを組みました。
それはできたのですが、ボタンを押すごとに出る数字の履歴を残したいときはどうしたらいいでしょうか?例えば初めはA1、次はA2、次はA3…のようにしたいです。

587 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 01:27:02 ID:MDOjbT3v.net]
また馬鹿が来た



588 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 01:42:25 ID:Dw2BAEV/.net]
消さなきゃいんじゃないの…

589 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 01:51:41 ID:czcu/Wo5.net]
1回目、2回目とボタンを押すごとにA列を下方向に順に記録させたいのです。
説明が悪いかも、すみません

590 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 02:00:00 ID:81VYwWTh.net]
色々やり方があるが回数を持たせるのが簡単だろうな

591 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 02:00:43 ID:Dw2BAEV/.net]
その通り表示させるセル変えればいんじゃないの…

592 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 02:16:26 ID:MDOjbT3v.net]
>>565
馬鹿過ぎて話しにならない
こんなのがわからないような馬鹿には色々無理

593 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 02:44:14 ID:81VYwWTh.net]
>>568
初心者ってこんなもんだろ

594 名前:デフォルトの名無しさん [2020/06/07(日) 03:03:21.76 ID:zKcEsa3T.net]
初心者は全部同じというゆとり理論

595 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 03:47:02 ID:kmJ+/rqz.net]
>>565
A列の最終行を探して次の行に数を入れる

596 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 03:48:37 ID:kmJ+/rqz.net]
最終行は値の入ってる最後って意味ね

597 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 05:24:32.66 ID:cf9XL00M.net]
まずは「1ー100」をマトモに書けるようになるのが先決だな



598 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 05:49:46 ID:dyM/5p3V.net]
>>545
再帰はスマートに書けることも多いけど再帰の数だけメモリを消費する
ファイル列挙みたいな大量になりかねないデータを扱う場合はおすすめできない
時間的にもメリットがないどころか下手すると遅くなり得る
列挙程度のどうでもいいような処理に使うべきじゃないよ

599 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 07:38:47 ID:czcu/Wo5.net]
>>571
は!なるほど!!
ありがとうございます!!


皆様もありがとうございます!精進します!

600 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 07:53:48 ID:MHP0r7Cu.net]
>>574
〉ファイル列挙みたいな大量になりかねないデータを扱う場合はおすすめできない

じゃあこの場合どう処理するの?

601 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 07:56:27 ID:ntu7XVDq.net]
コマンドプロンプトで十分だと思うけど。
VBAでやると、ファイル名に特殊文字が使われていた時に止まって地味にウザい。

602 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 08:33:05.30 ID:xH2ID0fk.net]
>>574
何でこんな頓珍漢な指摘が出てくるんだろうね。
そんな話じゃないだろうに。

自然に再帰になるという例であって、問題あるなら辞めれば良いだけのこと。
それに、そのメモリ消費だが下手くそな組み方だったらその通りだが、そんな組み方しないでしょ。

>>577
何の為にファイル列挙してると思ってんの?
それで終わりの筈が無いだろうw

603 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 08:38:56.41 ID:ntu7XVDq.net]
>>578
だからなに?
コマンドプロンプトで出力したものは再利用できないとでも?

604 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 09:55:56 ID:kdiJvE9H.net]
>>560
さんきゅ

605 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 13:01:44.81 ID:H9nBLvae.net]
>>577
> VBAでやると、ファイル名に特殊文字が使われていた時に止まって地味にウザい。
それお前のコードがバグってるだけだろw

606 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 13:10:29.47 ID:xH2ID0fk.net]
>>579
出来るに決まってんだろw
でも、それを良しとするか?
マトモに書ける奴は良しとはしないだろ。
仕方なしにはするけど。

607 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 13:12:52.96 ID:xH2ID0fk.net]
>>581
いや、これはあり得る。
多分回避も出来るけど、そこ迄考えるのは面倒いので。

問題が起こったら何とかするか、その名前は無理と言うかも。
何しろVBA以外でもトラブルの元なので。



608 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 15:02:44.03 ID:bx1NUQ41m]
>>518   解析かな?→python

609 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 15:23:54.63 ID:H9nBLvae.net]
>>583
具体的なこと書かないであり得るとか言われてもなぁw

610 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 16:37:31 ID:ntu7XVDq.net]
>>582
知らねえよ。
お勧めできないならこれで良いだろって代替案出しただけで。

>>585
「特殊文字」は具体的じゃないのかよ。
何の文字かまでいちいち書いてあげないと納得しないか?

611 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 17:05:54 ID:odk7pmo/.net]
ファイル名に使えるのにVBAで扱えない文字なんて心当たりがないので、ぜひ具体的な文字を教えてくれ

612 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 17:48:58 ID:EhPxLCve.net]
おすすめの教本ありますか?

613 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 17:49:37 ID:H9nBLvae.net]
>>586
> 「特殊文字」は具体的じゃないのかよ。
どこが具体的なんだよw

> 何の文字かまでいちいち書いてあげないと納得しないか?
文字と何をして止まるのかを書かないとね
まあ書けないと思うけど

614 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 18:20:31.92 ID:s05OkEKn.net]
>>588
記録したソースを弄った方が早い
どうしても本が欲しいというなら、出来るだけ完成したソースがたくさん載ってる本がいい

615 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 18:34:00.18 ID:Rq/eP/Hm.net]
VBAでは無いけれど
今回のオンライン申請では氏名の間に空白スペースがあったり
住所のハイフンなんかでエラーだったよ
山 田 花 子
山田 花子
山田 は な 子
11-20-13
十一一二十ー十三
一丁目 II ノ丘 ハイツ III
一- 弐- 三

616 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 18:53:28.87 ID:H9nBLvae.net]
だから何?
それそういう仕様なんだろ(まあバグかもしれんが)

617 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 18:56:58.14 ID:ntu7XVDq.net]
>>589
ああ、確かに特殊文字じゃ書けないわな。

|あいうえお 一番左にカーソルがある状態。

あ|いうえお 1回右を押す

あい|うえお 2回右を押す

あい|うえお 3回右を押す ←2回目と3回目が変わらない。こういう状態になる文字だよ。

あいう|えお 4回右を押す

あいうえ|お 5回右を押す

これで満足か?



618 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 19:05:10.46 ID:ntu7XVDq.net]
>>587
特殊以外だと、日本語環境で中国語とか。

619 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 19:26:44 ID:eHR7BWdB.net]
>>591
それ例ではスペースとかハイフン無いのに入力してエラーのパターンでは

620 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 19:30:43 ID:H9nBLvae.net]
>>593
もしかしてカーソルが「止まる」とか言ってたのか?
想像以上に低レベルだったなw

621 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 20:18:15 ID:ZURHSwDA.net]
そういえばADOを使ったcsv取り込み機能でうちの業務システムから出力したcsvファイルを取り込んだらエラーが出たことあったな。
ファイル名変えたら取り込めたけど。

622 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 20:32:18 ID:1v0hAbPt.net]
>>596
>>594
オイオイ、♬みたいな奴だろ。
文字列変数で受けると?になっちまうんだ。

623 名前:582 mailto:sage [2020/06/07(日) 20:50:04 ID:1v0hAbPt.net]
ファイル名に?が入ったまま何かの処理をすればエラ―吐いて止まるというのは考えられる。

というか、何で俺が解説しなきゃならねえんだよ。
頼むぜw

624 名前:582 mailto:sage [2020/06/07(日) 20:56:23 ID:1v0hAbPt.net]
>>591
そいつはレベルが低いな。
スペースなんて正式な住所や氏名にはあり得ねえとして、入力したもんから片っ端から抜いちまう処理を入れるもんだ。

ハイフンはちょっとあり得る。
普通はマイナス使うと思うんだが罫線記号使ったり似たのがいっぱいあるからな。

625 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 21:55:32.54 ID:XVHV5xvT.net]
これだな

>Excel VBA 質問スレ Part43
>274 名前:デフォルトの名無しさん[] 投稿日:2016/12/02(金) 22:33:29.62 ID:rRSQCExt [1/2]
>ちょっと質問
>
>・おもむろにファイルエクスプローラを開く
>・なんでもいいからファイルのプロパティを開く
>・そこの作成日時をドラッグする
>・セルのA1にペーストする
>
>例えば 2013?年?12?月?1?日、??17:02:28
>これを(すでに文字化けしてると思うが)
>2013/12/1 17:02:28
>に整形したいんだけど
>どうすればいいんだ?
>半角に見えるけどサクラでみるとU+200Fとなっている
>中には数値の間にも混入しているのもある
>最初からFSOで取得するのは無しで
>すでに手動で取り込んだ数百件ものデータなんだ
>よろしくお願いします

626 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 22:23:02.67 ID:QPxy+dct.net]
再現しないぞ

627 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 22:44:34.20 ID:Zvt1FY8k.net]
>>600
そりゃ、住基ネットのデータベースが
インターネットからは参照不能で
全国の一般の素人が入力する事を想定した設計に無理があったんでしょ。



628 名前:デフォルトの名無しさん [2020/06/07(日) 23:18:32 ID:kciisc/v.net]
前スレでここで教えて貰ったのが完成した
課のみんなのPCに入れて使いたいらしい
パス指定するタイプだから

・読取専用にする
・プロジェクトプロパティをロック
・C直下に置いてショートカットをデスクトップに置いてやる
・シート名は変えるなと徹底

こんだけ教えとけばまぁ大丈夫だよね?

629 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 23:22:24 ID:wDFSrhzA.net]
セルの行と列の変数名って業務でよく使うんだけど

Dim r As Long  '行
Dim c As Long '列
これで癖付けてっていいですか?いいですよね?

630 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 23:26:23 ID:Zvt1FY8k.net]
>>604
何が完成したのやら
レス番を貼るか概要を書いて貰わないとわからん

631 名前:デフォルトの名無しさん mailto:sage [2020/06/07(日) 23:35:39.43 ID:Zvt1FY8k.net]
>>605
そのコード読むのが自分だけか複数人かでメンテしだいじゃ無いの

632 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 01:11:56 ID:VAdCiuLB.net]
>>598
確認した

変数で受ける以前の問題だな
DirとかいまだにUnicode対応されてないのか
だったら8.3形式で返せばいいのにな

633 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 07:02:43 ID:upiiQwtH.net]
>>608
ググるとFileSystemObject使えって書いてあるな

634 名前:582 mailto:sage [2020/06/08(月) 07:46:04 ID:ACGXca97.net]
>>609
でも、変数で受けちまうと何使っても?になっちまうよ。
それにFileSystemObjectのファイル列挙は糞遅かった筈。
特別な理由が無いならエラーで抜けちまって、特殊なファイル名には非対応とメッセージ出した方が良い気がする。

635 名前:582 mailto:sage [2020/06/08(月) 08:00:05.61 ID:ACGXca97.net]
>>603
少し住所を扱う処理を動かせば直ぐに気付くレベルの話だよ。
特にスペースなんて人名や住所以外でもよくある話。
全角だろうが半角だろうが""に変換しちまうのはよくやるだろう。
まあ、全角半角は数字とかアルファベットでも問題になるからその前に

636 名前:StrConv使って統一するとかが普通の処理だろう。
ハイフンだって思いつくものはマイナスに変換する程度のことはする。
[]
[ここ壊れてます]

637 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 08:12:22 ID:/JIEFRnW.net]
むしろテキストボックスのEN_UPDATEでスペースやハイフンを消せば楽
郵便番号欄は数字以外受け付けないようにスタイル指定するだけでもいい



638 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 08:46:24.73 ID:k1oezjz2.net]
フォルダを指定し、そのフォルダ内の全てのブックの、各ブックのシート"sire"の2行目から最終行をコピーして
シートcompの最下行の一つ下に張り付けていき、I列に各ブック名を記入していくマクロを教えてください。

Sub comp()

'フォルダを選択
Dim path As String
Dim r As Long
Dim buf As String
Dim i As Long
Dim filename As String
Dim mysheet As Worksheet
Dim srcbook As Workbook
Dim srcsheet As Worksheet

With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = 0 Then
MsgBox "キャンセルされました。"
Exit Sub
End If
path = .SelectedItems(1)
End With

Application.ScreenUpdating = False

639 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 08:47:00.39 ID:k1oezjz2.net]
続き

Range("A1").Value = "担当者"
Range("B1").Value = "行程1"
Range("C1").Value = "件名1"
Range("D1").Value = "行程2"
Range("E1").Value = "件名2"
Range("F1").Value = "行程3"
Range("G1").Value = "件名3"
Range("H1").Value = "期間"
Range("I1").Value = "グループ名"


Set mysheet = ThisWorkbook.Worksheets("comp")
Debug.Print myseet

buf = Dir(path & "\*.xls") 'フォルダ内の全ファイル名

Debug.Print buf

Do While buf <> ""

Set srcbook = Workbooks.Open(path & "\" & buf)

Set srcsheet = srcbook.Worksheets("sire")

640 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 08:47:32 ID:k1oezjz2.net]
続き
filename = 'srcsheetの拡張子なしのファイル名を取得

'シートの内容を2行目以降コピー
srcsheet.Range(Cells(2, 8), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 8)).Copy

'myseetの最下行の一つ下に値として貼り付け
mysheet.Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).PasteSpecial xlPasteValues

'I列にそれぞれのファイル名を入力
For r = Cells(Rows.Count, 9).End(xlUp).Row + 1 To Cells(Rows.Count, 1).End(xlUp).Row
Range("I" & r).Value = filename
Next r

srcbook.Close False

buf = Dir()

Loop

Cells.EntireColumn.AutoFit

Application.ScreenUpdating = True

End Sub

641 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 10:43:42 ID:pUpXY1nL.net]
ワークシートの指定について

Activesheetだと動いて、worksheets(index)やworksheets("シート名")にするとプログラムが動かないことが多いのですが、何故でしょうか


下のようなプログラムを作りました。(Sheet2のA列の数字でSheet1にフィルターをかけて、pdf出力を繰り返す)

Sub Macro3()
For Each c In Worksheets("Sheet2").Range("A1:A68")
 i = c.Value
 a=1
 Worksheets(1).Range("$B$4:$N$6492").AutoFilter Field:=1, Criteria1:=i
 Worksheets(1).PageSetup.RightHeader = "   " & i
 r = Range("$B$5:$B$6492").Find(i).Row
 Worksheets(1).ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Users\Documents" & i & "." & Cells(r, 11).Value
Next c
End Sub


これを実行しても、フィルターがかからず、pdf出力メソッドの部分でエラーが起きます。
しかし、Worksheets(1) を Activesheetに直して、Sheet1をアクティブにした状態で動かすと正常に動きます。
イミディエイトウィンドウでWorksheets(1)が正しく指定されているかも確認しましたが、されていました。
一体何が原因なのでしょうか。

642 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 11:07:13 ID:FM/y1B8a.net]
>>616
入力ミスがないとして、この2箇所でシートの指定が抜けてるのが原因では
Range("$B$5:$B$6492").Find(i).Row
Cells(r, 11).Value

何度もWorksheets(1)を書くんじゃなくて、Forの外でActivateするかWithでSheet1を指定した方が間違いがなくていいと思う

643 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 11:07:50 ID:F0/ca02L.net]
workbookは指定してるの?

644 名前:デフォルトの名無しさん [2020/06/08(月) 14:34:55.82 ID:k7tLKOMH.net]
アドインに記述されてるプロシージャを、シート上の図形をボタンにしてそこから走らせたいのですが、
引数を渡そうとすると、このブックでマクロが使用できないかすべてのマクロが無効なっている可能性があります、と出て実行できません
すべてのマクロを有効にしてもダメでした
引数なしの場合は、マクロが無効であっても、なんの問題もなく実行されます
登録は、'プロシージャ名 "引数"'とやっているのですが、マクロからそのままやると実行されますが、ボタンに登録すると実行されません
なにが問題なんでしょうか?

645 名前:デフォルトの名無しさん [2020/06/08(月) 15:14:19 ID:vAWoQ1cV.net]
sub 引数なし()
引数あり "引数"
end sub

646 名前:デフォルトの名無しさん [2020/06/08(月) 15:39:02.50 ID:P+hhNSq/.net]
なるほど・・・
結構な数のボタンになるので面倒ですが、ひとまずそれでやってみます

647 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 15:41:22.39 ID:F0/ca02L.net]
プルダウンなりなんなりで選ぶなりなんなりさせればいいじゃないなり



648 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 16:55:09.51 ID:Fo3kuWti.net]
イベント付きボタンのクラス作ればいいんじゃないのかな

649 名前:611 mailto:sage [2020/06/08(月) 17:50:20 ID:k1oezjz2.net]
srcsheet.Range(Cells(2, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 8)).Copy

のところが違うみたいです。どう書けばいいですか?

650 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 18:10:47 ID:sSFxNrIu.net]
シート名が抜けるの俺もむかーしよくやったわぁ
アクティブにすると直るんだよなぁw
何度やったか記憶にないぐらいやって痛い思いした

651 名前:デフォルトの名無しさん [2020/06/08(月) 18:31:02.99 ID:J+Lc8xxu.net]
withで囲んでもドットを忘れてそれに気づかずいつまでもソースとにらめっこしたりな

652 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 18:52:12.93 ID:d2CDqPLn.net]
>>624
srcsheet.Range(srcsheet.Cells(2, 1), srcsheet.Cells(Cells(Rows.Count, 1).End(xlUp).Row, 8)).Copy
確証ないけど…

653 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 19:01:25.33 ID:zqZQO86x.net]
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)


Sh.Range("A:Z").Interior.Color = xlNone
If Intersect(Sh.Range("A:Z"), Target) Is Nothing Then
Exit Sub
Else '赤く色が変わる

654 名前:
Intersect(Selection.EntireRow, Sh.Range("G:Z")).Interior.Color = RGB(0, 255, 0)
End If
End Sub



とにかく複数選択したセル行の特定の列を全部色付け
選択をやめると色が戻る(デフォルト)をやりたくて
ThisWorkBookにこれを追記
で、なんとか希望の動きになったんですが
これに1行目から7行目は除外(選択しても色が付かない)
という条件の追加は可能ですか?
自分の知識じゃ無理ゲーですみません
[]
[ここ壊れてます]

655 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 19:48:40.38 ID:58QwRa4M.net]
>>628
一番最初に、ifステートメント入れれば良い。
if target.row >=8 thenとか。

656 名前:611 mailto:sage [2020/06/08(月) 20:15:16.49 ID:k1oezjz2.net]
>>624
ありがとうございますm(__)m

657 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 20:24:46.83 ID:zqZQO86x.net]
>>629
おおお、ありがとう理想の挙動に近づきました!
これだと12行目を選択した後にやめて
1行目を選択しても12行目の色が残っちゃうんだけどそれは回避不能ですか?

If Intersect(Sh.Range("A:Z"), Target) Isのところを
If Intersect(Sh.Range("A8:Z5000"), Target) Is
とかに変えても少し挙動が近づいた気もしますが、



658 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 20:28:42.90 ID:pW+OOibM.net]
構造体のメンバ変数を頭からindexで指定するようなことってできませんか?
for文で構造体のメンバ変数と配列とを順次比較したいんですが。

659 名前:デフォルトの名無しさん mailto:sage [2020/06/08(月) 20:28:54.07 ID:WKHI6Xr1.net]
変数名やプロシージャ名を日本語で書くか否か迷ってます
日本語命名で困ったことが起こった人はいますか

660 名前:デフォルトの名無しさん [2020/06/08(月) 20:30:33.47 ID:ckk4P3me.net]
>>631
少しは頭を使えよ、馬鹿

661 名前:デフォルトの名無しさん [2020/06/09(火) 00:06:52.26 ID:GDblTDVr.net]
>>634
頭使ったらハゲるだろ、このハゲ

662 名前:デフォルトの名無しさん [2020/06/09(火) 00:40:35.48 ID:4DWGZxBT.net]
ちょっとトンチンカンかもしれないですが
WindowsのエクセルのVBAって
LinuxのOpen OfficeのCalcでも使えたりするんでしょうか?

663 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 01:33:20.60 ID:dgDUMn0q.net]
>>633
あるぞ
英語環境しかないPCだと使えなくなる
人に送ったら面倒になった

664 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 03:31:53.35 ID:eSuxcQl/.net]
>>633
うちが英語とスペイン語環境しかなくて送られてきたVBAが動かなくて困った事が何度もある
日本人だからって日本語環境でやってるわけではない

665 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 03:41:28 ID:eSuxcQl/.net]
>>636
ExcelVBAはWinとMacでも違いがある
Win/Mac/Linuxで使えるOOoやLOのCalcで使えるVBAは制限やできない事があるけど一応使える

666 名前:582 mailto:sage [2020/06/09(火) 08:27:55.73 ID:w8zDheKG.net]
>>633
日本人にとってもコードが読みにくくてかなわん。

667 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 09:00:21.92 ID:khiSZY25.net]
>>633
会社で使うなら社内の自分より詳しい人に相談してみ



668 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 09:06:51.24 ID:r/wULa9J.net]
個人的には日本語プロシジャー名好き
処理名だと分かりやすい

669 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 09:38:40.07 ID:rQkYVq9m.net]
困った時のローマ字
Sub CSV_no_deTa_wo_rodo_suru()

670 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 09:49:38.68 ID:r/wULa9J.net]
そもそもシート名で日本語使ってるからね
気にするならそこからやらないとね

671 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 09:56:55.81 ID:LXNCuYlO.net]
>>633
単純に一つの言語で統一した方が読みやすい
これは一般的な文章でも感じられると思う
逆にコメント等を日本語にすることで注釈として意識させることが出来る
自分は実装には使わないテスト用のメソッドをを日本語名にする事はあるよ

アメリカに送ったら云々は条件が特殊だし、
日本語コメントも文字化けするんだから関係ないだろと思う

672 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 10:05:30 ID:FZrbGc0Z.net]
システムとして表示やコンパイルが可能かってのと、それを読む人間が外国語を理解できるかはまた別の話
とりまファイル名やワークシートに入ってるデータが日本語なら何も気にしなくていいってことよ
そもそも半角文字だって国によって割り当てが違うんだし

673 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 10:25:08.00 ID:LXNCuYlO.net]
いずれにしても海外環境で動くかって話になると、
関数名ひとつの話じゃないってことだな

674 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 11:06:11 ID:GhLF46O3.net]
>>642
自分はプロシージャ名だけでなく変数名にもときどき使ってます。
変数名を横文字で考え付くのが面倒ってこともありますが。
行や列の位置を示す変数に tate yoko の後は 行 列 縦 横 など。

675 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 12:07:12.66 ID:GJCBYo9K.net]
賛否両論(少し否優勢)な感じね

賛の中でもプロシージャ名、関数名、定数変数名のどこまで日本語が許されるかも派閥次第か

676 名前:582 mailto:sage [2020/06/09(火) 12:11:23 ID:w8zDheKG.net]
iとかなら良いけど変数の型とかプロシージャなのか区別出来る名前になってないと最悪。
で、日本語の名前つけてるのにそんなのが多い。

677 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 12:33:34.60 ID:RJ9Fxau+.net]
>>639
ありがとうございます



678 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 12:34:58.09 ID:LXNCuYlO.net]
変な事せずに命名規則に従った方がいいと思うけどね
メシマズ嫁と同じ思考回路だぞ

679 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 14:16:42.79 ID:VHdLMKHt.net]
すみません。どなたか詳しい方、ご指導願います。
データ計算をVBA作成しようとして悩んでいます。

リストボックスにある地名を選択して、テキストボックス1に数字を
入力したらテキストボックス2に対応した数値を出したいのですが
上手く書けません。

データシートのA列(A2からA300)には地名、横軸(B1からBG1)には整数値(50ずつの数値)があり
地名と整数値の交点には、それぞれ対応した金額が入っています。
またリストボックスの地名は「地名」として別シートを作成しています。

説明方法が悪くて申し訳ないのですが記述の方法の
解説を宜しくお願いします。

680 名前:デフォルトの名無しさん [2020/06/09(火) 14:31:54.35 ID:ksQUvwBH.net]
h,vlookupじゃダメなんですか?

681 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 14:36:44.80 ID:LXNCuYlO.net]
どこまで書けてて、どこから分からないの?

682 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 14:38:50.34 ID:XR5JAco5.net]
XY座標のセル表示して終わりじゃないなら
ピボット勉強した方が良いと思う

683 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 14:49:37.66 ID:VHdLMKHt.net]
651です。

Private Sub ListBox1_Change()
ListBox3.Clear
Select Case ListBox1.Text
Case "東京都"
ListBox3.List = Worksheets("データ").Range("A2:A8").Value
(略)
End Select
With ListBox3
.ColumnHeads = False
.ColumnCount = 1
.ColumnWidths = "40;50;50"
.Font.Name = "Meiryo UI"
.Font.Size = 11
End With
End Sub
Private Sub TextBox2_AfterUpdate()
Dim TextBox2 As Range
Dim TextBox3 As Range
Set TextBox2 = Worksheets("データ").Range("A2:A13")
Set TextBox3 = TextBox2.Find(What:=TextBox2.Value, LookAt:=xlPart)
If Not TextBox3 Is Nothing Then
'ヒットした値をテキストボックスにセット
TextRegion.Value = Worksheets("データ").Cells(TextBox3.Row, TextBox3.Column + 8).Value

End If

End Sub
なんか変です。。。

684 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 14:54:09.61 ID:VHdLMKHt.net]
651です。
たぶんツッコミどころ満載です。
交点のセレクトできていません。

685 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 15:51:31.81 ID:Hq8JX0Tk.net]
なぜ段階を踏んで自分でテストモデルを組んでみないのかが疑問だわ
初心者の頃も含めてその程度の内容で誰かに聞いたことすらないわ

686 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 15:53:54.04 ID:Hq8JX0Tk.net]
1.リストボックスで選択してボタン押して他のフォームで項目表示できるか
2.テキストボックスに書き込んでボタン押して他のフォームのテキストボックスに表示できるか
3.リストボックスとテキストボックスで選択と書込をして同じフォーム上のテキストボックスに対応した数字を出せるのか


とかとか

687 名前:デフォルトの名無しさん [2020/06/09(火) 16:19:22.27 ID:ksQUvwBH.net]
マクロの記録使うのはいいけど
その結果の意味ぐらい調べようよ
ググらなくてもF1キー押せば表示されるからさ



688 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 16:24:07 ID:LXNCuYlO.net]
>>657
下の関数内で使ってる変数名を具体的に書いてみたらどうかな
TextRangeForSearchTargetみたいな文章風でもいいから

689 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 17:05:07.59 ID:/5vAUGTr.net]
ユーザーフォームに
https://www.s-projects.net/degree-position.html
のサイトにあるような
位置度の算出を丸々搭載したいけど
素人にゃ厳しいですかね?

690 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 17:28:45 ID:FZrbGc0Z.net]
>>663
簡単

691 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 17:40:53.94 ID:Hq8JX0Tk.net]
ユーザーフォーム使ってTextBox1とTextBox2に数字いれてTextBox3に足し算の結果だすような基本をまず調べればあとは適当にぐぐりゃ分かるわな

計算途中も変数いちいち宣言して代入していくといいわ
自分で何やってんのか見失わないようにするため

Sub testttt()
Dim drawingX As Double: drawingX = 2
Dim drawingY As Double: drawingY = 2

Dim realX As Double: realX = 2.1
Dim realY As Double: realY = 2.1

Dim diffX As Double: diffX = realX - drawingX
Dim diffY As Double: diffY = realY - drawingY

Dim ResultPosition As Double: ResultPosition = Sqr(diffX * diffX + diffY * diffY) * 2

MsgBox ResultPosition

End Sub

692 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 17:54:43.46 ID:AbQV9kr1.net]
Private Sub TextBox1_Change() 'Xの図面寸法
TextBox3 = Val(TextBox1.Value) - Val(TextBox2.Value)
End Sub
Private Sub TextBox2_Change() 'Xの測定値
TextBox3 = Val(TextBox1.Value) - Val(TextBox2.Value)
End Sub
Private Sub TextBox3_AfterUpdate()'Xのズレ
TextBox3 = Val(TextBox1.Value) - Val(TextBox2.Value)
End Sub
Private Sub TextBox4_Change()'Yの図面寸法
TextBox6 = Val(TextBox4.Value) - Val(TextBox5.Value)
End Sub
Private Sub TextBox5_Change() 'Yの測定値
TextBox6 = Val(TextBox4.Value) - Val(TextBox5.Value)
End Sub
Private Sub TextBox6_Change() 'Yのズレ
TextBox6 = Val(TextBox4.Value) - Val(TextBox5.Value)
End Sub
Private Sub TextBox7_Change()
'位置度最難関
TextBox7 = Val(Sqr(TextBox3.Value) ^ 2) + Val(Sqr(TextBox6.Value) ^ 2) * 2
End Sub
tBox6.Value) ^ 2) * 2
End Sub
1〜6まではぐぐったらなんとかできた
あとは7… >>665 ぐぐるより難しそうで無理す

693 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 17:58:28.74 ID:AbQV9kr1.net]
ああ、最後に変なコピペが混じってる
3と6にも多分式を入れないとだめですよね恐らく

694 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 18:02:48.17 ID:AbQV9kr1.net]
いや違う、むしろ7に入れずに3と6っぽい?
そもそもド素人にはやはり厳しいね
頑張りますわ

695 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 18:44:30.51 ID:AbQV9kr1.net]
うおぉ、浮動小数点かこりゃ?
どっかでroundで四捨五入せんといかんのね
1人であたふたすまん
ほんとムズい

696 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 19:24:04.57 ID:Hq8JX0Tk.net]
Changeイベントなんか使うから難しくなるわけで・・・・

そのサイトにあるように、ボタン押して計算するようなもの作りたいんだろ?

ならズレ角度抜きで、テキストボックス7個作って
ボタン押すと上の4個から数値拾ってきて下の3個に計算結果を入れるっていうな

イベント系はCommandButton1_Click()だけでいいはずだぞ

697 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 19:44:15.62 ID:Hq8JX0Tk.net]
Private Sub CommandButton1_Click()
Dim drawingX As Double: drawingX = TextBox1.Value
Dim drawingY As Double: drawingY = TextBox2.Value

Dim realX As Double: realX = TextBox3.Value
Dim realY As Double: realY = TextBox4.Value

Dim diffX As Double: diffX = realX - drawingX
Dim diffY As Double: diffY = realY - drawingY

Dim ResultPosition As Double: ResultPosition = Sqr(diffX * diffX + diffY * diffY) * 2

TextBox5 = ResultPosition
End Sub

https://i.imgur.com/yhMCwtL.jpg
位置度だけだけど。
テキストボックスはIMEModeOffにしておく



698 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 19:49:22 ID:0Bu4FXEm.net]
なんでユーザーフォームってクソダサなんだろな
色変えられるんだしMicrosoftももうちょい気遣ってくれてもいいのにな

699 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 20:04:52.19 ID:PO2SY+XL.net]
>>671
天才ですか、、
何も知らん癖に自動にしたいかなぁと
思って検索してパクりまくって作ってましたわ
ズレ量も欲しいからとせっせと
小数点も3桁以上は四捨五入したく
1〜4までは意味も分からずとりあえず
ちゃんと挙動してるかなぁレベル
アドバイス貰う以前の素人レベルだからスクショですんません
原理すらわかってない
https://i.imgur.com/0iPDqgX.jpg
https://i.imgur.com/ksEqFVN.jpg

700 名前:582 mailto:sage [2020/06/09(火) 20:10:52.53 ID:w8zDheKG.net]
>>666
そういう書き方せずに>>665を具体的な値の部分は削除してまず関数化する。

Function GetResultPosition(drawingX As Double, drawingY As Double, realX As Double, realY As Double) As Double

Dim diffX As Double: diffX = realX - drawingX
Dim diffY As Double: diffY = realY - drawingY

Dim ResultPosition As Double: ResultPosition = Sqr(diffX * diffX + diffY * diffY) * 2

GetResultPosition = ResultPosition

End Function

初心者を脱っしていれば、点はユーザー定義にしてると思うけど、まあこんな感じ。

701 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 20:19:17 ID:OFRsK1Sh.net]
いつまで素人素人言い訳してくれくれする気だ

702 名前:582 mailto:sage [2020/06/09(火) 20:19:48 ID:w8zDheKG.net]
次にTextBoxの値を関数い代入する。
なお、TextBoxの名前もそれっぽく変えておく。
Sub test()
Dim drawingX As Double
Dim drawingY As Double
Dim realX As Double
Dim realY As Double

drawingX=txtDrawingX.Value
drawingY=txtDrawingY.Value
realX=txtRealX.Value
realY=txtRealY.Value

txtResult.Value=GetResultPosition(drawingX, drawingY, realX, realY)

End Sub

703 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 20:28:43.03 ID:PO2SY+XL.net]
ごめんスクショの所も直しきれてなかったし初心者を脱してないレベルだから
調子乗って挑戦しようと思ったのが間違い

測定値はどこまで小数点書こうが3桁で四捨五入
ズレ量も四捨五入された3桁で表示
四捨五入された3桁のズレ量同士で計算されて
位置度も3桁で四捨五入されてフィニッシュ

やろうとした事が多すぎました
普段のエクセルのSQRT関数入れたツールか
関数電卓で断念します
クレクレとかじゃなく、助言みんなありがとうです

704 名前:582 mailto:sage [2020/06/09(火) 20:51:16.65 ID:w8zDheKG.net]
>>677
四捨五入なんて最後で良いじゃん。
ResultPositionを四捨五入して返すだけだと思うが。
入力の見た目も四捨五入したいならそれぞれでやりゃ良いし。
どっちにしろ、四捨五入なんて考えずに作って、出来てから考えた方が良いぞ。

705 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 21:14:50.07 ID:PO2SY+XL.net]
>>678
どうも…事情がありまして
ズレ量と位置度を両方記入する必要があるから計算を合わせたいのです
そうしないと記入したズレ量と数値の計算が違ってくるので
なので普段はExcel関数ツール作ってで計算させてます


(名称はセル番地)
まず小数点7桁ぐらいで出力されてきやがるズレ量をRound関数で全て小数点3桁にする

小数点3桁同士で位置度の計算をさせる
=if(位置度="","",SQRT(SUMSQ(X実測値-X図面寸法,Y実測値-Y図面寸法))*2)

最後に出た位置度も小数点3桁にする
=if(位置度="","",Round(位置度,3)

位置度とズレ量を小数点3桁まで記入
現状これが自分の最善だったので…

706 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 21:21:13.62 ID:PO2SY+XL.net]
間違えた
小数点3桁同士で位置度の計算をさせる
=if(Xの実測値="","",SQRT(SUMSQ(X実測値-X図面寸法,Y実測値-Y図面寸法))*2)

2つ目はこうやった

707 名前:582 mailto:sage [2020/06/09(火) 21:24:41.76 ID:kJxmgxZ3.net]
>>679
いやいや、そういう話じゃなくてね、そんなもんは最後に入れれば良いでしょ。

先ずは四捨五入無しで動くところから。
あとTextBoxとかイベントとかも後でいいんだよ。



708 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 21:29:48.33 ID:PO2SY+XL.net]
>>681
ごめん、ほんと初心者以前知識すらない関数だけで凌いできたレベルでちょいネットで調べりゃ出きるかなと思ったらもう手つけられんのですわ
クレクレ以前の問題で
それでも
>>671のは頂こうと思うとります

709 名前:デフォルトの名無しさん [2020/06/09(火) 21:37:07.98 ID:/5vAUGTr.net]
そういう業務と無縁だからエクセル関数で計算とかほとんど知らん俺からすると
そんな数式ほんとかよと思ったら
ほんとだった
それはそれでよく考えたもんだなおい
測定をする?部署は凄いね

710 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 21:38:09.42 ID:khiSZY25.net]
>>682
悪いことは言わんから早いうちに転職しなされ
こういう仕事向いてないよ

711 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 21:41:34.61 ID:hYyeR2h+.net]
プログラミングの基本も知らないレベルの人がコピペでツール作って業務に使用するって大丈夫なのか?

712 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 21:45:05.79 ID:FZrbGc0Z.net]
少数以下の計算結果を同じにするのは、Excelでは一番難しい分野の一つ
たとえば銀行の利息とか、素人が作った数式だとまず合わない

713 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 21:56:09.99 ID:khiSZY25.net]
この先も苦労するだろうし、もし重大な問題が起きた場合周りが迷惑するんだよな

714 名前:デフォルトの名無しさん [2020/06/09(火) 21:59:00.39 ID:I+ooWyO2.net]
馬鹿に教えても何かあるとまた頼るだけ
馬鹿に教えてもろくなことにならんぞ
その場で形だけ低姿勢にしてるだけで本音は違うからな

715 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 22:01:59.19 ID:0Bu4FXEm.net]
より正確な計算するのってcurrency型だっけ?
double使うより

716 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 22:10:25 ID:OFRsK1Sh.net]
向き不向き以前に学習する気が無い

717 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 22:26:28.10 ID:1rtAHViu.net]
少数の計算はどの言語でやってもやっかい
なので普通は名の知れたライブラリを呼ぶ
自分で書くのは最後の手段



718 名前:デフォルトの名無しさん [2020/06/09(火) 22:27:34.95 ID:I+ooWyO2.net]
>>689
違いがわからない馬鹿はコメントしなければ良いのに

719 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 23:36:40.87 ID:KturEXme.net]
スレチかもしれないけど他の方法も・・
>>653
VBA使わずにフォームコントロールのリスト選ぶだけで表示
https://i.imgur.com/SHqygJ1.png

>>663
HTAのVBSciptで
https://i.imgur.com/rvwycaA.png

720 名前:デフォルトの名無しさん [2020/06/10(水) 01:20:22 ID:aAKpfJRW.net]
学べない俺には刺さるわ、言い訳だが…
これだけは!っていう心臓部になるコードだけはネットで見つけて何とか繋げて作る
どこ弄ればどう変わるかだけ後で見ても絶対わかるようにコードより丁寧なコメントを残す
それさえ完成するともう安心して終わり

あとは簡単な挙動はテンプレがネットにあるからひろってくる
ユーザーフォームのボタンはで黄緑、黄色、水色を多用する
プロシージャ当てはめるだけで職場じゃパソコンの先生扱い

android端末やiPhoneの扱いならなぁ
近所でおばちゃまたちのスマホ教室を副業でやってるくらい詳しいのにっくそっ!

721 名前:デフォルトの名無しさん mailto:sage [2020/06/10(水) 05:20:40.78 ID:9S1ZPIsx.net]
趣味や勉強中ならわかるが仕事頼んだら理解してないネットのコピペもって来るような人にはもう頼めんだろ

722 名前:582 mailto:sage [2020/06/10(水) 06:37:22 ID:h6488s/K.net]
>>682
そういう言い訳は良いから。
いつも思うことだが初心者はわざわざ問題を難しくする。

先ずは>>671の最後の
TextBox5 = ResultPosition

TextBox5 = Round(ResultPosition,3)
にするだけだ。

それに、TextBox1~4の3桁をど一にかしたいなら>>676を利用した方が簡単。
それぞれのchangeイベントで自分を3桁にした後で>>676のtest呼び出すだけ。

723 名前:デフォルトの名無しさん mailto:sage [2020/06/10(水) 08:27:35.36 ID:ZDdhDfGU.net]
あいつは禿げたおっさんで体臭臭そうだけど、俺からみるとなかなか頑張ってると思うぜ
簡単な書籍買って一冊読んである程度まとまった知識得るといいわ
一年後にはここでふんぞりかえってレスしてると思うね

724 名前:デフォルトの名無しさん mailto:sage [2020/06/10(水) 16:06:12.58 ID:alb8qwRt.net]
買った本開いたの最初だけで、今は枕になってるぞ

725 名前:デフォルトの名無しさん mailto:sage [2020/06/10(水) 16:45:17.85 ID:zxOaMDTC.net]
>>698
メルカリへ

726 名前:デフォルトの名無しさん mailto:sage [2020/06/10(水) 17:48:53.56 ID:GhRRuhdi.net]
>>698
くれ

727 名前:デフォルトの名無しさん mailto:sage [2020/06/10(水) 20:30:18 ID:O8L9L3qt.net]
>>696
本当にありがとう。。言い訳やめて素直に全部頂いたら完成しました…
正直コードは何も理解しとらんですが…
https://i.imgur.com/guqSVVU.jpg



728 名前:デフォルトの名無しさん mailto:sage [2020/06/10(水) 20:43:31 ID:O8L9L3qt.net]
なるほど、普段XとYの図面値が両方0な事も結構多い
そういうときはTextboxの1と3(XとYの図面値)のValueを0に設定しとけばいいのか
こういう事を本で基礎から学ばずスマホで調べて小ずるく終わらせるのが自分の学習性の無さ
、本当に駄目ですわ…
教えてくれた人への感謝と自分への落胆が酷い
もう生産部署に飛ばしてくれよ

729 名前:デフォルトの名無しさん mailto:sage [2020/06/10(水) 21:27:00 ID:r05FbU6w.net]
フォームボタンを置いてそのシートで矢印押し続けるとセル移動が飛び飛びになるんだけど対処法ありますか?
とりあえずマクロ登録した図形にしたら発生しなくなったけど押した感ないから気持ち悪い

730 名前:デフォルトの名無しさん mailto:sage [2020/06/10(水) 21:32:19 ID:2cEQGA3C.net]
>>701
理解する気が無いからな

731 名前:デフォルトの名無しさん mailto:sage [2020/06/10(水) 21:34:24 ID:2cEQGA3C.net]
>>703
本当に飛び飛びになってるかカーソル位置をdebug.printとかで確認してみろ

732 名前:デフォルトの名無しさん mailto:sage [2020/06/10(水) 22:01:15.35 ID:zJ0W6AlK.net]
>>704
そう、それがあかんわ
ちょいちょいと細かなとこばっか弄るくらいしかできない
とりあえず位置度の数値をアクティブセルに反映されるボタンを追加して完成です
失礼しました本当に

733 名前:デフォルトの名無しさん mailto:sage [2020/06/10(水) 23:43:02.56 ID:r05FbU6w.net]
>>705
もちろん実際に移動が飛ぶわけではありません
表示上の問題です

734 名前:デフォルトの名無しさん [2020/06/11(木) 02:06:11.07 ID:l/gRHUK3.net]
馬鹿はこうやって厚かましく聞きだそうとする

735 名前:デフォルトの名無しさん mailto:sage [2020/06/11(Thu) 04:35:21 ID:upd9DdGd.net]
俺はあのおっさんはハゲで臭いけどできるやつだって思ってるわ
しゃちょーの器だ
頑張ったな、おっさん

736 名前:デフォルトの名無しさん mailto:sage [2020/06/11(Thu) 05:50:14 ID:p+d7/Y3X.net]
>>708
質問スレで何を言ってんだ?

737 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 07:33:56.10 ID:Ppd1dcd+.net]
馬鹿って言いたいだけの人の相手しちゃダメ



738 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 12:31:19.92 ID:9UX6mR7k.net]
いや、学ばない俺でも流石にセルに反映されるボタンくらいは聞かずに作れたのでそこまでは聞いてないですよ
ボタンに
アクティブセルとテキストボックスのvalueを=の動きつけるだけだし

739 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 14:46:24.05 ID:xmZccwT9.net]
その「だけ」の組み合わせなんだよなぁ

740 名前:デフォルトの名無しさん mailto:sage [2020/06/11(Thu) 15:47:31 ID:fXLeDjMq.net]
算数の問題で答えだけ合っていても計算式がないと正解にはならない
カンニングとみなされるって知らんのか
そうやって問題から逃げている初心者に教えることはない

741 名前:デフォルトの名無しさん mailto:sage [2020/06/11(Thu) 15:50:35 ID:fXLeDjMq.net]
ちょっと言いすぎたかな

742 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 15:56:00.83 ID:G1l0Tewu.net]
いや、それでいいんだよ

743 名前:デフォルトの名無しさん mailto:sage [2020/06/11(Thu) 16:13:44 ID:HN+bic0j.net]
エクセル初心者はVBAなんて触らんし
VBAやマクロ禁止の部署もあるからなぁ
パートさんには入力欄とクリックのみだったりとか
まー初心者がこのスレ見ることもないか・・

744 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 17:23:40.82 ID:9UX6mR7k.net]
いやもう完成しました
感謝もしたし謝罪もします
計算式はPCないところで関数電卓使ったりするから嫌でもわかっとります
√( xズレ^2+yズレ^2) *2

VBAでもまず覚えようと思ったので

Xズレ→B列 Yズレ→C列 位置度→D列のデータの時
Dim s As Long

Do While Cells(s, 3) <> ""
Cells(s, 4) = Sqr(Cells(s, 2) ^ 2 + Cells(s, 3) ^ 2) * 2   
Cells(s, 4) = Format(Cells(s, 4), "0.000")
s = s + 1
Loop
エンドサブちゃん
高卒には荷が重すぎ
高学歴でしょここの人達

745 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 17:29:15.93 ID:/dMXe1DS.net]
その言い訳がましいフレーズをレスに入れるから良くないって、今後は書き込む前に考えたほうがいいよ
ここはもう来なくてもいいから

746 名前:デフォルトの名無しさん [2020/06/11(木) 17:34:53.28 ID:Gg4t4WTy.net]
俺は計算系は答えられんがここは質問スレだからどんどんこい。
煽ってるだけの奴は何の目的でこのスレにするんだ。芸能人の話題待ちでもあるまいし。
自分の決め事があるならいいけど初心者は変数は後でわかるようにとにかく宣言すべし。
日本語だけはあまりお勧めしない。

747 名前:582 mailto:sage [2020/06/11(木) 19:31:53.23 ID:lwV9wV8Y.net]
>>718
何で、そのループが必要なのかな?
あと、いきなりCellsで始まるのはあまり良くない。
ブックなりシートなりから書いた方が良い。

でも、それだと長くなるからWithやSetを使う。



748 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 20:34:47.38 ID:upd9DdGd.net]
特定の行・列を表示・非表示にするボタン使ってるんだけどさ
この行・列にActiveXの他のボタンがあったりなんかするこ、たまにこいつらが消滅するんだよなぁ
debug.printとかで位置確認すると確かにそこにいるんだけどHeight=0とかになってる
んで適当にSubプロシージャ作ってHeight=200とかに設定するんだけどだめ
ならない
エラーはかないけど、debug.printで確認してもぜぃろぉのまま
Deleteも効かない
てかエラー出る
オブジェクトの選択と表示からみると存在してる
再起動してもだめ
てかたまに開けなくなるw
しゃーないから、新しいシート作って、そこにシート全選択でこぴぺすると
表示されてるボタンはコピーされるが
消滅したボタン群だけはコピーされない
コピーされないってのは、オブジェクトの選択と表示にそいつらが出なくなることから判断してる
消えたやつは新しく作り直してる
まぁそうすると元に戻るんだけどさ

なんだか半分死んでて半分生きてるような感じなんだろうなぁ
お前らこういうことある?

749 名前:蟻人間 mailto:sage [2020/06/11(木) 20:43:48.25 ID:9OB4DptL.net]
ActiveXはサポート終了でしょ

750 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 20:47:39.72 ID:upd9DdGd.net]
だってぇ・・・右クリで移動されちゃうボタンとかいやだもん

751 名前:デフォルトの名無しさん mailto:sage [2020/06/11(Thu) 21:20:07 ID:v1OJq4JH.net]
Active S○X

752 名前:デフォルトの名無しさん [2020/06/11(木) 21:49:44.43 ID:Pc/1Hill.net]
txt123 = objIE.document.all.tags("table")(2).outerText
でテキストを取得しました。
txt123 の中に授業表が入っています。
体育という単語が含まれていれば、A列のセルに〇、国語という単語が含まれていればB列に〇、
算数はC列・・・
という具合に特定の文字列が含まれていれば指定の列のセルに〇を入れたいのですが、
どうしたらいいでしょうか?
特定の文字列は国語、算数、体育、社会、理科の5つです。

753 名前:デフォルトの名無しさん mailto:sage [2020/06/11(Thu) 21:52:07 ID:DFKeKDYT.net]
>>726
馬鹿は死ねば治るかもよ

754 名前:蟻人間 mailto:sage [2020/06/11(木) 21:55:51.11 ID:fTevQdJs.net]
>>726
文字列を検索する関数とIf文を使えば?

755 名前:デフォルトの名無しさん [2020/06/11(木) 22:00:18.32 ID:vUhEmjDF.net]
>>726
こんなこともわからない頭の悪い奴に教えられる子供がどうなるか

756 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 22:05:40.83 ID:S8xfnPZH.net]
>>726
色々無理だと思うぞ。やめとけ。

757 名前:デフォルトの名無しさん mailto:sage [2020/06/11(Thu) 22:28:34 ID:Pc/1Hill.net]
>>728
ありがとうございます!
If InStr(txt123, "国語") > 0 Then
こんな感じに値が返ってきたら〇と入力する仕組みになりました



758 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 23:19:34.07 ID:fXLeDjMq.net]
まさかと思うがテキストボックス123個とか作ってるんじゃないよな

759 名前:デフォルトの名無しさん mailto:sage [2020/06/11(木) 23:44:22.39 ID:52kheZTp.net]
何でそれでいきなりIE制御・・・。

760 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 00:13:44.58 ID:Y0E/tOto.net]
授業表をIEで見るって社内システムがそれなのか?

761 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 00:33:39.25 ID:cWAZHeBV.net]
IE制御とかレガシーにも程があるだろ。。

762 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 00:43:49.91 ID:V6O8I1+o.net]
WebページのテーブルってエクセルのVBAで
IE以外にどうやって取得するの?

763 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 01:56:00.71 ID:MW3IhN88.net]
test

764 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 02:10:15.74 ID:MW3IhN88.net]
選択した範囲のセル色を変えたいです。

If Intersect(Target, Range("B1:B5")) Is Nothing Then Exit Sub
色変更処理

変更可能なセルはB1:B5のみとしたいですが、
これだとB6が一緒に選択されている場合に一緒に色が変更されてしまいます。

B1:B6を囲ってしまった場合でも、B1:B5までの色のみ変更させたい場合どうしたらいいでしょうか。

765 名前:デフォルトの名無しさん [2020/06/12(金) 02:51:45.45 ID:KALz8/u9.net]
また馬鹿か

766 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 03:29:37 ID:IFmaagGk.net]
>>738
選択した範囲は選択されているのか?

767 名前:デフォルトの名無しさん mailto:s []
[ここ壊れてます]



768 名前:age mailto:2020/06/12(金) 06:26:26.47 ID:u23pgbjD.net [ >>738
intersectした結果とTargetを比較したらいけないかな ]
[ここ壊れてます]

769 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 07:59:23 ID:d1Ad7gfn.net]
>>722
シートに配置したボタンでよく遭遇するよ。そんなもんだと思ってるから、ボタン押下時のコードに自分自身の位置とサイズを初期化するコードを書くようにしてる。

770 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 08:22:21 ID:F5wzc1/2.net]
>>739
分からないからそれしか言えないのか?

771 名前:582 mailto:sage [2020/06/12(金) 08:32:29.25 ID:KgwnUKnv.net]
>>736
俺が知ってる方法で4〜5種類の方法がある。
MSXMLとかWinHttpとかhtmlfileとか。

772 名前:582 mailto:sage [2020/06/12(金) 08:34:43 ID:KgwnUKnv.net]
>>722
どっかのリボンにオブジェクトのリスト出せるボタンが有ったと思うが、表示されなかったっけ?

773 名前:582 mailto:sage [2020/06/12(金) 08:36:08 ID:KgwnUKnv.net]
>>742
サイズ変わって見えなくなってるだけだよなあ。

774 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 12:46:47.02 ID:HqN3pHW3.net]
>>722
セルにあわせて移動やサイズ変更するかどうかの設定があったはずだが

775 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 13:13:42.59 ID:1+2Rgw6z.net]
>>747
バージョン2010以降「セルに合わせてサイズ変更や移動しない」の設定になっていても
サイズが変わってしまう事例を多数経験しています。(2007は経験なし)
ボタンだけでなく、コメントの位置も極端に移動すること多数。

776 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 13:14:30.95 ID:hxFv/xna.net]
>>744
ヘェ〜そんな関数あるんだ、IEオブジェクトだけかと思ってた、ありがとう

777 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 17:49:02 ID:aQA9YYrW.net]
>>742
エクセルに任せるんじゃなくてコード上で配置の指示だしておくってのは解決策になるのかもしれんね。ちっこくして非表示切り替えと関係ない安全な場所に退避させておくみたいな
>>745
それが「オブジェクトの選択と表示」
リストには出てるんだわ
>>747
まぁその辺もやってるんだけどね
むしろその辺でバグってるんだと思う
>>746
おれの書いた内容読んでないのかもしれんけど
VBAからサイズを再指定して表示させようとしてもバグってて指定を受け付けてくれないってことな
そもそもサイズの問題だけならシートコピーで他の正常なボタンと一緒にコピーされるはずじゃん



778 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 23:01:56.39 ID:FlbnSBZd.net]
Windows10に変えたら、クロマキー合成みたいなのが出来なくなっちゃったんだけど、
何か方法ない?

779 名前:デフォルトの名無しさん [2020/06/12(金) 23:29:11.20 ID:KALz8/u9.net]
また馬鹿が来た

780 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 23:57:17 ID:FlbnSBZd.net]
>>739
>>752
一体どんな無様な人生を送ったら、そんなコメントが出来るようになるのかな?
生きててつまんないだろう?
ここの住人にかまってもらえるのが唯一の楽しみかい?

781 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 00:29:59.36 ID:0QXppYe5.net]
クロマキーはWin7まで。
ていうかクロマキーて・・。
確かにクロマキーだが。

782 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 01:18:01.22 ID:l5EmusQW.net]
一旦あきらめて、真の目的を違う方法で達成することを考えましょう

783 名前:デフォルトの名無しさん [2020/06/13(土) 03:31:14.05 ID:d/IEOBZf.net]
>>753
自分が言われたという自覚があるんだ?

784 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 06:33:26.28 ID:iOfV/qX/.net]
>>752
実は自分もわかってないからここで勉強してるんだろ
でマウント取りたいからそのコメント

785 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 07:35:38 ID:gm1IvgiV.net]
質問スレなんてどこでも、マウントとって承認欲求を満たそうとする奴らばかりだよ。
特にVBAスレは、プログラミング板の他のスレでは相手にされないレベルの奴がここなら俺でもマウントとれるだろと集まってくる。

786 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 10:49:08.95 ID:hwBvm+CU.net]
VBA始めて1週間
結構できるようになったけど、俺ってすごい!?

787 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 11:02:28 ID:iOfV/qX/.net]
>>759
どうやって勉強した?どこまでできるようなった?



788 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 12:54:09.65 ID:l5EmusQW.net]
VBA完全に理解した

VBAなにもわからない

VBAチョットデキル

789 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 13:53:12.35 ID:sXc2xmOg.net]
何を以て「できる」と判断したのか?

790 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 13:57:01.18 ID:k9PzEFx9.net]
初心者の頃に書いたコードみるとマジナンだらけでチョベリバだわ

791 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 14:05:41.14 ID:GFk/ON+H.net]
編集ができるってことじゃね

792 名前:デフォルトの名無しさん [2020/06/13(土) 14:17:20 ID:Ft3NByW3.net]
 ダニングクルーガー効果とかいうやつじゃね

793 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 15:41:58.59 ID:9rN9x/HV.net]
VBAに限らないコーディング全般の話になるかと思うんですが、
For文のカウンタ変数に対してそのブロック内で加減算するのはいわゆる「お行儀が悪い」ものですか?

For i = min To min Step -1
  For j = i + 1 To max
    〜処理〜
    If 条件 Then
      〜処理〜
      Let i = i + 1 '←ココ
      〜処理〜
    Else
      〜処理〜
    End If
    〜処理〜
  Next j
  〜処理〜
Next i

前任者が使っていた20行にも満たないコードですが、1行目に違和感がありました。
Do While/Until文で書き直せるものの、単に自分の理解度が低いだけかもしれず・・・

794 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 15:59:50.04 ID:sXc2xmOg.net]
>>766
俺ならforにしないな

795 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 16:03:06 ID:hwBvm+CU.net]
データ用のシートからデータをコピーできるようになったぜ

ところでクラスモジュールにはどんなメリットがありますか?
functionの意味は分かりましたが、クラスとの違いなどがよく分からず
今本屋で色々探してきましたが、解説が見当たりませんでした。

796 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 16:04:33 ID:HDBeOIwd.net]
>>766
forにせずif文で条件抜けさせる方が読み手に伝わるし良いと思う…
stepで減算してるのに条件次第でi加算するのは処理の流れが分かりづらくなる

797 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 16:05:08 ID:ll49+YlL.net]
一般的に、for nextの方が理解しやすいから、for 文ありきで書いてるだけなんじゃないかな。
感覚的にも可読性やメンテナンス性からも、do loopなどで書く方が良いと思います。



798 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 16:14:12.41 ID:lPN2rvMv.net]
>>768
VBAのクラスはCOMとの相互運用のために存在する
普通に使う分には全く必要ない
というか並のVBAerのスキルではメンテ不能になるからむしろ有害
クラスを使いたくなるレベルの高度な抽象化が必要になるようなら、
そもそもそんなことをVBAでやらなければならないシステム設計が間違っていると考えるべき

799 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 16:49:04 ID:9rN9x/HV.net]
>>767, >>769-770
やはりそうですよね。Do〜に書き直そうと思います。ありがとうございました。

800 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 16:50:17 ID:hwBvm+CU.net]
>771
ありがとうございます。
そこまでの説明が探しきれなかったので助かります。

801 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 16:52:28 ID:69sGe9cG.net]
>>766
Forの使い方を間違ってる
途中で1足して、最後にまた1引くんなら、Do LoopとIfなどを使って条件をはっきり書くべき

プログラミング全般の話となると、コンパイラによっては最初にStep値で割り算して回数を求めてしまうコードを吐くやつもあるので、正常に動かなくなる

802 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 18:20:23.36 ID:gmb5Wcnr.net]
ブックのなかに、シートがたくさんあって、
マクロ利用者毎にマクロで動かしたいシートが違う。
だから、マクロの実行中に、利用者にシートを選択させて、それをactivesheetにさせたい。
そういうの、できる?

803 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 18:31:43.88 ID:sXc2xmOg.net]
できる

804 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 18:35:00.95 ID:Q06gyfKt.net]
>>775
ロジック的に変
Webページやスマホアプリでも最初にログインするのとかあるでしょ?
後から選択するくらいなら最初に分けた方が良いのでは?

805 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 18:38:57.44 ID:gmb5Wcnr.net]
>>777
できれば、そうしたんだけど。
何人もの利用者が共通で使っているブックなので、シートを分けられないんだ。

シートがゴチャゴチャの状態から特定シートを利用者に選ばせたい。

806 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 18:42:11.92 ID:ejIEXNUq.net]
>>775
https://qiita.com/rrryutaro/items/b8bdc6d16bdf8c66a190
この辺コピペしたら動くんじゃない?

807 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 18:54:40.10 ID:Q06gyfKt.net]
>>778
ごめん参りました_| ̄|○>>779



808 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 18:56:13.87 ID:gmb5Wcnr.net]
>>779
回答サンクス。
でも、もっとコードをシンプルにしたい。

809 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 18:56:56.64 ID:gmb5Wcnr.net]
>>781
マクロを途中で止めて、利用者にシートを選択させることによって(そのシートのどこかのセルを選択させる)、activesheetにさせたいんよ。

810 名前:デフォルトの名無しさん [2020/06/13(土) 19:11:25.34 ID:Ft3NByW3.net]
自分でシートを開いてその後マクロを実行する形じゃダメなの

811 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 19:20:55 ID:gmb5Wcnr.net]
>>783
今は、苦肉の策でそうしてるんだけどね。
諸事情により途中でactivesheet を選ばせたいんだ。

812 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 19:50:08.25 ID:mObNCAEc.net]
これでいい気がする
https://qiita.com/yosatonet/items/b7083d7c95d2d81b1ffa

813 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 20:02:21.69 ID:gmb5Wcnr.net]
>>785
サンクス
ありがとー。

でも、もっと簡単にできんかな。
どうやら、無理っぽいな。

814 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 20:08:18.16 ID:Q06gyfKt.net]
マクロの途中で>>779で作ったUserForm1.Showすりゃ良いでしょう

815 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 20:23:03.52 ID:mObNCAEc.net]
じゃあこれ
https://www.relief.jp/docs/excel-vba-select-cells-application-inputbox-methot.html

816 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 20:28:03.66 ID:sXc2xmOg.net]
>>782
途中でセル選択ダイアログでも表示すりゃいいじゃん

817 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 20:36:43.64 ID:gmb5Wcnr.net]
>>788
ありがと。

それやってみたけど、ちょっと面倒だった。
もう一回やってみる。



818 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 20:42:30 ID:gmb5Wcnr.net]
>>788
やっぱ、いけるかも。

819 名前:デフォルトの名無しさん mailto:sage [2020/06/13(土) 20:42:48 ID:gmb5Wcnr.net]
>>789
ありがと。いけるかも。

820 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 08:41:44.1 ]
[ここ壊れてます]

821 名前:2 ID:ffGowWaR.net mailto: >>790
よく分からんがモードレスにすりゃ良いんじゃねえの?
[]
[ここ壊れてます]

822 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 11:14:04 ID:uWyGdyFQ.net]
>>768
複数の自作関数をセットにして使いまわしたい時とか、
取得した値をプロパティとして保持しておきたい時とか、
自作関数でインテリセンスを使いたい時とか。

823 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 11:20:05.40 ID:ZfTKHz7W.net]
>>794
モジュールと構造体でいいよねそれ

824 名前:デフォルトの名無しさん [2020/06/14(日) 11:21:47.96 ID:435IzS7y.net]
VBA歴まだ1ヶ月
でtxtデータから全て数値をシートに引っ張り出す事は成功したけどそれをVBAで計算させるスキルはないからエクセル関数使ってる
もっとスキルが欲しい

825 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:36:35.03 ID:PywPq9gj.net]
関数でできることは関数でやりましょう(例外あり)

826 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:52:53.71 ID:UBYu/Pyg.net]
関数ばかりでもいかんですう

827 名前:デフォルトの名無しさん [2020/06/14(日) 13:01:56 ID:435IzS7y.net]
引っ張り出した数値を
ABS関数
ROUND関数
MAX、MIN関数
IF関数
でだんだんフィルターを通す感覚で
で本来の数値に対応させてる
VBAでそれをやる力を得るには5年はかかるな
俺じゃ



828 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 13:26:59.00 ID:0qngbhsm.net]
限定的な使い方になるが、連想配列でユーザ定義型使いたい時に代わりにクラスモジュール使うって手がある

829 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 13:44:32.79 ID:attwzNFV.net]
質問ですが、列が3つありそのうち2つが検索用ワードで
これを元に検索し3つ目のセルにあるワードを配列に収めていく処理を行いたいです。

例えば、こういったテーブルがあります。
すずき、いちろう、170
すずき、じろう、171
たなか、さぶろう、172

検索条件を1列目「すずき」2列目「条件なし」とした時、170,171を配列に収める
検索条件を1列目「すずき」2列目「いちろう」とした時、170を配列に収める

と、やろうとした時どういった処理が考えられるでしょうか。

830 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 13:51:33.71 ID:nNGIeJAo.net]
データベースのアンド検索クエリ覚えなはれ

831 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 13:52:24.03 ID:0qngbhsm.net]
>>801
オートフィルタで抽出して3列目を配列に格納

832 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 14:09:01.53 ID:NfMb0cpJ.net]
>>801
まず表の範囲をテーブル化
そしたらテーブル操作の処理使えて簡単
officetanaka.net/excel/vba/table/

833 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 14:16:14 ID:UBYu/Pyg.net]
>>801
逆にどういった処理も考えられないの?

834 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 14:28:07 ID:attwzNFV.net]
ありがとうございます。
テーブル化の方向で調べてみます。

835 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 17:08:34 ID:zv9EPLCI.net]
ユーザー定義関数をさ、AutoFill使って連続した複数セルに「=MyFunction()」みたいな感じで
代入していくじゃん
数式は正確に代入されてるのになぜか#VALUE!のエラーがでるんだよなぁ

計算対象になってるセルの1つをダブルクリックして値を入力するモードにしてから
そのまま何もしないでエンター押すと、さっきまで#VALUE!だったところが
再計算されて正常にセルに表示される

オートフィルに備えて連続セルの一番先頭にVBAから個別に代入しておいたセルがあるんだけど
ここはちゃんと計算結果がでてる
んで、このセルを始点にして手動でオートフィルかけて数式いれるとちゃんと計算される
手動オートフィルの結果代入された数式とVBAのAutoFill使って代入した数式を比較しても全く同じ
でもVBAのほうだけは#VALUE!ですわ

これ一体なんなのさ

一通り調べてわからんかったからAutoFillやめてForで回していれたった
やっぱ俺にはこういう原始人的なコードがあってるわ

836 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 17:36:38 ID:0qngbhsm.net]
>>807
計算対象のセルが更新された時自動で関数が処理される設定になってないから

837 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 17:49:03.80 ID:AaZP5Hye.net]
>>806
ワシのやり方を参考にするなら
Youtubeのチャンネル登録してな。



838 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 18:50:39.41 ID:zv9EPLCI.net]
>>808
手動・自動のやつでしょ
もちろん自動になってるわ
Forで回して数式代入したときは普通に計算されるから理由としてはいまいちじゃね
あと手動でオートフィルしてもいけるしね

表の右端に何列か並んでる数式は全部計算されるんだけど
下端にあるやつがだめなんだよね
どちらも全く同じパターンで代入してんだよね

まぁForでできるからいいんだけどな

839 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 19:19:38 ID:0qngbhsm.net]
>>810
シートじゃなくて関数の設定
volatire

840 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 20:00:28.24 ID:Nip9LUw0.net]
>>811
volatile (揮発性) じゃね?

841 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 20:18:20.66 ID:95POjxnT.net]
>>807
> =MyFunction()
みたいに引数がないと>>811が言うようにvolatile指定しないと再計算されない
引数にセルとか範囲を指定してあると指定されたセルや範囲の値が変更されたら再計算される

842 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 21:59:15.66 ID:NTnc+gBz.net]
>809
本人?。GW終わって更新控えめな気がする

843 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 00:54:28.92 ID:otdT67Yk.net]
フォームを開いている際にセルをクリックしようとしても阻止されるんですが、
この行動を行った際にフォームを閉じるという処理をすることはできますか?

844 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 00:59:25.05 ID:AC0AKbql.net]
ユーザーフォームのイベントで制御できなきゃ無理じゃね
一覧くらい見たんだろ

845 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 02:14:12 ID:VIqxNPAl.net]
>>814
この人はダメだね。
コメントでちょっと突っつかれただけで
コメント欄オフにするしプライドが高すぎ。
知識や経験が豊富で教え方も上手いとは思うけど
ユーチューバ―には向いてないと思うわ。

846 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 05:44:07.25 ID:YCbdWLsV.net]
>>811
>>813
Application.Volatile
入れてみた

結果だけど、やっぱボタン押して数式代入した直後はダメだった
変らず#VALUE!
変化があったのは計算対象になっているセルを1つ変更すると、
MyFunctionが入っているセルの全てが再計算されて正常値が表示されるっていう点ね
Volatile入れる前は、変更セルを計算対象としてるセル1つだけが再計算された

ちなみにMyFunction(rng As Range)です。すんません
あと、これ重くなりそうでちと考えてしまう

847 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 10:48:29 ID:zn0xvlk+.net]
>>818
ボタンのコードの後ろに、Application.Calculate とかを入れる



848 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 11:02:05 ID:zn0xvlk+.net]
>>815
フォームを閉じるにはUnload ステートメント、非表示にするだけなら hide メソッドを使う

セルクリックが目的なら、ShowModal=False か、フォームのShowメソッドで vbModeless を指定すれば、閉じなくてもいいよ

849 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 22:32:32.01 ID:qQkMiS3I.net]
>>818
よくわかってなくてすまぬが数式入ってるセル全部選択して
Selection.Value = Selection.Value
とか「=」を「=」に置換するとかして内容同じだけど編集したことにすると
全部計算される、ってのは根本的な解決方法じゃないけどそれは別の問題?

850 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 22:40:50.61 ID:eWIek9um.net]
>>821
代入で再計算させるなら formula = formula だぞ

851 名前:デフォルトの名無しさん [2020/06/15(月) 22:42:03.32 ID:GtKitEiM.net]
このスレの住民ってVBAエキスパートとか余裕な感じ?

852 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 22:58:28.87 ID:MWB6z4Ac.net]
余裕でダメだと思う。
運転歴20年のやつが、教習所の学科試験に通るかどうか。

853 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 01:37:43.85 ID:vbVHH0Hs.net]
練習問題を見た感じ、満点は無理だけど合格はできると思う

854 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 02:23:10 ID:4czdKWOA.net]
人によるだろう

855 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 08:13:35.35 ID:4RAL3CE7.net]
>>819
それ以前試してだめでしたわ
>>821
>>822
解決方法なのかどうかは置いておいて、面白い視点だなって思いました
Selection.Formula = Selection.Formula で、問題のあった2行のうち1行は行けました
この2行の違いを分析すると何か見えてくるかもしれないなぁ

似たような方法なんだけど、これはいけた

Dim ary
ary = Sheet1.Range("G11:AH11")
Sheet1.Range("G11:AH11") = ary

数式は表の最下部の行 G50:AH50 の各セルに入っていて、
例えばG50の数式はG11を引数の一部として使っている
計算の対象となっている値の一部を代入し直してみたってこと

Forで回して数式入れていくのは見た目ごちゃごちゃするから
わかりやすさっていう点ではこっちの方がいいのかな

856 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 12:20:48.09 ID:6wBq1IET.net]
>>824
運転歴20年の奴は余裕で通る。
というか、はっきり言ってVBAエキスパートは初心者と変わらんよ。
某掲示板で質問者にもっと勉強してね的なこと言ったら持ってたようだった。

857 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 19:13:50.26 ID:Kui7C9E3.net]
リストビューなるものを触ってみましたが2点分からないです。
@データを転記する際にwith文を使うとうまく出来て、使わないと一行ずつズレるのは?
Me.ListItems.Add
.Text = 111
.SubItems(1) = 222
.SubItems(2) = 333
End With
Addして追加だからズレるのだろうけど、withって単なる省略だから同じ意味じゃないの?

A転記したリストビュー全項目ループするにはどうしたいいですか?



858 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 20:14:01.04 ID:v7FumBBx.net]
Doしたらいい

859 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 21:46:13.61 ID:aBdT/SFF.net]
いや呼び方の問題とか、FormatだのStrComp関数だのあんまり使わんの出るから模試はやったほうがいいよ

860 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 21:52:16.10 ID:aBdT/SFF.net]
>>829
withはコード省略じゃなくて参照。
(増やす)ってメソッド処理は一回だけで、(増えた項目)って出力インスタンスを参照できる形になる
with 使わないと毎回(増やす+編集)の処理になる

861 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 21:57:13.61 ID:aBdT/SFF.net]
項目じゃなくてリストの間違いだった

862 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 22:40:42.45 ID:woSalLPH.net]
>>827
Selection.Calculate でもダメなんですよね?

863 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 23:47:36.73 ID:cErksS8E.net]
>>822
そうそう間違えました
表示形式が反映されないときに.Value使ったんでついそれ書いちゃいました

864 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 00:48:13.69 ID:VnGmvv1H.net]
>>835
表示形式反映させるなら.Formula = .Formula では

865 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 13:19:05.23 ID:vz74rE0X.net]
.Shimura = .Ushiro

866 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 15:24:21 ID:3v2Pocgc.net]
そのコマンド打ったら参照先が見つかりませんってエラーが出たんだが

867 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 15:55:47.59 ID:F6Gn58oB.net]
だめだこりゃ!



868 名前:デフォルトの名無しさん [2020/06/17(水) 17:19:39.75 ID:AebhaO3Q.net]
前スレの人達のくれた今の職場にいる限り永久に使える心臓部になるプロシージャ3つ
これのおかげで救われた
後はひたすら勉強しないといけない
ただそのせいで毎日

869 名前:夜中の2時とかまで強迫観念に捕らわれたように本やサイト見て体壊しかけてる
前スレの人達ありがとう
[]
[ここ壊れてます]

870 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 17:52:05.46 ID:VnGmvv1H.net]
独り言板へどうぞ

871 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 18:14:13.33 ID:LyT08W7k.net]
そこまで初心者の人がやらなきゃいけないのか…
専門の派遣でも雇えば…

872 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 18:25:49 ID:1+VGIPZ0.net]
>840
前スレのどれ?

873 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 19:41:41.88 ID:3u8uTgOs.net]
まあ嘘だろうけどな、そんなん

874 名前:デフォルトの名無しさん [2020/06/17(水) 20:29:26.87 ID:Pc4G9CL1.net]
前スレ見えないけど
フォルダ内のテキストすべての特定の部位から文字を全部抽出するコード
これです

875 名前:デフォルトの名無しさん [2020/06/17(水) 20:47:48.75 ID:6I8rhd2p.net]
車輪の再発明どころか劣化真似事をありがたがるような馬鹿は消えろよ

876 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 21:02:20.52 ID:UkLP/htk.net]
>>836
数式を値で張り付けたときに表示形式が反映されなかったんでValueだったんですよ

877 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 21:30:10.13 ID:VnGmvv1H.net]
>>847
値貼り付けでは反映されんよ



878 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 00:14:55.64 ID:+xg8PxB0.net]
下記のような2次元配列があります。
1,りんご
2,ばなな
3.みかん

これの果物名の列だけをセルに代入したいですが、簡単な方法はありますか?
現状、果物の列を一端列数0の配列に入れなおしてそのままセルに代入する案しか思いつきませんが、
もっとスマートな方法あれば教えてください。

879 名前:デフォルトの名無しさん mailto:sage [2020/06/18(Thu) 00:29:49 ID:b73sLWwm.net]
行列入れ替えは考慮外なの?

参考は沢山出てくる
EXCELのVBAで2次元配列の特定の列または行を1次元配列に変換する方法
qiita.com/takahasinaoki/items/1295c3df5ddfb13bdf8e

880 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 01:18:10.70 ID:AEhoYLDr.net]
>>849
3だけピリオド

881 名前:デフォルトの名無しさん mailto:sage [2020/06/18(Thu) 08:45:41 ID:CbKzbr3Z.net]
>>849
貼り付け先の果物の前の列が消されても良いなら配列から1、2、3消してそのまま貼り付ける。
駄目なら貼り付け先の値を配列に入れてから貼り付ける。

貼り付け先の値を入れるのは本末転倒だからそういうデータが少ない場合以外は勧めない。

882 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 09:42:50.65 ID:1Z+MjfLn.net]
>>849
地道に入れ直すしかない

883 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 15:10:31.12 ID:JIQPCGLI.net]
てか配列から直接セルに代入しないといけないってのは
データ数が多いとか速度重視したいとか?
そうでないなら基本通りにFor使って入れりゃいいだけなんだけど

884 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 15:51:42.38 ID:AEhoYLDr.net]
セルに入れるのがそもそも簡単なのに何ができないんだかわからん

885 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 16:29:20.31 ID:DGNmlHkR.net]
おまいら質問をちゃんと読んでるか?
「簡単な方法はありますか?」なんだから、Forで回すのは嫌ってことだろ
つまり回答は「そんな方法はない」

886 名前:デフォルトの名無しさん mailto:sage [2020/06/18(Thu) 16:32:36 ID:DGNmlHkR.net]
ステップ数を減らしたいだけなら、一旦そのまま全部ワークシートに入れて2列目だけコピペか1行目を削除すれば数行で完結する
たぶんForより速い

887 名前:デフォルトの名無しさん mailto:sage [2020/06/18(Thu) 16:33:11 ID:DGNmlHkR.net]
書き間違い→1列目を削除



888 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 17:30:14.12 ID:AEhoYLDr.net]
質問がどっかの問題の引用っぽく感じたので答えはかかないけどね

889 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 17:38:49.86 ID:Kimfxpnn.net]
同じ社員同士なのにエクセルの便利機能とかを
情報共有しないのってなんなんだろう

890 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 17:57:51.44 ID:1Z+MjfLn.net]
ループからの抜け方、@とAどっちが推奨?

@
do while
 for
  if
   脱出フラグ = true
   exit for
  end if
 next
 if 脱出フラグ then exit

891 名前:do
loop

A
do while
 for
  if 脱出条件 then exit do
 next
loop
[]
[ここ壊れてます]

892 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 17:57:55.15 ID:AEhoYLDr.net]
嫌われているんだろ

893 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 17:58:44.91 ID:1Z+MjfLn.net]
>>860
今まで関わった職場わりとしてるが

894 名前:859 mailto:sage [2020/06/18(木) 18:01:15.31 ID:1Z+MjfLn.net]
@の3行目のifは脱出条件な

895 名前:デフォルトの名無しさん mailto:sage [2020/06/18(Thu) 18:12:03 ID:AEhoYLDr.net]
>>861
処理の抜けや他の処理に影響がないならという条件付きで?、
場合によっては exit sub 、exit function でも書く

896 名前:デフォルトの名無しさん mailto:sage [2020/06/18(Thu) 19:24:08 ID:LKxMxESP.net]
do whileの条件とifの条件ををandで繋いでdo while
loop行の前でi=i+1(forのカウンタ代わり)
これでよいのでは

897 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 19:39:21.23 ID:ck4WAMd+.net]
GoToの使用を躊躇しない。



898 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 19:42:12.81 ID:1Z+MjfLn.net]
>>866
二重ループの抜け方の作法を聞いてるんだが

899 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 19:48:21.18 ID:KBH9L3ob.net]
do whileとforで2重ループするのが確定で、外側まで一気に抜けるのが確定なら2を選ばない理由がない

900 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 19:53:02.72 ID:DGNmlHkR.net]
>>868
二重ループの内側から一気に抜けたい時は、俺なら内側のループを別プロシージャにするか、Do Loopを二重にする
コード量によってはフラグ変数やExitは見通しが悪くなる、別の言い方をすれば終了条件がわかりづらくなるからあんまり使いたくない

901 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 20:17:54.42 ID:1Z+MjfLn.net]
>>866,869,870
とりあえず処理に問題なければ一気に外に抜けること自体は問題ないってことか
確かにDoに変えるのも手だな
適当に使い分けることにするわサンキュー

902 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 20:18:23.62 ID:1Z+MjfLn.net]
間違えたわ>>865

903 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 20:21:15.52 ID:ao9b7VBW.net]
>>861
囲碁なら上、オセロなら下

904 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 20:25:42.22 ID:eqFwPDXL.net]
すごく個人的には、Do Untilで書いた方が「抜ける!」って読みやすい

905 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 20:26:39.51 ID:eqFwPDXL.net]
Do whileよりって話ね

そう書けば抜ける複数条件をDoの後ろに書いて違和感が無い

906 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 20:28:18.94 ID:XkUbux+a.net]
これ… >>873に『その心は?』って聞いてあげた方がいいの?

907 名前:デフォルトの名無しさん mailto:sage [2020/06/18(Thu) 20:33:29 ID:ao9b7VBW.net]
>>876
おじいちゃん出しっぱなしで片付けないんだもん



908 名前:デフォルトの名無しさん mailto:sage [2020/06/18(Thu) 20:34:24 ID:vZk8Xm54.net]
Gotoはもちろんのこと、余程のことがない限りはExit For(Do)使うよりはExit Function使った方がいい

909 名前:デフォルトの名無しさん mailto:sage [2020/06/18(Thu) 21:01:16 ID:ob2ctoKl.net]
>>878
そんなこたあね―な。

910 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 22:48:55.15 ID:Swy0cO/s.net]
Do While
 何で
Loop

While
 2つあるの?
Wend

911 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 23:00:26.73 ID:6Vkb8BK5.net]
vbaだから

912 名前:デフォルトの名無しさん mailto:sage [2020/06/18(Thu) 23:21:26 ID:1Z+MjfLn.net]
>>880
while〜wendは過去の名残
今はdo whileを使うのが正しい

913 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 23:40:35.48 ID:Cax/ofky.net]
一応、while wendは最後までループ抜けさせないぞって読ませ方ができる
知ってる人が少なくなってるからむしろ逆効果のお節介となってきているが

914 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 00:17:23.49 ID:NwluTwH5.net]
行番号とか代入のLetとかも使ってるやつはいない
過去の名残があちこちにあるのがVBA

915 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 08:29:01.10 ID:VZXzW3Q1.net]
do while〜loopって構文が気に食わんわ

do [処理] while [脱出判定] loop
もしくは
while [脱出判定] do [処理] loop
のほうが思考に沿う
ってかdo必要?

916 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 09:57:59.84 ID:UXZn7YtP.net]
VBA必要?

917 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 09:58:43.65 ID:wZIpnWDZ.net]
Excelが必要としてるんだ



918 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 16:55:48.19 ID:8jNiNgQB.net]
だってVBAだから

919 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 18:51:31.92 ID:c4aN/6Uq.net]
エクセルマクロとして代替えがないから必要だな

920 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 21:17:20.11 ID:RlTsj/W2.net]
職場の人が書くマクロ、わかりやすいんだけど無駄改行多くてスクロールしないと全体像掴めないでつらい

921 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 21:26:36.78 ID:8GB492Jb.net]
>>885
While [脱出判定]
 [処理]
Wend

922 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 23:55:48.34 ID:+/P4LWyU.net]
>>890
実は強制終了対策で改行してるとか?

923 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 00:04:01 ID:6cdt+s4Y.net]
>>885
構文解析でトークンの先読みが少なくて済むための配慮じゃないかな、知らんけど

924 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 00:41:32.09 ID:YZMPfrl8.net]
>>885
英語として

Do while a is b. If a is bigger than b, then break..

というのと

While if a is bigger than a, do something.

どちらが自然かという問題だったようだ。どっちも変だけど

925 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 02:09:29 ID:qvmNBmpu.net]
>>890
職場での問題なら職場内で解決しなされ

926 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 04:41:54.35 ID:heakYJWv.net]
ちょ、VBAのCollectionのAddメソッドってvalue/keyの順番だったのかよぉ
C#もJavaもPythonもkey/valueの順だから勘違いしてたわ!
なんかおかしいとおもった

927 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 08:01:08.69 ID:ygihVcRE.net]
>>896
Add時にKeyを省略できるからね
省略するとKeyがどうなるのかは知らんけど



928 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 09:40:22.78 ID:heakYJWv.net]
>>897
重複排除できてねぇぢゃねぇかクソ言語がぁぁぁ!って思ってましたごめんなさい

929 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 10:42:49.25 ID:m9vPjHEn.net]
>>898
重複排除したいならdictionaryの方がいいんじゃないか

930 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 12:12:13.86 ID:RmKRgXjX.net]
>>890
それは1プロシージャの行数が多いということかな?
それはダメダメだ。

そういうことになることはあるけど、本人が書ける奴なら自分でも分かってるかもね。
時間があれば直すんだけどってのは時々ある。

931 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 12:16:26.19 ID:RmKRgXjX.net]
>>896
Dictionaryと逆だから注意。

932 名前:デフォルトの名無しさん mailto:age [2020/06/20(土) 12:24:38.59 ID:CytyTodc.net]
excelからwordのoleなのですが、印刷プレビュー画面が表示されている
あいだは処理を停止させておきたのですが、どうすればできますか?
また、excelのほうのPrintPreviewメソッドではそれが実現できるのですが、
その違いはなんなのでしょうか。

Dim WORD As Object
Set WORD = CreateObject("Word.application")
WORD.Documents.Open(filePath)
WORD.PrintPreview = True
Do Until WORD.PrintPreview = False
Loop

933 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 12:44:36 ID:ygihVcRE.net]
>>898
重複排除したきゃKey指定すればいいだけだろ
てか、そういう使い方しかしたことないわ

934 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 12:57:07 ID:m9vPjHEn.net]
keyの位置間違えててできなかったって話だろ…

935 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 15:27:33.55 ID:ygihVcRE.net]
ああすまん、よく読んだらそうだな

936 名前:デフォルトの名無しさん [2020/06/20(土) 15:53:54.10 ID:wuXUOHn9.net]
PCに疎い人達の集まる職場

週に1回の頻度で1200個の数値を4時間かけて手打ちしてたのを3秒で終わらせるマクロ組んで改善提案→何かわからんけど組んだんだろ で300円

他のシートやブックに行き来しやすいように
図形に文字入れてハイパーリンクをセットしたのを2つ作った
→これはいいぞ 1000円

もう嫌だ

937 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 15:58:25.34 ID:MH9+mSJC.net]
300円とか1000円って何?



938 名前:デフォルトの名無しさん [2020/06/20(土) 16:02:10 ID:wuXUOHn9.net]
>>907
改善提案出すとお金貰える仕組みの会社だから
トヨタグルーやトヨタ系とかは結構そうじゃないかな

939 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 16:08:51.15 ID:MH9+mSJC.net]
>>908
単にプレゼンというか説明下手なだけじゃないの?

940 名前:デフォルトの名無しさん [2020/06/20(土) 16:23:05.64 ID:wuXUOHn9.net]
>>909
もうマクロに関してそこは諦めたわ
if関数使ったりそういう改善のが1000円や1500円で貰えるからそっちでいってる
同僚から組んで欲しいってのも全部断ってる
58歳のパソコンに疎すぎる人に説明する必要性もないかな

941 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 17:02:57.89 ID:wVoXfuuE.net]
まぁ、「実際の能率の向上」より「誰にでも分かりやすく使い易い」にウエイトが傾いてるってのはよくあることじゃね。
どんな評価方法か知らんけど。

・直接的に恩恵を受ける人の数
⇒あくまで例えばだが、>>906の「3秒マクロ」で仕事が楽になるのが数人しかいない、とか、
 「図形2つ」が割と広い範囲で使える上に、他の職場でも応用が利く、とか。

・柔軟性
⇒例えば3秒マクロに何かしら元となるデータがあると仮定して、
 そのデータを出力するシステムの仕様に変更があった場合対応できなくなる、とか。
 他方、図形2つの方は文字どおり図形2つ作って文字入れてハイパーリンクを加えただけなので、
 例えば参照先URLなりが変わったとしても、比較的対応が容易だし、
 よほどのことがなければ「使えなくなる」ということが考えられない、とか。

・上司のその時の気分、あるいは好かれ具合
⇒それな

942 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 17:21:32.15 ID:qvmNBmpu.net]
>>910
同じような所が10カ所(ファイル)あったら10000円〜15000円もらえるのかな

943 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 17:21:48.48 ID:XQZF02H8.net]
相談もなしに勝手なマクロを組んだことで減点対象になったのだろう
もしかしたら、その作業は近々システムの変更でなくなる予定だったかもしれない
作業以外の目的があったのかもしれない

残業が多いなと思っていたら、
余計なものを作って遊んでいた、減給されないだけましだろう

944 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 17:41:36.37 ID:qvmNBmpu.net]
マクロの変更も有識者間でコードレビューして評価報告書提出して上司に確認のサインもらって
修正連絡票回覧するまでやらないとクレームはいったりするよね
知らない間に勝手にマクロが書き換えられていたとか言われたらやばいだろ

945 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 18:45:21.31 ID:m9vPjHEn.net]
>>906
わかりやすく説明するなり評価方法に基づいたアピールするなりすりゃいいじゃん

946 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 05:53:32.39 ID:I80zoHyc.net]
お前らの職場って大変そうだな
おれんところなんか俺しかVBA触れるやついないから好き放題やってるわ

947 名前:デフォルトの名無しさん [2020/06/21(日) 09:05:05 ID:zpzjHnJy.net]
俺も俺も
初心者に毛が生えた程度の知識だけど周りはPC素人ばかりだからやりたい放題だ



948 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 10:08:30.56 ID:7ZJTD4pQ.net]
同じく
PCマイスターみたいに見られてるけど、薄々勘付かれているかもしれない

949 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 13:43:26.96 ID:/utMrS/w.net]
エクセルはそこそこ使いこなせるがマクロは全く知らないってな人に
簡易マクロ作っただけで「ハァ?お前天才かよ?」みたいな反応されるよな。
褒められる優越感と小学生でも書けるコードで褒められる自分へ嫌悪感で
葛藤しまくるよな

950 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 14:00:37.96 ID:ANltB6r3.net]
いや、別に。

951 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 15:15:50.34 ID:0WnnnX3x.net]
両方とも別に

952 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 17:39:52.32 ID:1ON8fipo.net]
>>919
他の奴らってそもそも業務が違うだろ

953 名前:デフォルトの名無しさん [2020/06/21(日) 17:47:04.76 ID:k1xdFuXh.net]
>>922
出来ない正社員と出来るバイトの俺

954 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 17:50:26.78 ID:HGSDkuyA.net]
>>919
読んでるこっちが恥ずかしい

955 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 18:05:28.37 ID:xIpMoW7x.net]
スレチだけどPHPは
ハイパーテキスト・プリプロセッサだってのに
初歩でも神呼ばわりだぜ

【PHP】下らねぇ質問はここに書き込みやがれ 11
itest.5ch.net/mevius/test/read.cgi/tech/1591334726/96-107
96
> hoge.com/****
>に指定した数字入れて、html出力ってできますか?

103 foreach(

107
>>103
神!おっぱ・(自粛)

956 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 19:11:40.34 ID:f7O4FwhH.net]
よくメニューに[+]があり、
これを押すと隠してあったメニューが表示されるといった仕組みがあるのですが、
これをエクセルで実現することはできるでしょうか。

957 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 19:46:46.68 ID:HGSDkuyA.net]
簡単なのはVisibleプロパティをFalseからTrueにする方法



958 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 19:54:02.33 ID:apqHGiEy.net]
>>926
ユーザーフォームの使用になる
e-tech.life.hyogo-u.ac.jp/contents/kyouzai/vb-ref/contents/part1/button_visible/button_visible.html
ユーザーフォームのイベントで条件を記述してやるのが良い

959 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 19:54:53.04 ID:jOeQJVeR.net]
>>926
グループ化使うとか

960 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 20:09:41.65 ID:Ca9zW0qx.net]
>>923
100人規模で周りの人達ができない正社員なわけない
バイト数人が使う程度のマクロだろ

961 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 20:17:13.26 ID:dwey+O0N.net]
俺も大したことできないけど零細で偉そうにしてるわ
人生なんて鶏口牛後で十分なんだよ

962 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 21:52:25.43 ID:LN5eNKcO.net]
>>930
100人前後の会社で
60人ほど派遣
20人くらいがバイト
10人くらいのパート
正社員は10人ほどのうち確実に7人はエクセルもまともに使えないレベルなのでWord使ってる
エクセルを使うのは正社員1人派遣1人バイトの俺
3ヶ月に一度現れる謎の5人組はよく分からない
そいつらの給料が月70〜80万円って言ってた
俺のバイト代は月12万円くらいだった
この国はおかしいって狂ってるよ

963 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 22:06:48.15 ID:jOeQJVeR.net]
大して優秀なわけでもないやつがちょっと優位な部分があるだけで周りを見下すあるある

964 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 00:04:33.28 ID:CPlWdThO.net]
>>932
Excel vba ができる人が少ないのは会社の重要な業務ではないからだろ
エクセルはあくまで補助的な使い方しかしてないんじゃねーの

965 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 00:17:00.59 ID:W8AXf1Mi.net]
採用条件に入ってないし学校やパソコン教室でも普通は教えないからできないのが普通
そもそもプログラミングとは何か、どういう場面で使うと便利なのかもわかってない人が大半
うっかり省力化すると事務員の首が飛ぶから、人の心があれば黙ってるものだし

966 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 01:24:44 ID:CPlWdThO.net]
一般的なプログラミングの話をするならExcelは不向き
そもそも表計算ソフトの延長でしかない

967 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 02:04:25.88 ID:6UseFZdn.net]
>>934
はいその通りです。
【60代パート】リングファイルを棚にしまう
【社長】ハンコついてパートに渡す <



968 名前:br> 【60代パート】Wordから印刷して社長の机に置く
【50代課長】エクセルからWordにコピペしたファイル名とフォルダをパートに指示
【20代大卒美人派遣】エクセルで原価計算して課長に渡す
【30代バイト】梱包出荷伝票をエクセルに打込み
[]
[ここ壊れてます]

969 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 02:11:43.53 ID:NG7/h+3B.net]
>>937
多分そういうこと言ってるわけじゃないと思うぞ

970 名前:デフォルトの名無しさん [2020/06/22(月) 02:30:48 ID:6UseFZdn.net]
>>938
え?
Excel vba を仕事にするのが会社の重要な業務である業界ってどこですか?

971 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 03:23:12.33 ID:CPlWdThO.net]
>>939
お前の会社は何の業界の会社だよw
例えば30代のバイトが梱包している作業のほうが会社にとって利益をもたらすんじゃないのか

972 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 08:49:37 ID:no76adsC.net]
ヨコレスだけど30代に梱包やらせる会社とか潰れちまえ
頭も体も回る年代なんだから大いに無駄な事やらせた方がいいと思うね
年食って手数よりも口数のほうが多くなってきたら梱包に回せ

973 名前:デフォルトの名無しさん [2020/06/22(月) 10:07:31.70 ID:lKh0OPb2.net]
では無能な30代には何をやらせれば良いのだ?

974 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 10:18:08.71 ID:f1XJDlES.net]
バイトに雑用させるのは普通だし年齢関係ないわ

975 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 10:44:00.06 ID:i2ShoQV/.net]
VBAスレなのにバイトの仕事がどうのって話になってて、さすがだなっておもいましたwww

976 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 10:45:26.13 ID:DpiCYHaq.net]
vbaってプログラミングなの?

977 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 11:16:34 ID:DTKm8QVZ.net]
プログラミングじゃなかったらなんなんだ
物書きか?



978 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 11:19:23 ID:DpiCYHaq.net]
Excel関数の延長?

979 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 12:06:22.79 ID:f1XJDlES.net]
正式な定義を知りたきゃMS公式でも見ればいいだろ…

980 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 12:10:34.37 ID:DpiCYHaq.net]
申し訳ありませんでした

981 名前:デフォルトの名無しさん [2020/06/22(月) 12:26:25 ID:qDFuj4q3.net]
馬鹿ばっか

982 名前:デフォルトの名無しさん [2020/06/22(月) 18:17:44 ID:es1/qSoW.net]
一年限定で異動してきた職場
噂に聞いてたけど想像を絶するところだった
エクセル使う業務がほとんどなのに
関数使える人が数人、まともな人は確かにいる

ふとみたおっさんはエクセルの表の合計を電卓で足してキーボードでそれを打ち込

ふとおばちゃん達は
「ここ選択してイコールの後にアルファベットと数値と同じ数値が反映される」
「えー!そうなの?」
と会話してる
マクロ以前の問題だった

983 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 18:44:26 ID:CPlWdThO.net]
管理者が無能だと会社がなくなる
管理者が有能なら無能な人材に高い給料は出さない

984 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 19:03:11 ID:f1XJDlES.net]
周りは出来ない語りしてもお前が優秀になれるわけじゃないんだよなぁ

985 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 23:08:43.37 ID:eYhHFxw6.net]
VBAでイキるの面白すぎるからやめて

986 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 23:16:11.85 ID:R2BScS4S.net]
やめたら面白くないだろ

987 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 00:55:19 ID:TulROOqi.net]
30代の梱包バイトのおばちゃんがVBAできないとか比較する方がおかしい



988 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 01:00:04 ID:bSgedWTD.net]
VBA素人です
というか、ちょっとだけPHPを書いたことがある程度のプログラム初心者です

セルA1:A5のどこか一箇所に値を入力すれば全てのセルが埋まるようにしたいのです
全てのセルには入力された値に対して決まったパーセンテージをかける
たとえばA1に100と入力されたらA2~5にはそれぞれA1*○%(○はA2~5とも異なる)
A2に100と入力されたらA1及びA3~5にそれぞれA2*○%

多分条件分岐でいうと
if A1が空白でないならA1には入力した値、A2*○%、A3*○%・・・
elseif A2が空白でないなら・・・

みたいな

989 名前:感じになるのかなと思うのですが冗長ですよね…
do Whileで書けるのか、他にスマートな書き方があるのか見当がつきません

フォームでどのセルに入力するか選んで値を入れてボタンを押すと
全てのセルが埋まる、というのが理想です

アドバイスを頂けたらありがたいです
よろしくおねがいします
[]
[ここ壊れてます]

990 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 01:09:31.87 ID:kv8byCI9.net]
for r=1 to 5
if 入力されたセルじゃない場合
cells = 入力された数値かける定数
end if
next

みたいな感じでは?

991 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 01:33:11.82 ID:kv8byCI9.net]
あー、これじゃダメみたい、すみません。

992 名前:デフォルトの名無しさん [2020/06/23(火) 01:53:19.74 ID:bE26MwSl.net]
>>957
ちょっとだけとか書くなよ
全くわかっていない馬鹿だろうが

993 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 02:25:19.01 ID:akfNW9d5.net]
入力セルによらず割合が一定なら100%の値を出してからそれをループで入れろバカか

994 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 03:24:31 ID:TulROOqi.net]
>>957
俺なら入力は1か所(A1)だけにして A2〜A5 は 入力させない or "=A1" にでもするかもな

995 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 05:39:38.41 ID:BwhdgQkj.net]
>>957ユーザーフォームにリストボックスとテキストボックスとコマンドボタンを作成し以下
Dim val As Double
Private Sub UserForm_Initialize()
  With ListBox1
   .AddItem "A1"
   .AddItem "A2"
   End With
End Sub
Private Sub CommandButton1_Click()
  If UserForm1.ListBox1.Value="A1" then
val = UserForm1.TextBox1.Value
 A1
Else If UserForm1.ListBox1.Value="A2" then
 val = UserForm1.TextBox1.Value
 A2
 End If
End Sub
Sub A1()
 Range("A1").value=val
 Range("A2").value=val*0.2
 Range("A3").value=val*0.3
 Range("A4").value=val*0.4
 Range("A5").value=val*0.5
End Sub
Sub A2()
 Range("A1").value=val*0.1
 Range("A2").value=val
 Range("A3").value=val*0.3
 Range("A4").value=val*0.4
 Range("A5").value=val*0.5
End Sub

996 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 07:50:59.28 ID:xSXJEKQO.net]
意図が伝わるようにユーザーフォームで入力させた方がいいように見えるな
visibleのtrue ,false切り替えでうまくやりたい

997 名前:955 mailto:sage [2020/06/23(火) 09:36:33.10 ID:bSgedWTD.net]
ご教示下さったみなさまありがとうございます

>>963
丁寧にありがとうございます
書いて頂いたのでなんとかなりそうです



998 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 10:14:19.39 ID:eVy5K5L9.net]
コピペ

999 名前:961 [2020/06/23(火) 12:34:05.64 ID:5v5sJ6te.net]
>>965
スマホで寝ながら打ったから
Win7のExcel2010にコピペして確認してみたらミスってた
訂正。大文字だったスマソ then>Then
https://i.imgur.com/LQvQjn9.png

1000 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 13:08:23.25 ID:AqGxlhQk.net]
VBEが勝手に大文字に直してくれるから、ステートメントは全部小文字で入力してるわ

1001 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 16:26:51.99 ID:lLVW3adv.net]
UsedRangeの使えなさに絶望しました
あれってなに目的で使えんの?

>>968
おれもそれチェック代わりに使ってるんで
変数はほぼ全て大文字スタートだわ
他言語だとやらないけどVBAはエディタがあれなんで

1002 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 17:18:02.36 ID:JWFUfSAs.net]
>>969
間違った使い方してるだけじゃないのか

1003 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 18:21:08.83 ID:coVE1fyX.net]
>>969
グラフ自動生成するときとかに使ってる

1004 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 18:22:23.82 ID:z7FZNG3t.net]
usedrangeはファイルの中身を検査する時に使うな
個人情報が入ってないかとか

1005 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 18:28:15.83 ID:X4/0OZ1g.net]
UsedRangeは普通に使うぞ。
寧ろ、一番使うかも。

Excelの固定じゃない範囲を取得する場合、これでOKというようなものが無い。
都度考えることになる。

1006 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 21:35:23 ID:LvHFRgi0.net]
値化とか

1007 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 21:40:15 ID:LvHFRgi0.net]
2次元の動的配列にバックデータを突っ込むときに使う



1008 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 22:16:19.70 ID:zDUcrbEK.net]
やっと念願の夢かなって生産現場に異動できそう
PCをあまり使わなくなる職場にいけるから
マクロ組んだりもほとんどしなくて済むから嬉しすぎる
そしてここで教えてくれた人たちへの恩も忘れられんよ

1009 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 22:27:25.32 ID:UicElvK7.net]
ひでぇなぁ忘れられちゃうのかぁ残念
汗だくの梱包現場からエアコン効いた部屋に行きたいよ

1010 名前:デフォルトの名無しさん [2020/06/24(水) 10:22:12 ID:XfIA0IcT.net]
Sub Sample1()
Dim Target As Range
Set Target = Range("P:P").FiVBA エラー 91
これで
オブジェクト変数または With ブロック変数が設定されていません。t.Offset(0, 1)
End Sub

何がだめ?

1011 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 10:26:15 ID:7kmsZdqz.net]
FiVBAって命令あるの?

1012 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 13:23:42.08 ID:hNjrAS7L.net]
tってなんだよ
宣言してないオブジェクト変数が動くわけないだろ

1013 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 13:58:43 ID:LpqCs0qI.net]
なにがだめって聞かれても全てがとしか

1014 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 14:29:06 ID:jVCudKEf.net]
ちゃんと内容を確認しないのが駄目

1015 名前:デフォルトの名無しさん [2020/06/24(水) 14:58:07.29 ID:ec8khzg7.net]
ごめん間違えた
これです
Sub Sample1()
Dim Target As Range
Set Target = Range("P:P").Find(What:="田中")
MsgBox Target.Offset(0, 1)
End Sub

1016 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 15:31:45.69 ID:7kmsZdqz.net]
>>983
https://www.moug.net/tech/exvba/0050116.html

ここでも参考にしな

まず確実に言えるのは、Nothingのエラー対処ができてない

1017 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 16:03:07.42 ID:A95Qwidx.net]
>>983
田中がないんだろどうせ



1018 名前:デフォルトの名無しさん [2020/06/24(水) 16:11:20.98 ID:ec8khzg7.net]
Set Target = Range("P:P").Find(What:="田中")

この田中を変数というか特定のセルの値にしたい場合どうしたらいい?
A1のセル内容を参照したいとする

1019 名前:デフォルトの名無しさん [2020/06/24(水) 16:18:53 ID:ec8khzg7.net]
あ、できた
ごめん自分は京都大学霊長類研究所のジェームズという7歳のチンパンジーだからVBAよくわからないんだ
皆さんありがとございまうす

1020 名前:デフォルトの名無しさん [2020/06/24(水) 16:21:57 ID:4/s69xMY.net]
>>987
解決内容を書けチンパンジー

1021 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 17:53:24 ID:A95Qwidx.net]
自己紹介や自分語りはいらん

1022 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 19:08:49.57 ID:Ra7WLueW.net]
>>986
Nothingのエラ―対処が出来て無いってのはみんなが通る道だ。

1023 名前:デフォルトの名無しさん [2020/06/24(水) 19:26:45 ID:aYj5R9EO.net]
自分で使う分にはエラー終了でも正常終了でも変わらんし

1024 名前:デフォルトの名無しさん [2020/06/25(木) 14:24:07.38 ID:UL1INOQI.net]
In Range("R:R")
というのがあるとして
R列全体を選択するのはマストなんだけど
ホントはR7からソレ以下全部にしたい
In Range("R7:R")ではうまく行かないみたいだしこういう場合ってどうしたらいいんだろう

1025 名前:デフォルトの名無しさん [2020/06/25(木) 14:52:26.82 ID:fOnLoXil.net]
usedrangeじゃ駄目なんですか?

1026 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 15:35:07.92 ID:eDJAI9Nl.net]
テーブルにすれば?

1027 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 15:38:48.25 ID:emOdy//g.net]
cellsでそこから最終行まで指定すればいいじゃない



1028 名前:デフォルトの名無しさん mailto:sage [2020/06/25(Thu) 16:00:07 ID:eepaDL1r.net]
colmns.countが最終桁番号だしApplication.Intersectで指定2範囲の重複部分だせるし

1029 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 16:24:03.44 ID:oGWS7APt.net]
直感的にやるならRange(Range("R7"),Range("R7").End(xlDown))でいいんじゃない

1030 名前:デフォルトの名無しさん mailto:sage [2020/06/25(Thu) 17:54:02 ID:xz2BRr ]
[ここ壊れてます]

1031 名前:37.net mailto: >>992
何故最終行までという指定を省こうとするのか?
先に真っ当な手順で実現できてないのに想像で勝手に省いてうまくいかないってどういうつもりなのか?
[]
[ここ壊れてます]

1032 名前:デフォルトの名無しさん mailto:sage [2020/06/25(Thu) 17:54:59 ID:orhJfehX.net]
きたこれ
VBA歴2ヶ月なのに俺は職場のPCの先生から神様扱い

1033 名前:デフォルトの名無しさん [2020/06/25(Thu) 18:26:51 ID:BKkovaqh.net]
何そのダメ先生

1034 名前:デフォルトの名無しさん mailto:sage [2020/06/25(Thu) 18:32:44 ID:0L1EfJ/H.net]
おだてられて浮かれてるだけだなw

1035 名前:デフォルトの名無しさん mailto:sage [2020/06/25(Thu) 18:45:05 ID:goJhPQKd.net]
うー

1036 名前:1001 [Over 1000 Thread .net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 46日 5時間 1分 20秒

1037 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています








[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<267KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef