TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
Ruby 初心者スレッド Part 65
こんなプログラミング言語は嫌だ!
OSSホスティング総合【SourceForge,GitHub,etc..】
ますたーのお勉強中の独り言スレ
いもうとデスクトップを実際に作ってみないか?3
0から始める2chブラウザfor超漢字 "2ch de BTRON"
Perlについて
JAVAってこんなことも出来ないの?
七行プログラミング part6
ネットワークプログラミング雑談
Excel VBA 質問スレ Part61
- 1 :
- !extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part60
https://mevius.2ch.sc/test/read.cgi/tech/1552736349/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
- 2 :
- >>998
>おっさん、それじゃ値が二つできてしまう
出来て良いんだよ。
どうせ2つあっても上の値しか拾わないし。
- 3 :
- まだやってるのか
- 4 :
- 番兵の方を拾った場合は?
- 5 :
- usedrange.columns.count は多用しますが
これを列番号ではなく
アルファベットで(AX列、というように)
取得することはできますか?
- 6 :
- >>5
あ、addressメソッドがありました。
自己解決しました。
- 7 :
- よっぽど自己矛盾について触れて欲しく無かったようだな。
>>973で>>857はその後だと言ってるのに。
- 8 :
- ネットワーク上のMDBファイルにADOで接続して取ってきたデータを帳票に表示→印刷というマクロを作りました
しかし1件なら問題ないものの、ループ実行すると正常終了で終わるのですが
実際に印刷すると2件目以降のデータが反映されず、全て1件目のデータが印字されます
どうもMDBから取ってくる部分のタイミングの問題に見える(その部分に差し掛かると画面が固まる。DoEventsを入れずに重い処理をさせたときの感じ)のですが、SleepやDoEventsを適宜挟んだり、印刷ではなく別ブックやpdfに書き出しなどに変更しても効果が見えません
この現象の解消方法をご存知の方いませんか?
- 9 :
- >>7
まだやってるのかよ
悔しがりすぎww
- 10 :
- >>8
言ってることがよくわからんけど、adoで直結してデータとってきてるなら、doevents挟んでも意味ない
なので、そもそもバグってると思われる。
doeveが効果あるのは、間接的に(と言って伝わるかわからんけど)何か処理するとか表示を反映させるとかの場合
- 11 :
- >>8
俺も単なるプログラムミスだと思う
謎々シテナイデソース貼れよ
- 12 :
- movenextが無いとかループカウンタが加算されていないとか
- 13 :
- ブレイクポイント置いたり、debug.print挟んだりするのは、
基本のキ
- 14 :
- Sheet1, Sheet2, Sheet3 がある状態で
A1 =fnEnumSheetName() と入力すると
A1 シート名一覧
A2 Sheet1
A3 Sheet2
A4 Sheet3
と表示されるようにしたいのですが
A1に#VALUE!と表示されDebug.PrintがSheet1しか表示しません
期待通りにするにはどう修正すればいいですか?
For文3行目のコメントアウトを外すとDebug.PrintとA1の表示は期待通りです
'シート名列挙
Public Function fnEnumSheetName() As String
Dim iIndex As Integer
For iIndex = 1 To Worksheets.Count
Debug.Print Worksheets(iIndex).Name
' ActiveCell.Offset(iIndex, 0).Value = Worksheets(iIndex).Name
Next iIndex
fnEnumSheetName = "シート名一覧"
End Function
- 15 :
- 訂正です
× For文3行目のコメントアウトを外すとDebug.PrintとA1の表示は期待通りです
○ For文3行目をコメントアウトするとDebug.PrintとA1の表示は期待通りです
- 16 :
- ブック名を入れてみたら
- 17 :
- for iIndex=1 to workbooks("xxx.xls").sheets.count
workbooks("xxx.xls").sheets(iIndex).name
- 18 :
- >>9
悔しいから反応してるんだろww
- 19 :
- >>14
それ、前スレで言われてた副作用のある操作は難しいってのに該当する。
セルに入力中はVBAの実行が普通は出来ないから。
- 20 :
- ActiveSheet.Cells(1, 1) = "シート名一覧"
Dim iIndex As Integer
For iIndex = 1 To Worksheets.Count
ActiveSheet.Cells(iIndex + 1, 1) = Worksheets(iIndex).Name
Next iIndex
全く何がしたいのかわからない
- 21 :
- >>20
それをfunctionにしてセルの中からよび出そうとしてる。
それでは動かない筈。
- 22 :
- >>14
ActiveCellが悪さしてそう
シート名を二次元配列に格納してセルにペーストした方が速いだろう
- 23 :
- sheet1と表示されるなら、sheet2がないためエラーが発生してるんじゃない
関数は個人用マクロブックとかに書いてあるとか
- 24 :
- >>21
そんなの単純に
A1 =fnEnumSheetName() と入力すると
このファンクション内で最初に書き換えるから?最初でなくても矛盾が生じる
から、動かなくても問題ない、そこに居れた式を書き換えたらなりたたない
当然だろ、何か考える必要あるのか?
- 25 :
- >>24
いや、だから元々の質問は成り立たせたいわけだろ。
- 26 :
- あと、シート自体にロックが掛かってるから入力中は動かないよ。
- 27 :
- >>25
単純に考えても成り立たないだろ、ってかセキュリティもあったもんじゃなくなる
式を「A1」に入れて「A1」を書き換えたら
- 28 :
- ありがとうございます
ブック名を指定しても
A1にシート名一覧を表示しないようにしても
同じ結果でした
- 29 :
- >>28
すまないけど、人に分かるように書き込みできんのかな?
- 30 :
- 混乱してるみたいなのでまとめます
>>14の状態(コメントアウト有り)では
A1のシート名一覧は表示され
Debug.PrintもSheet1〜Sheet3まで表示されます
コメントアウトしている部分で書き換えているのはA2〜A4です
- 31 :
- >>18
>>18ww
- 32 :
- >>29
fnEnumSheetName = "シート名一覧" 'ここはコメントアウトしなくても問題無い
という事です
- 33 :
- すまんかった
>19が正解っぽい
sheet1だけなら
fn〜=application.thiscell.parent.nameで拾える
A1を書き換えようとすると2016では循環参照の警告がでる
- 34 :
- >>33
そうなんですね
ではA1には式を入力するだけという事にしておいてください
ですがそれでも解決はしません
ActiveCellの部分を他の方法でやってみます
- 35 :
- >>34
独自関数は、自分のセルを計算するだけにしておけよ
それ以外を許すと全く分からなくなる
その程度のことも判断しないとな
- 36 :
- >>35
失礼ですがあなたの指摘(A1が云々)は本題とは関係無いんです
コメントアウトしても同じ結果だったので
- 37 :
- >>31
その反応が面白いwww
- 38 :
- >>30
だから、コメントアウトしたのは入力したシート内のセルに入力するコードだろ。
そういうのは普通は動かないんだ。
動かすことは出来るけど難しい。
例えばA1に途中迄入力してセル内カーソルがある状態でVBAを動かそうとしても動かない。
じゃあ、どうやってやるかと言えばSetTimerを使えば出来る。
ただし、使いなれた人じゃないと大変危険だ。
- 39 :
- >>37
>>18w
- 40 :
- まあ、実際の所、>>35に賛成だね。
こういう処理はセルへの入力をトリガーにすべきじゃないな。
- 41 :
- >>39
悔しいから反応するわけだw
- 42 :
- >>36
関数内で配列を作って返し、複数セルにわたって配列数式での入力(ctrl + shift + Enter)にすればできる
- 43 :
- >>41
>>18
痴呆は同じ事を何度も繰返す
まあその程度の知恵しかないからしょうがないんだろうけどw
- 44 :
- 配列にしたらできました
ですがシート数が固定ではなくセル選択範囲がネックになるので
ボタンをトリガーにして当初のコードを利用する事にします
ありがとうございました
- 45 :
- >>44
配列の長さを越える範囲を選択しても下の方が#NAになるだけで上側は有効だけど、
確かに見苦しいからそのやり方の方がいいだろうね
- 46 :
- >>14
Excelの決まりとしてセルに入れた数式の結果はあくまでそのセルだけのもの
他のセルを弄るというのはセル数式の領域外
だからActiveCell.Offset〜があるとエラーになる
こういう場合はコマンドボタンとか付けてそれ押したら指定先のセルに表示するとかする
- 47 :
- ありがとうございます
- 48 :
- シートの上限を制限できるなら
Public Function fnEnumSheetName(Index As Integer) As String
If 1 <= Index And Index <= ActiveWorkbook.Worksheets.Count Then
fnEnumSheetName = ActiveWorkbook.Worksheets(Index).Name
Else
fnEnumSheetName = ""
End If
End Function
を定義して
A1に =fnEnumSheetName(Row()) を入力
あとは必要分を A2 から下に関数コピーすればいい
- 49 :
- >>43
プッw
自己矛盾は認めるのかw
- 50 :
- 色々なシートを触る時、.activateは入れますか?
set sheets("sheet1") = foo
set sheets("sheet2") = bar
foo.activate
foo.cells(1,1)="str"
bar.activate
bar.cells(1,1)="str"
要は
cells(1,1)="str"
とシート名を抜かしてしまった時の保険なんですが、止めたほうが良いでしょうか?
また、シート名を忘れた時にエラーが出る等、わかるようにする方法ってありますか?
- 51 :
- Activateなんて殆ど使うことは無い。
と言うより、シート名を抜かすことなんて有り得ないというくらい無い。
寧ろブックも省略しない。
だからWithかSet sht=Workbooks("hoge.xlsx").Worksheets("fuga")
をたいてい使う。
- 52 :
- ああ、よく見てなかった。
Set使ってるじゃん。
それなのに抜かすことが有るの?
- 53 :
- よく見たら間違ってた。
- 54 :
- >>52
はい
もちろん最初からこの形なら良いのですが、
1シートしか使わないマクロでシート名を抜いて記述
その後、2シート以上に増えた時、改修する時に抜ける事があるのです
1シートだけでもシート記述した方が良いんでしょうかねぇ
- 55 :
- >>54
関係ない。
というか染み付いた方が良いと思うよ。
シート数がどうとか考えることもなく自分は省略しない。
それにブックを複数開くことって無いの?
- 56 :
- >>50
原因がわからないエラーじゃないんだから保険ではなくきちんと明示するようにしよう
書き忘れてエラーが出たらそれをちゃんと直すようにしよう
中途半端な保険なんて入れておくとますます不備に気付けない
自分の簡単なチェック方法は前にドットがついてないrangeとcellsを全部検索するようにしてる
- 57 :
- >>49
まだ言ってるのかw
それを自己矛盾と言張るならお前も根拠出せって話な
- 58 :
- >>55
ありがとうございます
癖にしていきます
ブックを複数開く事は滅多に無いです
基本的にそのブックにマクロをもたせるようにしています
- 59 :
- >>50
シート名忘れるような奴はそのうちActivate指定も忘れたり間違えたりすると思うぞ
そもそもそんな保険を掛ける前に
> set sheets("sheet1") = foo
とか書いて疑問に思わない自分の頭を心配した方がいい
- 60 :
- >>57
www
正式な方法があるか無いか分からないのに「無い」と言い切ったことが根拠だと何度言ったらww
- 61 :
- >>59
それもそうですね
ちゃんと書くようにします
そして酷い間違いすいません
- 62 :
- >>60
それじゃねーよ、バーカ
これの根拠書けって話な
>> 857
On Errorしかないのが正式なら同じだし、
On Error以外に正式なものがあれば問題ないし、
- 63 :
- スポーツの試合だとお互いの実力が拮抗していると長くなるよね
- 64 :
- >>20
> ActiveSheet.Cells(1, 1) = "シート名一覧"
これはセルの値を変更だろ
下のは式としては=Test()で表示としてはSampleになるから別物
混乱させようとした愉快犯か?
Public Function Test() As String
Test = "Sample"
End Function
- 65 :
- SubよりFunctionの方が格好いいような気がして、
意味もなくFunction使っちゃうんですよ。
何でしょうね。
- 66 :
- >>64
おっさん、その話もう終わってるぞ
- 67 :
- >>65
個人用ならどうでもいいよ
オレが関わる(他人も使う)なら、糞ボケ春日と言わせてもらう
- 68 :
- >>62
その根拠www
>>60は根拠そのものなんだがwww
お前は1+1=5だと言っている。
俺はそんなの全く説得力が無いと言っている。
何故なら1+1=5の根拠を全く示していないからだ。
今の状態は1+1=5だとお前が妄想しただけとしか受け取れない状態だ。
妄想でも構わんが何ーつ説明出来ていないんじゃ説得力が全く無いのは自明の理だ。
←これが俺の根拠だ。
それで全て。
バカで理解出来ないようだからもう−度言う。
今言ってるのはお前が自己矛盾してるかどうかだ。
正式な手順があるだろうという俺の主張の話は何ーつしていない。
前にも書いたが一緒にして逃げを打たれても困るんでな。
- 69 :
- >>65
意味はあるからしっかり使い分けなよ
- 70 :
- >>68
だから俺の主張がMSに確認してないから根拠がないと言うならお前も根拠を出せよっていうだけの話
そもそも俺がMSに確認してないという根拠すら出せないだろ?w
- 71 :
- >>70
バカ?
1+1=5と言われて信じる奴が何処にいる?
だから根拠を出せと言っている。
根拠を出せなければ信頼に値しない。
俺がお前の根拠を示す必要は全く無い。
- 72 :
- >>70
いや、お前が確認してるなら根拠を出せば良い。
出さなければ信頼に値しない。
で、今までお前は根拠を出さなかった。
従ってお前の主張は信頼に値しない。
これが根拠だから俺がMSに何かを確認しても、それは根拠には成らん。
- 73 :
- >>70
いや、お前が確認してるなら根拠を出せば良い。
出さなければ信頼に値しない。
それだけのことだから俺にはMSに何かを確認する意味がない。
で、今までお前は根拠を出さなかった。
従ってお前の主張は信頼に値しない。
これが根拠だから俺がMSに何かを確認しても、それは根拠には成らん。
- 74 :
- on errorで出来てるし、もしMSにきいたとして
来る回答のパターンは
on error
on error以外
出来ない
くらい?出来ないはないと思うんで、
on errorが正式か、正式が別にあるんじゃないかな
- 75 :
- >>74
俺もその主張をしているけど、ここでの問題はその議論とはちがう。
確認もせずに>>70が「言い切った」ことが問題。
>>74の主張の正否とは関係なく「言い切った」ことは間違ってると言っている。
- 76 :
- >>75
> 確認もせずに
だから俺が確認して無いって言う根拠を示せよw
当然できるんだよね?
- 77 :
- >>74
> くらい?出来ないはないと思うんで、
なぜそう思う?
正式にはそんな機能はありませんとか回答する可能性はかなり高いと思うぞ
そもそもOn Errorの方法自体がかなりトリッキーだし
- 78 :
- >>76
www
バーカwww
お前が確認しようがしまいがそれをここで提示出来てないから説得力無いと言っている。
提示出来なければ確認してても何の意味も無い。
- 79 :
- >>77
また逃げを打つwww
- 80 :
- >>77
トリッキーじゃないのは既に示した。
- 81 :
- >>78
説得力の有無なんて関係ないだろ
お前が根拠を示せてないと言う「事実」があるだけ
>>79-80
で?
その方法はMSから回答もらったのか?w
あと念の為に言っとくけど、普段はこんなアホなことは言わんよ
「MSに確認」を執拗に要求するアホがいるから、人に要求するなら自分も根拠を示せというだけのこと
- 82 :
- >>81
ほら、また自己矛盾だ。
バカだから気付いていないwww
- 83 :
- VBAに拘る人種の何たるかが分かるレスバだね
関わらないのが一番
- 84 :
- 結局、バカがトリッキーだと思っただけのことをさも確定であるかのように騙ってただけのことだった
- 85 :
- >>77
それがトリッキーなら前スレ848
>例えば昔仕事で扱ったWin32APIのGetPrinterでは取得するPinterInfo2構造体のサイズを0にして渡して敢えて失敗させることによって正しい構造体のサイズを取得するなんてのがある。
もトリッキーでしょ
- 86 :
- >>81は騙り確定だな。
- 87 :
- >>82
もうそういう具体性のかけらもないレスしかできないかな?
>>84-86
まともなプログラマーならドキュメントに明記されてることとそうでないことの区別ぐらいは付きそうなもんだけどな
まあ今更引っ込みつかないんだろうなw
- 88 :
- そうでないからMSに確認しないとわからない
回答がドキュメント代わりになる
- 89 :
- フォームから10個のTextboxに書かれた情報をボタン投下時にTextfileに一列タブ区切りで追記するもの。(空もあり)
それと、そのTextfile読み取って全列一列ずつExcelに転記出来るものを作り、内容を変更したりした後、再びTextfileにoutputするものを作りました。
そのTextfileの中ワードを検索し該当する行をタブ区切りで配列に格納してリストビューに転記するものを作ったんですが、たまに配列数0から7個だったり少なくて転記の際にエラーになるのはなんかありますか?
- 90 :
- >>89
回答じゃないけど、テキストファイルに書くんじゃなくて(隠し)シートに書いてやるのはダメなの?
- 91 :
- >>88
必要なら君がやればいいだけ
そんなこともわからないの?
- 92 :
- >>89
取り敢えずエラーになった時のTextfileは確認したの?
- 93 :
- >>87
www
説得力が無くて良いならお前はもう反論出来ないということだよ。
俺の主張に説得力が無くても良いと表明したんだからなw
俺は説得力が無くても良いとは思わないから、お前は騙り確定だw
- 94 :
- >>91
だから必要なのは正式ではないと決めつけたお前なんだよwww
バカだなあw
- 95 :
- >>93
説得力が無い?
> 説得力の有無なんて関係ないだろ
> お前が根拠を示せてないと言う「事実」があるだけ
って書いてあるんだが、ひょっとして違いがわかってないのか?w
- 96 :
- >>95
バーカwww
根拠は示せてるで確定だwww
お前は「根拠は示せてる」に反論出来ないwww
- 97 :
- >>95
お前自ら、反論出来ないと表明しちまったんだよw
- 98 :
- >>95
根拠は示したという俺の主張が「事実」であり、それにお前は自ら説得力が無くても良いと言ってしまった。
一方、根拠は示されていないというお前の主張に説得力が無くても良いとは言わない。
従って、お前は反論出来ないが俺はいくらでも反論させて貰うw
- 99 :
- そもそも根拠は何の為に必要なのかと言えば、主張に説得力を出すためだ。
相手に求めるのも説得力が無いから説得力を出すために根拠を提示しろということだ。
そんなこともわからないんだから全く意味不明。
- 100 :
- >>96-99
> 根拠は示せてるで確定だwww
ほう、どこで示せてるんだ?
レス番示して引用してみな
まあ、どうせまたごまかすんだろうけどw
- 101 :
- そろそろ、無意味な言い争いやめたら、だんだん何したいかわからん
- 102 :
- >>100
お前の理論によればもはや示す必要もないwww
残念でしたwww
説得力無くて良いんだろw
- 103 :
- 説得力無くても良いと言ったんだから不必要なものを求めるな。
バカがw
- 104 :
- >>102
> お前の理論によればもはや示す必要もないwww
はい、想像通りでしたw
>> まあ、どうせまたごまかすんだろうけどw
> 説得力無くて良いんだろw
そう言うこと、匿名掲示板でMSに確認ガーとか言い出したらキリがない
常識が通じない相手とはやり取りが困難って言うだけのこと
>>101
スレ跨いで粘着するような人なので察してやってくださいなw ⇒ >>7
まあ連休で暇だからと言って相手してる俺も悪いんだけどね
- 105 :
- >>104
www
バーカwww
本当にバカだな。
説得力が必要なければ、ここは意味が無い。
それどころか全ての議論は意味が無い。
MSに確認は説得力を増すための十分条件だが、必要条件では無いから必ず必要なわけじゃ無い。
しかしお前は何−つ説明をしていない。
その上で説得力を必要無いなどとバカを晒した。
それじゃ議論の意味が無いからお前がここで何かを主張するのも意味が無いと自分で表明したことになる。
本当にバカだ
- 106 :
- >>89
テキストボックスが空だったときのテキスト出力に問題がありそう
エラーが出たときのテキストボックスの入力状態を再現できるなら、個々の値の転記処理が終わる箇所にブレークポイントを設定して、テキストファイルの区切り文字の数とかをダンプして確かめるといいよ
- 107 :
- > その上で説得力を必要無いなどとバカを晒した。
まず日本語のてにをはからやり直せよ…
頭に血が上りすぎだろw
- 108 :
- >>107
不必要なことをするなw
バカがwww
- 109 :
- だいたい、てにをはを分かって無いのはどっちだよ。
- 110 :
- 指摘されてアタフタw
- 111 :
- >>110
反論出来なくて悔しいのうw
- 112 :
- >>111
既に結論出してるからね
>> 説得力無くて良いんだろw
> そう言うこと、匿名掲示板でMSに確認ガーとか言い出したらキリがない
> 常識が通じない相手とはやり取りが困難って言うだけのこと
- 113 :
- お前が自ら反論出来ませんと宣言した結論がなwww
- 114 :
- >>112
自分がアホなことを言った責任を取れw
- 115 :
- 常識が通じないことを言い出したのは自分じゃねーかw
- 116 :
- バカが何か喚いてるなw
> そう言うこと、匿名掲示板でMSに確認ガーとか言い出したらキリがない
- 117 :
- >>116
反論出来なくなって議論を放棄したバカはお前だろw
- 118 :
- >>117
バカが何を喚いても
> そう言うこと、匿名掲示板でMSに確認ガーとか言い出したらキリがない
という事実は変わらない
- 119 :
- ここの人達を見てるとVBAがなぜオワコンなのか分かるね
- 120 :
- >>119
逆だろ
敷居が低すぎて誰でも使えるから荒れる
- 121 :
- 何で最新版の2019でも使えるのにオワコンなの?
- 122 :
- 当時はすぐにVBA.NETがでると思ったんだけどなぁ
- 123 :
- >>89
取り出し方を間違ってるかTextfileの中身が実際に足りてないかのどっちか
- 124 :
- >>92
エラーになったTextfileは確認しました。
もちろん配列格納時に足りなくまります。
>>106
print #fileNo,txtA.Text &vbTab;
print #fileNo,txtB.Text &vbTab;
・
・
print #fileNo,txtG.Text;
今コードないからあれですけど、こんな感じだったと思うんですけど何か起きそうですかね?
- 125 :
- >>124
> エラーになったTextfileは確認しました。
> もちろん配列格納時に足りなくまります。
だ・か・ら、Textfileの中身はどうなってるんだよ…
- 126 :
- >>118
お前は既に敗北宣言してるんだから今さら何言っても無駄だw
説得力が無くて良いと言うのは敗北宣言に等しい。
俺がお前に対して何も説得力が無くても良いと言ってしまったんだからなw
- 127 :
- また痴呆症の再発かよw
>>95
説得力が無い?
> 説得力の有無なんて関係ないだろ
> お前が根拠を示せてないと言う「事実」があるだけ
って書いてあるんだが、ひょっとして違いがわかってないのか?w
- 128 :
- >>127
今さら、ひっくり返そうとしても無駄w
お前の言によれば俺の主張に説得力は必要無いということだからな。
お前は無条件に俺の主張に同意すると言ったに等しいw
- 129 :
- >>127
お前の言う「事実」なんて無いのも確定だw
「事実」なんて無いという俺の主張に説得力は必要無いとお前が言ったんだからなw
- 130 :
- アスペ vs アスペ
ファイッ!
- 131 :
- なぜ、こんなアホなことになったのかは容易に想像できる。
このバカは自分と相手の主張の整合性や論理というものを考えずにその場で反論出来れば良いと不用意な発言をしたんだろう。
全くどうしようもないバカ者だ。
発言を続けていれば論理が無くても勝てると思ってるのだろうw
- 132 :
- 痴呆症のうえに妄想まで出てきたか
末期症状だなw
1つだけお前のレスで正しいところがあるよ
> それどころか全ての議論は意味が無い。
「基地外との」って言う言葉を前置すればねw
- 133 :
- >>132
勝手に省略するなバカw
説得力が必要ないというならという前提がつくんだよ。
お前の主張によればという前提でも良い。
全ての議論は意味が無いというのはお前の主張が正しければだ。
バカ者がw
- 134 :
- 意味のない議論(と本人は思ってる独り言)を延々と続ける痴呆老人w
- 135 :
- >>134
本来、何かを主張するということは、自らの説得力を持って相手に納得させる行為なんだよ。
ぐうの音も出ないというのは、相手の説得力に対して抗しきれずに納得させられたという状態だ。
お前は説得力が無くてもかまれないんだから、相手がどんなアホなことを言ってもぐうの音も出ないと表明してしまったわけだw
- 136 :
- あと念の為に言っとくけど、普段はこんなアホなことは言わんよ
「MSに確認」を執拗に要求するアホがいるから、人に要求するなら自分も根拠を示せというだけのこと
できない時点で単なるつぶやきでしかない
- 137 :
- あると断定するよりないと断定するのは難しいよね
単に自分が見つけられなかっただけでは断言なんてできないし
>>136
確認しなくても、ない根拠を示せば相手も黙るのでは
- 138 :
- まだやるの?
それとも別人?
- 139 :
- まだやるも何も完全に論理破綻してるけど自ら白旗挙げたことに気付いて無くて悔しいから、最後まで何か言ってれば負けたことにならないと信じてるアホがいるだけ。
MSに確認しなくても説得力ある話をすれば良かったのに、今となってはそれも手遅れ。
説得力が必要無いなんて、じゃお前は何でここに居るんだよwというくらいのアホ。
- 140 :
- >>138
前から、怪しい奴が横から沸いてたw
アホらしいから取り合わんけどね。
- 141 :
- 別スレ立ててやれ
- 142 :
- >>139-140
>>134
>>141
前スレから粘着するぐらいだからもう無理でしょw
- 143 :
- >>142
論理無しでも最後まで口を出せば負けないと思ってるアホw
- 144 :
- 言いたいことは>>136に書いてある
- 145 :
- よし、わかった。
ここをExcel VBAスレにするのは平成までにして、
令和からは、ドキッ!丸ごと水着女だらけの水泳大会スレにすれば、
すべて解決する。
- 146 :
- ネーミングの昭和感
- 147 :
- なあもういい加減やめようぜ
- 148 :
- 止めつつ上げるとかネタやん
- 149 :
- 最初の質問者は問題解決したのかな?
- 150 :
- 戯れ事を指摘したことの根拠は戯れ事を否定する根拠が無かったことなのにな。
何にも根拠が無かったら発言しなければ良かったのに。
- 151 :
- 1 安倍晋三 アベシンゾウ
2 麻生太郎
3 小泉純一郎
4 白石麻衣
・
・
・
全員にフリガナをふりたい
今手動で名前をカット→貼り付けでフリガナをだしてます
それを自動でやる方法
または違うやり方があれば教えてください
ち、ちなみにjkです!
- 152 :
- 「あべ しんぞう」じゃなくて「あべ しん さん」で変換されてたら
ふりがなもそうなるし並べ替えでも読みで並べ替えされるし
- 153 :
- >>151
SEXしよう!
・関数
=PHONETIC(A1)
・vba
Sub foo()
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
Cells(i, 2).Value = Application.GetPhonetic(Cells(i, 1))
Next
End Sub
・その他
A1セルにカーソル併せてshit+alt+上でふりがなの設定が出来る
- 154 :
- 書き忘れた
関数とvbaで挙動が変わる
関数は入力した時のふりがなデータを引っ張ってくる。漢字をコピペした場合、ふりがなデータが無い事がある
vbaはIMEのデータを引っ張ってくる。
どちらが良いかは無いが、基本的にはvbaの方が良い
- 155 :
- 神様ありがとう!!
やっぱりここのおじさんたち凄い
>>152
それはあきらめてるw
- 156 :
- おばさんもいるよ!
- 157 :
- すげー加齢臭するなこのスレ
- 158 :
- 平均30-40ぐらいじゃないか。余裕で50代もいると思う
- 159 :
- 2chとしては普通でしょ
- 160 :
- むしろ50代とかの方が多いんじゃね?
- 161 :
- windows3.1時代には既に有ったからね
dos版にもvbaって有ったの?
流石にそこまでは知らないんだけど
- 162 :
- >>161
> dos版にもvbaって有ったの?
ないでしょ
VBAはExcel 5.0からでそのバージョンにDOSはなかったはず
- 163 :
- 指定する番号の行に
行を新規に追加するには
どう記載すれば、良いですか?
- 164 :
- row(n).insert
nは数値
- 165 :
- >>163
Rows(123).Insert
- 166 :
- sが抜けてましたね
すまんかった
- 167 :
- Dim i As Integer
i = InputBox("数字を入力してください")
Rows(i).Insert Shift:=xlDown
- 168 :
- 皆さん、ありがとう
試して報告させていただきます。
- 169 :
- >>164
nをfor next
で指定しても、動きますか?
エラーとなり、理由がわからず2日ここで止まってます。
- 170 :
- コードも無いしエラーメッセ−ジも無いからエラーはよく分からんが、気になる点を1つ。
n行目に挿入されると、その行は何行目になるのかな?
- 171 :
- >>169
具体的に何行目に追加したいか書いたほうが良いと思う
一行だけじゃないのか
- 172 :
- >>169
たぶん For に Step - が必要な案件と見た
- 173 :
- >>169
いっぺんに何行も挿入したいときは
Rows("6:15").Insert
この例では5行と6行の間に10行いっぺんに入れて、元の6行が16行に移動してる
- 174 :
- >>172
初めて挿入やった時に上から順に挿入してってぐっちゃぐちゃになったわw
- 175 :
- ありがとう、皆さん。お言葉に甘えて
Sub 行の挿入()
dim k As Integer
dim i As Integer
dim j As Integer
dim h As Integer
Set obj基本データ = Thisworkbook.Worksheets("基本データ")
h = 7
Do while obj基本データ.Cells(4,h).Value〈〉""
For i = 1 To obj基本データ.Cells(5,
h).End(xlDown).Row
k = obj基本データ.Cells(4,h).Value
j = obj基本データ.Cells(i+4,h).Value
ThisWorkbook.Worksheets(k+2).Rows(j).Insert
next i
h = h + 1
Loop
End Sub
回すと、
ThisWorkbook.Worksheets(k+2).Rows(j).Insert
のところで、実行時エラー'1004'
となります。
- 176 :
- >>175
構文はあってるけど、存在しないセルを参照している
多分jに0か、kに-2が入ってるとかそんな感じ
- 177 :
- 変数の中身を確認して
確認方法はウォッチ式、イミディエイトウィンドウなどいろいろあるけど
msgbox j
msgbox k
ThisWorkbook.Worksheets(k+2).Rows(j).Insert
でも良い
- 178 :
- >>176
遅くにありがとうございました。
ご指摘のとおり、iに0が入るため、エラーになっていることがわかりました。
後は、空白セルを0と読み取らせない方法を調べてみます。
丸二日、エラーの理由がわからずに悩んでいました。
見ず知らずの方に助けてもらえて感謝です。ありがとうございました。
- 179 :
- >>178
j
でした。訂正します。
- 180 :
- >>176
IF j=0 then GoTo L1
を追加して、
エラーになるところを飛ばして解決しました。
ありがとうございました。
- 181 :
- >>178
初心者は、問題がどこにあるのかに勘所が無いからこういう悩んで時間を使う経験をたくさんすると良い。
慣れれば5秒で気付く。
あと、Do〜Loopはいらない気がする。
hの代わりにiを使ってどうにかできると思うね。
- 182 :
- >>178
間違えた。
hは列方向か。
- 183 :
- VBA勉強中の者です。
Setステートメントを勉強しているのですが、オブジェクト型についてお聞きしたいです。RangeオブジェクトとかWorksheetオブジェクトなど、いろんなサイトなど見ても使いどころがよくつかめてないです。
どんなときに使うのか、教えてもらえるとありがたいです。
- 184 :
- >>183
数値と文字列以外は全部オブジェクト
- 185 :
- どんなときに使うのか、は一言で言うのは難しいが、基本的には保守のため
・何の変数か分からない時に名前をつける
range("a1:b2")だと何の範囲かはワークシート見ないと分からない
set 転記元 = range("a1:b2")
とすることで、そのrangeが何か一発で分かるようになる
ちなみに「何をするか」ではなく「何が入ってるか」を基準に命名すると後で分かりやすい
「何をするか」はfunctionの名前がそうなっているはずだ
・ある変数が2回以上登場する場合、最初に変数に入れておけばそのコードを変更する時に一回で済む
まぁこれは説明せんでもええわな
・保守しないならめんどくさいだけじゃん
そう、合っている
ちゃんと保守できるように書いて置いた方が、長い目で見ると楽なんだ。プラマイプラス
- 186 :
- >>184、185
レスありがとうございます。
185さん
感覚ですが、すごく単純な感じがします。そんな認識でよいです?
ただ184さんのいう
数値と文字列以外は全部オブジェクト
これがひっかかるんです。
range("a1:b2")がオブジェクトという認識でよい?
そのなかに文字があった場合は?
文字列じゃない?と思ってしまうが、それは違うんですよね。
仮に
range("b2").valueだった場合は値で、range("a1:b2")はオブジェクトという事?
はなしがまとまってなくて、すみません。
- 187 :
- ↑183が書き込みしました。
- 188 :
- Excelのシート内部の表位置とかカラム位置とかデータ末尾とか特定するベストプラクティスってどんなんですか!
何十年前からある言語でこんだけ普及してるのにいまだに決まった答えがないとか
- 189 :
- >>188
あのね、A1から使うのがExcelの正しい使い方なの
枠やらタイトルやら付けるのはバカジャップの間違った使い方なの
- 190 :
- 一瞬で理解した
- 191 :
- >>186
range("a1:b2")はオブジェクト。この中にプロパティとしてvalueやwidth、heightなどがある
もちろんrange("a1:b2").valueは文字列。
range("a1")に1が入っていて
range("a1")+2が3になるのは、range("a1:b2").valueが自動的に呼び出されて
range("a1").value+2になっているため
MSDNじっくり読んだほうがいいかもな
https://docs.microsoft.com/ja-jp/office/vba/api/excel.range(object)
- 192 :
- >>188
最強はこのページの
<S6> 書式付きセルを除外する (UsedRange)
http://www.niji.or.jp/home/toru/notes/8.html
ケツから検索して見つかった奴が最後
- 193 :
- >>191
レスありがとうございます
誘導もありがとう!
じっくり読んでみます。
わからない所があったらまた聞くかもです。
中途半端な理解は嫌だし。さっかりと理解したいし。
- 194 :
- プログラミングを理解するには、読むだけでなくとにかく実際に動かしてみることが大事
- 195 :
- さっかりなw
- 196 :
- >>194
そうですよね
やらないとわからないがほとんどです(T-T)
>>195
脳内変換ヨロシクです
- 197 :
- ADO使うと突然落ちるようになった。
何が原因J?
- 198 :
- >>197
プロバイダはなに?
- 199 :
- >>198
Microsoft.ACE.OLEDB.12.0
PCによっては普通に実行できるので、原因がわからん。
- 200 :
- 質問です。
NumberFormatLocal = “yyyy””年””m””月””d””日””(aaa)”で書式の定義を変更しています。
NumberFormatLocal = ●“yyyy””年””m””月””d””日””(aaa)”
●の箇所に文字列を入れたいのですが”●”を入れるとエラーになります。解決方法はありますでしょうか?
- 201 :
- >>200
わからんけど、自動記録でやったものをコピペするとか。
- 202 :
- マクロの記録取ってみたわ
ダブルコーテーションで括った中で、更にダブルコーテーションがいるっぽい
具体てt機にはこう
Selection.NumberFormatLocal = """あ""yyyy""年""m""月"""
- 203 :
- >>201
解決しました。ありがとうございました。
- 204 :
- もしかして、Access2016が入ってると、
Excel2013ではADO接続使えない?
Excel2013からAccess2016の参照で落ちるケースはググって見つけたけど、
ウチのはExcel2013からExcel2013で落ちる。
- 205 :
- >>190
データとしてExcelを使う場合と、ドキュメントとしてExcelを使う場合とで、考え方がかわる。
- 206 :
- >>204
win下をdll検索して、複数見つかったらそれぞれ直接参照設定してみるとか
(単体で動いてるわけじゃない気もするから、期待薄かもしれんけど)
- 207 :
- >>206
それもダメだったから、諦めてExcel2019買ったわ。
それだと普通に動いたから、
やっぱりExcel2013とAccess2016の組み合わせがダメだったみたい。
ありがとう。
- 208 :
- 32ビット版だったとか?
- 209 :
- >>208
Excel2013 ・・・ ADO接続OK
↓
Excel2013 + Access2016 ・・・ ここで突然落ちるようになる
↓
Excel2019 + Access2016 ・・・ 直った!
全部32bit。
本当は64bitにしたかったけど、ListViewとか、
一部使えなくなる機能があるので諦めた。
- 210 :
- あ、Excel2013 + Access2016って、インストールの組み合わせ。
別に、Excel2013からAccess2016に接続しに行ったわけじゃない。
落ちたのは、Excel2013からExcel2013へのADO接続。
- 211 :
- なんの話をしているのか他人にはさっぱりわからないw
- 212 :
- 時刻がマイナスの場合
とは、if文でどうやってつくりますか?
- 213 :
- >>212
マイナスの時刻など存在しない
If 1 = 2
- 214 :
- A−B=C
時刻の差のCがマイナス表示されるセルを
if文で
00:00:00
に直したいです
- 215 :
- >>214
=TEXT(MAX(0, C), "hh:mm:ss")
VBAは要らん
- 216 :
- セルの設定ですね。
ありがとうございます。
- 217 :
- プログラミングの初歩は大事なんだと思ったよ。
ある値のときは00時00分00秒にするという分岐を思いつかないんだから。
- 218 :
- まあMIN/MAXを使って値をキャップするのは正統なプログラミングでは非常によく使われる方法だけど、
事務屋さんには意外と思いつかないかもね
- 219 :
- 普通に時刻どうしで比較できるから、3分前とかそういうことかと思ってた
- 220 :
- >>210
Office製品は基本的にバージョン違いを混在させられるようにはできていない。
- 221 :
- >>220
そんなことはなくて条件満たせば使えるよ
https://www.microsoft.com/ja-jp/office/homeuse/attention4.aspx
- 222 :
- >>219
時間と時刻
- 223 :
- その前にいきなり時刻とか言い出した辺りでダメダメ。
人間が時刻と思ってるだけの可能性がある。
セルの書式や変数の型を元に説明しないのは、人間の目線で時刻と言ってる証拠。
- 224 :
- シャープで囲んでる人はちょっと
- 225 :
- VBAでは時刻と時間を Timeでずっとやり繰りしてたのに、c#で TimeSpan発見したときは叫んだわ
- 226 :
- え?エクセルをADOでデータベースみたいに扱うこともできるの?
- 227 :
- >>226
ちゃんと形式を整えておけば単純なSELECTなら使える
WHEREが機能するだけでOKってことならまあまあかな
JOINとかは当てにならないような気がする
DELETE, INSERT, UPDATE はもっと当てにならない
- 228 :
- あてにならないってなんやねん
- 229 :
- >>228
他人だけど、ExcelのSQL操作はおまけ機能だから、標準SQLに対応してないから、やってみないとわからない。
- 230 :
- まぁできちゃったらアクセスの立場ないわな
- 231 :
- SQL自体もう色々派閥が分かれすぎて
- 232 :
- >>229
馬鹿はRや
Accessのエンジンと同じだろ
- 233 :
- >>232
バージョンを気にしてくださいw
- 234 :
- >>226
出来るよ。
普通はやらないだろうけど、会社のPCにAccessが入ってないとか、
Accessは入ってるけど、事務のおばちゃんがExcelにしがみついて、
意地でも離さないとか、そういう状況で使える。
>>227
JOINは普通に使える。
- 235 :
- >>234
そうか、JOINも普通にできるのか...
「Excelもデータベースとして有効に使えるよね」なんて方向に行って欲しくない、という願望が
俺の心の中にバイアスを生んだようだ
- 236 :
- というかPowerQueryやDAXでデータベース的な使い方が出来てしまうからな今のExcelは
- 237 :
- エクセルでできるってすごい!
そこで疑問に思ったんですが以下のVBA書いてみましたが
Dim adoCn As Object
Dim adoRs As Object
Dim strSQL As String
Dim DBpath As String
DBpath = ThisWorkbook.Path
Set adoCn = CreateObject("ADODB.Connection")
Set adoRs = CreateObject("ADODB.Recordset")
adoCn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & DBpath & "\SampleData.xlsx;"←@
strSQL = "select A,B,C from シート名 order by A desc" ←A
adoRs.Open strSQL, adoCn
*何か処理
adoRs.Close
adoCn.Close 'コネクションのクローズ
Set adoRs = Nothing 'オブジェクトの破棄
Set adoCn = Nothing
@について
プロバイダーとファイル指定の記述の仕方はあってますか?
Aについて
列の指定とfromの方法は?
教えてください<(_ _)>
- 238 :
- 秀和システムでいいから、古本を買って読めよw
ちゃんとサンプルが書いてある。アマゾンの古本は激安だぞ。
- 239 :
- エクセルをデータベースとして使う記述があるのがどの本なのかさっぱり・・・
できれば本教えてもらえませんか?
- 240 :
- >>233
馬鹿はR
- 241 :
- >>239
Google検索でもサンプルは山のようにあるぞ。
- 242 :
- ちょっとググって見ます
- 243 :
- >>237
何通りかあったと思うけど、
その書き方だと[Sheet1$]かな。
プロバイダーも、adoCn.Providerにも、adoCn.Openにも書ける。
ブック名をFromの後に書く方法もある。
組み合わせは忘れたけど、どこかで指定していれば、
別の部分では省略できる感じ。
- 244 :
- >>243
なるほど、勉強になります
- 245 :
- https://dotup.org/uploda/dotup.org1847293.xlsx.html
東京・大阪・北海道の各出発時間・到着時間を黄色い部分に「sendkeysで」、「それぞれ東京・大阪・北海道の順序を守って」入力したいです
実際にsendkeysでキーを送るのはブラウザ上のフォームであり、東京の時刻入力→tabとenterをsendkeyしつつ次のページに移動→大阪を入力、という風に処理するため、順序等が変更できません
また入力するのが東京・大阪・北海道だけでないかもしれないので、記載がある行すべてというイメージでお願いします
excelスレでも質問してみてますが、vba専門スレがあることに気付かされたのでこちらでお世話になります
- 246 :
- だから、Sendkeysはやめろって。
これはお手軽にその場だけデータを取りたい時なんかに使うけど、制御出来ないから普通は使うべきじゃない。
- 247 :
- もちろんそうなんですが自分には IE操作は敷居が高くて、愚直も愚直にsendkeysしか手段が思いつかないもので・・何か代替案ございますか?
- 248 :
- どう考えてもIE操作の方が敷居が低いんだが
- 249 :
- inputに文字列入れるだけだろ?
ソース見てidだかclassだか取得してポイって入れるだけじゃん
- 250 :
- それがよーわからんのです・・
とりあえずググってすぐ見つかるサイトで特に初心者にわかりやすい解説してるサイトでも教えていただけませんか?
- 251 :
- IE操作で頑張ってみてるんですが、リンクオープンして開いた別窓を操作するにはまたhtmldocにobjIE.documentを代入して・・ってしないといけないんですか?
- 252 :
- >>251
別窓にしちゃう(なっちゃう)とそのウィンドウを探して、html取ってくることが必要になるので、できるなら避ける。
IE VBA
でググれば、参考サイト出てくる。あとは応用しだい
IEでは F12で開くやつも有用
がんばれ
- 253 :
- >>252
社内システムなので必ず別窓になっちゃう仕様です
htmlの取り方教えてもらえませんか?
- 254 :
- >社内システムなので
多分、このスレ見てる全員ズコーだわ、そのオチ。
システム部門の人に聞いちゃダメなんかい。
- 255 :
- CreateObject("Shell.Application").Windows() から探す
- 256 :
- excelマクロでのバージョン管理てどうすればいいん
言われるがままに集計マクロ作ったら担当者毎に持ってるマクロのバージョン違ってあの機能が無いとか特殊な状況でエラー出る→それ先月直しましたよ
が頻発してる
- 257 :
- >>256
サーバー上にマクロ専用のエクセルファイルを置いて、
個々に配っているファイルからはそのマクロを参照させる
- 258 :
- >>257
基本それだが、ずっと掴んでるやつがいるとバグ修正や機能追加のときに困る
- 259 :
- >>258
読み取り専用にしてもダメか?
- 260 :
- もちろん自分が編集する時は読み取り専用解除ね
- 261 :
- コード書く画面を
背景は黒に、文字は白に、する方法を教えれ
- 262 :
- ツール -> オプション -> エディターの設定
- 263 :
- >>256
OS起動したら、サーバからコピーしてくるバッチ等を走らせる
小さいならいちいちバージョン確認しなくてもよい
- 264 :
- みんな一々シャットダウンするのか?
スケジュールでコピーだろ
- 265 :
- >>>261
これ
https://tonari-it.com/excel-vba-vbe-syntax-highlight/
ちなみに書くとこはVBEって言うから覚えておくと検索できて便利
- 266 :
- マクロ終了時にマクロ開始から終了までにかかった時間が秒までメッセージボックスに表示するってできる?
- 267 :
- >>264
個々人のローカルフォルダにxlam があってそれが定期的に書き換えられるって事?
他のブックがxlamを掴んでる最中でもできる?
- 268 :
- >>266
できる
- 269 :
- >>266
楽勝
Sub foo()
開始 = Now
'処理
終了 = Now
MsgBox Format(終了 - 開始, "hh:mm:ss")
End Sub
- 270 :
- >>268
URL春だけでもいいから教えてあげたらw
- 271 :
- >>268はなんとかookスレで最近流行りの流れだよw
>>269ありがとう!
- 272 :
- >>267
掴んでたらスルー
- 273 :
- >>256
起動時に何らかのファイルを参照するようにしておいて、
参照出来たらそのままOK。
出来なかったら、新たにファイルをDLする仕組みにする。
で、更新させたい時は、わざと参照用ファイルを消しておく。
- 274 :
- >>273
xlamを共有するならそこのWorkbook_Open にそういう処理を入れておけばいいでしょうね
- 275 :
- >>256
最新バージョン書いたテキストかなんかを共有に置いといて、起動時に見に行ってそれより古かったら更新促す警告出すとか
- 276 :
- Excelの起動時、マクロを実行させる:Excel(エクセル)マクロ
https://www.excel.usefulhp.com/excel-macro/excel-macro50.html
で良いだろ
- 277 :
- 共有パス見て実行とか大変そう面倒そうて主観があったけども
Application.Run "共有のパス!マクロ名 "
の1行でいけちゃうもんなのか…?
とりあえず試してみる
すでに誰かが開いてる?とか参照できないときの対処も色々試してみるありがとう
- 278 :
- >>277
そっちは使わないかな
俺はボタンにマクロの場所を登録する
- 279 :
- なんか日本語変だ
まぁいいか
- 280 :
- ちょっと筋外れるかもしれないけどvbeに行間なく詰めて書いたコードの選択範囲に1行ずつ改行入れるいい方法ない?
- 281 :
- そんなのできない。サクラエディタで置換して貼り付けろ
- 282 :
- >>280
VBEを操作すればできると思う。面倒だけど
まあ>>281の方法が合理的だろうな
- 283 :
- >>280
改行コードを改行コード+改行コードで置換
- 284 :
- コードウィンドウ内の改行はCRLFじゃなくてLFだった筈。
そんなに難しくない。
でもこれが動く設定はマクロウィルスも動くから危険だよ。
Sub test()
Dim strCode As String
Dim stRW As Long
Dim stCL As Long
Dim edRW As Long
Dim edCL As Long
With Application.VBE.ActiveCodePane
.GetSelection stRW, stCL, edRW, edCL
strCode = .CodeModule.Lines(stRW, edRW - stRW + 1)
.CodeModule.DeleteLines stRW, edRW - stRW + 1
.CodeModule.InsertLines stRW, Replace(strCode, vbLf, vbLf & vbLf)
End With
End Sub
- 285 :
- 専用のメソッドがあるのが凄いわ。
何を想定して用意してあるんだろう?
プログラムがプログラムを書き直すAIにでも使うのか?
- 286 :
- Application.VBE.ActiveCodePane
こんなの合ったのか
PaneはPanelかと思ったら、ペインの事なのね
- 287 :
- VBEを拡張するためのオブジェクト群が用意されてるんだよね
- 288 :
- Excel4マクロは自己書き換え自由だったから
機能的に負けるわけにはいかなかったんじゃね?
- 289 :
- 配布済マクロの修正パッチとかで大量のファイルや行を一括修正したいときは便利
- 290 :
- 単価の低そうな涙ぐましい仕事だな
- 291 :
- マクロ4はできる人がいない+やりたくないから単価超高いぞ
で、単価高くしても足が出る・・・
- 292 :
- 実行から終了まで数分かかるマクロを途中で止める方法ないですか?f4押したら「処理を止めました」のメッセージボックスとともに停止するとか。
- 293 :
- Break
ESC
- 294 :
- ループが長いならDoEvent入れておいて
msgbox "終了します"とendだけ書いたのを起動できるボタンどっかに置いとけばいい
- 295 :
- ESCやBreakで止まるなら良いけど、それで止まらない処理ならウィンドウESC押しながらタスクバー上でマウスでウィンドウの切り替えをすると止まる。
どっかのブログで見て知ったけど役に立ってる。
- 296 :
- こうする
https://youtu.be/h-xo-5krq2Y
- 297 :
- ほー
明日試してみます
- 298 :
- 2009/12/16に公開って何だよ。
20年くらい前に見たぞそれ。
- 299 :
- >>298
映像はどうみても20年以上前だな
的確な対応で現在も使える
- 300 :
- セルの値を数式に代入って無理でしょうか?
たとえばA1セルに乱数が入ってた場合に
どっかのセルに =A2-乱数 という数式を代入したい感じです
- 301 :
- =A2-A1
- 302 :
- 演算あり値コピーの話?
- 303 :
- いやセル番地じゃなくて値を数式に代入したい感じです
たとえばA1セルに2,134という数字が入ってた場合に
=A2-2,134 という数式をどっかのセルに代入
A1セルが387だとしたら
=A2-387
説明下手糞で申し訳ないです
- 304 :
- >>300
書いている意味がよくわからんど
セルに式でも値でも代入できる
ただ、乱数は曲者で常に変わるから
もう少しやりたいことを具体的に書き込もう
- 305 :
- >>303
乱数は曲者で
A1セルが387だとしたら
=A2-387
ほかのセルに「=A2-387」を入れた時点でA1セルは変わるから
もう少し何をしたいのか書くように
- 306 :
- そもそも数式はスレ違いだろ
VBA関係ないならどっかエクセルの使い方の板かスレかさがせ
- 307 :
- >>305
A1セルの乱数結果が現時点で387だとしたら
変数(仮にrとする)に、387を格納して
ほかのセル(仮にB1とする)に"=A2-r(中身387)"を入力したいって事?
それなら確かに関数じゃできないよね
- 308 :
- >>303
Range("C3").Value="=A2-" & Range("A1").Value
じゃ駄目?
- 309 :
- >>307
それに意味あると思えない、乱数なんてふつうは仕事に使わない
例えば、学校の先生あたりが、引き算足し算などの問題を自動的に作りたいとか
であれば、A列に乱数1の結果をB列に乱数2の結果を
C列に計算式を、D列に回答をで別シートなどで問題文を作る
このぐらいだな
- 310 :
- 説明下手糞ってレベルじゃねぇぞ…
- 311 :
- >>309
ちょっとしたシミュレーションで使うかもしれない。(Excelでやるとは言ってない)
>>302じゃダメなの?
- 312 :
- >>311
ちょっとしたシミュレーション・・無いだろ
この文書力だとセルに入れたい式って
計算式の文字列かもしれん
- 313 :
- もうあれだ。
ここは、何の用途に使うのか当たられたやつが優勝スレにしよう。
- 314 :
- 完全乱数を使って円周率の計算をする
- 315 :
- 別に用途は何でもいいさ
興味ゼロってわけじゃないけど
- 316 :
- こっちで作って欲しいと言われたものをつくってると
そんなもの作られたら困る
楽になって人が減らされると困る、と古参がちくちく
この古参、自分の作業を楽にしたい時には
これがもう偉そうな態度で、「作らせてやる」とでも言わんばかりに頼んでくる
どうしたいんよもう
っていうことないっすか
もう面倒なんで職場で作るのやめようかな
すんません落書きしちゃって
- 317 :
- 厚労省で配布されている
https://www.mhlw.go.jp/stf/seisakunitsuite/bunya/000116890_00001.html
にある
https://www.mhlw.go.jp/content/10900000/000494621.xlsm
なんだけど、内容は単純で
1件いくらの検査があって、件数を入力すれば請求書が作成されるというもの
1シート=1自治体なので、複数の自治体へ請求する場合は、ユーザーがシートコピーして作る
VBAで各シートを集計して総括表に転写する
なんだけど、VBAみて
変数が多すぎてコーディング中に間違えても気づかんだろってのと
引っ張ってくるセルをConstで決め打ちしてるけど
これ後のメンテナンスでセル一個挿入することになったら修正大変やん と思いました。
というか、エラーメッセージの所で間違えて
行を表示すべきところを列表示しているけど
これこそ変数多すぎて分かりにくくした事が原因だと思います。
じゃあどうする、と言われたらみなさんならどうしますか?
同じ形の複数の2次元の表を合計するだけなんだから
スタート地点とゴール地点決めてやって
後はずらしていけばいいやんと思うのですが
後、小数とか負の値ぶっこんでも動作するのはモヤモヤするんだけど
まぁこの辺やりだしたらキリがないので使わせる相手によってどうするかは変えますかね
- 318 :
- >>316
義務教育でプログラミングを扱うようになって、自分の仕事くらい自分でプログラミングできないようでは大変な事になるよ、
と教えてやればいい。
もしかしたら「手下にプログラミングさせればいい」と勘違いするかも知れないが、
それでは通用しないよと言ってやろう。
こういう話もあるし
https://lite.blogos.com/article/376203/
- 319 :
- >>316
ただ単純に業務全体を見ずに作るから役に立たないんだよ
業務に対して目的と効果を文書ではっきり示せば古参の意見を聞かなくていい
- 320 :
- >>316
その古参の上司に報告しろ
- 321 :
- >>317
すまん、リンク先を読む気もしない
- 322 :
- >>317
べき論の先には「VBAを使うのをやめるべき」という結論しかないから不毛よ
俺ならどうするか?下請けに丸投げして終わりだよ
- 323 :
- >>318
>義務教育でプログラミングを扱うようになって、自分の仕事くらい自分でプログラミングできないようでは大変な事になるよ
脅かすことでプログラミングができるようになるとはおもいませんが…
プログラミングって極めて創造的な作業ではないでしょうか、似たようなものは数学の証明問題だと思いますが証明問題を脅かして解けるようになるとは思えません
- 324 :
- 機械学習やweb系ならともかく、
VBAレベルなら極めて事務的な仕事だろう。どこにも創造性なんて無いよ
ルーチンワークを自動化させてるだけ
- 325 :
- >>324
でもそのルーチンワークを実際に記述するとなると一本道というわけにはいかないでしょう?
論理的な一貫性を維持しながらしたいことを記述するのは、いわれているほどやさしい仕事ではない
- 326 :
- >>325
一本道だよ、全然難しくない
強いて言えば例外を先に全部列挙した上でシステムに放り込むという順序の変更がある程度
面倒なのは仕様変更と、使いにくいというオバハンの嬌声。オバハンにalt+F8は覚えさせたけど、まぁそれぐらい
- 327 :
- まあ、自己満足で終わるなら簡単だな
おばはんにも満足いくように作るんだよ
- 328 :
- >>317
コンスト過ぎてワロタ。
- 329 :
- >>323
それもそうだが、その老害を大人しく
させることができれば上出来と考えた
- 330 :
- Excel2016にてpersonal.xlsbに「保存せず閉じて開き直すマクロ」を作ったところ挙動が変です
Sub ReOpen()
Dim wb As Workbook
Dim path As String
Set wb = ActiveWorkbook
path = wb.fullName
'※1
If MsgBox("本当に変更を取り消しますか?", vbYesNo) <> vbYes
Exit Sub
End If
wb.Close(False)
Application.Wait([Now() + "00:00:01"])
'※2
Workbooks.Open(path)
End Sub
このマクロ自体は動くのですが、※1のIf〜EndIfを消すと※2のOpen実行直後にExcelが通知無く落ちます
また、※1※2を両方消してマクロ実行した後、手動でブックを開き直すとやっぱりExcelが落ちます
対象のブックはフォームやマクロを含んだ3MB程度のxlsmファイルです
MsgBox出さないだけでなぜ不安定になるのか、思いつく原因を教えて頂けると幸いです
- 331 :
- あ、Ifの末尾のThen忘れたので脳内で補完してください
- 332 :
- >>331
ハイ イイエ が逆なのも利用者が自動変換するんですね
- 333 :
- >>332
すまん、継続がキャンセルか
- 334 :
- >>330
2019で試したけど落ちなかった
> Application.Wait([Now() + "00:00:01"])
これを抜いても同じ
カンで答えると、再計算が邪魔してるような気がする
・一度再計算や描画、イベントを切ってみてはどうかな
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
・あとはこの部分のウェイトをもう少し長くする
>Application.Wait([Now() + "00:00:01"])
・まっさらなブックで試してみる
- 335 :
- アドインって、ファイルを閉じたら、
一緒に閉じられるものだと思ってたけど、
VBA実行中は残るということか。
一緒に閉じられたら、途中で止まっちゃうからな。
- 336 :
- vba実行中というかずっと残るっぽい
- 337 :
- エクセルの機能に追加してるからな
アドイン使ったファイルをアドインがないエクセルで編集すると壊れるよね
- 338 :
- >>330
経験上納得できない動作をするときは何か見落としているところがある
step実行で場所特定して、各変数の値が壊れてないか確認
イミディエイト画面で入力してみるなど
- 339 :
- Excelに限って言えば、Excel自体に変な仕様が多い
これが男を惑わせる
- 340 :
- >>334
元に戻さないアホがいると大迷惑になるな
>>335
アドインはExcelに組み込むよね
>>339
配列数式なんか使うとブーイングになるよな
- 341 :
- 以下の状態だとB1〜B3は全て1:1048576と表示されてしまいます
Cells.SpecialCellsをRange("A1").SpecialCellsに変更した場合はB1〜B3は全てA1と表示されます
Ctrl + Endで選択されるセルの番地を文字列として取得するにはどうすればいいですか?
A B
1 Sheet1 =fn(A1)
2 Sheet2 =fn(A2)
3 Sheet3 =fn(A3)
Public Function fn(sSheetName As String) As String
fn = ActiveWorkbook.Worksheets(sSheetName).Cells.SpecialCells(xlCellTypeLastCell).Address(False, False)
End Function
- 342 :
- 関数呼び出しではなくマクロやボタンクリックでなら問題なかったので
そっちの方法に切り替えますすみません
- 343 :
- 入力項目を複数用意したinputboxって作れますか?
- 344 :
- >>343
どんなものを考えているんだ
- 345 :
- >>343
ごめん入力フォームじゃなくていいかも
最終的にやりたいことは、以下のボタン等が設置されたユーザーフォームを作ることです(他の要素も考えたら普通にinput boxでは無理と気づきました)
・AUTO openで開く
・押すと特定セルに文字が入力されるボタンを複数設置する
・カレンダーを設置する
・押すと印刷処理を行いつつファイルを上書き保存し閉じるボタンを設置する
- 346 :
- >>345
こんな特殊なものAUTO openでやるって非常識だな
シートのマクロで十分だろてかマクロは印刷して保存だけでいいだろ
それも自動記録でも十分
- 347 :
- Excelの勉強不足だろ
- 348 :
- >>345
それユーザーフォームにする必要がないような
ユーザーフォーム超めんどいから止めたほうがいいよ
あと、カレンダーはデイトピッカーと言う
- 349 :
- この程度の理解力だとカレンダーが必要かもわからない
カレンダーなんか別にシートでもできるけど、どこまで使うかがわからないから
最適な解もわからない
入力をシートに反映するなんて普通にセルを参照すればいいだけ
ExcelもVBAも1%以下の理解で動作仕様を描くのではなく結果で何をしたいかを描くべき
これでも少しおだててるが
- 350 :
- おだてるの意味間違えてるよ。
- 351 :
- >>350
いや〜そうでもないよ
理解力は両方とも0.1%〜0.01%程度と思ってたから
- 352 :
- てか、みんなが
>>345←この説明で全容を理解できてるのがすごいとおもったけど
いろんな意味に解釈できそうで、おれにはそのうちの一つには絞りきれないんだけど
- 353 :
- >>352
教えたい人種の大半は問題の表層を自分の得意分野に転換して持論を得意気に展開してるだけ。
質問者の問題の背景に寄り添って解決を計ろうとする者は僅か。
- 354 :
- >>352
どういうパターンであれ、大体ロクでも無い物だという判定ぐらいなら可能
- 355 :
- >>345
ここの人達はマウント取りたいだけで実際はあまりスキルが無い人が大半なので程々に聞いていた方が良い。
あなたの要望については疑問が1つ、可能だけどあなたのスキルから考えて技術的に難しい点が1つある。
疑問は、AutoOpenで開いて、閉じるボタンで保存終了するのならExcelで作る必要は無いのでは?という疑問。
普通にC#辺りで作った方が適してると思う。この後に述べるけど、カレンダーの件もC#等の方が簡単。
技術的に難しいのはカレンダーの実現。
サブクラスとWin32の知識が無いと難しい。
後々を考えると汎用的にクラス作った方が良いからそういう技術も必要。
もっとも、ファイル追加とか自作するとかで良ければスキルが無くても出来るともいえる。
- 356 :
- >>355
この人はマウント取りたいだけで実際はあまりスキルが無い人なので程々に聞いていた方が良い。
- 357 :
- >>356
そうくると思ったw
- 358 :
- >>355
具体的に簡単にできる方法を説明してやれよ
- 359 :
- >>358
まだ出せない
要件定義ができていないので、そもそもどういう設計が最適かも分からない
現状のまま作るのはめんどくさすぎる
具体的に言うとデイトピッカー、お前だ
- 360 :
- >>359
要件定義・・?この理解力だと
当然仕事に対する理解力もないってことだよ
- 361 :
- >>360
そこを何とかするのが面白いんじゃないの
マウント取りたいならハエやカエル相手にしてればいいだけだしね
- 362 :
- >>361
だったら適当にすれば(笑)
出来ることを安易に提案することの影響を考えろよ
例えば、自動計算を止める
こんなのそのままにされたら困るほかの人いるだろ
でも単にONとOFFじゃあだめなんだよ、直前を記録して戻す
また、エラーや中止でも戻さないとな
- 363 :
- >>361
きみはハエやカエル相手にして面白がってる
引きこもりさんってことね
- 364 :
- >>362>>363
韓国人?
- 365 :
- おだてるの意味もわかってないみたいだし、韓国の方でしたか
そりゃ話も合わないな
- 366 :
- >>364
きみはハエかカエル?
- 367 :
- >>365
ハエかカエル?
しかたないな
- 368 :
- おだてる・・・w
- 369 :
- これ以外の高速化ってありますか?
https://15g.jp/post-314/
- 370 :
- >>369
これで問題ある場合はループしてるロジックが悪いか
ネットアクセスではありませんか?
- 371 :
- >>370
運用方法が急に変わりまして・・
毎日 100ループ→毎時間 20000ループ
他の高速化が無いものかな、と
特になければ諦めてロジック組み直します
- 372 :
- 再描画を止めるのは好かんな
- 373 :
- >>371
セルへのアクセスを減らし
変数テーブルで処理をするぐらいかな簡単なのは
- 374 :
- 変更のないセルはかきかえない
変数の型をこていするかな
- 375 :
- >>369
完全に嘘。
そもそも、それなりに書ける奴ならこの手法では速くならない。
- 376 :
- 逆に、これで格段に速くなったら恥ずかしいと思うべきだ。
- 377 :
- 高速化については下記が参考になる。
https://excel-ubara.com/excelvba4/EXCEL228.html
- 378 :
- >>345
できるけど、一番最後の処理が事故を起こしそうだから1クッション置いた方がいいかも
- 379 :
- セルというかシートは使わない
データ保存には外部バイナリファイルを読み書きする
- 380 :
- >>369
これは描画を抑制するからその分の時間がかからなくなるというだけなので、表示に因らない処理の速度アップはまた別だよ
- 381 :
- 何でユーザーフォームを使うのかって?
シートに書くより格好いいからに決まってるじゃんwwwww
いや、わりとマジでそんなもんだと思いますけど。
だって、ユーザーフォームじゃなきゃ再現できないようなものって、
普通の事務処理でそんなに無いでしょ。
- 382 :
- ワークシートのイベントに重めの処理を書いている場合、シート側のイベントを避けるためユーザーフォームで出入力制御や演算を処理させることはある
- 383 :
- 入力のしやすさとかフォームの方が良い場合もあるし、ユーザーインターフェイスとしてはフォームの方が優れている。
Excel使わずにメモ帳とCSVで事足りるってのと同じような考えの人がいるな。
- 384 :
- 初心者レベルの知識で長いことVBAいじってる者なんだが、
functionプロシージャって使わなくない?
普通のsubしか使ったことない
どんな時に便利なの?
- 385 :
- >>384
値を返す時。便利というか必須。=sum()で値が返らなかった時の事を考えてみると良い
むしろfunctionが普通なのだ
vbaの場合、ワークシート変更しておしまいってパターンが多いから恩恵を得にくいけどね
- 386 :
- Findを利用したコードについて教えて下さい。
書籍、サイトで掲載されていたコードを利用し、少し変えたものです。
Findメソッドを使ってC列の”たろう”を検索します。
探し出したら、A〜C列の文字列をE列に結果を返すように作り替えてみましたが、結果がE1〜G1に上書きされてしまいます。
Cells(Rows,count を理解しきれていない、11行目のCells(i,”E”)の部分も理解していないと感じます。
どのように違うのか、ご指導お願いします。
ワークシートはこんなかんじ E列からG列は実行後の結果をイメージしたものです
A B C D E F G
1 日付 売上 担当者 000 AAA たろう
2 000 AAA たろう 333 DDD たろう
3 111 BBB はなこ
4 222 CCC たかし
5 333 DDD たろう
6 444 EEE はなこ
7 555 FFF くみこ
- 387 :
- 386のつづき
Sub Find()
Dim temp As Range, tempAddress As String, i As Long
With Range("A1").CurrentRegion.Resize(, 1).Offset(, 2)
Set temp = .Find(what:=“たろう”)
If Not temp Is Nothing Then
tempAddress = temp.Address
i = Cells(Rows.Count, "E").End(xlUp).Row
Do
temp.Offset(columnoffset:=-2).Resize(, 3).copy Cells(i, "E")
Set temp = .FindNext(temp)
Loop While temp.Address <> tempAddress
End If
End With
End Sub
Sub copy()
Range("A:G").Clear
Worksheets("template").Range("A1:C7").copy Destination:=Worksheets("Sheet1").Range("A1")
End Sub
- 388 :
- >>385
うーん、値を返すのは分かるんだけど、わざわざsubから取り出す意味が分からんのよ
subの中に入れちゃえば良くない?
コードが長くなる時とか、他のプロシージャにも流用したい場合なんかにfunctionで別プロシージャにしとくと分かりやすいってこと?
そういやfunctionを関数みたいに使う場合もあると聞いたな
- 389 :
- >>384
>>385意見に賛成だが少し付け加えます。
基本的にsubにしろfunctionにしろ長くだらだら作らない
出来るだけ意味のある汎用性のある処理はそのルーチンを呼び出すようにする
その時に値を返せるfunctionの方が圧倒的に有利
初心者は同じようなルーチンをコピペで増殖させるが、後々メンテナンスに困る
それらをライブラリーとして持つと自分の資産になるんだけどね、それが重要なんだよ
- 390 :
- >>384
ネタでしょ?
モドリッチがない方が便利だなんて、そんな訳ないじゃん
- 391 :
- >>389
あーその説明で分かった ありがとう
たしかに今までは、動けばいいやで作ってたからコードが長くなってた
顧客コードから各データを検索する時なんか、
Cells(i,2).value=Range(Z:Z).Find(Cells(i,1)).Offset(0,5).Value
みたいなコードを10行とか書いてたわ
- 392 :
- OutlookのVBAもここで可でしょうか?
違ったら誘導お願いします
上司へ「承認お願いします」と言った趣旨のメールを送った際、上司がボタン1つで承認する旨のメールが送れるようにしたいです
しかし複数いる上司全員にマクロの設定方法を教えるのは面倒です
私から送信するメール本文にマクロを組み込み、上司が受け取った際に本文にあるリンクを押せば(マクロを自分で設定していなくても)返信メールが自動作成されるような手法が取れればベストなのですが、そういったことは可能なのでしょうか?
- 393 :
- >>392
ウィルスメールの作成方法きいてる様なもんだなw
- 394 :
- >>392
まずは社内でOLのセキュリティ設定がどうなのか。
ザルならやりようはいくつもあるが、ガチガチなら選択肢は少ない
- 395 :
- >>392
まあ、バカ上司をサポートするのと
バカ上司の影響をサポートするのと
どちっがしたいんだ?
- 396 :
- >>388
VBA初心者にありがちな意見だね。
プログラムを組む時の考え方が全く違う。
組める奴なら最初から構造的に考える。
動きゃ良いなどと考える奴はいない。
- 397 :
- >>392
マクロでやらなくても承認ボタンを追加する機能があった筈だが。
- 398 :
- > VBA初心者にありがちな意見だね。
はい、きょうもマウント取りたい人が来ましたよ
- 399 :
- >>391
>>389の言ってることは全くその通りなんだが、FunctionにしろSubにしろ、内容が汎用的なものをまとめる、同じような処理を纏める考え方をするようになると最初から構造的に組むようになる。
その方が圧倒的に楽だから。
あと、例に挙げてるコードは良くない。
ブックやシートの省略はバグの元。
- 400 :
- >>398
マウントも何も、明らかに初心者なんだから仕方ないだろ
- 401 :
- > VBA初心者にありがちな意見だね。
この部分は必要なかったんだよなぁ
- 402 :
- >>401
必要なんだが。
- 403 :
- 初心者お断りな質問スレが存在した…?
- 404 :
- >>402
君はそう書かないと回答できないのか、なるほど
興味深い
- 405 :
- >>386
>>387
話題を気にせずに、切り込んだ形で質問をしてしまいました。
ホントに困ってしまったのでココで質問をしてみましたが、割り込んだ形でご迷惑をおかけしました。
VBAなんでも質問スレで聞いてみます。
お邪魔しましたm( _ _ )m
- 406 :
- >>404
構造的に考えるべきという意味付けの為に必要。
初心者にありがちだということで、初心者からレベルアップした方が良いということになる。
- 407 :
- >>405
別に迷惑でも何でも無い。
元々、初心者の質問に難癖を付けた奴が悪いと思ったから>>355を書いたんだが、内容を見ずに変に絡んでくる奴が出てきただけのこと。
- 408 :
- i=の行をloopの中に入れる
- 409 :
- その上のtempaddressも
- 410 :
- マウントしてると誤解を招くような
会話しかできない奴は能力低い奴多い
他人の意見も聞かないしね。
傲慢が後に返り討ちにあう
- 411 :
- >>397
こんなんあったんですね!
自分で作るなら他にも機能足してたかもしれないけど、これなら簡単で皆で使えるからこれでいきます
ウイルスメールの作成方法……確かに……
- 412 :
- >>410
誤解を招く前に、プライドに触ったのか碌に内容読まずに絡む奴の方がよっぽど問題だと思うが。
- 413 :
- ところでここは「Exce VBA」の質問スレ
- 414 :
- >>410
マウントしたい奴と思ったら絡むなよ
意味もなく伸びrだけ
- 415 :
- >>384
functionなら1行で書ける!
と思ったけど、よく見たらどっちも2行かかるな。
Dim A
A = function()
Dim A
sub(ByRef A)
functionのメリットって何だろ?
1個しか返せないし。
- 416 :
- >>415
馬鹿はいい加減黙れよ
- 417 :
- >>415
教えてほしいなら教えてくれと言えば良い
君以外全員わかってるぞ
- 418 :
- >>416
容赦なくてワロタw
>>415
If func(x) Then
とか
func1(func2(a), func3(b))
とか
- 419 :
- >>415
1個しか返せないといっても工夫の問題。
配列で返せば実質何個でも返せるし、Collectionで返すこともできる。
クラスインスタンスを返すなんてことも出来る。
どれも普通にやることだよ。
何を返せば使いやすいかを構造的に考えて人間にとってピンと来るように組めばメンテナンスも楽だし、プロシージャの内容も理解しやすい。
初心者のコードは何をする処理なのか全く分からないことも多いが上級者のコードは考えて組まれてるので理解しやすいんだ。
>>416
>>417
罵倒するだけで内容を書かないんじゃ君らのレベルも押して知るべしだな。
- 420 :
- >>418
むしろ
Function Hoge(Arg() As String) As String()
の方が適切かな。
或いは
Function Hoge(Arg() As String) As Collection
とか。
- 421 :
- >>419
AddressOf で関数を返すことすら出来るのだ
- 422 :
- IF Func() Then
とか
Loop Until Func()
なんてのがSubでは代用しにくい使い方だな (できないとは言わないが)
むしろ普通の数式で
A = Func1() + Func2() + Func3()
みたいに書きたい時の方が、Subに置き換えた時の無駄が多くなりそう
- 423 :
- 2年ぐらい前にもSubとFunctionに違いなんかないと言い張る粘着がいたのを思い出した
- 424 :
- BASICなんだからGOTOだけで十分
- 425 :
- >>421
おう、ここで初めて高度な話を見た。
- 426 :
- ・Sub
・返り値のないFunction
この違いは何ですか?
- 427 :
- subじゃ1個も値返せないじゃん
- 428 :
- 戻り値ないならsubでいいじゃんって話だと思うんだけど俺も一応はそう思う
昔はsubばかりで書いてた
subは単体で実行できるけどfunctionは単体では実行できないという違いがある
functionは他から呼び出さないと実行できないという意味でね。
ここからは俺の好みみたいなもんだけど、
ボタンに直結してるようなエントリーポイント的なものは
subで書いて、それ以外、特に引数を受けとって処理するものは
単体では実行できないことを明確にする意味で全てfunctionにしてる
そう論理的で整合性のある区分というわけではないんだけど。
- 429 :
- >>428
単体で実行できるかどうかはSub/Function の差じゃなくて、引数を取る/取らないの差じゃなかったっけ?
- 430 :
- >>429
正解
Sub foo() '単体実行可能
End Sub
Sub bar(baz) '単体実行は出来ない
End Sub
- 431 :
- あと、実行可能かどうかはpublic/privateで切り分けるべきだろう
- 432 :
- セルに式として関数を入力して呼べるFunctionと呼べないSub
- 433 :
- >>432
あれ、じゃあ何のためにsubって存在するんだ
return 0しなくていいってだけ?
- 434 :
- 基本はfunction
スクリプトとして何かをさせたい時にだけsubで定義する。C言語で言うint main(){}
戻り値や引数のありなしでは切り分けない
と考えると自然と思うんだけど、どうだろう
この考えだと、private subは使うべきじゃないって事になる
- 435 :
- 別に良いんだよ何を使おうと、まあ好きにすればって程度
まあ、ただ論理的に考えずごみを量産するやつはいるな
- 436 :
- >>426
戻り値のないFunctionは存在しない
戻ってきた値を無視することができるだけ
つまり戻り値を格納するためにメモリを必ず使うから、Subと比較して速度とメモリ効率の2点で不利になる
- 437 :
- Excel長老の話って知ってる?
- 438 :
- >>436
メモリ効率ってネタだよね?
- 439 :
- >>433
今から40年以上前、それまでのシーケンシャルなプログラムでは能率が悪いから構造化しようという話しが出て、その時に提唱されたのが「手続き(Sub)」と「関数(Function)」という概念
しかし、教育用として作られたPascalという言語では忠実に実装されたけど、C言語には関数しか用意されなかったし、その後に登場したJavaも関数しかない
結局は言語を設計した人のリテラシーというか、単なる好みで決まったようなもん
今でもたくさんの言語が乱立してるのは、結局はみんな「ぼくの考えたさいきょうのげんご」が作りたいだけと思って、あながち間違いじゃない
- 440 :
- >>438
ネタじゃないよ
リカーシブなプログラムを書いてみればすぐわかる
VBAでもFunctionは呼び出すたびにヒープを最低4バイトずつ消費するから、再帰の最大回数が少ないのは簡単な実験ですぐに確認できる
- 441 :
- >>440
「ヒープ」ってネタだよね?
- 442 :
- >>439
ありがとう!そういう事か
sub便利だけど、便利過ぎてかなり変な事になってるね
subから呼び出すのはfunctionと決めていれば良いんだろうけど、
でもsubからsub呼び出す事もあるから・・・
結局subって意味なくね?
C言語のsub無しが正解のような気がする。
>>441
なんでネタと思うんだ?
- 443 :
- 簡単な実験
Funcの方がメモリをたくさん消費するから繰り返せる回数が少ない
データキャッシュも有限なリソースだから、どちらでもいい時はFuncの方が不利
Sub sub_test()
test_sub (1)
End Sub
Sub func_test()
test_func (1)
End Sub
Sub test_sub(n)
n = n + 1
Debug.Print n;
test_sub (n)
End Sub
Function test_func(n)
n = n + 1
Debug.Print n;
test_func (n)
End Function
- 444 :
- Selenium+vbaを使って
ChromeでWebページをPDF保存することは可能でしょうか?
- 445 :
- >>444
vbaは不要っぽい
http://takuya-1st.hatenablog.jp/entry/2017/06/21/140000
記事が古いから一度試したほうが良いと思う
- 446 :
- >>442
だから構造的に考えて意味的にFunctionが適するかSubが適するかを選択するんだ。
意味的にというのは人間の感覚にとって合った方を採用すべきということ。
Cだってvoidがあるじゃねーの。
無理矢理1を返すとかすれば戻り値が絶対に必要な言語設計だってできた筈。
なんでvoidがあるかといえば、やっぱり意味的に戻り値無しが人間にとってピッタリ来ることがあるからだと思うが。
- 447 :
- 処理結果をpublicで判断するよりは
値を返すほうが使いやすい
- 448 :
- プログラムを一人で作って自分だけが永遠に保守するなら好きなように作ればいい
大規模なアプリをチームで作ったり、他人が修正したりする時には間違いを起こさないようにルールを決める必要があって、
経験上、カプセル化した方が結果的に安全で能率がいいということになっている
そのための手法の一つが変数のスコープを狭くすること、グローバル変数は使わないこと、なんだな
だから結果はどこかの変数に入れるんじゃなくてFunctionで返すんだよ
複数の値を返したいなら設計を見直すべきで、構造体を使うか、1つずつFunctionを分けるか考える
- 449 :
- >>445
SeleniumではなくSeleniumBasic
の間違えでした。
ごめんなさい。
- 450 :
- グローバル汚染はマジでエグいからな
「name」「mail」この変使われてたら超めんどい
>>449
Selenium使えばいいんじゃない
- 451 :
- seleniumってもう使い物にならなくなってなかったっけ
- 452 :
- >>440
ヒープとスタックの違い理解してる?
- 453 :
- byref もあるしな
- 454 :
- >>452
それって日本昔話に載ってる?
今も気にすること?
- 455 :
- 使うスタック量によって再帰での有利不利って理屈の上ではあるだろうけど
現実的な意味ってあるの?
条件によってスタックオーバーフローする「かもしれない」プログラムに対して
引数や返り値を考慮とか再帰深度に気を使うとか、ちょっとVBAで考えられないんですけど
- 456 :
- >>454
SubとFunctionでメモリ効率の違い考慮するレベルなら
- 457 :
- >>454
別に気にしなくてもいいけど>>440みたいなツッコミ入れるならちゃんと理解してないと恥をかく
- 458 :
- >>457
おれも、昔話書きたくなったレベル
z80とか8080とかな8086なんて凄いよな
- 459 :
- ここできいていいのか分かりませんがマクロの組み方で教えてください
「=5月シートA1」
「=5月シートA2」
みたいに引っ張っているセルを
「=6月シートA1」
「=6月シートA2」
みたいに変えるマクロを組みたいんですが
それを毎月自動で7月、8月、と月に合わせて変えるのはどうやるのですか?
理想としては、5月と書いてあるセルを6月と入力し、そのセルをコピペしていくマクロを組みたいのですが、その流れを作っても元の5月だけがコピペされてしまう状態です。
説明が下手ですみません。
- 460 :
- 今月=month(date)
activesheet.range("a1").resize(5).formula="="&今月&"!a1"
- 461 :
- >>459
5月シートをコピーして6月シートにする。
5月を6月に文字列全置換え
処理日によって月を自動判定でもいいが、フォームで値を確認、修正後に実行の方がいいんじゃないかな
- 462 :
- >>460
すみません初心者なので詳しくは分かりませんが、今の月を参照するセルを作り、それをコピペするように組めばいい感じでしょうか。
間違ってたらすみません。
>>461
今まではそうやっていたのですが、それ以外にも、不要な場所を削除して、一番下の数値を一番上に持っていってみたいな作業があるので、その置き換えも合わせてマクロにしたいと思いまして。
- 463 :
- >>462
今月の月を取得して、a1からa5までの数式を置き換えるイメージです。
携帯からなので試せていませんが・・・
- 464 :
- >>463
ありがとうございます。
試してみます
- 465 :
- >>464
文字列の検索や置換は数式にも有効
5月を6月に置換すればいい
VBAは必要ない
- 466 :
- >>459
他の処理はともかく数式に関してはマクロいらない
=INDIRECT(MONTH(NOW())&"月!A1")
- 467 :
- 間違えたわ、こうだわ
=INDIRECT(MONTH(NOW())&"月!A"&ROW(A1))
- 468 :
- なんか、今月にこだわる人多いが説明だと選んだ月のシートからデーターを
持ってきたいだけだろ、勿論INDIRECTを使うことでマクロを使う必要はない
例えば、値を参照するシートとのA1セルに入力規制で1月〜12月を選択して
=INDIRECT($A$1 & "!A" & ROW(A1))
でいいだろ
- 469 :
- >>468
> それを毎月自動で7月、8月、と月に合わせて変えるのはどうやるのですか?
- 470 :
- >>469
自動だったらA1セルをNow()にして表示形式を
月だけにすればいいだけだろ
各セルに設定する関数は簡素に共通化する
- 471 :
- >>470
> なんか、今月にこだわる人多いが
- 472 :
- >>471
今月か選択なんてExcelをちょろって知ってればどっちでもいいんだよ
1っか所変えただけで要は1っか所を変えただけでその月に対応すればよいだけ
こんなのマクロなんか書いたら笑えるレベル
- 473 :
- あら〜ダブって入ったわ すまぬの
- 474 :
- なんかVBA使わずにワークシート関数使えっていうコンセンサスでもあるの?
思い込みと違う?
- 475 :
- >>459
お題は
>理想としては、5月と書いてあるセルを6月と入力し、そのセルをコピペしていくマクロを組みたいのですが、その流れを作っても元の5月だけがコピペされてしまう状態です。
だけどな、マクロを使わないと気が済まないやつっているのかな
- 476 :
- >>474
これでマクロを作るやつのマクロを参考にしたいな
ぜひ作ってね
- 477 :
- >>474
数式だけならファイル形式をxlsxのままにできて安全
同じ機能なら数式で済ませた方が良いだろう
家計簿ならどっちでも良いのは間違いない
- 478 :
- まあなんだな、$A$1この書き方って絶対参照だが良くないんだよな
普通はそのセルに名前を付けてその名前で参照する
例えば「設定月」みたいな名前ね
- 479 :
- VBAのスレでマクロつかうなとか(笑)
- 480 :
- >>472
>>462 > それ以外にも、不要な場所を削除して、一番下の数値を一番上に持っていってみたいな作業があるので、その置き換えも合わせてマクロにしたいと思いまして。
- 481 :
- シートを左のものからきっちり順に印刷する(印刷指示を出す)vbaありませんか?
スプール云々はプリンターの詳細設定弄れなくなってるのでvbaでどうにかなればしたいのですが・・
- 482 :
- Excelの関数や機能も知らん奴がVBAでマクロを作るか
少しは勉強しろよ、ってか
運転できないやつが、自動運転を作るみたいなもんか?
ってか参照で十分なものを何でマクロ(笑)
- 483 :
- >>482
>>459 > 毎月自動で7月、8月、と月に合わせて変える
>>468 > 今月にこだわる人多いが
>>462 > その置き換えも合わせてマクロにしたい
>>472 > こんなのマクロなんか書いたら笑えるレベル
一部読み飛ばして回答してしまうのはなんなのネタなの
- 484 :
- >>480
すまないが、そんなのどうして関数でできないと思うんだ?
ちゃんと説明すれば?、今まで書いているのはあまりにも簡単な質問で
関数で十分なんだが
- 485 :
- >>483
別に、マクロで提案してみたら
- 486 :
- 自動車つくれなくても、つくってもらって乗ればいいじゃん
- 487 :
- >>486
でも、企画があってな わけなわからん奴の作った自転車に
乗れるか?
責任は運転者だよ、関数は規格通りだな
その自転車がすごきゃいいよ、単に危ないだけじゃな
- 488 :
- >>483
で、お前は何ができるんだ?
何が気に障った?(笑)
- 489 :
- >>483
VBAで提案できないやつが・・・・
ネタだよな・・関数なら即座なのに
- 490 :
- >>489
今月にこだわっててもおかしくないし
一連の流れをマクロにしてその一部の質問してるわけでしょ
だから>>468も>>472も的外れって話
訂正するわけでもないのに再アンカをしかも連投するってせっかちすぎない?
- 491 :
- >>490
今月とかどうでもいいんだよ
単に参照すればいいだけ、それで質問者の意図に対応できないか?
自分の主張じゃなく、何が正しいかで提案するんだよ
VBAで作れば何でもできるさ、でも単に絶対参照でいいものをこねくり回すなよ
- 492 :
- >>491
次は話ループさせんの?
「毎月自動、VBA」という質問の前提をこねくり回してるのはそっちでは?
- 493 :
- 普通のExcelスレはあんなに紳士的なのに・・・
- 494 :
- 何だろうな、普通に絶対参照すればいいものをVBA・VBAって叫ぶの
怖いは
- 495 :
- >>494
>>459>>462でマクロでやりたいと言ってるし、
マクロ以外の回答に対してノーリアクション
数式での回答を求めてないのだろう。結果を求めるだけじゃなく、マクロ自体を書きたいという質問者もいるわけだしな
あまり押し付けるのもどうかと思う
もちろん一般的な場合は君のやり方が正しいのは明らか
さすがにそれが分かってない人はいないだろう
- 496 :
- >>462
削除等はマクロで、他シート参照は数式でいいんでないの
- 497 :
- 元の前提無視して絶対参照・絶対参照って叫ぶの
怖いは
って言えばいいのかな
- 498 :
- >>496
削除が必要って単なる思い込みではないのかな
Excelの使い方もわからないのってVBAって魔法の玉手箱じゃないの
でなければ、質問者に対する最適の解をさっさとVBAで示せばいいんだよ
- 499 :
- 元々の質問を見る限り、詳細が無いのでVBAで解決すべきか数式で解決すべきか判断できん。
逆に言えばこれだけの情報でVBAを必要無いとか言ってしまえる人って初心者とまでは言わないけど大したスキルは無いんだろうなと思ってしまう。
- 500 :
- >>499
そうか 君はプロなんだね(笑)
- 501 :
- >>500
初心者は自分の状況を上手く説明出来ないし、それはしようが無い。
一方回答する方も、初心者は自分の狭い土俵で回答しようとするんだよね。
- 502 :
- >>501
いまだにVBAでの回答すらないけどね
- 503 :
- >>502
俺はこんな質問に回答しないよ。
何処の掲示板でもそうだけと面白いテーマじゃなきゃ回答しない。
俺が回答する必要も無いだろう。
>>460とかを見てどうにか頑張れば良いんじゃね?と思ってる。
- 504 :
- 技術レベルは大したことない問題だけど最近回答したのは>>284だな。
テーマとしては面白いから。
- 505 :
- てか>>464で終わっとるやろ…
- 506 :
- >>498
むしろ思い込み(というか自分の都合のいいように解釈)してるのはそっちなんだよなぁ
- 507 :
- >>503
君に、回答を求めてないよ
俺も、VBA の回答は基本的に出さない
まあヒントだけだな
いや〜これのマクロを作る奴見てみたい(笑)
- 508 :
- というか>>499に書いた通り、状況を判断する材料が少ない。
例えば月のシートが沢山あって、それぞれのシートの集計結果を集計シートで閲覧したいという状況なら数式の方が良さそうだ。(それでも情報が足りないから「良さそう」としか言えん。)
- 509 :
- >>507
じゃあ、俺に>>502のレスするんじゃね―よw
- 510 :
- >>499
ほんそれ
ど真っ赤で力説してるのが滑稽やなw
- 511 :
- >>509
意識過剰だろ(笑)事実を書いただけ
- 512 :
- VBAでやるか数式でやるかの判断はこのスレでやる話じゃないだろ
ここはVBAのスレだぜ
- 513 :
- >>511
???
">>501"を付けるなと言ってる。
- 514 :
- >>481
dim ws as worksheet
for each ws as thisworkbook.worksheets
ws.printout 〜
next
- 515 :
- >>514
大荒れの中レスありがとう
来週試してみます
- 516 :
- >>515
ごめん for each ws in の書き間違い
- 517 :
- ん?
全シート印刷じゃダメだったの?
- 518 :
- >>513
ふん、おれ500 お前が笑えるレスつけただけだろ
- 519 :
- >>517
もちろん全シート一括で印刷かけてるんですけど、スプール設定?の関係で重いシートの印刷が後回しになるので10ページ1ページ2ページの3シートのファイル印刷すると10ページのシートが一番最後に印刷されちゃって不便なんです
- 520 :
- ListBox使ってるんですけど、たまに表示がバグります
薄い横線がListBox内の全ての行間に表示されちゃうんです
行のフォーカスを動かすと、動かした範囲ではこの変な横線は一旦消えるんだけど、
何かをするとまた横線があらわれる
こういうのって何が原因かわかりますか?
再現性がそう高くないので、対策しづらいです
表示がおかしいだけでプログラム自体は問題なく動きます
- 521 :
- >>520ですけどもしかしたら直ったかもしれないです
multiSelectをfmMultiSelectExtendedに設定してるんですけど、
UserForm Initialize内で設定するのではなく
プロパティウィンドウで選択して設定するようにしたら今の所出ないです
再現性があれなんで確実とは言えないんですけど
- 522 :
- >>520
ListBoxに限らず、Excelのオブジェクトは変だよ。
そんなもんだと思う。
俺もこんな現象に遭遇した。
・印刷プレビュー直後に、リストボックスを操作できなくなる。(シートを切り替えると直る。)
・MSクエリやADOを使うと、ボタンやテキストボックスの位置が、見た目と合わなくなる。
[コマンドボタン] 何もない部分
↑ ↑
ここにボタンがあるのに ここを押さないと反応しない
- 523 :
- あと、なんじゃそりゃ!???? と思ったのが、
[コマンドボタン]
↑
押すと・・
→→→ [コマンドボタン]
↑
ボタンが逃げる
多分、押す前のボタン画像が左にあって、
押した後の(凹んだ状態の)画像が右にあるんだと思う。
- 524 :
- >>523
論理的に解決できる方法がないから山勘に頼っていじってみて
運良く解決できたらもうけもんってことですかね
表示がぶれると、使ってる人が、このプログラム大丈夫かと心配し始めちゃうんで
できるだけ避けたいところです
- 525 :
- >>518
???
バカなの?
お前が500なのもお前に俺がレスしたのも誰でも分かるわ。
>>502のレスにおいて">>501"を付けるから俺に回答を求めてると判断されても仕方ないだろが。
- 526 :
- >>525
笑えるな、答えられないやつに答えを求めないって(笑)
- 527 :
- まあ、プロさんのようだから答えられないの恥ずかしいのか(笑)
あげとくは
- 528 :
- >>527
煽ってもお前のレベルが低いのは変わらんぞw
相手のレベルを推しはかれないのは相手よりスキルがかなり低いからなんだが。
- 529 :
- まだやってんの
最近多い無関係の人が巻き込まれるような事件起こしそう
- 530 :
- >>528
あら、単に引きこもりのカスでろくなの作れんて思ってるよ(笑)
- 531 :
- >>530
そりゃスキルの無い奴は人を評価出来ないからなw
- 532 :
- データベースでエクセルのフィールド(3)を下に読み取っていって、入ってる型が文字列以外の物が入っているかチェックしたいんですけど何かないですか?
- 533 :
- >>532
vartypeがvbStringかどうか
typenameが"String"かどうか
など
- 534 :
- >>532
わざとやってみてどうなるか確認してみよう
先頭何レコードで判断するんだっけ?
- 535 :
- >>532
早速やってみたけど、逆のパターンである
「先頭に数値が入っていて途中から文字列に変化した」場合は判定できた。
具体的には数値部分だけ読み込んで文字列の部分はNULLになった。
「先頭に文字列が入っていて途中から数値に変化した」場合は全部文字列扱いになったので厳密には判定不能。
- 536 :
- 初心者なので意味がわかりづらかったらすみません
まず、やりたいことは
1.ユーザーにB2〜E2あたりに文字を入力してもらう
2.それを5行前後繰り返す
3.この後にボタンを押してもらう
(以降マクロ処理)
4.入力して貰った行の各左セル(A列)に営業日(月初)を入力する
入力内容を下の行にコピペして、A列日付だけ翌営業日にする
それを月末日まで繰り返す
これを実現したい場合、営業日付をどう表示し、どう繰り返せばよいか検討がつきません
アドバイス頂けませんでしょうか
日付に関してyyyymmのみユーザーに手入力して貰う予定で、それを利用できるかなと思っています
- 537 :
- >>536
Sub foo()
コピー元_行数 = Cells(Rows.Count, 2).End(xlUp).Row - 1
Range(Cells(2, 2), Cells(コピー元_行数 + 1, 5)).Copy
処理年 = InputBox("処理する年を四桁で入力してください", "", Format(Date, "yyyy"))
処理月 = InputBox("処理する月を1桁で入力してください", "", Format(Date, "m"))
'ここに上記が数値以外なら終了させる分岐をかます。めんどいのでしてない
For i = 1 To Day(DateSerial(処理年, 処理月 + 1, 0))
Cells(コピー元_行数 * (i - 1) + 2, 2).PasteSpecial
Range(Cells(コピー元_行数 * (i - 1) + 2, 1), Cells(コピー元_行数 * i + 1, 1)).Value = _
DateSerial(処理年, 処理月, i)
Next
End Sub
- 538 :
- >>535
上にあるようにvartypeだとだめかね?
- 539 :
- 教えてください。
ActiveCell.EntireRow.Copy Destination
これで「任意のセル選択中で1行コピー」になりますが、
改造して「任意の複数セル選択中の複数行をコピー」に変えたいんですがわかりますか?
- 540 :
- 仮面ライダー本郷猛は改造人間である。彼を改造したショッカーは世界制覇を企む悪の秘密結社である。仮面ライダーは人間の自由のためにショッカーと戦うのだ!
- 541 :
- >>539
Selection で自己解決したんですが、
ThisWorkbook.Worksheets("sheetA").Activate
Selection.EntireRow.Copy Destination:=ThisWorkbook.Worksheets("SheetB").Range("A57:A62")
ThisWorkbook.Worksheets("SheetB").Activate
Range("A3:I4").Select
End Sub
で所定の6行のスペースにペーストするんですが、選択セルが5以下だと重複して貼り付けられます。
重複しない方法を教えてください。
- 542 :
- コピー先のセルのアドレスをシンプルに"A57"に変えるだけでいいと思う
- 543 :
- >>538
それだと対象のブックを開かなきゃダメじゃん
- 544 :
- 【速報】金券五百円分とすかいらーく優侍券をすぐもらえる
https://pbs.twimg.com/media/D8I_sqPU0AEizjq.jpg
@ スマホでたいむばんくを入手
A 会員登録を済ませる
B マイページへ移動する
C 招待コード→招待コードを入力する [Rirz Tu](スペース抜き)
今なら更に4日18時までの登録で2倍の600円の紹介金を入手
クオカードとすかいらーく優待券を両方ゲットできます。
数分の作業でできますのでご利用下さい。
- 545 :
- ここにも来たかフィッシング詐欺
- 546 :
- >>544
TVCM見た後に入れた
- 547 :
- >>542
できました。ありがとうございます。
- 548 :
- 直前に開いたファイルのキャッシュ的なものを参照して情報を取得することってできますか?
例えば直前に開いて印刷して閉じて消去したファイルのA1セルに記載の値を別ファイルのB1セルに転記する、みたいな
- 549 :
- >>548
そんなの知るか
- 550 :
- >>548
必ずバックアップしてから開くようにバッチファイル作ればいいだけじゃね
- 551 :
- >>549
知らないならわざわざ書き込まなくていいよw
- 552 :
- 印刷時には転記先のファイルが必ず開いてる状態なの?
それならWorkbook_BeforeCloseで閉じる直前に転記は?
- 553 :
- これはそんなの知るかという気持ちもよく分かる。
工夫次第でどうとでもなるけど、そういう問題かどうかをはっきりさせるべき。
そういう仕組みを作ることなくできるかと言われれば、できないと答えるだろう。
工夫でそういう仕組みを作りたいというなら、それについて自分の考えを述べるべきだ。
VBAの問題じゃなくて考え方を考える問題なんだから単純なスキルの問題ではない。
- 554 :
- 事前に、ファイルを閉じる前や消す前に準備しておけばどうともできる
他人が使ったパソコンをこっそりのぞき見したいなら、それはかなり難しい
不可能じゃないけど、現時点では動機が不明で教えるべきじゃないと思われるので書かない
- 555 :
- >>
- 556 :
- 日・時・分が漢字で入力されたエクセルの文字列データを、時間データに変換したいです。
どのようにすればよいでしょうか?出来れば、マクロでお願いします。
よろしくお願いします。
例)
--
2日8時間 → 56:00
2時間30分 → 2:30
5分 → 0:05
4時間 → 4:00
- 557 :
- ユーザ関数で……
標準モジュールに下記のコードを入れ、適当なセルに =fTimestamp(A1) の様に式を入れて下さい。
式を入れたセルの書式はユーザ書式で [h]:mm としてください。
Function fTimestamp(sData As String) As Date
For i = 1 To Len(sData)
sOne = Mid(sData, i, 1)
If IsNumeric(sOne) Then
sNum = sNum & sOne
ElseIf sOne = "日" Then
fTimestamp = fTimestamp + Int(sNum)
sNum = ""
ElseIf sOne = "時" Then
fTimestamp = fTimestamp + Int(sNum) / 24
sNum = ""
ElseIf sOne = "分" Then
fTimestamp = fTimestamp + Int(sNum) / (24 * 60)
sNum = ""
End If
Next i
End Function
- 558 :
- >>556です。
>>557を試したところ、
2日8時間 → 56:00
2時間30分 → 2:30
5分 → 0:05
4時間 → 4:00
は上手くいきましたが、秒変換がうまくいきません。
例)
5分4秒
>>557
に単純に、
ElseIf sOne = "分" Then
fTimestamp = fTimestamp + Int(sNum) / (24 * 60 * 60)
sNum = ""
を追加しての結果です(^^;)
何がいけないのでしょう?
- 559 :
- >>558
間違えました。追加したのは
ElseIf sOne = "秒" Then
fTimestamp = fTimestamp + Int(sNum) / (24 * 60 * 60)
sNum = ""
です。お手数をおかけしますが何方かご助力いただけると助かります(^^:
- 560 :
- ファイルの履歴とか拾うのかな?
- 561 :
- >>560
よくわかりませんが、単純にエクセルのセルに文字列で
◯時間〇分●秒単位で入力されていて
その列の合計と平均を求める感じです。
- 562 :
- 文字列形式で入力されているので先ずは数値に変換しないとどうにもなりません。
- 563 :
- >>556
~
>>559
です。わかりにくいので、再度まとめ直させていただきますと(_ _)
以下の通りです。
日・時・分が漢字で入力されたエクセルの文字列データを、時間データに変換したいです。
どのようにすればよいでしょうか?
例)
2日8時間 → 56:00
2時間30分 → 2:30
5分 → 0:05
4時間 → 4:00
以下のマクロを参考にしたところし分までは成功しました。
- 564 :
- >>563 の続きです。
ユーザ関数で……
標準モジュールに下記のコードを入れ、適当なセルに =fTimestamp(A1) の様に式を入力。
式を入れたセルの書式は [h]:mm
- 565 :
- >>564の続きです。
Function fTimestamp(sData As String) As Date
For i = 1 To Len(sData)
sOne = Mid(sData, i, 1)
If IsNumeric(sOne) Then
sNum = sNum & sOne
ElseIf sOne = "日" Then
fTimestamp = fTimestamp + Int(sNum)
sNum = ""
ElseIf sOne = "時" Then
fTimestamp = fTimestamp + Int(sNum) / 24
sNum = ""
ElseIf sOne = "分" Then
fTimestamp = fTimestamp + Int(sNum) / (24 * 60)
sNum = ""
End If
Next i
End Function
- 566 :
- >>565の続きです。
次に分まで(例 5分2秒)実現するために
以下を感で追加してみたところ失敗しました。
ElseIf sOne = "秒" Then
fTimestamp = fTimestamp + Int(sNum) / (24 * 60 * 60)
sNum = ""
無理を言って申し訳ありませんが、何が悪いのかアドバイス
いただけると幸いです。何卒よろしくお願いします。
- 567 :
- >>566
次に秒までの間違いでした(_ _)
- 568 :
- >>566
なぜか
(24 * 60 * 60)
の代わりに
86400
にするとうまくいく感じです。。。
なぜ???
- 569 :
- >>560
> 消去したファイルのA1セルに記載の値
なので履歴じゃダメだろうな
マジでなんのためにそんなことをしたいのがさっぱりわからん…
- 570 :
- >>537
遅くなりましたがありがとうございました!とても参考になりました
おかげさまでメイン処理はひとまず形になりました
ツール完成させられるよう頑張ります
- 571 :
- >>570
こんなこともわからんような馬鹿が作ったものを使わされるとか
- 572 :
- >>571
人間性に問題のある君と同じ職場よりは大分マシだろう
- 573 :
- いやいや
ここは御大層に「ツール」とか書かれて吹き出す場面だろ
- 574 :
- ここは、あれだ。プークスクス、マジ受けるんですけど!というやつだ。
- 575 :
- Use after free攻撃のやり方を聞かれてるのと一緒だよなこれ
- 576 :
- まあな、Excelの標準機能で出来ることも知らん奴が、作りたいものを考えて質問するんだよな
だけど、ちょっと知ったかぶってどんなプログラムを作りたいとか書くけど
普通にExcelの機能で出来ることも、質問してるんだよな
動作仕様をかける奴は普通VBAのマクロも作れる
作れないやつの動作仕様ってごみなんだよな、何がしたいかだけ書けよと思う
- 577 :
- >>576
日本語でおk
- 578 :
- >>577
すみません、日本語難しいどこですか?
- 579 :
- >>578
天丼やめろw
- 580 :
- 日本人の俺でもわからんw
- 581 :
- 標準機能が嫌いなんだろう。
あとは、VLOOKUPでも出来るけど、
遅いし面倒くさいからADO+SQLでやるとかさ。
- 582 :
- ファイルの保存先の権限がなくて、別のユーザーのアカウントとパスワードで保存できる??
- 583 :
- VBA関係ある?
- 584 :
- あるよ
- 585 :
- ないあるよ
- 586 :
- どうやるんだそれ・・。
OS上でOSでも動かすのか?
- 587 :
- そういや、Windows 3.1はMS-DOSの上で動いていたっけ…
- 588 :
- Win3.1はミドルウェア
- 589 :
- c:¥> win
だっけ?
- 590 :
- フロッピー12枚だか14枚だか組みだったな
- 591 :
- >>582
それってネットワーク先の話?
共有フォルダでの読み書きとか?
結構難しい。
- 592 :
- excelのセルに記載された文字を、
PDFに位置指定して、テキスト挿入できますか?
- 593 :
- できます
- 594 :
- >>593
できるかどうかを聞いているのではない。
やり方を聞いておるのだ。
- 595 :
- ※わざとです
- 596 :
- >>593
a=cells(1,1).value
b=cells(2,1).value
@abc.pdfをオープン
A3p目の左上を起点に左から100、上から50の位置に、8ptで幅20の黒色で、aの内容のテキスト挿入
if b=1 then
B3p目の左上起点の左から200上から300の位置に、黒色の縦10幅10の円を挿入
else if b=2 then
C上記Bの位置違いパターン
endif
この@ABを教えていただきたいです。
- 597 :
- PDF直接作るの超めんどいぞ
Excelで位置確認ずらしていきながら合わせるって方法取ったほうが良い
- 598 :
- >>597
マジかぁ
pdfは書式が既にあって、それをまずエクセル化するところからしなくてはならない
excelのセルから抽出し、wordに入力するのも大変?
- 599 :
- >>598
Excel VBAでワードを開く方法がある
https://tonari-it.com/excel-vba-word-application/
wordの細かい所をどこまで触るかによると思う
単純作業なら全然難しくないよ
- 600 :
- >>599
ありがとう、ちょっと読み込んでみる
やりたいことは要は、エクセルにずらーっとリストがあって、その内容を、
雇用契約書の穴埋め書式みたいな他のファイル(エクセル、ワード、pdfあり)に展開したい
展開内容はセル内容の挿入と、履歴書の男・女みたいに、○を挿入する形がある
- 601 :
- ○で囲むのは止めたほうが良い。ずれる
以下のような形に変えれるなら買えたほうが良い。
□男 ?女
- 602 :
- 文字化けした。
女の左にあるのはチェックマークね
- 603 :
- >>601
いや、書式はもう決まってんのよ
変えれるものじゃないんだ
□の方が楽だけどなぁ
- 604 :
- >>599
参照設定してるのに、CreateObject(“Word.Application”)って何?
- 605 :
- >>603
そうか、じゃぁ・・・
頑張って!!
- 606 :
- >>604
参照設定はあくまで参照先ライブラリの型をインテリセンスや型指定でネイティブに使えるようにするための設定
ワードのアプリケーションのインスタンスを生成しないとエクセルからワードの操作はできない
- 607 :
- >>606
そういうことじゃなくて、参照設定でその書き方? っていう。
それやると、レイトバインドとアーリーバインド、どっちになるの?
- 608 :
- >>605
最終手段はワードとpdfは画像化してエクセルに貼り付けて、そこでマクロるかな…
- 609 :
- >>606
何か変だと思って試したけど、
こうか
Dim w As Word.Application
Set w = New Word.Application
こうじゃない?
Dim w As New Word.Application
- 610 :
- >>607
>>609
参照設定したときに参照先ライブラリのクラスについて必ずNewキーワードでインスタンス生成しないといけないという決まりはない
参照設定して変数にワードのアプリケーション型を適用してる時点でアーリーバインドになる
Newキーワードで生成したインスタンスのポインタを変数で受けてもCreateObjectから返ってくるポインタを変数で受けても同じ
- 611 :
- というか、参照設定時のインスタンス生成にNew使わないと駄目なんて決まりがあったら、GetObjectで他アプリのインスタンス取得して操作したいときはどうなるのって話になるよな
- 612 :
- >>610-611
わざわざ参照設定してるのにCreateObject(…)するアホがいるとは…
- 613 :
- CreateObjectも参照設定もimportだから、どっちか一つでいいんじゃないの?
両方やっても問題ないけど意味はないと思う
あんまリンク内容見ずに貼ってしまった俺が悪いな、すまん
- 614 :
- 山椒設定はライブラリバージョン古いPCじゃ即フリーズじゃなかったっけ
- 615 :
- 配布するなら、参照設定でプログラミングしてテストして、参照設定外して createobject方式にして配布
配布先で参照設定か外れることがまれによくあるので、こうしとくと無難
- 616 :
- >>615
そっすね
- 617 :
- えー参照設定外れることあんの
まぁいっか・・・・
- 618 :
- 参照設定はあまり良い挙動をしない。あと挙動が変な時に発見し辛い
createobject()書いたほうが良い
- 619 :
- >>608だけどpdfを画像に変換し、エクセルに貼り付けて、テキストボックス挿入がクソ楽だった
- 620 :
- ソースファイル(.bas + .cls)配布のときは参照設定はやりづらいからな
- 621 :
- >>618
そそ
参照設定外れても、それとは全く関係ない所がエラーになって止まる
枯れたプログラムだったり慣れてくると気づくけど、そうでないと解決に遠回りする
それらも覚えておくべし
- 622 :
- >>618のおっちゃんが、createobject()書いたほうが良い、と書いてるけどなぜ?
- 623 :
- 参照設定が実はおまかんだから
今のPCで動いてても次の環境や他のPCで動く保証がない
ってことでしょ?
- 624 :
- >>623のおっちゃんが、おまかん、と書いてるけどどういう意味?
- 625 :
- おまえのかあちゃん
- 626 :
- 参照設定までするのにVBAでする必要ある?
なんでそこまで意地になってVBAなんぞに拘るの?
- 627 :
- >>624
お前の環境(が悪い)
スマホゲームで動作が悪い時に言われる事がある
おまかんとかおれかんとか
>>626
全くこだわってないよ
最初から別言語やツールが良ければそれらで作ってる
Excelで99%出来上がってるのにここから戻るってのがありえないってだけ
- 628 :
- >>626
VBAスレだし
>>627
それスマホに限った話じゃないよ
- 629 :
- >>628
そうか、スマン
いつから流行りだしたんだろう
- 630 :
- VBAに新機能がつかないのはもう諦めた
でもIDEはもうちょっと進化させるつもりないん?
と思って調べてみたらアドインでなんとかする方法あるんだな
使ってる人いる?
- 631 :
- .NET使えるから最新環境で作成できるぞ
一回試した後は一回も使ってないけど
やっぱファイルと一体化してるのは超便利だ
- 632 :
- グラフのプロットエリアの位置が設定出来ん!
ググったら、デバッグプリントするといいよって書いてあったので、
やってみたら、本当に出来た。
何でそんなんでOKなのかワケワカラン。
- 633 :
- >>629
DLL HELLならVisualBasicのVBXが元祖だよ
- 634 :
- >>630
むしろ開発環境は意図的に使用困難にしていく方向じゃないかな
VBAの実行はできるけどVBEは廃止、どうしても編集したい場合は旧バージョンを使ってね、くらいはそろそろ覚悟しといたほうがいいかも
- 635 :
- そんなあほな
- 636 :
- MSとしてはそうしたいのは透けて見えるけど、ここまで広まったものを軌道修正するのはなかなかねぇ
- 637 :
- ええ…
代わりになるものがあるならともかく
- 638 :
- 代わりはMSがこれまでにいくらでも提供してきただろう
お前が新しいものから目を背け続けてきただけだ
- 639 :
- >>626のおっちゃんはVBAをバカにしてるけど
じぁあVABを使わないなら何の言語でするつもりなの?
- 640 :
- パワーシェルな
- 641 :
- >>640のおっちゃんはパワーシェルと言ってるけど
便利なエディターとかはあるの?
- 642 :
- >>622, >>622
爺お得意のバッドノウハウだから気にしなくていいよ
- 643 :
- >>641
PowerShell ISEでいいだろ
ただ>>640のおっちゃんはまともに使ったことないと思う
PowerShell + Excel って結構色々ハマりポイントあるし
- 644 :
- たかがファイルの内容編集に
広範なシステムアクセスを行うPowerShellをつかわにゃならんのか?
- 645 :
- Ruby の方が、バグらないから良い
それに、Rubyスクリプト内で、PowerShell コマンド・スクリプトも実行できるし
- 646 :
- 外部のプログラムと
シェル用にガチガチになったExcelフォーマット別々に扱うのも不便そうだ
ExcelVBAこそオブジェクト指向の体現であったのか
- 647 :
- >>645
もうすぐ無くなる言語勧めるのやめろ
- 648 :
- >>647のおっちゃんはRubyはなくなるみたいなこと言ってるけど
人気じゃないの?Web関連の仕事もRuby案件が一番人気と聞いたこともあるし。
- 649 :
- >>643のおっちゃんはPowerShell ISEと言ってるけけど
そんなのどこでダウンロードできるの?
- 650 :
- 仕事で使うPCにはまず入っているExcel VBAのエディタこそダウンロード不要で汎用性あると思うけど
- 651 :
- 入ってる入ってないってそんなに問題か?
- 652 :
- >>648
一時流行ったし最先端の時期もあったけど、rubyを開発した「まつもとゆきひろ」がサボりにサボって他言語に抜かれまくった
今は全く人気がないし性能も悪い
ただ、保守案件が多少残っているので、ruby使っている人は保守案件をこなしながら他言語を覚えている状態
githubユーザーの割合
https://career.levtech.jp/files/img/guide/knowhow/files/oldthing.png
あくまでgithubのプロジェクト
web開発の主流になっているphpは山程使われている
>>650
テキストエディタと変わらんよ、すっげーしょぼいよ
汎用性ではなく、何も出来ないといったほうが正しい
atomやsublimetext辺り使ってみると分かると思う
- 653 :
- >>651
金融系とか外部プログラム不可の業種とかあるんだ
最初から入ってるというのは大きなメリット
- 654 :
- >>651のおっちゃんはニートですね。
会社のPCは2流以下の企業以外はインストール禁止がほとんど。
- 655 :
- >>652
そうですか
じゃRubyやめよう
PHP勉強する
もともとRubyは糞言語と思ってた
「まつもとゆきひろ」のおっちゃんは開発者によけいな負担をかけさせやがって
- 656 :
- >>652
そのグラフ、みんな下がってるけど今は何が上がってるの?
結局C#とかJava?
- 657 :
- >>656
https://www.tiobe.com/tiobe-index//
業務用のjava・C系列、機械学習のpython、webバックエンドのPHP・フロントのjs
この辺が固定。特にjavaは強い
明確に上がっているのはSwiftぐらい。iphoneアプリ開発用と思うけどあんまり知らない
- 658 :
- >>415
デコレータパターンあたりでググると
幸せになれるよ
- 659 :
- >>653
外部プロクラムなんて金さえかからなきゃ申請して不可になることは少ないよ。
Visual Studioは普通入れられる。
(支店とかは知らんけど。)
>>654
ご愁傷様としか言いようがないね
- 660 :
- そもそもVBAが廃止になっら
MSのエクセル使う意味ないわ
365の更新やめるだけ
- 661 :
- 同じ議論ばっかだなあ。
今までの議論でVBAが一番有利なのは既に何度も語り尽くされてる。
Excel上で余計な申請などせずに、何処でも汎用的に1ファイルで扱えるのはVBAのみ。
汎用実行ファイルの作成の代わりにVBAでやるのはダメだけどね。
殆どの議論が土俵を間違えてる。
- 662 :
- PowerShell ISEがどこでダウンロード出来るかっていう質問はこのスレを象徴する質問だな
- 663 :
- 例えばVBAでは無理な処理はC#なんかを使う。
そうすると参照設定が必要になったり、汎用的じゃ無くなったりする。
それは仕方の無いことだ。
けど、上の方で参照設定の議論が出てるけど、上級者で実行時バインディングにする一番大きな理由はコード使用者に参照設定するよう説明を付けなければならない点にあると思う。
ソースコードだけで完結しないのを良しとしないわけだね。
そういう点からするとVBAのコードだけで完結しないのは一歩後退という感じがするわけ。
勿論、処理そのものがVBAでは無理なものは他言語でやるのは当然のことだけどね。
- 664 :
- PowerShellは残念ながら殆どメリットになる所が無いと思う。
C#ならVBAではどうにも無理な処理をExcelファイルに統合出来る。
汎用性からは一歩後退するけど1ファイルにはなる。
PowerShellでVBAにはどうにも無理な処理というのがそもそも殆ど思い付かない。
その上、1ファイルに統合出来ない。
正に土俵が違う感じ。
- 665 :
- PowerShellはIDEがカッコイイ
- 666 :
- PS好きだけどこれ以上はスレ違いになるのでやめよう
- 667 :
- VBA がいいのかそれとも PowerShell や C# がいいのかはそれこそケースバイケース
VBA が絶対有利と言い張る ID:xU3mv9gpd みたいな奴がいるから毎回グダグダの議論が繰り返されてるだけ
- 668 :
- >>667
ケースバイケースだが有利なのは当然。
土俵を限定した専用言語なのだから。
サクラエディタのマクロはそれ用のjavascriptとライブラリが有利、秀丸には秀マクロが有利なのと同じ。
頑張ればサクラエディタの拡張用にPowerShellで何か書けるかもしれんが、そんなことする奴がいるか?
- 669 :
- 1ファイルの人を納得させるのは無理なんだから諦めよう
職場のPC環境も今後変わっていくものだしそれを邪魔しないなら後は何でも良い
- 670 :
- >>649
本気で訊いてるの?Vista 以後のWindowsに標準で付いてるよ……orz
- 671 :
- ケースバイケースって書いてるのにまだ有利なのは当然とか言うアホはどうしようもないな…
100歩譲って有利なケースが多いと言うならまだしも言い切る辺り>>669の言うのが正しいんだろう
- 672 :
- 日本語の分からないアホはどうしようもないな。
有利≠絶対にそうしなければならない。
有利なケースが多いことを有利と言っているのが分からないんじゃ話にならない。
- 673 :
- まあ、PowerShellが有利なケースなんて見たことが無いけど。
- 674 :
- Excelファイルを作るという場合においてVBAが有利かと言えばそんなことは全く無い。
Excel上で作る場合ぐらいだろう。
VBAが有利になるのはあくまでExcel上から動かすからだ。
土俵を限定しているということはそういうことだ。
そういうことを理解出来ない人が多い。
- 675 :
- >>674
>Excelファイルを作るという場合においてVBAが有利かと言えばそんなことは全く無い。
え、じゃあ何で作るのが有利なの??
- 676 :
- >>675
その処理を実装する言語でしょう。
Excel上で実行しないなら、例えばPowerShell上で某かの処理を実装し、その中でExcelファイルを作成したいならPowerShellで実装すべきでしょう。
Rubyで某かの処理を実装し、その中でExcelファイルを作成したいならRubyになるでしょう。
VBA以外の大抵の場合、Excelファイルがメインなのでは無く、某かの処理がメインでしょう。
- 677 :
- なんで「ファイルを作る」話になってるの?
- 678 :
- >>677
他言語を主張する人は、自分目線でそういう土俵を考慮しない人が多いという話。
ここはExcelVBAのスレだから最初からExcel上で実行することが前提になってるし、最初からの単体実行ファイルや単体実行スクリプトに比べてExcelが介在しない点について汎用的でないことが前提になっている。
(VBAでExcelファイルとは無関係な汎用処理を実行させることは可能でも、その点で有利を主張する奴はいない)
そういう前提である以上、他言語との比較では他言語はExcel上で実行する立場で有利不利を論じなければならないからVBAが有利なのなんて当たり前でしょ。
そもそもがVBAが有利な土俵なんだから。
- 679 :
- VBAの場合、Excel上でファイルを作るのが前提。
他言語でよくやられてるExcel上では無い所でExcelファイルを作るというのはVBAからすると最初からスレチになっている。
- 680 :
- それファイルを「作る」って表現でいいの?
- 681 :
- >>676
RubyでExcelインスタンス作るとか、処理が例外的すぎるだろう
そんなニッチな場合なら何でやってもいいのは言うまでも無いしそれをわざわざ中心に語る君は相当変だよ
- 682 :
- >>680
普通は作るとは言わない
バカが踊り狂ってるのを冷ややかな目で見てるのがよろし。(またはNG行き)
- 683 :
- まあでもお前らもExcelに組み込まれてなかったらこんなクソ言語使わないでしょ?
- 684 :
- >>683
当たり前だろwww
- 685 :
- 言語が糞より開発環境が糞だな
- 686 :
- 1ファイルならVBAってのは理解出来る
外部参照までするのにVBAってのはなんで?ってなる
余計なのがあるから渡される方も怪しむ
- 687 :
- >>672
> 有利なケースが多いことを有利と言っている
お前はまず日本語の勉強からしろよw
- 688 :
- >>683
クソとまでは思わないけど最近のモダンな言語に比べたらちょっと面倒だなって思うことが多いわな
- 689 :
- >>686
だからケースバイケースだって言ってるでしょ
測定器から読みだしたデータから簡単なレポート作るならVBAがいいケースもある
その際に測定器とのやり取りのためにメーカー提供のDLL参照するとか
- 690 :
- >>687
それを言うなら「有利なケース」が既におかしい。
最適なケース、もしくは適したケースが正しいだろ。
お前の>>671に合わせたらそうなっただけだよ。
- 691 :
- >>681
そうじゃなくて、ここは汎用言語じゃ無いVBAのスレだから比較するならVBAで想定されている利用に限ると言っている。
それ以外で比較しても意味が無い。
だからVBAの土俵に合わせて貰わないとな。
汎用言語としてVBAを使うという話ならVBAが優れているなんて言う奴はいない。
- 692 :
- Excel上でExcelファイルを作るならVBAが有利だし、そうじゃ無いなら想定外。
- 693 :
- 本来、どの言語を使うべきかなんてケースバイケースなんだが、その既にケースバイケースの件に踏み込んでることに気付いていない奴多数。
- 694 :
- >>690
> それを言うなら「有利なケース」が既におかしい。
> 最適なケース、もしくは適したケースが正しいだろ。
ますますアホ晒してるぞw
誰も最適なんて言ってないし
- 695 :
- >>693
> 本来、どの言語を使うべきかなんてケースバイケースなんだが、その既にケースバイケースの件に踏み込んでることに気付いていない奴多数。
いや、必死になってる1人だけじゃね?w
- 696 :
- 「Excelファイルを作る」って表現が気持ち悪すぎて無料
- 697 :
- まあ大抵の問題はVBAというよりもセルやブックを直に参照してるところなんだけどな。
- 698 :
- >>695
まだ分かってないから笑えるw
VBAの時点で「ケース」なのに必死に否定しようとしてるアホがいる。
- 699 :
- >>694
お前のレベルに合わせるの疲れるわw
「有利なケースが多いことを有利」の2つの有利は厳密に言えば意味が違う。
したがってこれ自体は間違いとは言い切れない。
しかし、お前の言うようにこれが間違いだとすれば>>690がその結論になる。
つまり>>687が間違っているか、>>690が正しいかのどちらかだ。
たぶんこれ理解出来ないんだろうな。
ホント疲れるw
- 700 :
- ここでVBAを否定しようと必死になってる奴って、アセンブラでドライバー作ってる奴にもモダンじゃないとか言ってそう。
- 701 :
- VBAに浸ってると
脳回線が行き当たりばったりでぐちゃぐちゃになるようだな…
- 702 :
- >>663
VBAで無理な処理ってどういうの?
リッジレーサーを移植するとか?
- 703 :
- 分かりやすいのだとスレッドとか?
- 704 :
- 怒涛の3連投ww
今どきはドライバーもCとかで作るのが普通と言うことも知らんのだろうなw
- 705 :
- 非生産的な話ばっかりしてて草
- 706 :
- PHP7, Python3 は、互換性が低いから、全く同じものを作り直しているだけだろ。
Ruby は互換性が高いから、作り直さなくても動くから、プロジェクトの数が少ない
雑誌・web サイトの記事もそう。
PHP7, Python3 の記事は、書き直しただけで、内容は以前と同じ
テキスト処理なら、圧倒的にRuby が有利!
>>649
PowerShell, PowerShell ISE の両方は、Windows に、元から入っている
>>651
銀行でも、有料のExcel から、無料のLibre Office へ移行した所もある。
有料ソフトはインストール時に、管理部門に申請書を書いたり、代金支払いなどの手続きが面倒だから
- 707 :
- 非生産的というかなんかエライ古い話ししてるな〜って印象しかないで
- 708 :
- >>704
お前のようにスキルの無い奴では無いのでそんなあたり前の話を知らない筈が無いだろw
それに全く反論に成ってない。
- 709 :
- 世の中けっこう非生産的だよ
著作権とかセキュリティとかリバエン禁止とかいろんな理由で他人の作ったコードは使えないから、まったく同じ結果の出る関数を1から書き直せって仕事がけっこうある
まあ、車輪の再発明を強いられるのは、どんな業界でもあるんだろうけどさ
- 710 :
- 今時はC++で作ってますが
- 711 :
- >>702
VBAでも高速化するテクニックは沢山あって、それをきちんと考えて組む上級者は遅いと感じることはあまり無いと思う。
けれども、どんなにテクニックを駆使しても限界はあって、本質的に遅い部分は他言語を使った方が良い場合もある。
Excel上の部品で、VBAでは作成不可能なものもある。
- 712 :
- シートやフォームに貼り付けるコントロールの自作はVBAでは無理なのでは
- 713 :
- インプリンタだし並列処理が出来ないから最近の大容量データ処理にそもそも向かない
- 714 :
- セルA1,B1,C1,D1に4,3,2,1と入っていて500行目まで同じようにランダムに数字が入ってる状態で、1行ずつ500行目まで全て昇順にソートするプログラムを教えてください。
マクロの記録で1行分をコピペして作ったんですがセル位置直すのに心折れてしまいました。
for nextで繰り返し処理できるようなプログラムでできませんでしょうか。よろしくお願いします。
- 715 :
- >>712
そういうものより独自のPaneを追加したりの例が過去スレで挙げられてた。
こういうのは(コントロールもそうだけど)C#とかで作るのが楽でしょう。
- 716 :
- >>714
上級者がこういう質問に回答したいと思わないのは、あなたは何でFor Nextで出来ないのか、あなたはFor Nextで書こうとした時にどこで詰まっているのか書いて無いからなのね。
想像するに、1行分のマクロ記録の部分を例えばk行目についてkを使って表現出来ないからだと思うんだけど、違うかな?
- 717 :
- >>714
標準的なWindows環境でファイルを使う前提ならば、.NETのArrayListクラスのSortメソッドを使って各行の値を昇順ソートしてから代入してしまう手順にするのが楽かな
制御フローは{各行の処理{各列の処理}}というオーソドックスな二重ループで事足りると思う
ArrayListはCreateObject("System.Collections.ArrayList")でインスタンス生成できる
詳細はググってね
- 718 :
- >>712
そう言えば、コントロールの自作は無理でもクラスにすることはあるね。
でもクラス単体で完結させるのは難しい。
WndProcは標準モジュールに置くしか無いから。
でも変数にマシン語を入れて無理矢理クラスにWndProc置いてた人がいたな。
こういうレベルまで来てるなら明らかに自分よりレベルが上だね。
- 719 :
- >>714
Sub Macro1()
For r = 1 To 500 ' 1行目から500行目までソート
Set Ra = Range("A" & r & ":D" & r)
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add2 Key:=Ra _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange Ra
.Header = xlGuess
.MatchCase = False
.Orientation = xlLeftToRight
.Apply
End With
Next
End Sub
- 720 :
- ユーザーフォーム上に動的に生成したコントロールでenterイベントとれないんだけど仕様?
- 721 :
- >>720
取れる。
やり方が間違ってる。
- 722 :
- >>720
enterイベント?
- 723 :
- >>713
でかいデータ処理自体はExcelにやらすべきでしょ
ネイティブだしマルチスレッドでやってくれるし
- 724 :
- >>708
> お前のようにスキルの無い奴では無い
他人が言うならまだしも自分で言うとか恥ずかしくないのかな?
まあまともな羞恥心あったらアホレスを延々しないかw
- 725 :
- そこはAccessに任せよう
- 726 :
- >>724
お前は>>718が理解出来るか?
長いこと見てるがここで他で見たような高度な話に出会ったことがないわ。
- 727 :
- 変数にマシン語を入れるって何だろうね
- 728 :
- >>726
そりゃvbaで高度な事をする理由がないから当たり前だろう
VBAは事務や営業がルーチンワークをちゃちゃっと楽するための言語だよ
- 729 :
- 上の方でリッジレーサーとか書いてたけど、そういう高度(?)なこともできなくはないで
昔、excelのフォーム上にdirectxで3Dオブジェクトとか動かしてたから
ラッパー作ってやれば相当いろんなことできる
(参照設定は含まないとか狭い了見のやつは知らん)
- 730 :
- Win32API呼べるんだからそら何でもできる事はできるでしょ
- 731 :
- >>728
理由のある場合もあるし、実際やってる所もある。
>>729
今はDirectXがほぼ扱えなくなってるから難しいけどね。
>>727
これが分かり易い例かな(VBだけど同じようなやり方はVBAでもできる)。
http://nienie.com/~masapico/doc_FuncPtr.html
- 732 :
- >>706
Rubyはいらない
早く消えろ
- 733 :
- >>706
× rubyは互換性が高い
○ rubyは進化が高い
>>652でも言ってる通り、rubyは進化をサボりまくって完全に置いていかれた言語
端的に言うとゴミだ
- 734 :
- 進化が高いってなんだ、
進化が無いの間違いだ
- 735 :
- プログラム板にはところ構わずrubyネタを書き込むキチガイが常駐してます。
ご注意を。
- 736 :
- 会社で使ってるpcをwin10アップグレードwin7機をwin10プリインストール64bit機にしてもらったらDAO3.6の参照設定がされてる会社共有マクロファイルが動かなくなっててワロタ
参照設定をAccsess database engineに切り替えてあげて動くようにしてあげたら賞賛されてワロタ
古い技術・pc使ってんなぁ…と思った
- 737 :
- >>722
クラスモジュールで
Private WithEvents Obj As MSForms.TextBox
と宣言しておいて
form.Controls.Add("Forms.TextBox.1",str)
で生成してObjにSet
Private Sub Obj_Enter()でObjへのフォーカス移動を取りたいが取れない
labelのonClickとかは同じ方法でできてるんですが…
- 738 :
- 702です。色々とありがとうございます。704さんの仰る通りでございます。707さんのではできませんでしたが、大いに参考にさせていただき無事できました。助かりました!
- 739 :
- 使用人数の多い人気の言語なんて価値が低い
使える奴が溢れてるから君の代わりは沢山いるから明日から来なくて良いよ
- 740 :
- >>739
>使用人数の多い人気の言語なんて価値が低い
人件費と言語の価値をごっちゃにしすぎ
使用人数の多い人気の言語
>だからこそ価値がある
だよ
- 741 :
- >>726
どこが高度なのかさっぱり
変数にコード入れるとかむしろ昔の方がやってた(って言うかやらざるを得なかった)
Peek, Pokeとかあったしな
今のOSはチェックが厳しくなったからそのあたりは面倒になってるし低能がマウント取りたいだけにしか役立たんよw
- 742 :
- >>737
Enterイベントに入りすらしないということ?
- 743 :
- Enterイベント無いんじゃなかろか
- 744 :
- >>737
そいつはマジメにやるとすればとっても高度な奴だね。
OLE/COM Viewer使って情報取得して、ゴニョゴニョ...。
工夫で乗りきる方法も有るようだけど。
- 745 :
- >>741
Peek、Poke使ってた時代はそれが簡単に出来た。
今は面倒になってるから高度なんだろ。
- 746 :
- >>741
使わないとプログラムの構成が汚くなる。
で、これを知らなかった頃にクラスにWndProc置けないの何とかならんかと思ったことがある。
同じように考える人がいたからこれが実践されたわけ。
つまり、マウント取りたいだけにしか役立た無いなんて想像するようなアホなレベルの人では理解するのは力不足だよ。
- 747 :
- >>731
GetProcAddress って何だっけ?
自分は AddressOf は大量に使ってるけどこいつは知らないな
- 748 :
- >>747
Win32API
- 749 :
- マウスを砂時計にしたいがためにWin32呼んでるアホマクロならこの間見つけたな
- 750 :
- 新垣結衣 AVデビュー
https://www.xvideos.com/video48369883/_ai_
- 751 :
- >>748
関数名を文字列で渡すのか...
関わりたくないな
- 752 :
- Excelで出来ることを屁理屈で言ったら、究極は何だろうな。
VBSでも、IE画面にタグを書き込めば、GUIを作れる!みたいなの。
- 753 :
- VBAでJITコンパイラを作れば何でもできる
- 754 :
- 言葉尻を捉えて揚げ足取り合ってて楽しんでるようにしか見えない
- 755 :
- そうだな。文字列データあればなんでもできるくらい愚か。
- 756 :
- VBAで必要にならない処理なら単なるビックリ処理で終わりだろうな。
それじゃ意味が無い。
- 757 :
- シートやブックの指定を毎回名前で指定してるコードをよく見るけど、処理遅くなるし保守性悪いしでいいことないのになんでやってるんだろ
- 758 :
- >>743
あらかじめ設置しておいたテキストボックスをwithEventsのObjにSetすれば同じ方法でEnterイベントとれるんですが
>>744
やはり普通のやり方ではとれないのが仕様なのか
- 759 :
- >>745
高度なのと面倒なのの区別もつかないのかよw
>>746
今それやってるやついるか?
そもそもVBAの中途半端なクラス機能なんてたいして使えないし
- 760 :
- >>751
動的リンクしたことないのか?
- 761 :
- あ〜〜電子タバコ意味ないんじゃ〜〜
金返せ〜〜〜〜〜
- 762 :
- 誤爆
- 763 :
- >>759
高度だが。
Windowsがどのようにして動いてるかなど、Peek、Pokeの時代は知る必要さえ無かった。
やってる奴はいる。
自分のスキルの問題を言語のせいにする奴にとっては中途半端なんだろうな。
- 764 :
- まあせいぜいコンストラクタに引数も持てない、継承もできないクラスでOOPごっこでもしてればいいんじゃね?w
- 765 :
- >>764
結局こういうことを言う人はC#だろうがPythonだろうが自分のスキルが足らないとこの言語はダメだと言って自分のスキルを上げるとか工夫するとはならないんだろうな。
文句を垂れるだけで自分で解決しようともしない。
- 766 :
- どうやって解決するんだよw
解決策の一つでも出して見てから言えよ
ちなみにC#とPythonもコンストラクタに引数は持てるし継承もサポートしてる
- 767 :
- >>764
コンストラクタに引数持てないことを問題視する意味がわからん
どんな言語も万能じゃない
他のやり方で解決できるなら、そうするんだよ
アセンブラしか使えないなら、その仕様範囲でプログラミングするんだよ
大きな口叩くならお前が万能言語作ってみろや
- 768 :
- > 大きな口叩くならお前が万能言語作ってみろや
クスクス
- 769 :
- 万能言語ワロタ
- 770 :
- >>767
> コンストラクタに引数持てないことを問題視する意味がわからん
えっ、まじで言ってるの?
クラスを持つ他の言語はたいていコンストラクタに引数持てるよね?
その意味もわからないの?
> 他のやり方で解決できるなら、そうするんだよ
だからVBAでクラスなんて使いどころが限られるって話なんだが…
> 大きな口叩くならお前が万能言語作ってみろや
極論で反論したつもりになる低能乙w
- 771 :
- コンストラクタに引数持て無いことの意味が分からないってアンタw
プログラム開発の経験ないって自分から言ってるようなもんじゃないか
- 772 :
- そんな局所的なこと言ってないってのが例えでわからんよねバカ達は
井の中で叫んでるやつは議論する価値なし
- 773 :
- 逃げたw
- 774 :
- PEEKとか懐かしいな
ポケコンかな
ずいぶん長い間、携帯雑誌に書いてる機械語をどうやって入力するのか分からなかったな
ベーマガはポケコン少なかったしな
- 775 :
- でも今のVBAは詳しく説明してくれて良い時代だよな
基本書と後はネット渡歩けばそこそこは作れるな
昔はベーシックは簡単だったがやれることが限られすぎてて
結局機械語に行かないと話にならなかったが、買った本が悪かったのか全く理解できなかった
代入ばかり書かれててもどうやったらゲームができるのか分からないよってよ
- 776 :
- >>702
そもそもだ
お前の頭じゃどんな言語を持ってしても
リッジレーサーは作れんだろう
俺にも作れない
- 777 :
- >>767
彼は日本語が読み取れないようだね。
どんな言語でもダメな部分はある。
その度に文句垂れて何もしない負け犬人生が目に浮かぶ。
- 778 :
- >>777
>>766
具体的に語れないなら黙ってなよw
- 779 :
- >>760
動的リンクは LoadLibrary くらいまでなら許容できるけど関数単位は御免だよ
継承はいらないしインタフェースもいらない
- 780 :
- >>779
お前はLoadLibraryだけして何をするつもりなんだよw
- 781 :
- >>780
Dll ファイルに対してLoadLibrary したら、そこに含まれる関数はすべて普通に呼び出せるだろうが
- 782 :
- >>781
お前…
マジで馬鹿だろw
- 783 :
- >>782
?
個々の関数名を文字列で渡す必要があるかないか、って話だぞ
>>731 で出た GetProcAddress の話が続いている
- 784 :
- >>783
だからLoadLibraryで得たハンドルをどう使う気なんだよ…
- 785 :
- >>784
ハンドルの使い方なんて関係ないだろ?
実行時に関数単位で文字列による指定をしなくて済むって言ってるだけだよ
- 786 :
- LoadLibrary()の下に関数を呼び出すコードを書いてみよ
ということでは
- 787 :
- Declare PtrSafe Function func Lib なんたら〜
だろ
- 788 :
- GetProcAddress がwindowsAPIならLoadLibrary もwindows API
API に文字列を渡して何かにattach するときに、関数単位なのかファイル単位なのかってだけの話だよ。
使う関数が多数あることを想定している。
- 789 :
- >>787
それ使うならLoadLibrary関係ないだろw
言ってることがチグハグすぎる
- 790 :
- >>789
パスの解決に使うじゃないか
全部のDeclare 文にパス入れてんのか?
- 791 :
- >>790
今時 AddDllDirectory と SetDefaultDllDirectories でやるだろ…
- 792 :
- >>778
解決するつもりは無いのですよw
日本語分かります?
>>765は解決できるなんて話してないんですよ。
VBAのコンストラクタ問題を否定していない。
>>765はあなたのような人はC#で解決出来ない問題が出てくるとC#をこき下ろすだろうと言ってるにすぎない。
それとも「解決しようともしない」に反応してるのかな?
そういう話なら簡単です。
動作で問題になるよりコンストラクタ問題の解決は小さなことだからですよ。
あなたはコンストラクタ問題が解決出来ないからVBAでは実現出来ないと言って手を引いた。
しかし、私にとってはコンストラクタ問題が解決出来なくてもVBAで実現出来ることの方が上です。
動作の面でVBAの方が上となればの話ですが。
そしてVBAでの開発は限定された土俵であるがゆえに動作の面で上と成りやすい。
したがって総合的に有利となるわけです。
- 793 :
- このスレ、質問に答えるというよりよくわからないレスバトルを楽しむ場所になってるよね
- 794 :
- >>792
誰もVBAを使わないなんて言ってない
VBAのクラスは使いどころが限られる言ってるんだが…
> 日本語が読み取れないようだね。
自己紹介だったのかw
- 795 :
- >>791
まあそれはあれだ
Windows 7 ェ...
- 796 :
- >>794
???
「どうやって解決するんだよw」などと発言してるのに?
論理的思考も出来ないのかね?
クラスの話はとても分かりやすい。
>>759を読めばVBAのクラスの欠点を少しでも減らそうとせずに放棄し、その上その努力をした者に対してマウントを取ろうとする愚か者の姿がよく見える。
クラスに問題があることよりも動作に問題の有ることの方が問題なのは当然だと思うんだがね。
1ファイル問題はその一部なんだが。
- 797 :
- 継承とかいらんやろ
- 798 :
- >>796
> 「どうやって解決するんだよw」などと発言してるのに?
そりゃ>>765が
> 文句を垂れるだけで自分で解決しようともしない。
なんて言ってるんだから当然解決策ぐらい持ってるだろうからな
まさか解決策も持たずに吹いてるだけじゃないでしょ?
> 論理的思考も出来ないのかね?
お前がなw
- 799 :
- >>797
おまえには不要かもな
ただ他の言語ではたいていサポートしてるから一般的には需要があることぐらいはわかるよね?
- 800 :
- VBAのクラス(モジュール)の残念な点
・プロジェクト外から New できない
・だからcreate〜 関数を作るしかないけど当該クラスモジュールに置けない
・その他関連するちょっとしたヘルパー関数とかも中に置けない
・コンストラクタに引数がない
・End 時には Class_terminate が呼ばれない
・プロパティウィンドウに出ない隠し属性がある
・メソッドの AddressOf が取れない
- 801 :
- >>799
パターンマッチングが欲しい
- 802 :
- >>798
ハァ...
日本語勉強してくれ。
出来ることと出来ないことがあるのはどんな言語でも当然のことだろう。
与えられた範囲の中で少しでも改善できる余地が有るのに己のスキルの無さから放棄したお前のことを言ってる。
改善策があるかないかの話などしていない。
そして、お前の主張は動作に問題があることに比べれば全て些末な問題だ。
クラスについてもピントが外れてる。
コンストラクタの引数問題や継承問題よりもカプセル化が不完全な問題の方が大きな問題だ。
にもかかわらず、>>759の発言をして何とも思わないのは滑稽だ。
- 803 :
- >>800
動作に問題あるよりは全部些末。
- 804 :
- >>800
>プロパティウィンドウに出ない隠し属性がある
他は古い言語だし仕様として諦めも付くが、
これはマジでキツイ、というか意味が分からない
ほんと何でなんこれ
- 805 :
- >>802
改善策も持たずに
> 文句を垂れるだけで自分で解決しようともしない。
なんて言ってたのか?
論理的思考以前に引っ込みつかなくなったアホにしか見えんw
- 806 :
- >>801
具体的にはどんなの?
- 807 :
- >>803
クラスを利用しなくなる、という点で深刻
- 808 :
- >>807
期待動作が出来ない方が深刻。
- 809 :
- >>805
出来ないことを罵り、出来ることをしない無能を批判した文章を日本語として理解出来なかったという更なる無能をよく理解出来て良かったなw
- 810 :
- >>804
非表示プロパティのことだよな。
確かに何でこんなことになってんの?ってのはある。
でも、非表示プロパティをプロパティウィンドウで設定したいと思ったことは無いなあ。
- 811 :
- >>805
引っこみw
笑えるわw
なぜ>>777の発言になったのかを考えれば最初から改善策の話じゃ無いの明白なんだが。
>>765に対しての>>766が頓珍漢だから日本語の理解の話になってる。
頓珍漢の意味は分かるか?
噛み合って無いことを指摘してる話だぞ。
改善策の話なら噛み合ってることになるから>>777の発言にならない。
- 812 :
- 今のがシフトケーブルで良かったな、ブレーキケーブルだったらお前はもう死んでるぞ
- 813 :
- すれ違いですすいません
- 814 :
- アホが必死になってるみたいだが
改善策も持たずに
> 文句を垂れるだけで自分で解決しようともしない。
なんて言ってた事実は消えない
- 815 :
- >>814
何度書いても、日本語が理解出来ないことが露呈するだけだw
- 816 :
- 論点からズレズレなんだけど楽しい?
- 817 :
- こういう自分の無能を気付いてないのを装い続けてうやむやに誤魔化そうとするのって少し前に見た気がするなw
- 818 :
- 理解?
事実を書いてるだけだけど?w
- 819 :
- >>818
日本語の勉強しろw
日本人じゃなくてもコミュニケーション取れねーんじゃ議論にならないw
- 820 :
- 「日本人じゃねーのかもしれんが」に訂正。
- 821 :
- >>803
動作に問題あるって何だよw
そりゃ論外じゃんかw
- 822 :
- 事実を書かれてあたふたしすぎ
日本語の勉強が必要なのはお前だろ
そもそもVBAを使わないなんて誰も言ってないのにねぇw
- 823 :
- >>821
なんの動作にどんな問題があるのかも書いてないからなぁ
本人にしかわからん
まあ本人もわけわからなくなってるのかも知れんがw
- 824 :
- thiscallな関数を AddressOf で直接取るのは無理か
- 825 :
- >>821
>>823
実際は全く動かないなどという論外な話じゃない。
他言語派は自分達のデメリットについていつも無視するか過小評価するから意地悪く極端に言ってるだけ。
開発者にとってのコストより使用者にとってのコストの方が大きいという話だ。
1ファイル問題はまさにそれ。
何度も言ってるけど覆せないからいつも他言語派は過小評価に話をもって行こうとする。
- 826 :
- >>822
事実はお前が日本語を理解出来ないということを証明し続けてる事だがw
そんで、認めたくなくてうやむやにしようとしてることだw
- 827 :
- ごめん1ファイル問題って何だっけ?
その話題(?)は関わってなかったからわからんちん
- 828 :
- >>822
直接、VBAを使わないんて言ってないのはその通りだし、最初から分かってたことだが、その論陣で進むと自分の首を絞めることになるぞ。
お前がそういうことを言い出すかもしれないと想定済みだ。
もっとも俺の想定にも穴がある可能性は排除出来ないけどな。
何のことか分からんだろうから言っとくと、お前の主張の結論はVBAを使わないと言ってるか、お前が底辺で仕事してて何も現状を変えられないレベルかのどちらかにちっちまうんじゃないかという話だ。
- 829 :
- なんだかわからんがお前ら熱いな
そのエナジーをより良いプログラム作成に注ごうじゃないか
- 830 :
- >>827
VBAとの比較において、他言語の優位性を語るのであればVBAが使用される状況においても他言語の方が優位であるという論陣を張る必要がある。
しかしながら他言語ではExcelのファイル単体では動作させられないという問題。
C#やVB.netはこれを回避できる場合があるが、この場合はまた別の問題がある。
- 831 :
- 勝手に業務にVBAを組込まなきゃ後は何でもいいよ
- 832 :
- >>831
勝手に
って何だね?
- 833 :
- >>830
単体じゃなくたって「一度インストールすればずっと使える」というモノならこだわる必要ないよね?
- 834 :
- >>829
いつものちょっとおかしい子が喚いてるだけ
単にVBAのクラスは中途半端で使いどころが少ないって言われてるだけなのになぜかVBA自体をバカにされたように受け取って必死に頓珍漢なレスしまくってるw
- 835 :
- >>833
ケースバイケースだろうね
一部の企業だとインストールの手続きが面倒とかあるし配布して使わせる場合で人数多いとインストール手順書とかをちゃんと整備しないと質問攻めに合うとかの可能性もあったりするしね
- 836 :
- 相変わらず話し相手のいないさみしいプログラマの無駄話が続いていますが、
質問者の皆さんはこんなの無視してもらって構いませんので遠慮無くどうぞ
- 837 :
- いまだに XP ですだとか Excel 2007 以下ですだとかと同じように、何もインストールできませんなんて条件は切り捨てればいいんじゃない?
つまり「そんな環境のことは知らん」と。
冷酷に見えるかも知れないけど、それが正しいとマジで思う。
- 838 :
- >>837
突然どうしたんだ?
>何もインストールできません
これは金融系なら普通
- 839 :
- >>838
金融で何もインストールできないなんて嘘だよ
そんな訳ない
- 840 :
- 言うのは自由かも知んないけど、金融業界外の人や学生が
「そうか金融行くと何もインストールできないんだな」
なんて誤解するとちょっと害がある。
- 841 :
- 何もインストールできないなんてことはないけど、稟議にはんこがいっぱい必要とかはごく普通にある
> 一部の企業だとインストールの手続きが面倒とか
って書いてあるでしょ
あとそういう条件を切捨てるかどうかはお前が決める話じゃないから勝手に切捨ててればいいと思うよ
- 842 :
- >>839
嘘ではないよ。会社や部署によるけどね
俺が知っているのはみずほ証券、東京三菱UFJ、あと三井が大体同じ感じ
総務はほぼ100%NG(部長以上は自由)。
営業は大半がNG。ただ営業上必要なツールは許可がバンバン降りるってのは聞いたな
基本はシステムに発注をして、全店共通のシステムに組み込むって構造になっている
だからフリーソフトを落としたり、vbaでどうこうする必要自体がない
本部が業務自体を管理して、重複する業務を発生させないようにしているんだ
システム本部がどうなっているかまでは知らない
>「そうか金融行くと何もインストールできないんだな」
大体こう思っておいたほうが良い。
ある程度PC使える人はかなり不便に感じる
セキュリティ面は厳しいけど、それに対する方法が確立されている
- 843 :
- 手続が要らないことをまるでメリットの様に語るけどさ
業務に組込むならどちらにせよ職場なり部署での検討が必要だろ
まさかVBAをシャドーITの温床にしてる訳じゃないよね?
- 844 :
- >>842
「俺が知っているのは・・」ってことはあなた自身はそこじゃないけど他の金融機関勤務ってことかな?
大手金融機関なら社内データベースもそれなりにあって個々人の関連業務の範囲でアクセスできる。
また潜在的には優秀な層が集まっててITを力に出来るわけだ。
実はプログラミング環境は最初からそれなりにインストールされてましたってオチじゃない?
- 845 :
- >>843
>業務に組込むならどちらにせよ職場なり部署での検討が必要だろ
その辺は年中やってるからシステムの実装までが早い。適材適所で分担されている
vbaを使うのは、慶弔関係のExcelファイルを各課に回し、集計するような場合
これがシステムに入らない
半分私事+頻度低いから仕方ないんだけど、どうにかならんかね〜
>>844
この中のどれかに勤めている+同業他社に聞いた話
思った以上に似た構造で、どうせなら同じシステム使えばいいのにって話ししたな
>潜在的には優秀な層が集まっててITを力に出来るわけだ
よーわからんけどみんな自社システムしか使えないよ。基本は入力と確認だけしかしない
>実はプログラミング環境は最初からそれなりにインストールされてましたってオチじゃない?
なんでそんなプログラミングが出来る事にしたいんだよw
必要ないから調べてもないけど、変な物作らせないために入ってないはずだ
- 846 :
- >>845
「みんな」っていうとややこしくなるからやめようぜ。
俺もそこまでは言ってないし。
何割かの人は英会話がそれなりに出来る
何割かの人は会計の知識がある
何割かは法学部出てる
何割かの人は大学でCSやってたしプログラミングを仕事に役立てられる
単にそれだけのことだよ
- 847 :
- また誤解を生むような表現してしまった
CSやってたっていうのは専攻してたという意味じゃなくて教養レベルの事ね
- 848 :
- >>840
最大手重工メーカーのうちの一つも駄目だったわ
何でもインストールokの会社なんてあるの?
セキュリティ的に普通に無理じゃね?
中小も含めて
- 849 :
- >>848
「なんでも」とか「みんな」っていうと(略
「何もインストールできない」と「何でもインストールできる」の間にはギャップがある。
具体的にはVisual Studio無料版とかMicrosoft製品を禁止する合理的理由なんてないじゃん。
生産性とか競争力気にするなら。
- 850 :
- >>849
そりゃ社内手続きすりゃ入れれるよ
勝手にインストールは何一つ無理じゃね
- 851 :
- >>850
勝手にインストールの主張は誰もしてないよ
少なくとも>>837以降はね
- 852 :
- >>851
でもxpとかoffice2007は駄目だろうな
- 853 :
- >>848
中小だとそう言うのに無頓着な会社もあるよ
きちんと規則にしてないところも多いし
- 854 :
- いまだにフリーソフトの使用は禁止という大企業はある。おそらくサポートの有無の話とごちゃごちゃになってる。
- 855 :
- >>853
無頓着じゃないところも少なくないよ
中小っても範囲広いからね
あと規則があるけど取締が緩くて、従業員の意識も低く、勝手にやっちゃってるところも多い
- 856 :
- >>855
誰も無頓着じゃないところがないとは言ってない
> 何でもインストールokの会社なんてあるの?
って言うからそういう会社もあるって言うだけの話
- 857 :
- ・なんでも勝手にインストール可の会社
・申請しても見境なくインストール不可の会社
これらがダメなのは論を待たない。
ただ「インストール」の具体的な意味がちょっ曖昧かな
- 858 :
- Excel2019
alt+F11でVBEが開かなくなった時に見るべき場所はどこでしょうか?
- 859 :
- ・Alt+F11を押した時の挙動(エラーやメッセージが出るのか、または画面が一瞬出てすぐ消えるといった動きを見せるのか、その他)
・イベントビューア(エラー等が記録されていないか)
・「開発」→「Visual Basic」でもVBEが起動しないのか
・その他のキー操作はどうか(そもそもAltやF11キーがちゃんと反応しているのか)
- 860 :
- 追加
・他のアプリケーションでAlt+F11の操作が割り当てられていないか
- 861 :
- >>858
タスクマネージャーで本当に存在していないか
- 862 :
- >>833
Excelブックは単体だよ。
VBAはexeファイル作成する言語じゃないExcelブック前提じゃないとVBAとの比較に成らなくなる。
逆にさあ、C言語スレでVBA派がC言語をゴミと言ったらどう思う?
バカにしてるとか悪口の視点ではなく。
VBAはExcel無いと動かね―じゃね―かと笑うだろう。
俺だったら間違いなく笑う。
同じことがここで起きてるだけだよ。
- 863 :
- >>857
申請しても見境なくダメに近い所はある。
というかけっこうある。
元々入ってるの以外は全部ダメとか。
特に、これもVBAの特殊性だけど、事務寄りだからExcel以外必要無いとされる。
- 864 :
- >>849
合理的理由大あり。
何でそんなもの必要なの?
バカじゃないの?
Excelの仕事だよな。
Excelあれば事足りるだろw
と言われるだろうなと自分中心の思想しか持てない人とは違う俺なら想像するね。
そして、そこまで酷くなくても実際に言われるだろうな。
- 865 :
- >>859
>・Alt+F11を押した時の挙動(エラーやメッセージが出るのか、または画面が一瞬出てすぐ消えるといった動きを見せるのか、その他)
何も変化なし
ショートカットキーだけが効いていないか、何かで上書きされて無効にされている感じ
>・イベントビューア(エラー等が記録されていないか)
あまり見方が分からないけど、多分何も怒ってないと思う
・「開発」→「Visual Basic」でもVBEが起動しないのか
「開発」→「Visual Basic」 起動する
「開発」→「マクロ」 起動する
マクロの記録も問題がない
ショートカットキーだけが効かない
・その他のキー操作はどうか(そもそもAltやF11キーがちゃんと反応しているのか)
ハードウェア的には問題がない
>861
していない
分析ツールをいれてから発症し始めました
検索しても前例が無くて困っています
- 866 :
- >>862
> 逆にさあ、C言語スレでVBA派がC言語をゴミと言ったらどう思う?
また寝言言ってるな
としか思わんw
- 867 :
- win10 + offce365 でIE操作がもれなくフリーズする(3台中3台)
同じ症状出てないでか?
win10 + offce2007〜2016では問題なし
win7 + offce2007〜2016では問題なし
どうすりゃいいんだ
- 868 :
- >>865
分析ツールの方に何かキー設定は?
- 869 :
- >>865
> 検索しても前例が無くて困っています
検索してないだろ…
alt f11
まで入れたら
alt f11 起動しない
ってサジェストされて
https://answers.microsoft.com/ja-jp/msoffice/forum/all/altf11でvisual-basic/ed288f9d-d513-4bfb-9b6a-b03f1b885ea0
とか出るだろ
まずはセーフモードで試せよ
- 870 :
- >>868
何もしていないです
>>869
調べ方悪かったです、申し訳ない
「vba ショートカットキー 起動」辺りで検索していました
直接altf11入れればよかったとは
色々試してみます
>>862
>逆にさあ、C言語スレでVBA派がC言語をゴミと言ったらどう思う?
レベルが低すぎて相手にされません
- 871 :
- 難しい言語使ってるほうがエライみたいな発想はどこから来たんだ?
だったらアセンブラでも使ってろって思うけど。
- 872 :
- アセンブラって難しいのかね?
流行りの関数言語とかの方がずっと難しいと思うけど
- 873 :
- >>864
> Excelの仕事だよな
「Excelの仕事です」って募集されたならともかく、なんでそんなものが必要なのかと聞かれたら
「生産性を上げて競争に勝つためです」と答えれば済むだろ。
公務員だったら知らんけど。
- 874 :
- >>871
少し哲学的になるけど「なぜプログラムを書くのか」
本質的な答えは「効率化」
効率化を行うために、我々はプログラムを書いている
機械語で書くことが出来れば最高の効率化を達成できる。現実的にはアセンブラになるけど
アセンブラをわかった上で、リソース的に問題が無い範囲で、Cやvbaで書くのはなにも問題はない。結果が同じならそれで良い
プログラマとしては、低級言語を使える分vbaよりもアセンブラの方がエライのは間違いない
逆に言うと、アセンブラをロクに使ってない人よりも日常業務を超高速でガンガン削減できるなら、vba使いの方が上である
プログラム=効率化
その上で適材適所
この根っこの部分がわかっていれば良い
- 875 :
- >>874
機械語が効率高いって...
TSOの時代の発想か?
- 876 :
- >>866
お前は日本語が理解出来ないからなw
- 877 :
- >>873
そんなこと言って通るわけない。
頭の固い会社舐めすぎ。
- 878 :
- >>875
原理的には
って事だろ
それぐらいの理解力がないと(スッップ Sdba-o0lF)と同じようにバカにされるだけの人生になっちゃうぞw
- 879 :
- >>874
>>870と論理矛盾してる部分があるな。
レベルが低いからじゃない。
あまりにも適材適所から外れてるからだ。
このスレの議論もあまりにもではないかもしれないけど、適材適所の点を考慮せずに発言する奴が多い。
これは多分、他言語同士では適材適所の点で普通に被るからだと思う。
だからVBAの特殊性を考慮しない奴が多い。
そりゃ、作られたものを使う側にとってはCとC++じゃどっちでも良い場合も多いからなあ。
- 880 :
- >>878
効率の主語が違うって話だよ
機械語が効率高いというなら、それはコンピューターというマシンにとっての効率の意味だ。
でもいまの時代そこは大して価値はなくて、開発スピードとか出来たプログラムの汎用性の
意味での効率に重きがある。
・「マシンの」効率性
・「人の」効率性
主語の違い、な
- 881 :
- >>877
その会社負けるだろ?
他社さんはみんなコンピューターを上手に使いこなして効率上げてますよ。
事務作業にいちいち金かけてシステムなんか導入してないですよ?
ってならない?
- 882 :
- >>880
基本的にはその通りだが、結局そういう議論って多く使われてる点に重きを置いてて、意味ないと思うぞ。
アセンブラを使う必要のある所では君が価値あるなどと言ってるものに価値が無いんだ。
- 883 :
- >>881
全くならない。
だって他もそうだから。
というか、社内全部が君の言う通りならExcelなんて既に存在していない。
- 884 :
- >>880
原理的にはっていう意味が理解できてないのか?
意味がない(あるいは少なくなってる)って言うのは>>874の後半に書いてあるからいちいち繰り返さなくても大抵の人間は理解してるよ
- 885 :
- >>883
そうだな
通らない会社もあるだろう
通る会社もあるだろう
前者が変わらないならしょうがない
競争はとっくに始まってるけどな
- 886 :
- >>884
ん?
>>874の後半に何が書いてある?
ちょっとわからんね
- 887 :
- >>865
>>869にもあるとおりNVIDIAのソレのような常駐系のソフトが妨げている気がする。
- 888 :
- 結局プログラム組んで効率化できる部分って雑用の仕事だからな
もっと上流の仕事はそんなことできない
- 889 :
- >>886
> ちょっとわからんね
>> リソース的に問題が無い範囲で、Cやvbaで書くのはなにも問題はない。結果が同じならそれで良い
とかも理解できないのか、可哀想だな
- 890 :
- >>889
悪いけど1ミリも理解できない
「原理的には」アセンブラが効率高い
?
わからん、全くわからん
- 891 :
- >>888
俺も確かに効率の事ばかり言い過ぎたかも知れない
プログラミングで効率化できる「既存の仕事」には大した価値はないかもね。
ソフトウェアでしか出来ない仕事を新たに着手することが大切だと言いたかった。
- 892 :
- >>870
最近のVisual studioとか開発ツールに、VBEのウィンドウサイズをめちゃくちゃ小さくするバグがある
たぶんIDか名前が被ってて、プロパティを勝手に変更するんだと思う
Alt+F11を押したあと、Alt+Spaceでコンテキストメニューを出し、Sキーを押すとサイズ変更モードになるから、
カーソルキーの→と↓を連打すると大きく戻せる
最後にEnterで確定
- 893 :
- >>890
それは残念だね
- 894 :
- >>890
高級言語が低級言語をラッパーする際、必ずコストが発生する
で、低級言語を使えばコストが下がるわけでもない。ラッパーはものすごい最適化されているので、大抵の場合はコストがあがる
これが分からないなら無理に話しに参加しなくて良い
vbaの回答にもなんら影響しない
- 895 :
- >>887>>892
ありがとう!解決しない
原因が分かったらまた報告します
今のところ再インストールしてもダメだ
alt→L→V という謎のメニューを覚えてしまったので、まぁ無くてもなんとかなりそうだ
- 896 :
- >>894
それはいいんだけど俺が書いた >>880が否定される流れが理解できないんだ
- 897 :
- >>896
>>880だけに限って言えば、言ってる事は間違ってない
ただ、>>875でよく分かってないんだか、煽りか、アスペか、判断に困る発言を君がしたから、みんなに補足されまくってる
否定というかコイツ大丈夫か的な感じ
そりゃ言われるとは思う
- 898 :
- 最初俺が>>875に書いた
「TSO時代の発想か?」の意味が通じてないのかな?
「CPUの稼働にコストのかかる時代じゃないんだから語るべき効率はマシンの効率のことじゃないだろ?」
という意味なんだがね
- 899 :
- >>898
> 「CPUの稼働にコストのかかる時代じゃないんだから語るべき効率はマシンの効率のことじゃないだろ?」
だからそれは>>874の後半で語られてるだろ…
- 900 :
- >>898
発端は「>>871にレスしなかった事」が悪いとしか言いようがない
なんで>>874にレスしてるのか。他人の回答にケチつけてるようにしか見えないし、
>>874を見ても、そんな事は言うまでも無いのはレス見れば分かるだろう。
煽りや論争したいと否定的に捉えられても仕方ない
否定されたくないなら淡々と回答をすれば良い。そこで切磋琢磨することもあるだろう
- 901 :
- >>900
>>871は俺には何の関係もないね。
内容は間違ってないがただの煽りでしょ。
>>874は論理的に問題ないものの>>871に対するレスとしては合ってないと思うぞ。
- 902 :
- >>872
相当なおバカさん?
アセンブラで hello world出すフォームちゃちゃっと作ってみ
命令がシンプルだと簡単と勘違いするやつがいるとは想像もしなかった
- 903 :
- 難しいのと面倒なのの区別がつかないアホってそこそこいるんだなw
- 904 :
- 面倒なだけで難しくないと言いながら、作れもしない口だけ君が居付いてるみたいだなw
- 905 :
- https://kotobank.jp/word/%E9%9B%A3%E3%81%97%E3%81%84-641693
>4 状況などが込み入っていて、対処するのがやっかいである。「立場が―・くなる」「事態を―・くする」
https://kotobank.jp/word/%E9%9D%A2%E5%80%92-644668
>「面倒」は気分としてわずらわしいという意が強いのに対し、「厄介」は事柄そのものが手間がかかってむずかしいというときに多く用いられる。
- 906 :
- 今の時代、アセンブラが有利な状況はかなり限定されるんだよね
大多数のソフト開発ではコンパイラの方が開発時間が短縮できるし、実行速度もコンパイラの吐くバイナリは十分に速い
もっと速度が必要なら、クラウドでも借りた方がずっと時間が節約できるし
- 907 :
- アセンブラは家電とかじゃね
- 908 :
- 家電もだいぶ前から中枢はコンパイラになってる
アセンブラが必要なのはもっと低レベルなマイコン
色々な装置の末端のモジュール部分だけとか、玩具に組み込まれたちっこい液晶パネルとか、メモリが極限まで少ないやつはアセンブラじゃないと入ってくれない
- 909 :
- ここで気にすることじゃない
- 910 :
- やっぱりC#からエクセルファイルのデータを操作する方が簡単だった
VBAみたいにそれぞれのファイルを毎回開くとか面倒
- 911 :
- ハイハイ
- 912 :
- ハロワ出すだけならサンプル転がってそうだから、電卓くらい作って欲しいもんだな
まあ、口だけだろ(草
- 913 :
- >>902
手数が多い、毎回車輪を開発する必要がある言語が難しい言語だと言いたいの?
- 914 :
- >>904
俺が作れるかどうかに関係なくお前が「難しいのと面倒なのの区別がつかないアホ」なのは変わらんぞw
- 915 :
- もしかしたら>>871 >>902は
"難しい" を "めんどう" という意味で使っていたのかな。
「この子は扱いがちょっと難しくて」みたいな使い方。
俺は「相対性理論は難しい」の "難しい" の方で理解して、
「アセンブラが難しい」を疑問に思ったんだけど。
- 916 :
- >>914
俺が区別できてるかどうかに関係なくお前が「作れもしない口だけ君」のおつむ悪い人というのは変わらんぞw
- 917 :
- >>916
ただ煽りたいだけ、マウント取りたいだけのバカだったか、残念。
- 918 :
- お前らほんと無意味な事好きだな
- 919 :
- VBAはそのファイルしか使えないのが最大の欠点
とにかく面倒臭い
- 920 :
- >>871
難しいことできる方が偉いっていう発想は普遍的だと思うぞ。
まあ業務では邪魔になることのが多いとは思うが。
- 921 :
- >>919
共有するデータをExcelに蓄積するのは悪手でDBに入れるのが原則だから
そのファイルに閉じていていいんだよ。
- 922 :
- >>920
それなー
あまり使わない機能をあえて使ってみると、保守の際になにこれってなったりする
べた書きが一番だ
- 923 :
- Excelでやるのが難しいことをあえてExcelでやるのが偉い
- 924 :
- >>916
残念ながら「お前が区別できてない」のは事実だが「作れもしない口だけ君」と言うのは根拠のないお前の妄想でしかないw
- 925 :
- このスレはさみしい無能プログラマどもの無駄話で潰すスレじゃないんだが。
上のプログラマ板のどこかのスレでやったら?それも判らない日本語すら読めないバカ
が集まっているのか?
- 926 :
- >>925
言っても通じないよ
- 927 :
- まだやってたのか本当アホだな
- 928 :
- >>925
その通りバカの集まり
何言っても無駄だし反応したら負け
- 929 :
- >>924
残念ながら「お前が作れもしない口だけ君」なのは事実だが「区別できてない」と言うのは根拠のないお前の妄想でしかないw
はい、次どうぞ、おつむ悪い人w
- 930 :
- >>929
オウム返で反論した気になってるのか
バカだねーww
根拠はあるよ、区別してたら
> 命令がシンプルだと簡単と勘違いするやつがいるとは想像もしなかった
なんてこと言わないし
逆に口だけ君にはなんの根拠もないよな
あるなら出してみなw
- 931 :
- >>858です
>alt+F11でVBEが開かなくなった時に見るべき場所はどこでしょうか?
何となくwindowsアップデートしたら解決しました
・2ヶ月ほど前から起こっていた
・再起動は何度もしている
・プロセス関係はおかしくなかった
今は完全に正常です
アドインなども特に何も触っていないので、解決策が良く分からずに申し訳ない
- 932 :
- 直ったのならなにより
- 933 :
- 関係ないけど Visual Studio 上でもついつい癖で Alt + F11 やってしまってえらい目に遭う
- 934 :
- >>910
C#アプリケーションを作って使うことができる職場ならいいが、大半はそんな自由な職場ではない。
- 935 :
- 国語の問題にするやつは、技術無しの口先だけなやつってわかってるやん
カスはほっとけ
- 936 :
- 万能言語君チーッスw
- 937 :
- 万能言語やめて吹くw
- 938 :
- プラットフォームのAPIとやり取りできるインターフェース持ってる言語は皆万能だぞ
つまりほとんどのプログラム言語は万能
- 939 :
- >>938
型の問題があるから直接叩けるのは一部のものに限られるぞ
自作APIかまして間接的にってのも含めていいならかなり近づく
- 940 :
- プログラム板にキチガイ降臨中!botに一晩も反応する異常さ
一般人(学校恩師)に殺害予告をしているのでスレ建て通報してください。
https://mevius.2ch.sc/test/read.cgi/tech/1559872586/
142 名前:a4 ◆700L1Efzuv 投稿日:2019/06/18(火) 05:29:55 ID://qVkzO
>>141
名古屋の人な 俺ね、君の問題を大橋先生と混ぜないことにする。つまりね、
片桐孝洋のことをボコろうと思う。普通に顎の骨を折る。これくらいで警察来るか?
一般市民とかさ、普通にさ、俺らの秘密なんだけどさ、日本人なんて復活ねーから。
- 941 :
- vba勉強始めたいのですが、excelとaccessどちらから始めるべきでしょうか?
- 942 :
- vbaの勉強を始めたいのですが、excelとaccessどちらから始めるべきでしょうか?
- 943 :
- excelかaccessかなら迷わずexcel
VBAはレガシーでいつ廃止されても不思議はない機能なので、どうしてもVBAである必要があるのでないならC#とかにしとくことを強くおすすめする
- 944 :
- >>941
目的に合う方
VBAは何か具体的な目標(仕事)を処理するするために覚える人が多い
趣味でプログラミングを始めたいなら無料のVisual StudioをダウンロードしてC#とか覚えた方がいい
- 945 :
- >>941
ExcelVBA一択
accessVBAは下手に使うとパフォーマンス死ぬほど低下する
- 946 :
- ダメダメ。
どちらが良いとか比べるもんじゃない。
大量データを処理するならAccessで決まりだけど、勉強という話になると何をやりたいのかという話になる。
そもそも何でVBAの勉強したいのかによる。
仕事などが絡んでるなら、非常に大雑把な話になるが事務寄りならExcel、システム寄りならAccessかな。
- 947 :
- Access使うならSQLを使えるようになった方が良い
ExcelVBAを覚えればAccessVBAなんてその知識の流用でコード書ける
AccessのメインはSQLだ
- 948 :
- >>942
仕事でよく使われるのはExcelの方かな
しかしデータベースに興味があるならaccessでやればいいし
- 949 :
- 仕事でDB使ってるのでなければExcelがおすすめ
データベースに興味があるならMySqlでやればいいが
大量のデータを扱うものだから独学はなかなかきびしい
Accessはなんか得体が知れない
- 950 :
- >>947
補足しとくと、SQLの基礎知識は覚えるの必須だけど、書くのはクエリーデザイナ使えるようになればほぼok
あれはよくできてる
- 951 :
- >>949
分からないなら無理に回答しないほうがいい
>>950
クエリデザイナいいね
マクロの記録とは雲泥の差だ
- 952 :
- SQLバージョン古くてちょっと
どっちもフロントエンドに使うだけじゃないかな
- 953 :
- みなさんありがとうございました。
- 954 :
- >>950
あんなゴミみたいなデザイナーはいらん
- 955 :
- >>941
Excel VBA習得したら、ACCESSはすぐわかる。
- 956 :
- おそらく片方は一生やらないだろうな
- 957 :
- 【出資】松本卓朗 人工知能詐欺【注意】
https://rio2016.2ch.sc/test/read.cgi/rikei/1560859403/
- 958 :
- >>954
お前のゴミ度よりはるかにマシやで
- 959 :
- デザイナ−がゴミなのはその通りだけど、むしろ、よりゴミなのはエディタの方かな。
SQLのインデントを毎回消してくれる。
クエリの仕様を画像で見るよりSQLで見た方が分かりやすいのにインテント消してくれるから、全く分からなくなる。
- 960 :
- デザイナ−
とは?
- 961 :
- デザイナ マイナス
つまり
- 962 :
- ブックに存在していてVBEのプロジェクトエクスプローラーに表示されないワークシートを表示させるにはどうすればいい?
- 963 :
- >>958
馬鹿の見本
- 964 :
- >>962
エクセルを再起動
- 965 :
- >>964
変わらない
- 966 :
- 再起動を勧めるってことは異常な状態ということ?
- 967 :
- >>966
超非表示でも見えるはずだから、
どんな状態なのかわからん。
- 968 :
- >>967
VBEで見えないワークシートはExcel画面上では表示状態
そのシートをアクティブにしてマクロからActiveSheetでアクセスすることはできるが、シート名やシートのインデックスで直接指定しようとするとエラー9になる
For Each work In Thisworkbook.Worksheets で回してもそのシートは取得できない
Worksheets.Countでも1個少ない数が返ってくる
他のシートからセルの数式で参照とかは普通にできる
何か特殊な隠され状態なのか?と思ったけど初めて見た状態でよくわからない
- 969 :
- >>968
う〜んわからん。
ファイルをZIP解凍して、↓こうやってちゃんと出てくるか調べてみるとか。
(解凍できなければ、拡張子をZIPにしてから解凍)
_rels
sheet1.xml
sheet2.xml
sheet3.xml
sheet4.xml
:
:
- 970 :
- ↑Excel2013以降の場合ね。
- 971 :
- あ、もしかしたら workbook.xml の方かも。
メモ帳で見た時に、その見つからないシート名が書いてあるかどうか。
- 972 :
- >>969
手元にファイル持って無いので明日試してみるよありがとう
- 973 :
- 壊れかけのbook
- 974 :
- >>963
馬鹿のお手本
- 975 :
- >>972
もしかして、Excel 4.0マクロシートとかの過去の遺産なのでは?
- 976 :
- >>971
試してみた
workbook.xml の中には問題のシート名が存在し、_relsのsheet*.xmlの数は一つ足りなかった
sheet*.xmlが無いなら一体何に基づいて開かれているのか…
- 977 :
- >>975
これが答えっぽい!
forでworksheetsじゃなくてsheetsで回してみたら取得できた
新しく4.0マクロシート作ってみたらやっぱりvbeには表示されないしxmlも作られなかった
こんな罠があったとは…
作った人がシート挿入時に間違えて操作したかな
- 978 :
- ついでにそのシート上で4.0マクロ書いてみたら動いたわ
- 979 :
- >>977
worksheetsだとグラフシートも出てこないかも
なので、基本的にsheetsで回してる
- 980 :
- >>977
アタリだったか。
今どきワンクリックでシート増やせるから間違えようが無いんだけど古いの使ってるのかな
- 981 :
- CTRL+F11でマクロ4.0シート作れてしまう
何かわからないから非表示、そして月日が流れ・・・って感じかと
- 982 :
- >>979
4.0マクロシートというのを初めて見たんで、完全に普通のワークシートだと思い込んでた
今後まだ残すつもりなら見分け付く何かを入れて貰いたいな…
- 983 :
- >>975
レガシー遺産に思い入れはないけど、あなたみたいなレスができる人になりたいと思った
思い付かなかったわ
- 984 :
- いまたに4.0マクロが動くとは
- 985 :
- msは互換性に関しては気合いが半端ないぞ
https://tech.nikkeibp.co.jp/it/article/OPINION/20060427/236520/
- 986 :
- ファイル名にユニコード文字が入ってるとDIR()関数の結果が化けるんだけど、代わりに何を使えばいい?
- 987 :
- >>986
FileSystemObjectオブジェクト
- 988 :
- 代わりになるのは
FileSystemObject
くらいかな…
化けるのは変わらんかな…
参照設定必要だから、使い方も含めてggって
- 989 :
- >>986
と思ったけどちゃうわ、FSOにしても意味がない
vbaはユニコードそのまま使えないから、
セルに直接書き込むかユニコードに関する関数をかます必要がある
何したいかによるけど、この辺
https://rara-haha.com/2018/10/10/office-9/
- 990 :
- ファイル名を加工してリネームするだけの簡単なコードなんだけど
何年も前に作って今まで問題なく動いてたのが、最近エラーで落ちるようになって
原因を調べたらユニコード文字が勝手に半角「?」に置換されてて、ワイルドカード文字はファイル名に使えないからエラーで停止していたという
とりあえず糸口は見えたのでがんばってみるありがとう
- 991 :
- それなら、こっそりコマンドプロンプトを実行して、
そこでdirするとか。
あれなら変な文字入っていても落ちないよね?
- 992 :
- >>215
これスゲーわ
天才だわ...
- 993 :
- >>992
そんな前のレス読んでるお前もスゲーな
- 994 :
- みんな初心者の時って、どんな勉強してたの??
自分で作った渾身のコードや、ネットから拾ってきたけど、まだ理解できないコードとかって、どっかに書き写して勉強してたと思うんだけど、
ふつうにwindowsのnotepadとかにコピペしたりして勉強してたんですか?
VBEの中にどっか溜めといたりしてたんですか?
紙のノートとか使ってましたか??
- 995 :
- >>990
変換できない文字は、半角? にするものが一般的
>>994
初心者の時は、本を2〜3回、読むだけ。
機能を理解するのが中心で、書いたり暗記はしない
- 996 :
- >自分で作った渾身のコード
大切に取っておいたものもあるなぁ
でもvbaだとそれを探すよりは即興で書いた方が早い。コードを保存することはなくなった
>ネットから拾ってきたけど、まだ理解できないコード
無い
理解できるまで読む
>windowsのnotepadとかにコピペしたりして勉強してたんですか?
VBEしか使ってない
>VBEの中にどっか溜めといたりしてたんですか?
無い
>紙のノートとか使ってましたか??
10年前は、コードではなく仕組みをメモとったりしてたな
今思えばずいぶんと非効率的な事をしていた気がする
- 997 :
- >>994
自分はきちんと勉強したんじゃなくて使っていくうちに覚えたんでノートにきっちり書いたりとかはしてないが、VBAだけでなく他の言語も、知ったことを今もPCに溜めていってる
- 998 :
- >>994
全部GoogleDriveにxlsmで保存してる。(古いのはxls)
その場で書けるようなものは保存する必要も無いし、渾身のコードではない。
ネットから拾って来たコードは理解出来るまで運用では使わない。
複雑なものって、全部覚えてるわけじゃ無いから理解してても、一から作ると大変だよ。
全て覚えて無くても溜め込んだ中にいつ保存したかは覚えてるから探した方が楽。
あとはGithubやGistに保存。
昔はVBE上から自動でアップロードするの作ってたけど、今は何故か手動でアップロードしてる。
- 999 :
- みなさん、ありがとうございます!
これからの勉強の参考にさせていただきます!
- 1000 :
- >>998
煽りじゃなく本気で気になるんだけど、VBEからシコシココピペしてGithubにプッシュするとか、
何でこんな無駄なことやってんだろうって死にたくならない?
- 1001 :
- 自分の書いたコード使ってもらうと承認欲求か満たされて凄い幸せな気分になるよ
これを知らないのは勿体無い
ただ、vbaではやらんけど・・・ってか、そんな発想が無かった
- 1002 :
- >>1000
また出たよ、アオリしかできないバカが
- 1003 :
- >>1001
Githubで公開とか考えたことないな
VBAやってるとか恥でしかないだろ
- 1004 :
- 他言語のプログラマー()が総務のおばちゃんが使ってるような言語のスレでマウント取りに来るとか恥ずかしくないんか
そんなに主戦場に居場所ないのか
- 1005 :
- 立てる
- 1006 :
- 規制されててだめだった
- 1007 :
- ほい
Excel VBA 質問スレ Part62
http://mevius.2ch.sc/test/read.cgi/tech/1561303297/
- 1008 :
- googleスプレッドシートをGoogle Apps Scriptで操作すれば良い
VBAなんて時代遅れ
- 1009 :
- >>1008
このバカ誰か相手してやれ
(このスレ内でw)
- 1010 :
- >>1000
コピペって必要か?
basファイルそのままじゃいかんのか
- 1011 :
- ここにいる人達はGithubも使ったこと無いんだろうな。
ピント外ればっかり。
有名人じゃなければ見に来る人もいないし。
承認欲求とか想像してるようなのは使ったことないの丸わかり。
- 1012 :
- >>1011
バカなのバレてるのにまだ叫んでるよw
- 1013 :
- 2ch.scからのレス数が1000に到達しました。
【実験台】 Python 3.0 のお勉強 Part 1 【非互換】
CORBAなら俺に聞け
【入門】Common Lisp その11【質問よろず】
プログラミング始めたいんだけどどこ言語がいい?
☆★ Java の宿題ここで答えます Part 74 ★★
【DDD】ドメイン駆動設計【エリック・エヴァンス】
次世代言語12 Go Rust Swift Kotlin TypeScript
Swiftアンチスレ part1
【汚物】痛い変数名・関数名【破廉恥】
Swiftアンチスレ part1
--------------------
■音羽屋アンチ■ 第30.5幕(遠山真由美)
TVTestについて語るスレ Part 93
【田中圭】OL俳優と信者について語るスレ【林遣都】 Part.80
魔法陣グルグルについてかたるスレ
【総合スレ】龍が如く【四百十八代目】
【PS4】Horizon Zero Dawn Part11
【フリマアプリ】メルカリ part398
【淡水】富山の釣り総合 27【富山湾】
【テレ朝木9】ハゲタカ★18【綾野剛】
【密着】連結器・カプラー総合スレッド9【自連】
シャワートイレ・トイレ板の名無しを決めるスレ
異常伝播による受信障害
【NMB48卒業生】山本彩応援スレPart866【さや姉】
【ダイスキ】AKB48ダイスキャラバン☆3【キャラバン】
お前らDTMでいくら稼いできたんだよ?
教員公募星取り表13連敗【法学編】
【芸能】大久保佳代子が「大人げない」と憤慨した芸人 アイドルに追随し「猿芝居して逃げ帰った」
み62
福島ダート 3
【日本もいい国だが】サニーパンチ87【あんな楽園のような刑務所87い】
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼