X



Excel VBA 質問スレ Part61
レス数が1000を超えています。これ以上書き込みはできません。
0005デフォルトの名無しさん (ワッチョイ 8552-en87)
垢版 |
2019/04/26(金) 10:15:59.90ID:P7S61/Hq0
usedrange.columns.count は多用しますが
これを列番号ではなく
アルファベットで(AX列、というように)
取得することはできますか?
0008デフォルトの名無しさん (ワッチョイ b501-ncGm)
垢版 |
2019/04/26(金) 19:59:27.77ID:HeuAVqYr0
ネットワーク上のMDBファイルにADOで接続して取ってきたデータを帳票に表示→印刷というマクロを作りました
しかし1件なら問題ないものの、ループ実行すると正常終了で終わるのですが
実際に印刷すると2件目以降のデータが反映されず、全て1件目のデータが印字されます
どうもMDBから取ってくる部分のタイミングの問題に見える(その部分に差し掛かると画面が固まる。DoEventsを入れずに重い処理をさせたときの感じ)のですが、SleepやDoEventsを適宜挟んだり、印刷ではなく別ブックやpdfに書き出しなどに変更しても効果が見えません

この現象の解消方法をご存知の方いませんか?
0010デフォルトの名無しさん (ワッチョイ b501-zXaJ)
垢版 |
2019/04/26(金) 22:32:55.22ID:dk67nCTl0
>>8
言ってることがよくわからんけど、adoで直結してデータとってきてるなら、doevents挟んでも意味ない
なので、そもそもバグってると思われる。

doeveが効果あるのは、間接的に(と言って伝わるかわからんけど)何か処理するとか表示を反映させるとかの場合
0014デフォルトの名無しさん (ワッチョイ 9b68-3cXW)
垢版 |
2019/04/27(土) 12:20:27.60ID:S53FxUuZ0
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
0020デフォルトの名無しさん (ワッチョイ 6df9-PuIg)
垢版 |
2019/04/27(土) 13:09:43.12ID:V/rwcmys0
ActiveSheet.Cells(1, 1) = "シート名一覧"
Dim iIndex As Integer

For iIndex = 1 To Worksheets.Count
ActiveSheet.Cells(iIndex + 1, 1) = Worksheets(iIndex).Name
Next iIndex

全く何がしたいのかわからない
0024デフォルトの名無しさん (ワッチョイ 6df9-PuIg)
垢版 |
2019/04/27(土) 13:20:05.54ID:V/rwcmys0
>>21
そんなの単純に
A1 =fnEnumSheetName() と入力すると
このファンクション内で最初に書き換えるから?最初でなくても矛盾が生じる
から、動かなくても問題ない、そこに居れた式を書き換えたらなりたたない

当然だろ、何か考える必要あるのか?
0030デフォルトの名無しさん (ワッチョイ 9b68-3cXW)
垢版 |
2019/04/27(土) 13:42:59.47ID:S53FxUuZ0
混乱してるみたいなのでまとめます

>>14の状態(コメントアウト有り)では
A1のシート名一覧は表示され
Debug.PrintもSheet1〜Sheet3まで表示されます
コメントアウトしている部分で書き換えているのはA2〜A4です
0038デフォルトの名無しさん (ワッチョイ 0d91-ry4J)
垢版 |
2019/04/27(土) 14:50:38.26ID:Nwb++xAe0
>>30
だから、コメントアウトしたのは入力したシート内のセルに入力するコードだろ。

そういうのは普通は動かないんだ。
動かすことは出来るけど難しい。
例えばA1に途中迄入力してセル内カーソルがある状態でVBAを動かそうとしても動かない。

じゃあ、どうやってやるかと言えばSetTimerを使えば出来る。
ただし、使いなれた人じゃないと大変危険だ。
0044デフォルトの名無しさん (ワッチョイ 9b68-3cXW)
垢版 |
2019/04/27(土) 15:17:32.57ID:S53FxUuZ0
配列にしたらできました
ですがシート数が固定ではなくセル選択範囲がネックになるので
ボタンをトリガーにして当初のコードを利用する事にします

ありがとうございました
0046デフォルトの名無しさん (ワッチョイ 8d7c-GhCw)
垢版 |
2019/04/27(土) 15:43:11.43ID:t5jYwzHf0
>>14
Excelの決まりとしてセルに入れた数式の結果はあくまでそのセルだけのもの
他のセルを弄るというのはセル数式の領域外
だからActiveCell.Offset〜があるとエラーになる
こういう場合はコマンドボタンとか付けてそれ押したら指定先のセルに表示するとかする
0048デフォルトの名無しさん (ドコグロ MM71-4ufv)
垢版 |
2019/04/27(土) 19:02:45.87ID:oGcERCTJM
シートの上限を制限できるなら
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 から下に関数コピーすればいい
0050デフォルトの名無しさん (ワッチョイ 2302-KxX0)
垢版 |
2019/04/27(土) 19:56:38.58ID:vRc/Njpl0
色々なシートを触る時、.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"
とシート名を抜かしてしまった時の保険なんですが、止めたほうが良いでしょうか?
また、シート名を忘れた時にエラーが出る等、わかるようにする方法ってありますか?
0051デフォルトの名無しさん (ワッチョイ 0d91-ry4J)
垢版 |
2019/04/27(土) 20:12:40.86ID:Nwb++xAe0
Activateなんて殆ど使うことは無い。
と言うより、シート名を抜かすことなんて有り得ないというくらい無い。
寧ろブックも省略しない。
だからWithかSet sht=Workbooks("hoge.xlsx").Worksheets("fuga")
をたいてい使う。
0054デフォルトの名無しさん (ワッチョイ 2302-KxX0)
垢版 |
2019/04/27(土) 20:39:24.98ID:vRc/Njpl0
>>52
はい
もちろん最初からこの形なら良いのですが、
1シートしか使わないマクロでシート名を抜いて記述
その後、2シート以上に増えた時、改修する時に抜ける事があるのです
1シートだけでもシート記述した方が良いんでしょうかねぇ
0056デフォルトの名無しさん (ワッチョイ 8d7c-GhCw)
垢版 |
2019/04/27(土) 21:40:11.04ID:t5jYwzHf0
>>50
原因がわからないエラーじゃないんだから保険ではなくきちんと明示するようにしよう
書き忘れてエラーが出たらそれをちゃんと直すようにしよう
中途半端な保険なんて入れておくとますます不備に気付けない
自分の簡単なチェック方法は前にドットがついてないrangeとcellsを全部検索するようにしてる
0059デフォルトの名無しさん (ワッチョイ 2301-4ufv)
垢版 |
2019/04/27(土) 21:58:54.29ID:rUmkpmPg0
>>50
シート名忘れるような奴はそのうちActivate指定も忘れたり間違えたりすると思うぞ
そもそもそんな保険を掛ける前に
> set sheets("sheet1") = foo
とか書いて疑問に思わない自分の頭を心配した方がいい
0064デフォルトの名無しさん (ワッチョイ 9b68-3cXW)
垢版 |
2019/04/28(日) 08:28:37.40ID:FKjutIP90
>>20
> ActiveSheet.Cells(1, 1) = "シート名一覧"
これはセルの値を変更だろ
下のは式としては=Test()で表示としてはSampleになるから別物
混乱させようとした愉快犯か?

Public Function Test() As String

Test = "Sample"

End Function
0068デフォルトの名無しさん (ワッチョイ 0d91-ry4J)
垢版 |
2019/04/28(日) 13:02:26.00ID:EgFNocvh0
>>62
その根拠www

>>60は根拠そのものなんだがwww

お前は1+1=5だと言っている。
俺はそんなの全く説得力が無いと言っている。
何故なら1+1=5の根拠を全く示していないからだ。

今の状態は1+1=5だとお前が妄想しただけとしか受け取れない状態だ。
妄想でも構わんが何ーつ説明出来ていないんじゃ説得力が全く無いのは自明の理だ。
←これが俺の根拠だ。
それで全て。

バカで理解出来ないようだからもう−度言う。
今言ってるのはお前が自己矛盾してるかどうかだ。
正式な手順があるだろうという俺の主張の話は何ーつしていない。
前にも書いたが一緒にして逃げを打たれても困るんでな。
0072デフォルトの名無しさん (エムゾネ FF43-ry4J)
垢版 |
2019/04/28(日) 13:50:31.23ID:hyHYBmToF
>>70
いや、お前が確認してるなら根拠を出せば良い。
出さなければ信頼に値しない。

で、今までお前は根拠を出さなかった。
従ってお前の主張は信頼に値しない。

これが根拠だから俺がMSに何かを確認しても、それは根拠には成らん。
0073デフォルトの名無しさん (スップ Sd03-ry4J)
垢版 |
2019/04/28(日) 13:51:35.95ID:QZJPb34xd
>>70
いや、お前が確認してるなら根拠を出せば良い。
出さなければ信頼に値しない。
それだけのことだから俺にはMSに何かを確認する意味がない。

で、今までお前は根拠を出さなかった。
従ってお前の主張は信頼に値しない。

これが根拠だから俺がMSに何かを確認しても、それは根拠には成らん。
0074デフォルトの名無しさん (オッペケ Sr01-YB87)
垢版 |
2019/04/28(日) 14:52:10.80ID:HssTnoLvr
on errorで出来てるし、もしMSにきいたとして
来る回答のパターンは
on error
on error以外
出来ない
くらい?出来ないはないと思うんで、
on errorが正式か、正式が別にあるんじゃないかな
0075デフォルトの名無しさん (スップ Sd03-ry4J)
垢版 |
2019/04/28(日) 15:05:52.13ID:QZJPb34xd
>>74
俺もその主張をしているけど、ここでの問題はその議論とはちがう。

確認もせずに>>70が「言い切った」ことが問題。

>>74の主張の正否とは関係なく「言い切った」ことは間違ってると言っている。
0077デフォルトの名無しさん (ワッチョイ 2301-4ufv)
垢版 |
2019/04/28(日) 17:27:07.37ID:Cfig35XD0
>>74
> くらい?出来ないはないと思うんで、
なぜそう思う?
正式にはそんな機能はありませんとか回答する可能性はかなり高いと思うぞ
そもそもOn Errorの方法自体がかなりトリッキーだし
0081デフォルトの名無しさん (ワッチョイ 2301-4ufv)
垢版 |
2019/04/28(日) 20:00:47.17ID:Cfig35XD0
>>78
説得力の有無なんて関係ないだろ
お前が根拠を示せてないと言う「事実」があるだけ

>>79-80
で?
その方法はMSから回答もらったのか?w

あと念の為に言っとくけど、普段はこんなアホなことは言わんよ
「MSに確認」を執拗に要求するアホがいるから、人に要求するなら自分も根拠を示せというだけのこと
0085デフォルトの名無しさん (ワッチョイ e32b-GhCw)
垢版 |
2019/04/28(日) 20:52:28.34ID:sT0U/wAv0
>>77
それがトリッキーなら前スレ848
>例えば昔仕事で扱ったWin32APIのGetPrinterでは取得するPinterInfo2構造体のサイズを0にして渡して敢えて失敗させることによって正しい構造体のサイズを取得するなんてのがある。
もトリッキーでしょ
0087デフォルトの名無しさん (ワッチョイ 2301-4ufv)
垢版 |
2019/04/28(日) 21:29:15.72ID:Cfig35XD0
>>82
もうそういう具体性のかけらもないレスしかできないかな?

>>84-86
まともなプログラマーならドキュメントに明記されてることとそうでないことの区別ぐらいは付きそうなもんだけどな
まあ今更引っ込みつかないんだろうなw
0089デフォルトの名無しさん (スップ Sd03-TwDj)
垢版 |
2019/04/29(月) 00:24:17.00ID:XyJHv5T1d
フォームから10個のTextboxに書かれた情報をボタン投下時にTextfileに一列タブ区切りで追記するもの。(空もあり)
それと、そのTextfile読み取って全列一列ずつExcelに転記出来るものを作り、内容を変更したりした後、再びTextfileにoutputするものを作りました。

そのTextfileの中ワードを検索し該当する行をタブ区切りで配列に格納してリストビューに転記するものを作ったんですが、たまに配列数0から7個だったり少なくて転記の際にエラーになるのはなんかありますか?
0093デフォルトの名無しさん (ワッチョイ 0d91-ry4J)
垢版 |
2019/04/29(月) 08:59:53.28ID:3KqibFAl0
>>87
www

説得力が無くて良いならお前はもう反論出来ないということだよ。
俺の主張に説得力が無くても良いと表明したんだからなw

俺は説得力が無くても良いとは思わないから、お前は騙り確定だw
0095デフォルトの名無しさん (ワッチョイ 2301-4ufv)
垢版 |
2019/04/29(月) 10:26:14.89ID:atpu4K080
>>93
説得力が無い?
> 説得力の有無なんて関係ないだろ
> お前が根拠を示せてないと言う「事実」があるだけ
って書いてあるんだが、ひょっとして違いがわかってないのか?w
0098デフォルトの名無しさん (ワッチョイ 0d91-ry4J)
垢版 |
2019/04/29(月) 11:18:46.73ID:3KqibFAl0
>>95
根拠は示したという俺の主張が「事実」であり、それにお前は自ら説得力が無くても良いと言ってしまった。

一方、根拠は示されていないというお前の主張に説得力が無くても良いとは言わない。

従って、お前は反論出来ないが俺はいくらでも反論させて貰うw
0099デフォルトの名無しさん (ワッチョイ 0d91-ry4J)
垢版 |
2019/04/29(月) 11:30:15.17ID:3KqibFAl0
そもそも根拠は何の為に必要なのかと言えば、主張に説得力を出すためだ。
相手に求めるのも説得力が無いから説得力を出すために根拠を提示しろということだ。

そんなこともわからないんだから全く意味不明。
0104デフォルトの名無しさん (ワッチョイ 2301-4ufv)
垢版 |
2019/04/29(月) 13:04:31.07ID:atpu4K080
>>102
> お前の理論によればもはや示す必要もないwww

はい、想像通りでしたw
>> まあ、どうせまたごまかすんだろうけどw

> 説得力無くて良いんだろw
そう言うこと、匿名掲示板でMSに確認ガーとか言い出したらキリがない
常識が通じない相手とはやり取りが困難って言うだけのこと

>>101
スレ跨いで粘着するような人なので察してやってくださいなw ⇒ >>7
まあ連休で暇だからと言って相手してる俺も悪いんだけどね
0105デフォルトの名無しさん (ワッチョイ 0d91-ry4J)
垢版 |
2019/04/29(月) 13:10:55.90ID:3KqibFAl0
>>104
www
バーカwww

本当にバカだな。

説得力が必要なければ、ここは意味が無い。
それどころか全ての議論は意味が無い。

MSに確認は説得力を増すための十分条件だが、必要条件では無いから必ず必要なわけじゃ無い。
しかしお前は何−つ説明をしていない。

その上で説得力を必要無いなどとバカを晒した。
それじゃ議論の意味が無いからお前がここで何かを主張するのも意味が無いと自分で表明したことになる。

本当にバカだ
0106デフォルトの名無しさん (アークセー Sx01-QbJb)
垢版 |
2019/04/29(月) 13:45:41.26ID:5oVU+kiox
>>89
テキストボックスが空だったときのテキスト出力に問題がありそう
エラーが出たときのテキストボックスの入力状態を再現できるなら、個々の値の転記処理が終わる箇所にブレークポイントを設定して、テキストファイルの区切り文字の数とかをダンプして確かめるといいよ
0112デフォルトの名無しさん (ワッチョイ 2301-4ufv)
垢版 |
2019/04/29(月) 14:55:19.39ID:atpu4K080
>>111
既に結論出してるからね

>> 説得力無くて良いんだろw
> そう言うこと、匿名掲示板でMSに確認ガーとか言い出したらキリがない
> 常識が通じない相手とはやり取りが困難って言うだけのこと
0122デフォルトの名無しさん (ワッチョイ 1b8c-7MPY)
垢版 |
2019/04/29(月) 19:23:57.77ID:tJZYnaZY0
当時はすぐにVBA.NETがでると思ったんだけどなぁ
0124デフォルトの名無しさん (ワッチョイ 851f-TwDj)
垢版 |
2019/04/29(月) 20:01:58.83ID:b0/Q+dtd0
>>92
エラーになったTextfileは確認しました。
もちろん配列格納時に足りなくまります。

>>106
print #fileNo,txtA.Text &vbTab;
print #fileNo,txtB.Text &vbTab;


print #fileNo,txtG.Text;

今コードないからあれですけど、こんな感じだったと思うんですけど何か起きそうですかね?
0126デフォルトの名無しさん (エムゾネ FF43-ry4J)
垢版 |
2019/04/29(月) 20:37:36.75ID:8I96H2WZF
>>118
お前は既に敗北宣言してるんだから今さら何言っても無駄だw

説得力が無くて良いと言うのは敗北宣言に等しい。
俺がお前に対して何も説得力が無くても良いと言ってしまったんだからなw
0127デフォルトの名無しさん (ワッチョイ 2301-4ufv)
垢版 |
2019/04/29(月) 20:53:34.07ID:atpu4K080
また痴呆症の再発かよw

>>95
説得力が無い?
> 説得力の有無なんて関係ないだろ
> お前が根拠を示せてないと言う「事実」があるだけ
って書いてあるんだが、ひょっとして違いがわかってないのか?w
0131デフォルトの名無しさん (エムゾネ FF43-ry4J)
垢版 |
2019/04/29(月) 21:43:17.66ID:mVsN4is2F
なぜ、こんなアホなことになったのかは容易に想像できる。
このバカは自分と相手の主張の整合性や論理というものを考えずにその場で反論出来れば良いと不用意な発言をしたんだろう。

全くどうしようもないバカ者だ。
発言を続けていれば論理が無くても勝てると思ってるのだろうw
0132デフォルトの名無しさん (ワッチョイ 2301-4ufv)
垢版 |
2019/04/29(月) 22:03:44.78ID:atpu4K080
痴呆症のうえに妄想まで出てきたか
末期症状だなw
1つだけお前のレスで正しいところがあるよ
> それどころか全ての議論は意味が無い。
「基地外との」って言う言葉を前置すればねw
0133デフォルトの名無しさん (スッップ Sd43-ry4J)
垢版 |
2019/04/29(月) 22:35:55.60ID:KquSHPZdd
>>132
勝手に省略するなバカw

説得力が必要ないというならという前提がつくんだよ。
お前の主張によればという前提でも良い。

全ての議論は意味が無いというのはお前の主張が正しければだ。
バカ者がw
0135デフォルトの名無しさん (スッップ Sd43-ry4J)
垢版 |
2019/04/29(月) 23:07:30.74ID:KquSHPZdd
>>134
本来、何かを主張するということは、自らの説得力を持って相手に納得させる行為なんだよ。
ぐうの音も出ないというのは、相手の説得力に対して抗しきれずに納得させられたという状態だ。

お前は説得力が無くてもかまれないんだから、相手がどんなアホなことを言ってもぐうの音も出ないと表明してしまったわけだw
0136デフォルトの名無しさん (ワッチョイ 2301-4ufv)
垢版 |
2019/04/29(月) 23:17:56.44ID:atpu4K080
あと念の為に言っとくけど、普段はこんなアホなことは言わんよ
「MSに確認」を執拗に要求するアホがいるから、人に要求するなら自分も根拠を示せというだけのこと

できない時点で単なるつぶやきでしかない
0139デフォルトの名無しさん (ワッチョイ 0d91-ry4J)
垢版 |
2019/04/30(火) 15:31:13.13ID:GJKpnzP30
まだやるも何も完全に論理破綻してるけど自ら白旗挙げたことに気付いて無くて悔しいから、最後まで何か言ってれば負けたことにならないと信じてるアホがいるだけ。

MSに確認しなくても説得力ある話をすれば良かったのに、今となってはそれも手遅れ。
説得力が必要無いなんて、じゃお前は何でここに居るんだよwというくらいのアホ。
0147デフォルトの名無しさん (ワッチョイ 1dda-jER+)
垢版 |
2019/05/01(水) 01:54:30.18ID:MPaYicsf0
なあもういい加減やめようぜ
0151デフォルトの名無しさん (ワッチョイ cb5f-0AlF)
垢版 |
2019/05/03(金) 19:41:21.80ID:o4X+Dt2l0
1 安倍晋三 アベシンゾウ
2 麻生太郎
3 小泉純一郎
4 白石麻衣



全員にフリガナをふりたい
今手動で名前をカット→貼り付けでフリガナをだしてます
それを自動でやる方法
または違うやり方があれば教えてください
ち、ちなみにjkです!
0153デフォルトの名無しさん (ワッチョイ bb68-ahOC)
垢版 |
2019/05/03(金) 19:54:51.80ID:gB5i9xO70
>>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+上でふりがなの設定が出来る
0154デフォルトの名無しさん (ワッチョイ bb68-ahOC)
垢版 |
2019/05/03(金) 19:56:40.51ID:gB5i9xO70
書き忘れた
関数とvbaで挙動が変わる

関数は入力した時のふりがなデータを引っ張ってくる。漢字をコピペした場合、ふりがなデータが無い事がある
vbaはIMEのデータを引っ張ってくる。

どちらが良いかは無いが、基本的にはvbaの方が良い
0175デフォルトの名無しさん (ワッチョイ c2bc-sMnz)
垢版 |
2019/05/05(日) 23:12:10.31ID:BF8MV8/50
ありがとう、皆さん。お言葉に甘えて
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'
となります。
0178デフォルトの名無しさん (ワッチョイ c2bc-sMnz)
垢版 |
2019/05/06(月) 00:20:05.87ID:50ISOOVP0
>>176
遅くにありがとうございました。

ご指摘のとおり、iに0が入るため、エラーになっていることがわかりました。

後は、空白セルを0と読み取らせない方法を調べてみます。

丸二日、エラーの理由がわからずに悩んでいました。

見ず知らずの方に助けてもらえて感謝です。ありがとうございました。
0181デフォルトの名無しさん (スッップ Sd02-tw1J)
垢版 |
2019/05/06(月) 10:29:14.43ID:ZwYgATzZd
>>178
初心者は、問題がどこにあるのかに勘所が無いからこういう悩んで時間を使う経験をたくさんすると良い。
慣れれば5秒で気付く。

あと、Do〜Loopはいらない気がする。
hの代わりにiを使ってどうにかできると思うね。
0183デフォルトの名無しさん (ワッチョイ 9f71-ItfN)
垢版 |
2019/05/10(金) 16:54:45.46ID:SsAAf7AE0
VBA勉強中の者です。

Setステートメントを勉強しているのですが、オブジェクト型についてお聞きしたいです。RangeオブジェクトとかWorksheetオブジェクトなど、いろんなサイトなど見ても使いどころがよくつかめてないです。

どんなときに使うのか、教えてもらえるとありがたいです。
0185デフォルトの名無しさん (ワッチョイ 3735-y0Vo)
垢版 |
2019/05/10(金) 17:04:22.66ID:/nmPTcfU0
どんなときに使うのか、は一言で言うのは難しいが、基本的には保守のため

・何の変数か分からない時に名前をつける
range("a1:b2")だと何の範囲かはワークシート見ないと分からない
set 転記元 = range("a1:b2")
とすることで、そのrangeが何か一発で分かるようになる

ちなみに「何をするか」ではなく「何が入ってるか」を基準に命名すると後で分かりやすい
「何をするか」はfunctionの名前がそうなっているはずだ

・ある変数が2回以上登場する場合、最初に変数に入れておけばそのコードを変更する時に一回で済む
まぁこれは説明せんでもええわな

・保守しないならめんどくさいだけじゃん
そう、合っている
ちゃんと保守できるように書いて置いた方が、長い目で見ると楽なんだ。プラマイプラス
0186デフォルトの名無しさん (スップ Sd3f-VdvG)
垢版 |
2019/05/10(金) 19:25:57.30ID:ZL9lN1sfd
>>184、185
レスありがとうございます。
185さん
感覚ですが、すごく単純な感じがします。そんな認識でよいです?

ただ184さんのいう
数値と文字列以外は全部オブジェクト
これがひっかかるんです。

range("a1:b2")がオブジェクトという認識でよい?
そのなかに文字があった場合は?
文字列じゃない?と思ってしまうが、それは違うんですよね。
仮に
range("b2").valueだった場合は値で、range("a1:b2")はオブジェクトという事?

はなしがまとまってなくて、すみません。
0188デフォルトの名無しさん (ワッチョイ ff63-gMth)
垢版 |
2019/05/10(金) 19:40:34.80ID:tGc5sWC60
Excelのシート内部の表位置とかカラム位置とかデータ末尾とか特定するベストプラクティスってどんなんですか!

何十年前からある言語でこんだけ普及してるのにいまだに決まった答えがないとか
0191デフォルトの名無しさん (ワッチョイ 3735-y0Vo)
垢版 |
2019/05/10(金) 20:14:31.04ID:/nmPTcfU0
>>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)
0193デフォルトの名無しさん (スップ Sd3f-VdvG)
垢版 |
2019/05/10(金) 21:34:51.98ID:ZL9lN1sfd
>>191
レスありがとうございます
誘導もありがとう!
じっくり読んでみます。
わからない所があったらまた聞くかもです。
中途半端な理解は嫌だし。さっかりと理解したいし。
0200デフォルトの名無しさん (アウアウウー Sa1b-ScLU)
垢版 |
2019/05/11(土) 21:36:03.53ID:pbKNvvnGa
質問です。
NumberFormatLocal = “yyyy””年””m””月””d””日””(aaa)”で書式の定義を変更しています。
NumberFormatLocal = ●“yyyy””年””m””月””d””日””(aaa)”

●の箇所に文字列を入れたいのですが”●”を入れるとエラーになります。解決方法はありますでしょうか?
0202デフォルトの名無しさん (ワッチョイ 3735-y0Vo)
垢版 |
2019/05/11(土) 21:46:39.70ID:VQwnSTgG0
マクロの記録取ってみたわ
ダブルコーテーションで括った中で、更にダブルコーテーションがいるっぽい
具体てt機にはこう

Selection.NumberFormatLocal = """あ""yyyy""年""m""月"""
0204デフォルトの名無しさん (ワッチョイ d7da-y0Vo)
垢版 |
2019/05/12(日) 02:13:17.21ID:anQ1bE+S0
もしかして、Access2016が入ってると、
Excel2013ではADO接続使えない?

Excel2013からAccess2016の参照で落ちるケースはググって見つけたけど、
ウチのはExcel2013からExcel2013で落ちる。
0205デフォルトの名無しさん (ワッチョイ 375f-BEL3)
垢版 |
2019/05/12(日) 02:35:46.96ID:0u/cIV/f0
>>190
データとしてExcelを使う場合と、ドキュメントとしてExcelを使う場合とで、考え方がかわる。
0209デフォルトの名無しさん (ワッチョイ d7da-y0Vo)
垢版 |
2019/05/12(日) 17:19:48.24ID:anQ1bE+S0
>>208
Excel2013 ・・・ ADO接続OK
   ↓
Excel2013 + Access2016 ・・・ ここで突然落ちるようになる
   ↓
Excel2019 + Access2016 ・・・ 直った!

全部32bit。
本当は64bitにしたかったけど、ListViewとか、
一部使えなくなる機能があるので諦めた。
0210デフォルトの名無しさん (ワッチョイ d7da-y0Vo)
垢版 |
2019/05/12(日) 17:21:42.38ID:anQ1bE+S0
あ、Excel2013 + Access2016って、インストールの組み合わせ。
別に、Excel2013からAccess2016に接続しに行ったわけじゃない。
落ちたのは、Excel2013からExcel2013へのADO接続。
0211デフォルトの名無しさん (ワッチョイ 375f-BEL3)
垢版 |
2019/05/12(日) 17:23:44.21ID:0u/cIV/f0
なんの話をしているのか他人にはさっぱりわからないw
0217デフォルトの名無しさん (ワッチョイ 375f-BEL3)
垢版 |
2019/05/12(日) 20:06:16.73ID:0u/cIV/f0
プログラミングの初歩は大事なんだと思ったよ。

ある値のときは00時00分00秒にするという分岐を思いつかないんだから。
0220デフォルトの名無しさん (ワッチョイ 375f-BEL3)
垢版 |
2019/05/12(日) 22:49:25.28ID:0u/cIV/f0
>>210
Office製品は基本的にバージョン違いを混在させられるようにはできていない。
0223デフォルトの名無しさん (ワッチョイ b791-vKCg)
垢版 |
2019/05/13(月) 09:19:29.85ID:OGTR1ISy0
その前にいきなり時刻とか言い出した辺りでダメダメ。
人間が時刻と思ってるだけの可能性がある。

セルの書式や変数の型を元に説明しないのは、人間の目線で時刻と言ってる証拠。
0227デフォルトの名無しさん (ブーイモ MMbf-wbL8)
垢版 |
2019/05/13(月) 17:03:08.67ID:P7TvqqIDM
>>226
ちゃんと形式を整えておけば単純なSELECTなら使える
WHEREが機能するだけでOKってことならまあまあかな
JOINとかは当てにならないような気がする
DELETE, INSERT, UPDATE はもっと当てにならない
0229デフォルトの名無しさん (アウアウクー MM8b-BEL3)
垢版 |
2019/05/13(月) 20:44:43.21ID:/95lNMvTM
>>228
他人だけど、ExcelのSQL操作はおまけ機能だから、標準SQLに対応してないから、やってみないとわからない。
0233デフォルトの名無しさん (アウアウクー MM8b-BEL3)
垢版 |
2019/05/13(月) 21:10:27.82ID:/95lNMvTM
>>232
バージョンを気にしてくださいw
0234デフォルトの名無しさん (ワッチョイ d7da-y0Vo)
垢版 |
2019/05/13(月) 22:16:41.75ID:ErXZ/V3c0
>>226
出来るよ。
普通はやらないだろうけど、会社のPCにAccessが入ってないとか、
Accessは入ってるけど、事務のおばちゃんがExcelにしがみついて、
意地でも離さないとか、そういう状況で使える。

>>227
JOINは普通に使える。
0237デフォルトの名無しさん (ワッチョイ 9fa2-vVMj)
垢版 |
2019/05/13(月) 23:39:26.70ID:N0Eopnbu0
エクセルでできるってすごい!
そこで疑問に思ったんですが以下の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の方法は?

教えてください<(_ _)>
0238デフォルトの名無しさん (ワッチョイ 375f-BEL3)
垢版 |
2019/05/13(月) 23:43:46.08ID:4/CDP/BQ0
秀和システムでいいから、古本を買って読めよw

ちゃんとサンプルが書いてある。アマゾンの古本は激安だぞ。
0241デフォルトの名無しさん (ワッチョイ 375f-BEL3)
垢版 |
2019/05/13(月) 23:49:20.76ID:4/CDP/BQ0
>>239
Google検索でもサンプルは山のようにあるぞ。
0243デフォルトの名無しさん (ワッチョイ d7da-y0Vo)
垢版 |
2019/05/14(火) 00:15:14.20ID:a29jNOd40
>>237
何通りかあったと思うけど、
その書き方だと[Sheet1$]かな。

プロバイダーも、adoCn.Providerにも、adoCn.Openにも書ける。
ブック名をFromの後に書く方法もある。

組み合わせは忘れたけど、どこかで指定していれば、
別の部分では省略できる感じ。
0245デフォルトの名無しさん (ササクッテロ Sp8b-GQZr)
垢版 |
2019/05/14(火) 19:07:26.92ID:wEGsmpoqp
https://dotup.org/uploda/dotup.org1847293.xlsx.html
東京・大阪・北海道の各出発時間・到着時間を黄色い部分に「sendkeysで」、「それぞれ東京・大阪・北海道の順序を守って」入力したいです
実際にsendkeysでキーを送るのはブラウザ上のフォームであり、東京の時刻入力→tabとenterをsendkeyしつつ次のページに移動→大阪を入力、という風に処理するため、順序等が変更できません
また入力するのが東京・大阪・北海道だけでないかもしれないので、記載がある行すべてというイメージでお願いします

excelスレでも質問してみてますが、vba専門スレがあることに気付かされたのでこちらでお世話になります
0252デフォルトの名無しさん (ワッチョイ 1701-Fjsy)
垢版 |
2019/05/14(火) 21:59:36.21ID:IyB4HHSk0
>>251
別窓にしちゃう(なっちゃう)とそのウィンドウを探して、html取ってくることが必要になるので、できるなら避ける。

IE VBA
でググれば、参考サイト出てくる。あとは応用しだい
IEでは F12で開くやつも有用

がんばれ
0256デフォルトの名無しさん (オッペケ Srea-SJOa)
垢版 |
2019/05/16(木) 11:39:56.68ID:a1IyAHl+r
excelマクロでのバージョン管理てどうすればいいん
言われるがままに集計マクロ作ったら担当者毎に持ってるマクロのバージョン違ってあの機能が無いとか特殊な状況でエラー出る→それ先月直しましたよ
が頻発してる
0261デフォルトの名無しさん (ワッチョイ b0f1-tIz5)
垢版 |
2019/05/16(木) 14:43:29.72ID:wWtnEH3A0
コード書く画面を
背景は黒に、文字は白に、する方法を教えれ
0273デフォルトの名無しさん (ワッチョイ 46da-EL+e)
垢版 |
2019/05/16(木) 22:17:19.76ID:aE3zz80C0
>>256
起動時に何らかのファイルを参照するようにしておいて、
参照出来たらそのままOK。
出来なかったら、新たにファイルをDLする仕組みにする。

で、更新させたい時は、わざと参照用ファイルを消しておく。
0277デフォルトの名無しさん (オッペケ Srea-SJOa)
垢版 |
2019/05/17(金) 09:22:35.60ID:YDbG3YPmr
共有パス見て実行とか大変そう面倒そうて主観があったけども
Application.Run "共有のパス!マクロ名 "
の1行でいけちゃうもんなのか…?
とりあえず試してみる
すでに誰かが開いてる?とか参照できないときの対処も色々試してみるありがとう
0281デフォルトの名無しさん (ワッチョイ 9b5f-KFp3)
垢版 |
2019/05/17(金) 12:28:45.29ID:gxvYGXpT0
そんなのできない。サクラエディタで置換して貼り付けろ
0284デフォルトの名無しさん (ワッチョイ 3591-0dpX)
垢版 |
2019/05/18(土) 00:55:20.52ID:pDLl57eM0
コードウィンドウ内の改行は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
0295284 (ワッチョイ 3591-H0mX)
垢版 |
2019/05/21(火) 20:04:23.19ID:MD1oUmkY0
ESCやBreakで止まるなら良いけど、それで止まらない処理ならウィンドウESC押しながらタスクバー上でマウスでウィンドウの切り替えをすると止まる。

どっかのブログで見て知ったけど役に立ってる。
0303デフォルトの名無しさん (ワッチョイ 3c0a-EL+e)
垢版 |
2019/05/22(水) 09:52:11.18ID:AHnUJ8Jk0
いやセル番地じゃなくて値を数式に代入したい感じです
たとえばA1セルに2,134という数字が入ってた場合に
=A2-2,134 という数式をどっかのセルに代入

A1セルが387だとしたら
=A2-387

説明下手糞で申し訳ないです
0309デフォルトの名無しさん (ワッチョイ 45f9-e7qI)
垢版 |
2019/05/22(水) 16:05:46.41ID:hC9fKDDe0
>>307
それに意味あると思えない、乱数なんてふつうは仕事に使わない
例えば、学校の先生あたりが、引き算足し算などの問題を自動的に作りたいとか
であれば、A列に乱数1の結果をB列に乱数2の結果を
C列に計算式を、D列に回答をで別シートなどで問題文を作る
このぐらいだな
0316デフォルトの名無しさん (ワッチョイ df01-Fpyl)
垢版 |
2019/05/23(木) 10:22:05.81ID:WDXUv9KM0
こっちで作って欲しいと言われたものをつくってると
そんなもの作られたら困る
楽になって人が減らされると困る、と古参がちくちく
この古参、自分の作業を楽にしたい時には
これがもう偉そうな態度で、「作らせてやる」とでも言わんばかりに頼んでくる
どうしたいんよもう

っていうことないっすか

もう面倒なんで職場で作るのやめようかな
すんません落書きしちゃって
0317デフォルトの名無しさん (ワッチョイ 2701-7h+o)
垢版 |
2019/05/23(木) 10:56:07.55ID:cSCM+dO10
厚労省で配布されている
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次元の表を合計するだけなんだから
スタート地点とゴール地点決めてやって
後はずらしていけばいいやんと思うのですが

後、小数とか負の値ぶっこんでも動作するのはモヤモヤするんだけど
まぁこの辺やりだしたらキリがないので使わせる相手によってどうするかは変えますかね
0318デフォルトの名無しさん (ブーイモ MMcf-cspy)
垢版 |
2019/05/23(木) 11:43:15.47ID:mLR+BkfhM
>>316
義務教育でプログラミングを扱うようになって、自分の仕事くらい自分でプログラミングできないようでは大変な事になるよ、
と教えてやればいい。
もしかしたら「手下にプログラミングさせればいい」と勘違いするかも知れないが、
それでは通用しないよと言ってやろう。

こういう話もあるし
https://lite.blogos.com/article/376203/
0323 ◆QZaw55cn4c (ワッチョイ df47-SwLn)
垢版 |
2019/05/23(木) 19:35:05.76ID:QGT5qlDg0
>>318
>義務教育でプログラミングを扱うようになって、自分の仕事くらい自分でプログラミングできないようでは大変な事になるよ
脅かすことでプログラミングができるようになるとはおもいませんが…
プログラミングって極めて創造的な作業ではないでしょうか、似たようなものは数学の証明問題だと思いますが証明問題を脅かして解けるようになるとは思えません
0325 ◆QZaw55cn4c (ワッチョイ df47-SwLn)
垢版 |
2019/05/23(木) 20:58:31.34ID:QGT5qlDg0
>>324
でもそのルーチンワークを実際に記述するとなると一本道というわけにはいかないでしょう?
論理的な一貫性を維持しながらしたいことを記述するのは、いわれているほどやさしい仕事ではない
0326デフォルトの名無しさん (ワッチョイ bf68-dCWx)
垢版 |
2019/05/23(木) 21:06:10.14ID:X/3FpVKz0
>>325
一本道だよ、全然難しくない
強いて言えば例外を先に全部列挙した上でシステムに放り込むという順序の変更がある程度

面倒なのは仕様変更と、使いにくいというオバハンの嬌声。オバハンにalt+F8は覚えさせたけど、まぁそれぐらい
0330デフォルトの名無しさん (ワッチョイ a794-jqLE)
垢版 |
2019/05/24(金) 01:42:55.95ID:9kKOGm+S0
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出さないだけでなぜ不安定になるのか、思いつく原因を教えて頂けると幸いです
0334デフォルトの名無しさん (ワッチョイ bf68-dCWx)
垢版 |
2019/05/24(金) 09:59:52.88ID:RAYiE+wA0
>>330
2019で試したけど落ちなかった
> Application.Wait([Now() + "00:00:01"])
これを抜いても同じ

カンで答えると、再計算が邪魔してるような気がする

・一度再計算や描画、イベントを切ってみてはどうかな
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

・あとはこの部分のウェイトをもう少し長くする
>Application.Wait([Now() + "00:00:01"])

・まっさらなブックで試してみる
0335デフォルトの名無しさん (ワッチョイ 67da-dCWx)
垢版 |
2019/05/25(土) 07:54:51.56ID:TRopVMeK0
アドインって、ファイルを閉じたら、
一緒に閉じられるものだと思ってたけど、
VBA実行中は残るということか。
一緒に閉じられたら、途中で止まっちゃうからな。
0341デフォルトの名無しさん (ワッチョイ bf02-vAXu)
垢版 |
2019/05/26(日) 15:23:19.13ID:/taseRUt0
以下の状態だと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
0345デフォルトの名無しさん (ササクッテロ Sp5b-hkBF)
垢版 |
2019/05/27(月) 08:12:50.88ID:lha2yOvQp
>>343
ごめん入力フォームじゃなくていいかも
最終的にやりたいことは、以下のボタン等が設置されたユーザーフォームを作ることです(他の要素も考えたら普通にinput boxでは無理と気づきました)
・AUTO openで開く
・押すと特定セルに文字が入力されるボタンを複数設置する
・カレンダーを設置する
・押すと印刷処理を行いつつファイルを上書き保存し閉じるボタンを設置する
0349デフォルトの名無しさん (ワッチョイ 07f9-IeET)
垢版 |
2019/05/27(月) 09:45:56.73ID:W0zr6KdF0
この程度の理解力だとカレンダーが必要かもわからない
カレンダーなんか別にシートでもできるけど、どこまで使うかがわからないから
最適な解もわからない
入力をシートに反映するなんて普通にセルを参照すればいいだけ
ExcelもVBAも1%以下の理解で動作仕様を描くのではなく結果で何をしたいかを描くべき
これでも少しおだててるが
0355デフォルトの名無しさん (ワッチョイ 8791-cMWe)
垢版 |
2019/05/27(月) 14:00:43.29ID:zUYqf9yC0
>>345
ここの人達はマウント取りたいだけで実際はあまりスキルが無い人が大半なので程々に聞いていた方が良い。

あなたの要望については疑問が1つ、可能だけどあなたのスキルから考えて技術的に難しい点が1つある。

疑問は、AutoOpenで開いて、閉じるボタンで保存終了するのならExcelで作る必要は無いのでは?という疑問。
普通にC#辺りで作った方が適してると思う。この後に述べるけど、カレンダーの件もC#等の方が簡単。

技術的に難しいのはカレンダーの実現。
サブクラスとWin32の知識が無いと難しい。
後々を考えると汎用的にクラス作った方が良いからそういう技術も必要。
もっとも、ファイル追加とか自作するとかで良ければスキルが無くても出来るともいえる。
0362デフォルトの名無しさん (ワッチョイ 07f9-IeET)
垢版 |
2019/05/27(月) 15:29:12.90ID:W0zr6KdF0
>>361
だったら適当にすれば(笑)

出来ることを安易に提案することの影響を考えろよ
例えば、自動計算を止める
こんなのそのままにされたら困るほかの人いるだろ
でも単にONとOFFじゃあだめなんだよ、直前を記録して戻す
また、エラーや中止でも戻さないとな
0381デフォルトの名無しさん (ワッチョイ 67da-dCWx)
垢版 |
2019/05/27(月) 22:07:18.66ID:9GzIJnKt0
何でユーザーフォームを使うのかって?
シートに書くより格好いいからに決まってるじゃんwwwww

いや、わりとマジでそんなもんだと思いますけど。
だって、ユーザーフォームじゃなきゃ再現できないようなものって、
普通の事務処理でそんなに無いでしょ。
0383デフォルトの名無しさん (ワッチョイ 8791-cMWe)
垢版 |
2019/05/28(火) 08:43:02.61ID:8P1bQTIM0
入力のしやすさとかフォームの方が良い場合もあるし、ユーザーインターフェイスとしてはフォームの方が優れている。

Excel使わずにメモ帳とCSVで事足りるってのと同じような考えの人がいるな。
0384デフォルトの名無しさん (JP 0H4f-Ha6N)
垢版 |
2019/05/28(火) 09:44:28.89ID:CE2aKfrCH
初心者レベルの知識で長いことVBAいじってる者なんだが、
functionプロシージャって使わなくない?
普通のsubしか使ったことない

どんな時に便利なの?
0385デフォルトの名無しさん (ワッチョイ bf68-dCWx)
垢版 |
2019/05/28(火) 09:47:42.25ID:rhAlx8Ij0
>>384
値を返す時。便利というか必須。=sum()で値が返らなかった時の事を考えてみると良い
むしろfunctionが普通なのだ

vbaの場合、ワークシート変更しておしまいってパターンが多いから恩恵を得にくいけどね
0386デフォルトの名無しさん (ワッチョイ df71-x/mB)
垢版 |
2019/05/28(火) 09:55:56.33ID:JWvhlEsx0
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 くみこ
0387デフォルトの名無しさん (ワッチョイ df71-x/mB)
垢版 |
2019/05/28(火) 09:56:25.54ID:JWvhlEsx0
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
0388デフォルトの名無しさん (JP 0H4f-Ha6N)
垢版 |
2019/05/28(火) 10:10:54.71ID:CE2aKfrCH
>>385
うーん、値を返すのは分かるんだけど、わざわざsubから取り出す意味が分からんのよ
subの中に入れちゃえば良くない?

コードが長くなる時とか、他のプロシージャにも流用したい場合なんかにfunctionで別プロシージャにしとくと分かりやすいってこと?

そういやfunctionを関数みたいに使う場合もあると聞いたな
0389デフォルトの名無しさん (ワッチョイ 07f9-IeET)
垢版 |
2019/05/28(火) 10:32:00.95ID:P/fMeUQp0
>>384
>>385意見に賛成だが少し付け加えます。
基本的にsubにしろfunctionにしろ長くだらだら作らない
出来るだけ意味のある汎用性のある処理はそのルーチンを呼び出すようにする
その時に値を返せるfunctionの方が圧倒的に有利
初心者は同じようなルーチンをコピペで増殖させるが、後々メンテナンスに困る
それらをライブラリーとして持つと自分の資産になるんだけどね、それが重要なんだよ
0391デフォルトの名無しさん (JP 0H4f-Ha6N)
垢版 |
2019/05/28(火) 11:26:30.05ID:CE2aKfrCH
>>389
あーその説明で分かった ありがとう

たしかに今までは、動けばいいやで作ってたからコードが長くなってた
顧客コードから各データを検索する時なんか、
Cells(i,2).value=Range(Z:Z).Find(Cells(i,1)).Offset(0,5).Value
みたいなコードを10行とか書いてたわ
0392デフォルトの名無しさん (アウアウウー Saab-DSaV)
垢版 |
2019/05/28(火) 12:23:13.41ID:1q3vxt7ga
OutlookのVBAもここで可でしょうか?
違ったら誘導お願いします

上司へ「承認お願いします」と言った趣旨のメールを送った際、上司がボタン1つで承認する旨のメールが送れるようにしたいです
しかし複数いる上司全員にマクロの設定方法を教えるのは面倒です
私から送信するメール本文にマクロを組み込み、上司が受け取った際に本文にあるリンクを押せば(マクロを自分で設定していなくても)返信メールが自動作成されるような手法が取れればベストなのですが、そういったことは可能なのでしょうか?
0399デフォルトの名無しさん (ワッチョイ 8791-cMWe)
垢版 |
2019/05/28(火) 14:01:27.19ID:8P1bQTIM0
>>391
>>389の言ってることは全くその通りなんだが、FunctionにしろSubにしろ、内容が汎用的なものをまとめる、同じような処理を纏める考え方をするようになると最初から構造的に組むようになる。
その方が圧倒的に楽だから。

あと、例に挙げてるコードは良くない。
ブックやシートの省略はバグの元。
0405デフォルトの名無しさん (ワッチョイ df71-x/mB)
垢版 |
2019/05/28(火) 15:57:40.29ID:JWvhlEsx0
>>386
>>387
話題を気にせずに、切り込んだ形で質問をしてしまいました。
ホントに困ってしまったのでココで質問をしてみましたが、割り込んだ形でご迷惑をおかけしました。

VBAなんでも質問スレで聞いてみます。
お邪魔しましたm( _ _ )m
0410デフォルトの名無しさん (JP 0Hcb-n9i6)
垢版 |
2019/05/28(火) 18:29:24.54ID:Bg5LHkgbH
マウントしてると誤解を招くような
会話しかできない奴は能力低い奴多い
他人の意見も聞かないしね。
傲慢が後に返り討ちにあう
0419デフォルトの名無しさん (スプッッ Sd7f-cMWe)
垢版 |
2019/05/28(火) 23:15:31.12ID:MN8nEIAEd
>>415
1個しか返せないといっても工夫の問題。
配列で返せば実質何個でも返せるし、Collectionで返すこともできる。
クラスインスタンスを返すなんてことも出来る。
どれも普通にやることだよ。

何を返せば使いやすいかを構造的に考えて人間にとってピンと来るように組めばメンテナンスも楽だし、プロシージャの内容も理解しやすい。
初心者のコードは何をする処理なのか全く分からないことも多いが上級者のコードは考えて組まれてるので理解しやすいんだ。

>>416
>>417
罵倒するだけで内容を書かないんじゃ君らのレベルも押して知るべしだな。
0422デフォルトの名無しさん (ワッチョイ c7ce-dCWx)
垢版 |
2019/05/28(火) 23:58:45.95ID:0rD99vo/0
IF Func() Then
とか
Loop Until Func()
なんてのがSubでは代用しにくい使い方だな (できないとは言わないが)

むしろ普通の数式で
A = Func1() + Func2() + Func3()
みたいに書きたい時の方が、Subに置き換えた時の無駄が多くなりそう
0426デフォルトの名無しさん (ブーイモ MMcf-e2Fz)
垢版 |
2019/05/29(水) 03:04:42.46ID:1woLKBVkM
・Sub
・返り値のないFunction
この違いは何ですか?
0428デフォルトの名無しさん (ワッチョイ df01-Fpyl)
垢版 |
2019/05/29(水) 05:02:37.42ID:E4T3mNp50
戻り値ないならsubでいいじゃんって話だと思うんだけど俺も一応はそう思う
昔はsubばかりで書いてた

subは単体で実行できるけどfunctionは単体では実行できないという違いがある
functionは他から呼び出さないと実行できないという意味でね。

ここからは俺の好みみたいなもんだけど、
ボタンに直結してるようなエントリーポイント的なものは
subで書いて、それ以外、特に引数を受けとって処理するものは
単体では実行できないことを明確にする意味で全てfunctionにしてる
そう論理的で整合性のある区分というわけではないんだけど。
0434デフォルトの名無しさん (ワッチョイ bf68-dCWx)
垢版 |
2019/05/29(水) 09:30:42.49ID:dT9QfEjx0
基本はfunction
スクリプトとして何かをさせたい時にだけsubで定義する。C言語で言うint main(){}
戻り値や引数のありなしでは切り分けない

と考えると自然と思うんだけど、どうだろう

この考えだと、private subは使うべきじゃないって事になる
0436デフォルトの名無しさん (ブーイモ MMcb-dCWx)
垢版 |
2019/05/29(水) 11:30:55.13ID:zbMbGE8SM
>>426
戻り値のないFunctionは存在しない
戻ってきた値を無視することができるだけ

つまり戻り値を格納するためにメモリを必ず使うから、Subと比較して速度とメモリ効率の2点で不利になる
0439デフォルトの名無しさん (ブーイモ MMcb-dCWx)
垢版 |
2019/05/29(水) 11:39:17.00ID:zbMbGE8SM
>>433
今から40年以上前、それまでのシーケンシャルなプログラムでは能率が悪いから構造化しようという話しが出て、その時に提唱されたのが「手続き(Sub)」と「関数(Function)」という概念
しかし、教育用として作られたPascalという言語では忠実に実装されたけど、C言語には関数しか用意されなかったし、その後に登場したJavaも関数しかない
結局は言語を設計した人のリテラシーというか、単なる好みで決まったようなもん

今でもたくさんの言語が乱立してるのは、結局はみんな「ぼくの考えたさいきょうのげんご」が作りたいだけと思って、あながち間違いじゃない
0440デフォルトの名無しさん (ブーイモ MMcb-dCWx)
垢版 |
2019/05/29(水) 11:41:11.71ID:zbMbGE8SM
>>438
ネタじゃないよ
リカーシブなプログラムを書いてみればすぐわかる
VBAでもFunctionは呼び出すたびにヒープを最低4バイトずつ消費するから、再帰の最大回数が少ないのは簡単な実験ですぐに確認できる
0442デフォルトの名無しさん (ワッチョイ bf68-dCWx)
垢版 |
2019/05/29(水) 11:53:59.73ID:dT9QfEjx0
>>439
ありがとう!そういう事か
sub便利だけど、便利過ぎてかなり変な事になってるね
subから呼び出すのはfunctionと決めていれば良いんだろうけど、
でもsubからsub呼び出す事もあるから・・・
結局subって意味なくね?

C言語のsub無しが正解のような気がする。

>>441
なんでネタと思うんだ?
0443デフォルトの名無しさん (ブーイモ MMcb-dCWx)
垢版 |
2019/05/29(水) 11:58:48.77ID:zbMbGE8SM
簡単な実験
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
0446デフォルトの名無しさん (スプッッ Sd7f-cMWe)
垢版 |
2019/05/29(水) 13:43:28.26ID:aQ2xiGWFd
>>442
だから構造的に考えて意味的にFunctionが適するかSubが適するかを選択するんだ。
意味的にというのは人間の感覚にとって合った方を採用すべきということ。

Cだってvoidがあるじゃねーの。
無理矢理1を返すとかすれば戻り値が絶対に必要な言語設計だってできた筈。
なんでvoidがあるかといえば、やっぱり意味的に戻り値無しが人間にとってピッタリ来ることがあるからだと思うが。
0448デフォルトの名無しさん (ワッチョイ c7ce-dCWx)
垢版 |
2019/05/29(水) 17:40:58.36ID:S0wmSPvZ0
プログラムを一人で作って自分だけが永遠に保守するなら好きなように作ればいい
大規模なアプリをチームで作ったり、他人が修正したりする時には間違いを起こさないようにルールを決める必要があって、
経験上、カプセル化した方が結果的に安全で能率がいいということになっている

そのための手法の一つが変数のスコープを狭くすること、グローバル変数は使わないこと、なんだな
だから結果はどこかの変数に入れるんじゃなくてFunctionで返すんだよ

複数の値を返したいなら設計を見直すべきで、構造体を使うか、1つずつFunctionを分けるか考える
0455デフォルトの名無しさん (ブーイモ MMd6-ERtf)
垢版 |
2019/05/30(木) 12:02:16.59ID:fCKFoHR/M
使うスタック量によって再帰での有利不利って理屈の上ではあるだろうけど
現実的な意味ってあるの?
条件によってスタックオーバーフローする「かもしれない」プログラムに対して
引数や返り値を考慮とか再帰深度に気を使うとか、ちょっとVBAで考えられないんですけど
0456デフォルトの名無しさん (オッペケ Sr33-NT0q)
垢版 |
2019/05/30(木) 12:25:00.74ID:0nKLhIYFr
>>454
SubとFunctionでメモリ効率の違い考慮するレベルなら
0459デフォルトの名無しさん (アウアウカー Sa7b-K02T)
垢版 |
2019/05/30(木) 18:56:24.47ID:86kk1xI3a
ここできいていいのか分かりませんがマクロの組み方で教えてください

「=5月シートA1」
「=5月シートA2」
みたいに引っ張っているセルを
「=6月シートA1」
「=6月シートA2」
みたいに変えるマクロを組みたいんですが

それを毎月自動で7月、8月、と月に合わせて変えるのはどうやるのですか?

理想としては、5月と書いてあるセルを6月と入力し、そのセルをコピペしていくマクロを組みたいのですが、その流れを作っても元の5月だけがコピペされてしまう状態です。

説明が下手ですみません。
0462デフォルトの名無しさん (アウアウカー Sa7b-K02T)
垢版 |
2019/05/30(木) 19:18:06.10ID:86kk1xI3a
>>460
すみません初心者なので詳しくは分かりませんが、今の月を参照するセルを作り、それをコピペするように組めばいい感じでしょうか。
間違ってたらすみません。

>>461
今まではそうやっていたのですが、それ以外にも、不要な場所を削除して、一番下の数値を一番上に持っていってみたいな作業があるので、その置き換えも合わせてマクロにしたいと思いまして。
0468デフォルトの名無しさん (ワッチョイ 3ff9-n0I8)
垢版 |
2019/05/31(金) 10:21:23.92ID:iXFRocgY0
なんか、今月にこだわる人多いが説明だと選んだ月のシートからデーターを
持ってきたいだけだろ、勿論INDIRECTを使うことでマクロを使う必要はない
例えば、値を参照するシートとのA1セルに入力規制で1月〜12月を選択して
=INDIRECT($A$1 & "!A" & ROW(A1))
でいいだろ
0472デフォルトの名無しさん (ワッチョイ 3ff9-n0I8)
垢版 |
2019/05/31(金) 11:34:43.20ID:iXFRocgY0
>>471
今月か選択なんてExcelをちょろって知ってればどっちでもいいんだよ
1っか所変えただけで要は1っか所を変えただけでその月に対応すればよいだけ
こんなのマクロなんか書いたら笑えるレベル
0475デフォルトの名無しさん (ワッチョイ 3ff9-n0I8)
垢版 |
2019/05/31(金) 11:53:29.26ID:iXFRocgY0
>>459
お題は
>理想としては、5月と書いてあるセルを6月と入力し、そのセルをコピペしていくマクロを組みたいのですが、その流れを作っても元の5月だけがコピペされてしまう状態です。
だけどな、マクロを使わないと気が済まないやつっているのかな
0481デフォルトの名無しさん (ササクッテロ Sp33-+KpA)
垢版 |
2019/05/31(金) 12:27:21.46ID:wdWzuIo7p
シートを左のものからきっちり順に印刷する(印刷指示を出す)vbaありませんか?
スプール云々はプリンターの詳細設定弄れなくなってるのでvbaでどうにかなればしたいのですが・・
0482デフォルトの名無しさん (ワッチョイ 3ff9-n0I8)
垢版 |
2019/05/31(金) 12:27:47.02ID:iXFRocgY0
Excelの関数や機能も知らん奴がVBAでマクロを作るか
少しは勉強しろよ、ってか
運転できないやつが、自動運転を作るみたいなもんか?
ってか参照で十分なものを何でマクロ(笑)
0490デフォルトの名無しさん (ワッチョイ 6602-K9GS)
垢版 |
2019/05/31(金) 13:43:20.27ID:xVkqny4q0
>>489
今月にこだわっててもおかしくないし
一連の流れをマクロにしてその一部の質問してるわけでしょ
だから>>468>>472も的外れって話
訂正するわけでもないのに再アンカをしかも連投するってせっかちすぎない?
0491デフォルトの名無しさん (ワッチョイ 3ff9-n0I8)
垢版 |
2019/05/31(金) 13:55:19.86ID:iXFRocgY0
>>490
今月とかどうでもいいんだよ
単に参照すればいいだけ、それで質問者の意図に対応できないか?
自分の主張じゃなく、何が正しいかで提案するんだよ
VBAで作れば何でもできるさ、でも単に絶対参照でいいものをこねくり回すなよ
0495デフォルトの名無しさん (ワッチョイ 6668-2ZOZ)
垢版 |
2019/05/31(金) 14:48:52.06ID:2f7ZWXQQ0
>>494
>>459>>462でマクロでやりたいと言ってるし、
マクロ以外の回答に対してノーリアクション
数式での回答を求めてないのだろう。結果を求めるだけじゃなく、マクロ自体を書きたいという質問者もいるわけだしな
あまり押し付けるのもどうかと思う

もちろん一般的な場合は君のやり方が正しいのは明らか
さすがにそれが分かってない人はいないだろう
0498デフォルトの名無しさん (ワッチョイ 3ff9-n0I8)
垢版 |
2019/05/31(金) 16:21:11.81ID:iXFRocgY0
>>496
削除が必要って単なる思い込みではないのかな
Excelの使い方もわからないのってVBAって魔法の玉手箱じゃないの
でなければ、質問者に対する最適の解をさっさとVBAで示せばいいんだよ
0499デフォルトの名無しさん (エムゾネ FF8a-suWd)
垢版 |
2019/05/31(金) 16:31:39.12ID:Q8fJ9KqCF
元々の質問を見る限り、詳細が無いのでVBAで解決すべきか数式で解決すべきか判断できん。

逆に言えばこれだけの情報でVBAを必要無いとか言ってしまえる人って初心者とまでは言わないけど大したスキルは無いんだろうなと思ってしまう。
0503デフォルトの名無しさん (エムゾネ FF8a-suWd)
垢版 |
2019/05/31(金) 17:17:59.31ID:Q8fJ9KqCF
>>502
俺はこんな質問に回答しないよ。
何処の掲示板でもそうだけと面白いテーマじゃなきゃ回答しない。
俺が回答する必要も無いだろう。

>>460とかを見てどうにか頑張れば良いんじゃね?と思ってる。
0508デフォルトの名無しさん (スプッッ Sd2a-suWd)
垢版 |
2019/05/31(金) 17:43:17.34ID:2P/bRCUed
というか>>499に書いた通り、状況を判断する材料が少ない。
例えば月のシートが沢山あって、それぞれのシートの集計結果を集計シートで閲覧したいという状況なら数式の方が良さそうだ。(それでも情報が足りないから「良さそう」としか言えん。)
0519デフォルトの名無しさん (ササクッテロ Sp33-+KpA)
垢版 |
2019/06/01(土) 00:10:30.70ID:Re37ayj0p
>>517
もちろん全シート一括で印刷かけてるんですけど、スプール設定?の関係で重いシートの印刷が後回しになるので10ページ1ページ2ページの3シートのファイル印刷すると10ページのシートが一番最後に印刷されちゃって不便なんです
0520デフォルトの名無しさん (ワッチョイ 6a01-yed5)
垢版 |
2019/06/01(土) 02:54:17.07ID:48zxZgqm0
ListBox使ってるんですけど、たまに表示がバグります
薄い横線がListBox内の全ての行間に表示されちゃうんです
行のフォーカスを動かすと、動かした範囲ではこの変な横線は一旦消えるんだけど、
何かをするとまた横線があらわれる

こういうのって何が原因かわかりますか?
再現性がそう高くないので、対策しづらいです
表示がおかしいだけでプログラム自体は問題なく動きます
0521デフォルトの名無しさん (ワッチョイ 6a01-yed5)
垢版 |
2019/06/01(土) 03:41:24.97ID:48zxZgqm0
>>520ですけどもしかしたら直ったかもしれないです
multiSelectをfmMultiSelectExtendedに設定してるんですけど、
UserForm Initialize内で設定するのではなく
プロパティウィンドウで選択して設定するようにしたら今の所出ないです

再現性があれなんで確実とは言えないんですけど
0522デフォルトの名無しさん (ワッチョイ 0bda-2ZOZ)
垢版 |
2019/06/01(土) 07:48:48.81ID:FEI28S1s0
>>520
ListBoxに限らず、Excelのオブジェクトは変だよ。
そんなもんだと思う。
俺もこんな現象に遭遇した。

・印刷プレビュー直後に、リストボックスを操作できなくなる。(シートを切り替えると直る。)
・MSクエリやADOを使うと、ボタンやテキストボックスの位置が、見た目と合わなくなる。

 [コマンドボタン]          何もない部分
     ↑                 ↑
ここにボタンがあるのに  ここを押さないと反応しない
0523デフォルトの名無しさん (ワッチョイ 0bda-2ZOZ)
垢版 |
2019/06/01(土) 07:53:01.65ID:FEI28S1s0
あと、なんじゃそりゃ!???? と思ったのが、

 [コマンドボタン]
    ↑
  押すと・・

             →→→ [コマンドボタン]
    ↑
 ボタンが逃げる

多分、押す前のボタン画像が左にあって、
押した後の(凹んだ状態の)画像が右にあるんだと思う。
0524デフォルトの名無しさん (ワッチョイ 6a01-yed5)
垢版 |
2019/06/01(土) 08:43:23.59ID:48zxZgqm0
>>523
論理的に解決できる方法がないから山勘に頼っていじってみて
運良く解決できたらもうけもんってことですかね

表示がぶれると、使ってる人が、このプログラム大丈夫かと心配し始めちゃうんで
できるだけ避けたいところです
0527デフォルトの名無しさん (ワッチョイ 3ff9-n0I8)
垢版 |
2019/06/01(土) 16:00:03.94ID:Vz6e2VkK0
まあ、プロさんのようだから答えられないの恥ずかしいのか(笑)
あげとくは
0535デフォルトの名無しさん (ワッチョイ 268c-ViZH)
垢版 |
2019/06/01(土) 22:55:52.58ID:g0N7gK6Z0
>>532
早速やってみたけど、逆のパターンである
「先頭に数値が入っていて途中から文字列に変化した」場合は判定できた。
具体的には数値部分だけ読み込んで文字列の部分はNULLになった。
「先頭に文字列が入っていて途中から数値に変化した」場合は全部文字列扱いになったので厳密には判定不能。
0536デフォルトの名無しさん (ワッチョイ 2fd6-Ekl2)
垢版 |
2019/06/02(日) 18:41:53.51ID:3MovPWtK0
初心者なので意味がわかりづらかったらすみません

まず、やりたいことは
1.ユーザーにB2〜E2あたりに文字を入力してもらう
2.それを5行前後繰り返す
3.この後にボタンを押してもらう
(以降マクロ処理)
4.入力して貰った行の各左セル(A列)に営業日(月初)を入力する
入力内容を下の行にコピペして、A列日付だけ翌営業日にする
それを月末日まで繰り返す

これを実現したい場合、営業日付をどう表示し、どう繰り返せばよいか検討がつきません
アドバイス頂けませんでしょうか
日付に関してyyyymmのみユーザーに手入力して貰う予定で、それを利用できるかなと思っています
0537デフォルトの名無しさん (ワッチョイ cf68-2ZOZ)
垢版 |
2019/06/02(日) 19:17:16.23ID:wosufaXU0
>>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
0539デフォルトの名無しさん (アウアウエー Sae2-Dmnv)
垢版 |
2019/06/04(火) 00:44:40.62ID:Vr0YkSWUa
教えてください。
ActiveCell.EntireRow.Copy Destination
これで「任意のセル選択中で1行コピー」になりますが、
改造して「任意の複数セル選択中の複数行をコピー」に変えたいんですがわかりますか?
0540デフォルトの名無しさん (ワッチョイ 738e-oyaE)
垢版 |
2019/06/04(火) 01:01:51.67ID:sjSsEz0E0
仮面ライダー本郷猛は改造人間である。彼を改造したショッカーは世界制覇を企む悪の秘密結社である。仮面ライダーは人間の自由のためにショッカーと戦うのだ!
0541デフォルトの名無しさん (アウアウエー Sae2-Dmnv)
垢版 |
2019/06/04(火) 07:28:25.36ID:CwYFwdXYa
>>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以下だと重複して貼り付けられます。
重複しない方法を教えてください。
0544デフォルトの名無しさん (CA 0H37-G2Tg)
垢版 |
2019/06/04(火) 11:03:51.11ID:ABA6WeJwH
【速報】金券五百円分とすかいらーく優侍券をすぐもらえる 
https://pbs.twimg.com/media/D8I_sqPU0AEizjq.jpg   
   
@ スマホでたいむばんくを入手    
A 会員登録を済ませる
B マイページへ移動する   
C 招待コード→招待コードを入力する [Rirz Tu](スペース抜き)     
 
今なら更に4日18時までの登録で2倍の600円の紹介金を入手
クオカードとすかいらーく優待券を両方ゲットできます。     
       
数分の作業でできますのでご利用下さい。   
0547デフォルトの名無しさん (アウアウエー Sae2-Dmnv)
垢版 |
2019/06/04(火) 18:55:29.74ID:w6NTuaQma
>>542
できました。ありがとうございます。
0548デフォルトの名無しさん (ササクッテロ Sp33-+KpA)
垢版 |
2019/06/04(火) 22:55:20.87ID:JKzLDG9lp
直前に開いたファイルのキャッシュ的なものを参照して情報を取得することってできますか?
例えば直前に開いて印刷して閉じて消去したファイルのA1セルに記載の値を別ファイルのB1セルに転記する、みたいな
0549デフォルトの名無しさん (ワッチョイ 73f1-Xi99)
垢版 |
2019/06/04(火) 23:07:17.09ID:e2Nk6zam0
>>548
そんなの知るか
0553デフォルトの名無しさん (ワッチョイ 8f91-Ddlz)
垢版 |
2019/06/05(水) 14:54:24.90ID:1kcRpkSq0
これはそんなの知るかという気持ちもよく分かる。
工夫次第でどうとでもなるけど、そういう問題かどうかをはっきりさせるべき。

そういう仕組みを作ることなくできるかと言われれば、できないと答えるだろう。
工夫でそういう仕組みを作りたいというなら、それについて自分の考えを述べるべきだ。
VBAの問題じゃなくて考え方を考える問題なんだから単純なスキルの問題ではない。
0554デフォルトの名無しさん (ワッチョイ b7ce-2ZOZ)
垢版 |
2019/06/05(水) 15:52:32.95ID:bp5RZsKU0
事前に、ファイルを閉じる前や消す前に準備しておけばどうともできる

他人が使ったパソコンをこっそりのぞき見したいなら、それはかなり難しい
不可能じゃないけど、現時点では動機が不明で教えるべきじゃないと思われるので書かない
0561デフォルトの名無しさん (スッップ Sd8a-aXJR)
垢版 |
2019/06/05(水) 23:48:39.29ID:70FqVZZPd
いやいや
ここは御大層に「ツール」とか書かれて吹き出す場面だろ
0564デフォルトの名無しさん (ワッチョイ a5f9-MqbY)
垢版 |
2019/06/06(木) 12:05:19.65ID:vG+mGYiZ0
まあな、Excelの標準機能で出来ることも知らん奴が、作りたいものを考えて質問するんだよな
だけど、ちょっと知ったかぶってどんなプログラムを作りたいとか書くけど
普通にExcelの機能で出来ることも、質問してるんだよな
動作仕様をかける奴は普通VBAのマクロも作れる
作れないやつの動作仕様ってごみなんだよな、何がしたいかだけ書けよと思う
0570デフォルトの名無しさん (ワッチョイ 4f01-sTnS)
垢版 |
2019/06/07(金) 01:08:10.00ID:RApS/5ei0
ファイルの保存先の権限がなくて、別のユーザーのアカウントとパスワードで保存できる??
0572デフォルトの名無しさん (オイコラミネオ MM49-sTnS)
垢版 |
2019/06/07(金) 12:45:57.13ID:6q38d7bCM
あるよ
0573中国人 (ワッチョイ 17f1-nH6h)
垢版 |
2019/06/07(金) 15:55:31.64ID:DiCkvzGr0
ないあるよ
0581デフォルトの名無しさん (ブーイモ MMe1-nH6h)
垢版 |
2019/06/09(日) 07:51:19.35ID:6FBaXgmQM
できます
0582580 (ブーイモ MMe1-nH6h)
垢版 |
2019/06/09(日) 07:52:18.86ID:6FBaXgmQM
>>581
できるかどうかを聞いているのではない。
やり方を聞いておるのだ。
0584デフォルトの名無しさん (アウアウエー Sa93-2k/K)
垢版 |
2019/06/09(日) 08:14:03.36ID:fRZrFeuoa
>>581
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を教えていただきたいです。
0588デフォルトの名無しさん (アウアウエー Sa93-2k/K)
垢版 |
2019/06/09(日) 09:45:03.10ID:fRZrFeuoa
>>587
ありがとう、ちょっと読み込んでみる

やりたいことは要は、エクセルにずらーっとリストがあって、その内容を、

雇用契約書の穴埋め書式みたいな他のファイル(エクセル、ワード、pdfあり)に展開したい

展開内容はセル内容の挿入と、履歴書の男・女みたいに、○を挿入する形がある
0594デフォルトの名無しさん (アークセー Sx75-A7AD)
垢版 |
2019/06/09(日) 10:13:10.62ID:47rhBQpmx
>>592
参照設定はあくまで参照先ライブラリの型をインテリセンスや型指定でネイティブに使えるようにするための設定
ワードのアプリケーションのインスタンスを生成しないとエクセルからワードの操作はできない
0598デフォルトの名無しさん (アークセー Sx75-A7AD)
垢版 |
2019/06/09(日) 10:29:49.90ID:47rhBQpmx
>>595
>>597
参照設定したときに参照先ライブラリのクラスについて必ずNewキーワードでインスタンス生成しないといけないという決まりはない

参照設定して変数にワードのアプリケーション型を適用してる時点でアーリーバインドになる
Newキーワードで生成したインスタンスのポインタを変数で受けてもCreateObjectから返ってくるポインタを変数で受けても同じ
0599デフォルトの名無しさん (アークセー Sx75-A7AD)
垢版 |
2019/06/09(日) 10:36:03.49ID:47rhBQpmx
というか、参照設定時のインスタンス生成にNew使わないと駄目なんて決まりがあったら、GetObjectで他アプリのインスタンス取得して操作したいときはどうなるのって話になるよな
0601デフォルトの名無しさん (ワッチョイ cb68-to8s)
垢版 |
2019/06/09(日) 11:16:29.03ID:Apn2tV9M0
CreateObjectも参照設定もimportだから、どっちか一つでいいんじゃないの?
両方やっても問題ないけど意味はないと思う

あんまリンク内容見ずに貼ってしまった俺が悪いな、すまん
0603デフォルトの名無しさん (ワッチョイ bf44-2HP8)
垢版 |
2019/06/09(日) 13:37:36.61ID:WDGftzb80
配布するなら、参照設定でプログラミングしてテストして、参照設定外して createobject方式にして配布
配布先で参照設定か外れることがまれによくあるので、こうしとくと無難
0610デフォルトの名無しさん (ブーイモ MM3f-nH6h)
垢版 |
2019/06/10(月) 10:20:56.62ID:63YEvEejM
>>606のおっちゃんが、createobject()書いたほうが良い、と書いてるけどなぜ?
0612デフォルトの名無しさん (ブーイモ MM3f-nH6h)
垢版 |
2019/06/10(月) 10:49:13.46ID:63YEvEejM
>>611のおっちゃんが、おまかん、と書いてるけどどういう意味?
0614デフォルトの名無しさん (スプッッ Sddb-mek+)
垢版 |
2019/06/10(月) 18:38:27.74ID:Z+X8vlHcd
参照設定までするのにVBAでする必要ある?
なんでそこまで意地になってVBAなんぞに拘るの?
0615デフォルトの名無しさん (ワッチョイ cb68-to8s)
垢版 |
2019/06/10(月) 18:45:40.31ID:kP6gdt450
>>612
お前の環境(が悪い)
スマホゲームで動作が悪い時に言われる事がある
おまかんとかおれかんとか

>>614
全くこだわってないよ
最初から別言語やツールが良ければそれらで作ってる
Excelで99%出来上がってるのにここから戻るってのがありえないってだけ
0618デフォルトの名無しさん (ワッチョイ 7ba1-A8tY)
垢版 |
2019/06/10(月) 21:38:08.94ID:uF73PSK40
VBAに新機能がつかないのはもう諦めた
でもIDEはもうちょっと進化させるつもりないん?

と思って調べてみたらアドインでなんとかする方法あるんだな
使ってる人いる?
0620デフォルトの名無しさん (ワッチョイ 7bda-to8s)
垢版 |
2019/06/10(月) 21:54:55.45ID:t/PPxU2R0
グラフのプロットエリアの位置が設定出来ん!
ググったら、デバッグプリントするといいよって書いてあったので、
やってみたら、本当に出来た。
何でそんなんでOKなのかワケワカラン。
0622デフォルトの名無しさん (ドコグロ MM03-2DaB)
垢版 |
2019/06/10(月) 22:12:08.21ID:fPwYLMuZM
>>618
むしろ開発環境は意図的に使用困難にしていく方向じゃないかな
VBAの実行はできるけどVBEは廃止、どうしても編集したい場合は旧バージョンを使ってね、くらいはそろそろ覚悟しといたほうがいいかも
0627デフォルトの名無しさん (ワッチョイ 17f1-nH6h)
垢版 |
2019/06/11(火) 01:41:42.71ID:Doe0n0C30
>>614のおっちゃんはVBAをバカにしてるけど
じぁあVABを使わないなら何の言語でするつもりなの?
0629デフォルトの名無しさん (ブーイモ MMf3-nH6h)
垢版 |
2019/06/11(火) 06:11:13.67ID:RxxCGp6TM
>>628のおっちゃんはパワーシェルと言ってるけど
便利なエディターとかはあるの?
0634デフォルトの名無しさん (ワッチョイ 4563-uQfi)
垢版 |
2019/06/11(火) 07:53:53.39ID:3zpWolTP0
外部のプログラムと
シェル用にガチガチになったExcelフォーマット別々に扱うのも不便そうだ

ExcelVBAこそオブジェクト指向の体現であったのか
0636デフォルトの名無しさん (ワッチョイ 19db-nH6h)
垢版 |
2019/06/11(火) 08:41:07.88ID:0ljzRX5z0
>>635のおっちゃんはRubyはなくなるみたいなこと言ってるけど
人気じゃないの?Web関連の仕事もRuby案件が一番人気と聞いたこともあるし。
0637デフォルトの名無しさん (ワッチョイ 19db-nH6h)
垢版 |
2019/06/11(火) 08:42:51.90ID:0ljzRX5z0
>>631のおっちゃんはPowerShell ISEと言ってるけけど
そんなのどこでダウンロードできるの?
0638デフォルトの名無しさん (ワッチョイ 19db-nH6h)
垢版 |
2019/06/11(火) 08:44:36.46ID:0ljzRX5z0
仕事で使うPCにはまず入っているExcel VBAのエディタこそダウンロード不要で汎用性あると思うけど
0640デフォルトの名無しさん (ワッチョイ cb68-to8s)
垢版 |
2019/06/11(火) 08:55:06.40ID:CNYfS3si0
>>636
一時流行ったし最先端の時期もあったけど、rubyを開発した「まつもとゆきひろ」がサボりにサボって他言語に抜かれまくった
今は全く人気がないし性能も悪い
ただ、保守案件が多少残っているので、ruby使っている人は保守案件をこなしながら他言語を覚えている状態

githubユーザーの割合
https://career.levtech.jp/files/img/guide/knowhow/files/oldthing.png
あくまでgithubのプロジェクト
web開発の主流になっているphpは山程使われている

>>638
テキストエディタと変わらんよ、すっげーしょぼいよ
汎用性ではなく、何も出来ないといったほうが正しい
atomやsublimetext辺り使ってみると分かると思う
0642デフォルトの名無しさん (JP 0Ha3-nH6h)
垢版 |
2019/06/11(火) 09:09:53.52ID:XOtJ2V1dH
>>639のおっちゃんはニートですね。
会社のPCは2流以下の企業以外はインストール禁止がほとんど。
0643デフォルトの名無しさん (JP 0Ha3-nH6h)
垢版 |
2019/06/11(火) 09:14:21.50ID:XOtJ2V1dH
>>640
そうですか
じゃRubyやめよう
PHP勉強する
もともとRubyは糞言語と思ってた
「まつもとゆきひろ」のおっちゃんは開発者によけいな負担をかけさせやがって
0649デフォルトの名無しさん (スプッッ Sddb-gh1U)
垢版 |
2019/06/11(火) 11:57:40.02ID:xU3mv9gpd
同じ議論ばっかだなあ。
今までの議論でVBAが一番有利なのは既に何度も語り尽くされてる。
Excel上で余計な申請などせずに、何処でも汎用的に1ファイルで扱えるのはVBAのみ。

汎用実行ファイルの作成の代わりにVBAでやるのはダメだけどね。
殆どの議論が土俵を間違えてる。
0651デフォルトの名無しさん (スプッッ Sddb-gh1U)
垢版 |
2019/06/11(火) 12:09:42.52ID:xU3mv9gpd
例えばVBAでは無理な処理はC#なんかを使う。
そうすると参照設定が必要になったり、汎用的じゃ無くなったりする。
それは仕方の無いことだ。
けど、上の方で参照設定の議論が出てるけど、上級者で実行時バインディングにする一番大きな理由はコード使用者に参照設定するよう説明を付けなければならない点にあると思う。
ソースコードだけで完結しないのを良しとしないわけだね。

そういう点からするとVBAのコードだけで完結しないのは一歩後退という感じがするわけ。

勿論、処理そのものがVBAでは無理なものは他言語でやるのは当然のことだけどね。
0652デフォルトの名無しさん (スプッッ Sddb-gh1U)
垢版 |
2019/06/11(火) 12:15:57.12ID:xU3mv9gpd
PowerShellは残念ながら殆どメリットになる所が無いと思う。
C#ならVBAではどうにも無理な処理をExcelファイルに統合出来る。
汎用性からは一歩後退するけど1ファイルにはなる。

PowerShellでVBAにはどうにも無理な処理というのがそもそも殆ど思い付かない。
その上、1ファイルに統合出来ない。
正に土俵が違う感じ。
0655デフォルトの名無しさん (ドコグロ MM03-1bgd)
垢版 |
2019/06/11(火) 12:27:30.71ID:Ht7m4b5+M
VBA がいいのかそれとも PowerShell や C# がいいのかはそれこそケースバイケース
VBA が絶対有利と言い張る ID:xU3mv9gpd みたいな奴がいるから毎回グダグダの議論が繰り返されてるだけ
0656デフォルトの名無しさん (スプッッ Sddb-gh1U)
垢版 |
2019/06/11(火) 12:36:41.02ID:xU3mv9gpd
>>655
ケースバイケースだが有利なのは当然。
土俵を限定した専用言語なのだから。
サクラエディタのマクロはそれ用のjavascriptとライブラリが有利、秀丸には秀マクロが有利なのと同じ。

頑張ればサクラエディタの拡張用にPowerShellで何か書けるかもしれんが、そんなことする奴がいるか?
0659デフォルトの名無しさん (ドコグロ MM03-1bgd)
垢版 |
2019/06/11(火) 13:05:58.25ID:Ht7m4b5+M
ケースバイケースって書いてるのにまだ有利なのは当然とか言うアホはどうしようもないな…
100歩譲って有利なケースが多いと言うならまだしも言い切る辺り>>657の言うのが正しいんだろう
0660デフォルトの名無しさん (スプッッ Sddb-gh1U)
垢版 |
2019/06/11(火) 13:16:24.61ID:xU3mv9gpd
日本語の分からないアホはどうしようもないな。
有利≠絶対にそうしなければならない。

有利なケースが多いことを有利と言っているのが分からないんじゃ話にならない。
0662デフォルトの名無しさん (スプッッ Sddb-gh1U)
垢版 |
2019/06/11(火) 13:25:50.47ID:xU3mv9gpd
Excelファイルを作るという場合においてVBAが有利かと言えばそんなことは全く無い。
Excel上で作る場合ぐらいだろう。

VBAが有利になるのはあくまでExcel上から動かすからだ。
土俵を限定しているということはそういうことだ。

そういうことを理解出来ない人が多い。
0664デフォルトの名無しさん (スプッッ Sddb-gh1U)
垢版 |
2019/06/11(火) 14:29:17.02ID:xU3mv9gpd
>>663
その処理を実装する言語でしょう。
Excel上で実行しないなら、例えばPowerShell上で某かの処理を実装し、その中でExcelファイルを作成したいならPowerShellで実装すべきでしょう。
Rubyで某かの処理を実装し、その中でExcelファイルを作成したいならRubyになるでしょう。

VBA以外の大抵の場合、Excelファイルがメインなのでは無く、某かの処理がメインでしょう。
0666デフォルトの名無しさん (スプッッ Sddb-gh1U)
垢版 |
2019/06/11(火) 14:58:57.67ID:xU3mv9gpd
>>665
他言語を主張する人は、自分目線でそういう土俵を考慮しない人が多いという話。

ここはExcelVBAのスレだから最初からExcel上で実行することが前提になってるし、最初からの単体実行ファイルや単体実行スクリプトに比べてExcelが介在しない点について汎用的でないことが前提になっている。
(VBAでExcelファイルとは無関係な汎用処理を実行させることは可能でも、その点で有利を主張する奴はいない)

そういう前提である以上、他言語との比較では他言語はExcel上で実行する立場で有利不利を論じなければならないからVBAが有利なのなんて当たり前でしょ。
そもそもがVBAが有利な土俵なんだから。
0667デフォルトの名無しさん (スプッッ Sddb-gh1U)
垢版 |
2019/06/11(火) 15:01:30.73ID:xU3mv9gpd
VBAの場合、Excel上でファイルを作るのが前提。
他言語でよくやられてるExcel上では無い所でExcelファイルを作るというのはVBAからすると最初からスレチになっている。
0673デフォルトの名無しさん (ワッチョイ 5d8e-KhuK)
垢版 |
2019/06/11(火) 18:22:06.08ID:ZxhAChx00
言語が糞より開発環境が糞だな
0674デフォルトの名無しさん (スプッッ Sdf3-mek+)
垢版 |
2019/06/11(火) 18:44:56.74ID:9ACOiOQ8d
1ファイルならVBAってのは理解出来る
外部参照までするのにVBAってのはなんで?ってなる
余計なのがあるから渡される方も怪しむ
0677デフォルトの名無しさん (ドコグロ MM03-1bgd)
垢版 |
2019/06/11(火) 19:19:42.90ID:Ht7m4b5+M
>>674
だからケースバイケースだって言ってるでしょ
測定器から読みだしたデータから簡単なレポート作るならVBAがいいケースもある
その際に測定器とのやり取りのためにメーカー提供のDLL参照するとか
0679デフォルトの名無しさん (スプッッ Sddb-gh1U)
垢版 |
2019/06/11(火) 20:08:00.11ID:xU3mv9gpd
>>669
そうじゃなくて、ここは汎用言語じゃ無いVBAのスレだから比較するならVBAで想定されている利用に限ると言っている。
それ以外で比較しても意味が無い。

だからVBAの土俵に合わせて貰わないとな。
汎用言語としてVBAを使うという話ならVBAが優れているなんて言う奴はいない。
0683デフォルトの名無しさん (ワッチョイ 1301-1bgd)
垢版 |
2019/06/11(火) 20:30:26.57ID:dJ5Iq6cG0
>>681
> 本来、どの言語を使うべきかなんてケースバイケースなんだが、その既にケースバイケースの件に踏み込んでることに気付いていない奴多数。
いや、必死になってる1人だけじゃね?w
0687デフォルトの名無しさん (スプッッ Sddb-gh1U)
垢版 |
2019/06/11(火) 22:24:49.74ID:xU3mv9gpd
>>682
お前のレベルに合わせるの疲れるわw
「有利なケースが多いことを有利」の2つの有利は厳密に言えば意味が違う。
したがってこれ自体は間違いとは言い切れない。
しかし、お前の言うようにこれが間違いだとすれば>>678がその結論になる。

つまり>>675が間違っているか、>>678が正しいかのどちらかだ。

たぶんこれ理解出来ないんだろうな。
ホント疲れるw
0694デフォルトの名無しさん (ワッチョイ 6b2c-MqbY)
垢版 |
2019/06/12(水) 02:25:06.67ID:vWkgJgOw0
PHP7, Python3 は、互換性が低いから、全く同じものを作り直しているだけだろ。
Ruby は互換性が高いから、作り直さなくても動くから、プロジェクトの数が少ない

雑誌・web サイトの記事もそう。
PHP7, Python3 の記事は、書き直しただけで、内容は以前と同じ

テキスト処理なら、圧倒的にRuby が有利!

>>637
PowerShell, PowerShell ISE の両方は、Windows に、元から入っている

>>639
銀行でも、有料のExcel から、無料のLibre Office へ移行した所もある。
有料ソフトはインストール時に、管理部門に申請書を書いたり、代金支払いなどの手続きが面倒だから
0697デフォルトの名無しさん (スフッ Sd2f-to8s)
垢版 |
2019/06/12(水) 08:32:39.63ID:8utrJunyd
世の中けっこう非生産的だよ
著作権とかセキュリティとかリバエン禁止とかいろんな理由で他人の作ったコードは使えないから、まったく同じ結果の出る関数を1から書き直せって仕事がけっこうある
まあ、車輪の再発明を強いられるのは、どんな業界でもあるんだろうけどさ
0699デフォルトの名無しさん (ワッチョイ 4591-gh1U)
垢版 |
2019/06/12(水) 08:41:04.27ID:y0vSE/xP0
>>690
VBAでも高速化するテクニックは沢山あって、それをきちんと考えて組む上級者は遅いと感じることはあまり無いと思う。
けれども、どんなにテクニックを駆使しても限界はあって、本質的に遅い部分は他言語を使った方が良い場合もある。

Excel上の部品で、VBAでは作成不可能なものもある。
0701デフォルトの名無しさん (スッップ Sd2f-mek+)
垢版 |
2019/06/12(水) 08:46:17.08ID:yvAeGy9Kd
インプリンタだし並列処理が出来ないから最近の大容量データ処理にそもそも向かない
0702デフォルトの名無しさん (スプッッ Sddb-Ej7O)
垢版 |
2019/06/12(水) 08:53:01.12ID:zhdH+o61d
セルA1,B1,C1,D1に4,3,2,1と入っていて500行目まで同じようにランダムに数字が入ってる状態で、1行ずつ500行目まで全て昇順にソートするプログラムを教えてください。
マクロの記録で1行分をコピペして作ったんですがセル位置直すのに心折れてしまいました。
for nextで繰り返し処理できるようなプログラムでできませんでしょうか。よろしくお願いします。
0704デフォルトの名無しさん (ワッチョイ 4591-gh1U)
垢版 |
2019/06/12(水) 09:16:46.73ID:y0vSE/xP0
>>702
上級者がこういう質問に回答したいと思わないのは、あなたは何でFor Nextで出来ないのか、あなたはFor Nextで書こうとした時にどこで詰まっているのか書いて無いからなのね。

想像するに、1行分のマクロ記録の部分を例えばk行目についてkを使って表現出来ないからだと思うんだけど、違うかな?
0705デフォルトの名無しさん (アークセー Sx63-A7AD)
垢版 |
2019/06/12(水) 09:22:03.49ID:bW9dsdsdx
>>702
標準的なWindows環境でファイルを使う前提ならば、.NETのArrayListクラスのSortメソッドを使って各行の値を昇順ソートしてから代入してしまう手順にするのが楽かな
制御フローは{各行の処理{各列の処理}}というオーソドックスな二重ループで事足りると思う

ArrayListはCreateObject("System.Collections.ArrayList")でインスタンス生成できる
詳細はググってね
0706デフォルトの名無しさん (ワッチョイ 4591-gh1U)
垢版 |
2019/06/12(水) 09:22:37.44ID:y0vSE/xP0
>>700
そう言えば、コントロールの自作は無理でもクラスにすることはあるね。
でもクラス単体で完結させるのは難しい。
WndProcは標準モジュールに置くしか無いから。
でも変数にマシン語を入れて無理矢理クラスにWndProc置いてた人がいたな。
こういうレベルまで来てるなら明らかに自分よりレベルが上だね。
0707デフォルトの名無しさん (ワッチョイ bfce-to8s)
垢版 |
2019/06/12(水) 10:09:53.61ID:td02IJ/00
>>702
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
0717デフォルトの名無しさん (ワッチョイ 6101-2HP8)
垢版 |
2019/06/12(水) 13:27:23.99ID:JxmhteBD0
上の方でリッジレーサーとか書いてたけど、そういう高度(?)なこともできなくはないで
昔、excelのフォーム上にdirectxで3Dオブジェクトとか動かしてたから

ラッパー作ってやれば相当いろんなことできる
(参照設定は含まないとか狭い了見のやつは知らん)
0720デフォルトの名無しさん (ワッチョイ 5d8e-KhuK)
垢版 |
2019/06/12(水) 16:03:58.98ID:c437ERJc0
>>694
Rubyはいらない
早く消えろ
0724デフォルトの名無しさん (アウアウクー MM23-Zs14)
垢版 |
2019/06/12(水) 16:42:21.94ID:Z0CNlc5QM
会社で使ってるpcをwin10アップグレードwin7機をwin10プリインストール64bit機にしてもらったらDAO3.6の参照設定がされてる会社共有マクロファイルが動かなくなっててワロタ
参照設定をAccsess database engineに切り替えてあげて動くようにしてあげたら賞賛されてワロタ
古い技術・pc使ってんなぁ…と思った
0725デフォルトの名無しさん (ワッチョイ e101-ekgd)
垢版 |
2019/06/12(水) 17:21:01.09ID:hdFW8H+f0
>>710
クラスモジュールで
Private WithEvents Obj As MSForms.TextBox
と宣言しておいて
form.Controls.Add("Forms.TextBox.1",str)
で生成してObjにSet
Private Sub Obj_Enter()でObjへのフォーカス移動を取りたいが取れない

labelのonClickとかは同じ方法でできてるんですが…
0726デフォルトの名無しさん (スプッッ Sddb-Ej7O)
垢版 |
2019/06/12(水) 18:35:05.76ID:zhdH+o61d
702です。色々とありがとうございます。704さんの仰る通りでございます。707さんのではできませんでしたが、大いに参考にさせていただき無事できました。助かりました!
0727デフォルトの名無しさん (スッップ Sd2f-mek+)
垢版 |
2019/06/12(水) 18:41:55.19ID:yvAeGy9Kd
使用人数の多い人気の言語なんて価値が低い
使える奴が溢れてるから君の代わりは沢山いるから明日から来なくて良いよ
0729デフォルトの名無しさん (ドコグロ MM4f-1bgd)
垢版 |
2019/06/12(水) 19:04:59.78ID:LcFRFSVAM
>>714
どこが高度なのかさっぱり
変数にコード入れるとかむしろ昔の方がやってた(って言うかやらざるを得なかった)
Peek, Pokeとかあったしな
今のOSはチェックが厳しくなったからそのあたりは面倒になってるし低能がマウント取りたいだけにしか役立たんよw
0734デフォルトの名無しさん (ワッチョイ 4591-gh1U)
垢版 |
2019/06/12(水) 20:12:08.61ID:y0vSE/xP0
>>729
使わないとプログラムの構成が汚くなる。
で、これを知らなかった頃にクラスにWndProc置けないの何とかならんかと思ったことがある。
同じように考える人がいたからこれが実践されたわけ。

つまり、マウント取りたいだけにしか役立た無いなんて想像するようなアホなレベルの人では理解するのは力不足だよ。
0742デフォルトの名無しさん (ワッチョイ 0b90-to8s)
垢版 |
2019/06/12(水) 23:03:51.94ID:LF95RN4F0
言葉尻を捉えて揚げ足取り合ってて楽しんでるようにしか見えない
0751デフォルトの名無しさん (ワッチョイ 9791-o0lF)
垢版 |
2019/06/13(木) 09:52:28.29ID:mXGAEns/0
>>747
高度だが。
Windowsがどのようにして動いてるかなど、Peek、Pokeの時代は知る必要さえ無かった。

やってる奴はいる。
自分のスキルの問題を言語のせいにする奴にとっては中途半端なんだろうな。
0753デフォルトの名無しさん (ワッチョイ 9791-o0lF)
垢版 |
2019/06/13(木) 12:56:20.10ID:mXGAEns/0
>>752
結局こういうことを言う人はC#だろうがPythonだろうが自分のスキルが足らないとこの言語はダメだと言って自分のスキルを上げるとか工夫するとはならないんだろうな。

文句を垂れるだけで自分で解決しようともしない。
0755デフォルトの名無しさん (オイコラミネオ MMe3-Lxz1)
垢版 |
2019/06/13(木) 14:22:51.67ID:eEQwMBJ6M
>>752
コンストラクタに引数持てないことを問題視する意味がわからん
どんな言語も万能じゃない
他のやり方で解決できるなら、そうするんだよ
アセンブラしか使えないなら、その仕様範囲でプログラミングするんだよ

大きな口叩くならお前が万能言語作ってみろや
0758デフォルトの名無しさん (ドコグロ MM03-zlGV)
垢版 |
2019/06/13(木) 15:18:51.46ID:P5difHG2M
>>755
> コンストラクタに引数持てないことを問題視する意味がわからん
えっ、まじで言ってるの?
クラスを持つ他の言語はたいていコンストラクタに引数持てるよね?
その意味もわからないの?

> 他のやり方で解決できるなら、そうするんだよ
だからVBAでクラスなんて使いどころが限られるって話なんだが…

> 大きな口叩くならお前が万能言語作ってみろや
極論で反論したつもりになる低能乙w
0763デフォルトの名無しさん (アウアウウー Sac7-3DxT)
垢版 |
2019/06/13(木) 16:57:50.26ID:fZBdtlsYa
でも今のVBAは詳しく説明してくれて良い時代だよな
基本書と後はネット渡歩けばそこそこは作れるな
昔はベーシックは簡単だったがやれることが限られすぎてて
結局機械語に行かないと話にならなかったが、買った本が悪かったのか全く理解できなかった

代入ばかり書かれててもどうやったらゲームができるのか分からないよってよ
0776デフォルトの名無しさん (ワッチョイ 768c-8GUE)
垢版 |
2019/06/13(木) 23:44:35.37ID:IEO0nY210
GetProcAddress がwindowsAPIならLoadLibrary もwindows API
API に文字列を渡して何かにattach するときに、関数単位なのかファイル単位なのかってだけの話だよ。
使う関数が多数あることを想定している。
0780デフォルトの名無しさん (ワッチョイ 9791-o0lF)
垢版 |
2019/06/14(金) 01:36:46.11ID:AsK2wH5J0
>>766
解決するつもりは無いのですよw
日本語分かります?
>>753は解決できるなんて話してないんですよ。

VBAのコンストラクタ問題を否定していない。
>>753はあなたのような人はC#で解決出来ない問題が出てくるとC#をこき下ろすだろうと言ってるにすぎない。
それとも「解決しようともしない」に反応してるのかな?
そういう話なら簡単です。
動作で問題になるよりコンストラクタ問題の解決は小さなことだからですよ。

あなたはコンストラクタ問題が解決出来ないからVBAでは実現出来ないと言って手を引いた。
しかし、私にとってはコンストラクタ問題が解決出来なくてもVBAで実現出来ることの方が上です。
動作の面でVBAの方が上となればの話ですが。

そしてVBAでの開発は限定された土俵であるがゆえに動作の面で上と成りやすい。
したがって総合的に有利となるわけです。
0784デフォルトの名無しさん (スッップ Sdba-o0lF)
垢版 |
2019/06/14(金) 12:04:47.09ID:sZCV0u2+d
>>782
???
「どうやって解決するんだよw」などと発言してるのに?
論理的思考も出来ないのかね?

クラスの話はとても分かりやすい。
>>747を読めばVBAのクラスの欠点を少しでも減らそうとせずに放棄し、その上その努力をした者に対してマウントを取ろうとする愚か者の姿がよく見える。

クラスに問題があることよりも動作に問題の有ることの方が問題なのは当然だと思うんだがね。
1ファイル問題はその一部なんだが。
0786デフォルトの名無しさん (ワッチョイ 9a01-zlGV)
垢版 |
2019/06/14(金) 13:22:06.08ID:AQvHkPsD0
>>784
> 「どうやって解決するんだよw」などと発言してるのに?
そりゃ>>753
> 文句を垂れるだけで自分で解決しようともしない。
なんて言ってるんだから当然解決策ぐらい持ってるだろうからな
まさか解決策も持たずに吹いてるだけじゃないでしょ?

> 論理的思考も出来ないのかね?
お前がなw
0788デフォルトの名無しさん (ブーイモ MMba-8GUE)
垢版 |
2019/06/14(金) 13:32:36.92ID:mJVJgN7yM
VBAのクラス(モジュール)の残念な点

・プロジェクト外から New できない
・だからcreate〜 関数を作るしかないけど当該クラスモジュールに置けない
・その他関連するちょっとしたヘルパー関数とかも中に置けない
・コンストラクタに引数がない
・End 時には Class_terminate が呼ばれない
・プロパティウィンドウに出ない隠し属性がある
・メソッドの AddressOf が取れない
0790デフォルトの名無しさん (エムゾネ FFba-o0lF)
垢版 |
2019/06/14(金) 13:36:35.91ID:kh7XeVIUF
>>786
ハァ...
日本語勉強してくれ。

出来ることと出来ないことがあるのはどんな言語でも当然のことだろう。
与えられた範囲の中で少しでも改善できる余地が有るのに己のスキルの無さから放棄したお前のことを言ってる。
改善策があるかないかの話などしていない。

そして、お前の主張は動作に問題があることに比べれば全て些末な問題だ。

クラスについてもピントが外れてる。
コンストラクタの引数問題や継承問題よりもカプセル化が不完全な問題の方が大きな問題だ。
にもかかわらず、>>747の発言をして何とも思わないのは滑稽だ。
0798デフォルトの名無しさん (スッップ Sdba-o0lF)
垢版 |
2019/06/14(金) 15:19:56.33ID:sZCV0u2+d
>>792
非表示プロパティのことだよな。
確かに何でこんなことになってんの?ってのはある。

でも、非表示プロパティをプロパティウィンドウで設定したいと思ったことは無いなあ。
0799デフォルトの名無しさん (スッップ Sdba-o0lF)
垢版 |
2019/06/14(金) 15:27:55.14ID:sZCV0u2+d
>>793
引っこみw
笑えるわw

なぜ>>765の発言になったのかを考えれば最初から改善策の話じゃ無いの明白なんだが。
>>753に対しての>>754が頓珍漢だから日本語の理解の話になってる。
頓珍漢の意味は分かるか?
噛み合って無いことを指摘してる話だぞ。

改善策の話なら噛み合ってることになるから>>765の発言にならない。
0813デフォルトの名無しさん (スッップ Sdba-o0lF)
垢版 |
2019/06/14(金) 22:28:07.84ID:sZCV0u2+d
>>809
>>811
実際は全く動かないなどという論外な話じゃない。
他言語派は自分達のデメリットについていつも無視するか過小評価するから意地悪く極端に言ってるだけ。
開発者にとってのコストより使用者にとってのコストの方が大きいという話だ。
1ファイル問題はまさにそれ。

何度も言ってるけど覆せないからいつも他言語派は過小評価に話をもって行こうとする。
0816デフォルトの名無しさん (スッップ Sdba-o0lF)
垢版 |
2019/06/14(金) 22:41:11.43ID:sZCV0u2+d
>>810
直接、VBAを使わないんて言ってないのはその通りだし、最初から分かってたことだが、その論陣で進むと自分の首を絞めることになるぞ。

お前がそういうことを言い出すかもしれないと想定済みだ。
もっとも俺の想定にも穴がある可能性は排除出来ないけどな。

何のことか分からんだろうから言っとくと、お前の主張の結論はVBAを使わないと言ってるか、お前が底辺で仕事してて何も現状を変えられないレベルかのどちらかにちっちまうんじゃないかという話だ。
0818デフォルトの名無しさん (スッップ Sdba-o0lF)
垢版 |
2019/06/14(金) 22:47:29.03ID:sZCV0u2+d
>>815
VBAとの比較において、他言語の優位性を語るのであればVBAが使用される状況においても他言語の方が優位であるという論陣を張る必要がある。

しかしながら他言語ではExcelのファイル単体では動作させられないという問題。
C#やVB.netはこれを回避できる場合があるが、この場合はまた別の問題がある。
0822デフォルトの名無しさん (ワッチョイ 9a01-zlGV)
垢版 |
2019/06/15(土) 07:28:41.71ID:oZ4xCIwS0
>>817
いつものちょっとおかしい子が喚いてるだけ
単にVBAのクラスは中途半端で使いどころが少ないって言われてるだけなのになぜかVBA自体をバカにされたように受け取って必死に頓珍漢なレスしまくってるw
0823デフォルトの名無しさん (ワッチョイ 9a01-zlGV)
垢版 |
2019/06/15(土) 07:31:34.36ID:oZ4xCIwS0
>>821
ケースバイケースだろうね
一部の企業だとインストールの手続きが面倒とかあるし配布して使わせる場合で人数多いとインストール手順書とかをちゃんと整備しないと質問攻めに合うとかの可能性もあったりするしね
0824デフォルトの名無しさん (ワッチョイ 1a90-9ye8)
垢版 |
2019/06/15(土) 08:39:07.30ID:Smf552MU0
相変わらず話し相手のいないさみしいプログラマの無駄話が続いていますが、
質問者の皆さんはこんなの無視してもらって構いませんので遠慮無くどうぞ
0825デフォルトの名無しさん (ワッチョイ 768c-8GUE)
垢版 |
2019/06/15(土) 08:57:30.79ID:hsHgq7Ga0
いまだに XP ですだとか Excel 2007 以下ですだとかと同じように、何もインストールできませんなんて条件は切り捨てればいいんじゃない?
つまり「そんな環境のことは知らん」と。
冷酷に見えるかも知れないけど、それが正しいとマジで思う。
0829デフォルトの名無しさん (ワッチョイ 9a01-zlGV)
垢版 |
2019/06/15(土) 09:54:47.74ID:oZ4xCIwS0
何もインストールできないなんてことはないけど、稟議にはんこがいっぱい必要とかはごく普通にある
> 一部の企業だとインストールの手続きが面倒とか
って書いてあるでしょ
あとそういう条件を切捨てるかどうかはお前が決める話じゃないから勝手に切捨ててればいいと思うよ
0830デフォルトの名無しさん (ワッチョイ 6735-2qry)
垢版 |
2019/06/15(土) 10:05:29.57ID:H1JzEOpH0
>>827
嘘ではないよ。会社や部署によるけどね
俺が知っているのはみずほ証券、東京三菱UFJ、あと三井が大体同じ感じ

総務はほぼ100%NG(部長以上は自由)。
営業は大半がNG。ただ営業上必要なツールは許可がバンバン降りるってのは聞いたな

基本はシステムに発注をして、全店共通のシステムに組み込むって構造になっている
だからフリーソフトを落としたり、vbaでどうこうする必要自体がない
本部が業務自体を管理して、重複する業務を発生させないようにしているんだ
システム本部がどうなっているかまでは知らない

>「そうか金融行くと何もインストールできないんだな」
大体こう思っておいたほうが良い。
ある程度PC使える人はかなり不便に感じる
セキュリティ面は厳しいけど、それに対する方法が確立されている
0831デフォルトの名無しさん (ブーイモ MMe7-6CEg)
垢版 |
2019/06/15(土) 10:15:32.07ID:AUZY33+xM
手続が要らないことをまるでメリットの様に語るけどさ
業務に組込むならどちらにせよ職場なり部署での検討が必要だろ
まさかVBAをシャドーITの温床にしてる訳じゃないよね?
0832デフォルトの名無しさん (ワッチョイ 768c-8GUE)
垢版 |
2019/06/15(土) 10:19:23.04ID:hsHgq7Ga0
>>830
「俺が知っているのは・・」ってことはあなた自身はそこじゃないけど他の金融機関勤務ってことかな?
大手金融機関なら社内データベースもそれなりにあって個々人の関連業務の範囲でアクセスできる。
また潜在的には優秀な層が集まっててITを力に出来るわけだ。
実はプログラミング環境は最初からそれなりにインストールされてましたってオチじゃない?
0833デフォルトの名無しさん (ワッチョイ 6735-2qry)
垢版 |
2019/06/15(土) 10:41:12.28ID:H1JzEOpH0
>>831
>業務に組込むならどちらにせよ職場なり部署での検討が必要だろ
その辺は年中やってるからシステムの実装までが早い。適材適所で分担されている

vbaを使うのは、慶弔関係のExcelファイルを各課に回し、集計するような場合
これがシステムに入らない
半分私事+頻度低いから仕方ないんだけど、どうにかならんかね〜

>>832
この中のどれかに勤めている+同業他社に聞いた話
思った以上に似た構造で、どうせなら同じシステム使えばいいのにって話ししたな

>潜在的には優秀な層が集まっててITを力に出来るわけだ
よーわからんけどみんな自社システムしか使えないよ。基本は入力と確認だけしかしない

>実はプログラミング環境は最初からそれなりにインストールされてましたってオチじゃない?
なんでそんなプログラミングが出来る事にしたいんだよw
必要ないから調べてもないけど、変な物作らせないために入ってないはずだ
0834デフォルトの名無しさん (ワッチョイ 768c-8GUE)
垢版 |
2019/06/15(土) 10:52:31.71ID:hsHgq7Ga0
>>833
「みんな」っていうとややこしくなるからやめようぜ。
俺もそこまでは言ってないし。

何割かの人は英会話がそれなりに出来る
何割かの人は会計の知識がある
何割かは法学部出てる
何割かの人は大学でCSやってたしプログラミングを仕事に役立てられる

単にそれだけのことだよ
0837デフォルトの名無しさん (ワッチョイ 768c-8GUE)
垢版 |
2019/06/15(土) 12:09:16.51ID:hsHgq7Ga0
>>836
「なんでも」とか「みんな」っていうと(略

「何もインストールできない」と「何でもインストールできる」の間にはギャップがある。
具体的にはVisual Studio無料版とかMicrosoft製品を禁止する合理的理由なんてないじゃん。
生産性とか競争力気にするなら。
0842デフォルトの名無しさん (ワッチョイ 275f-wD1x)
垢版 |
2019/06/15(土) 12:59:30.27ID:qi+I5FXP0
いまだにフリーソフトの使用は禁止という大企業はある。おそらくサポートの有無の話とごちゃごちゃになってる。
0845デフォルトの名無しさん (ワッチョイ 768c-8GUE)
垢版 |
2019/06/15(土) 14:44:24.21ID:hsHgq7Ga0
・なんでも勝手にインストール可の会社
・申請しても見境なくインストール不可の会社

これらがダメなのは論を待たない。

ただ「インストール」の具体的な意味がちょっ曖昧かな
0847デフォルトの名無しさん (ワッチョイ 5b9c-WmEi)
垢版 |
2019/06/15(土) 15:30:11.33ID:zh8y2rfO0
・Alt+F11を押した時の挙動(エラーやメッセージが出るのか、または画面が一瞬出てすぐ消えるといった動きを見せるのか、その他)
・イベントビューア(エラー等が記録されていないか)
・「開発」→「Visual Basic」でもVBEが起動しないのか
・その他のキー操作はどうか(そもそもAltやF11キーがちゃんと反応しているのか)
0850デフォルトの名無しさん (スッップ Sdba-o0lF)
垢版 |
2019/06/15(土) 15:40:45.10ID:AvQs7zMWd
>>821
Excelブックは単体だよ。
VBAはexeファイル作成する言語じゃないExcelブック前提じゃないとVBAとの比較に成らなくなる。

逆にさあ、C言語スレでVBA派がC言語をゴミと言ったらどう思う?
バカにしてるとか悪口の視点ではなく。

VBAはExcel無いと動かね―じゃね―かと笑うだろう。
俺だったら間違いなく笑う。
同じことがここで起きてるだけだよ。
0851デフォルトの名無しさん (スッップ Sdba-o0lF)
垢版 |
2019/06/15(土) 15:47:19.19ID:AvQs7zMWd
>>845
申請しても見境なくダメに近い所はある。
というかけっこうある。
元々入ってるの以外は全部ダメとか。
特に、これもVBAの特殊性だけど、事務寄りだからExcel以外必要無いとされる。
0852デフォルトの名無しさん (スッップ Sdba-o0lF)
垢版 |
2019/06/15(土) 15:52:10.28ID:AvQs7zMWd
>>837
合理的理由大あり。
何でそんなもの必要なの?
バカじゃないの?
Excelの仕事だよな。
Excelあれば事足りるだろw

と言われるだろうなと自分中心の思想しか持てない人とは違う俺なら想像するね。
そして、そこまで酷くなくても実際に言われるだろうな。
0853デフォルトの名無しさん (ワッチョイ 6735-2qry)
垢版 |
2019/06/15(土) 15:52:56.91ID:H1JzEOpH0
>>847
>・Alt+F11を押した時の挙動(エラーやメッセージが出るのか、または画面が一瞬出てすぐ消えるといった動きを見せるのか、その他)
何も変化なし
ショートカットキーだけが効いていないか、何かで上書きされて無効にされている感じ

>・イベントビューア(エラー等が記録されていないか)
あまり見方が分からないけど、多分何も怒ってないと思う

・「開発」→「Visual Basic」でもVBEが起動しないのか
「開発」→「Visual Basic」 起動する
「開発」→「マクロ」 起動する
マクロの記録も問題がない
ショートカットキーだけが効かない

・その他のキー操作はどうか(そもそもAltやF11キーがちゃんと反応しているのか)
ハードウェア的には問題がない

>849
していない


分析ツールをいれてから発症し始めました
検索しても前例が無くて困っています
0855デフォルトの名無しさん (ワッチョイ dfda-vI2o)
垢版 |
2019/06/15(土) 16:09:42.18ID:OazBGaLs0
win10 + offce365 でIE操作がもれなくフリーズする(3台中3台)
同じ症状出てないでか?

win10 + offce2007〜2016では問題なし
win7 + offce2007〜2016では問題なし

どうすりゃいいんだ
0858デフォルトの名無しさん (ワッチョイ 6735-2qry)
垢版 |
2019/06/15(土) 16:42:13.10ID:H1JzEOpH0
>>856
何もしていないです

>>857
調べ方悪かったです、申し訳ない
「vba ショートカットキー 起動」辺りで検索していました
直接altf11入れればよかったとは
色々試してみます

>>850
>逆にさあ、C言語スレでVBA派がC言語をゴミと言ったらどう思う?
レベルが低すぎて相手にされません
0861デフォルトの名無しさん (ワッチョイ 768c-8GUE)
垢版 |
2019/06/15(土) 16:59:15.94ID:hsHgq7Ga0
>>852
> Excelの仕事だよな
「Excelの仕事です」って募集されたならともかく、なんでそんなものが必要なのかと聞かれたら
「生産性を上げて競争に勝つためです」と答えれば済むだろ。
公務員だったら知らんけど。
0862デフォルトの名無しさん (ワッチョイ 6735-2qry)
垢版 |
2019/06/15(土) 17:02:10.82ID:H1JzEOpH0
>>859
少し哲学的になるけど「なぜプログラムを書くのか」

本質的な答えは「効率化」
効率化を行うために、我々はプログラムを書いている

機械語で書くことが出来れば最高の効率化を達成できる。現実的にはアセンブラになるけど
アセンブラをわかった上で、リソース的に問題が無い範囲で、Cやvbaで書くのはなにも問題はない。結果が同じならそれで良い

プログラマとしては、低級言語を使える分vbaよりもアセンブラの方がエライのは間違いない
逆に言うと、アセンブラをロクに使ってない人よりも日常業務を超高速でガンガン削減できるなら、vba使いの方が上である

プログラム=効率化
その上で適材適所
この根っこの部分がわかっていれば良い
0867デフォルトの名無しさん (スッップ Sdba-o0lF)
垢版 |
2019/06/15(土) 17:23:00.13ID:AvQs7zMWd
>>862
>>858と論理矛盾してる部分があるな。

レベルが低いからじゃない。
あまりにも適材適所から外れてるからだ。

このスレの議論もあまりにもではないかもしれないけど、適材適所の点を考慮せずに発言する奴が多い。
これは多分、他言語同士では適材適所の点で普通に被るからだと思う。
だからVBAの特殊性を考慮しない奴が多い。

そりゃ、作られたものを使う側にとってはCとC++じゃどっちでも良い場合も多いからなあ。
0868デフォルトの名無しさん (ワッチョイ 768c-8GUE)
垢版 |
2019/06/15(土) 17:26:06.20ID:hsHgq7Ga0
>>866
効率の主語が違うって話だよ

機械語が効率高いというなら、それはコンピューターというマシンにとっての効率の意味だ。
でもいまの時代そこは大して価値はなくて、開発スピードとか出来たプログラムの汎用性の
意味での効率に重きがある。

・「マシンの」効率性
・「人の」効率性

主語の違い、な
0869デフォルトの名無しさん (ワッチョイ 768c-8GUE)
垢版 |
2019/06/15(土) 17:32:04.90ID:hsHgq7Ga0
>>865
その会社負けるだろ?

他社さんはみんなコンピューターを上手に使いこなして効率上げてますよ。
事務作業にいちいち金かけてシステムなんか導入してないですよ?

ってならない?
0870デフォルトの名無しさん (スッップ Sdba-o0lF)
垢版 |
2019/06/15(土) 17:32:33.65ID:AvQs7zMWd
>>868
基本的にはその通りだが、結局そういう議論って多く使われてる点に重きを置いてて、意味ないと思うぞ。
アセンブラを使う必要のある所では君が価値あるなどと言ってるものに価値が無いんだ。
0879デフォルトの名無しさん (ワッチョイ 768c-8GUE)
垢版 |
2019/06/15(土) 18:13:02.75ID:hsHgq7Ga0
>>876
俺も確かに効率の事ばかり言い過ぎたかも知れない

プログラミングで効率化できる「既存の仕事」には大した価値はないかもね。
ソフトウェアでしか出来ない仕事を新たに着手することが大切だと言いたかった。
0880デフォルトの名無しさん (ワッチョイ 7fce-2qry)
垢版 |
2019/06/15(土) 18:15:10.80ID:+kUfiTvg0
>>858
最近のVisual studioとか開発ツールに、VBEのウィンドウサイズをめちゃくちゃ小さくするバグがある
たぶんIDか名前が被ってて、プロパティを勝手に変更するんだと思う

Alt+F11を押したあと、Alt+Spaceでコンテキストメニューを出し、Sキーを押すとサイズ変更モードになるから、
カーソルキーの→と↓を連打すると大きく戻せる
最後にEnterで確定
0882デフォルトの名無しさん (ワッチョイ 6735-2qry)
垢版 |
2019/06/15(土) 18:32:05.17ID:H1JzEOpH0
>>878
高級言語が低級言語をラッパーする際、必ずコストが発生する
で、低級言語を使えばコストが下がるわけでもない。ラッパーはものすごい最適化されているので、大抵の場合はコストがあがる

これが分からないなら無理に話しに参加しなくて良い
vbaの回答にもなんら影響しない
0883デフォルトの名無しさん (ワッチョイ 6735-2qry)
垢版 |
2019/06/15(土) 18:36:00.81ID:H1JzEOpH0
>>875>>880
ありがとう!解決しない
原因が分かったらまた報告します
今のところ再インストールしてもダメだ
alt→L→V という謎のメニューを覚えてしまったので、まぁ無くてもなんとかなりそうだ
0885デフォルトの名無しさん (ワッチョイ 6735-2qry)
垢版 |
2019/06/15(土) 18:44:01.44ID:H1JzEOpH0
>>884
>>868だけに限って言えば、言ってる事は間違ってない

ただ、>>863でよく分かってないんだか、煽りか、アスペか、判断に困る発言を君がしたから、みんなに補足されまくってる
否定というかコイツ大丈夫か的な感じ
そりゃ言われるとは思う
0886デフォルトの名無しさん (ワッチョイ 768c-8GUE)
垢版 |
2019/06/15(土) 18:49:04.06ID:hsHgq7Ga0
最初俺が>>863に書いた
「TSO時代の発想か?」の意味が通じてないのかな?

「CPUの稼働にコストのかかる時代じゃないんだから語るべき効率はマシンの効率のことじゃないだろ?」
という意味なんだがね
0888デフォルトの名無しさん (ワッチョイ 6735-2qry)
垢版 |
2019/06/15(土) 19:04:58.61ID:H1JzEOpH0
>>886
発端は「>>859にレスしなかった事」が悪いとしか言いようがない

なんで>>862にレスしてるのか。他人の回答にケチつけてるようにしか見えないし、
>>862を見ても、そんな事は言うまでも無いのはレス見れば分かるだろう。
煽りや論争したいと否定的に捉えられても仕方ない
否定されたくないなら淡々と回答をすれば良い。そこで切磋琢磨することもあるだろう
0893デフォルトの名無しさん (ワッチョイ 4ee8-2qry)
垢版 |
2019/06/16(日) 00:39:51.03ID:4bjACw9N0
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
>「面倒」は気分としてわずらわしいという意が強いのに対し、「厄介」は事柄そのものが手間がかかってむずかしいというときに多く用いられる。
0894デフォルトの名無しさん (ワッチョイ 7fce-2qry)
垢版 |
2019/06/16(日) 01:20:03.35ID:VbOdVW4p0
今の時代、アセンブラが有利な状況はかなり限定されるんだよね
大多数のソフト開発ではコンパイラの方が開発時間が短縮できるし、実行速度もコンパイラの吐くバイナリは十分に速い
もっと速度が必要なら、クラウドでも借りた方がずっと時間が節約できるし
0896デフォルトの名無しさん (ブーイモ MM7f-2qry)
垢版 |
2019/06/16(日) 02:55:24.92ID:dOdCWvr2M
家電もだいぶ前から中枢はコンパイラになってる
アセンブラが必要なのはもっと低レベルなマイコン
色々な装置の末端のモジュール部分だけとか、玩具に組み込まれたちっこい液晶パネルとか、メモリが極限まで少ないやつはアセンブラじゃないと入ってくれない
0898デフォルトの名無しさん (スプッッ Sd5a-ILy/)
垢版 |
2019/06/16(日) 04:58:15.45ID:UIHEj5Esd
やっぱりC#からエクセルファイルのデータを操作する方が簡単だった
VBAみたいにそれぞれのファイルを毎回開くとか面倒
0903デフォルトの名無しさん (ブーイモ MM7f-/bGO)
垢版 |
2019/06/16(日) 09:13:46.86ID:9Kn5GUQ/M
もしかしたら>>859 >>890
"難しい" を "めんどう" という意味で使っていたのかな。
「この子は扱いがちょっと難しくて」みたいな使い方。

俺は「相対性理論は難しい」の "難しい" の方で理解して、
「アセンブラが難しい」を疑問に思ったんだけど。
0907デフォルトの名無しさん (スプッッ Sd5a-ILy/)
垢版 |
2019/06/16(日) 10:14:47.97ID:JkuqZYrXd
VBAはそのファイルしか使えないのが最大の欠点
とにかく面倒臭い
0913デフォルトの名無しさん (ワッチョイ 1a90-9ye8)
垢版 |
2019/06/16(日) 11:33:39.90ID:09/qO6KJ0
このスレはさみしい無能プログラマどもの無駄話で潰すスレじゃないんだが。
上のプログラマ板のどこかのスレでやったら?それも判らない日本語すら読めないバカ
が集まっているのか?
0918デフォルトの名無しさん (ワッチョイ 9a01-zlGV)
垢版 |
2019/06/16(日) 20:01:44.48ID:wZzXbGgB0
>>917
オウム返で反論した気になってるのか
バカだねーww
根拠はあるよ、区別してたら
> 命令がシンプルだと簡単と勘違いするやつがいるとは想像もしなかった
なんてこと言わないし
逆に口だけ君にはなんの根拠もないよな
あるなら出してみなw
0919デフォルトの名無しさん (ワッチョイ b668-2qry)
垢版 |
2019/06/16(日) 21:02:03.67ID:h+OedWPN0
>>846です
>alt+F11でVBEが開かなくなった時に見るべき場所はどこでしょうか?
何となくwindowsアップデートしたら解決しました

・2ヶ月ほど前から起こっていた
・再起動は何度もしている
・プロセス関係はおかしくなかった

今は完全に正常です
アドインなども特に何も触っていないので、解決策が良く分からずに申し訳ない
0922デフォルトの名無しさん (ワッチョイ 275f-wD1x)
垢版 |
2019/06/17(月) 07:10:35.86ID:yX4wUQmM0
>>898
C#アプリケーションを作って使うことができる職場ならいいが、大半はそんな自由な職場ではない。
0928デフォルトの名無しさん (ワッチョイ 1ab0-bbbA)
垢版 |
2019/06/18(火) 06:12:48.87ID:3nOE2mBA0
プログラム板にキチガイ降臨中!botに一晩も反応する異常さ
一般人(学校恩師)に殺害予告をしているのでスレ建て通報してください。
https://mevius.5ch.net/test/read.cgi/tech/1559872586/

142 名前:a4 ◆700L1Efzuv 投稿日:2019/06/18(火) 05:29:55 ID://qVkzO
>>141
名古屋の人な 俺ね、君の問題を大橋先生と混ぜないことにする。つまりね、
片桐孝洋のことをボコろうと思う。普通に顎の骨を折る。これくらいで警察来るか?
一般市民とかさ、普通にさ、俺らの秘密なんだけどさ、日本人なんて復活ねーから。
0931デフォルトの名無しさん (ドコグロ MM4b-FH5+)
垢版 |
2019/06/18(火) 12:46:13.63ID:Umd3rnDmM
excelかaccessかなら迷わずexcel
VBAはレガシーでいつ廃止されても不思議はない機能なので、どうしてもVBAである必要があるのでないならC#とかにしとくことを強くおすすめする
0932デフォルトの名無しさん (ワッチョイ 7fce-2qry)
垢版 |
2019/06/18(火) 12:54:57.10ID:RzLe53TV0
>>929
目的に合う方

VBAは何か具体的な目標(仕事)を処理するするために覚える人が多い
趣味でプログラミングを始めたいなら無料のVisual StudioをダウンロードしてC#とか覚えた方がいい
0934デフォルトの名無しさん (ワッチョイ 9791-o0lF)
垢版 |
2019/06/18(火) 16:05:05.15ID:n5GHMBcp0
ダメダメ。
どちらが良いとか比べるもんじゃない。
大量データを処理するならAccessで決まりだけど、勉強という話になると何をやりたいのかという話になる。

そもそも何でVBAの勉強したいのかによる。
仕事などが絡んでるなら、非常に大雑把な話になるが事務寄りならExcel、システム寄りならAccessかな。
0937デフォルトの名無しさん (ワッチョイ 5b63-YCmz)
垢版 |
2019/06/18(火) 20:15:23.31ID:eE0QU9nz0
仕事でDB使ってるのでなければExcelがおすすめ

データベースに興味があるならMySqlでやればいいが
大量のデータを扱うものだから独学はなかなかきびしい

Accessはなんか得体が知れない
0942デフォルトの名無しさん (ワッチョイ 5b8e-sVqB)
垢版 |
2019/06/19(水) 00:10:15.41ID:6fahuBEB0
>>938
あんなゴミみたいなデザイナーはいらん
0947デフォルトの名無しさん (ワッチョイ 9791-o0lF)
垢版 |
2019/06/19(水) 09:27:42.33ID:472nbeHm0
デザイナ−がゴミなのはその通りだけど、むしろ、よりゴミなのはエディタの方かな。

SQLのインデントを毎回消してくれる。

クエリの仕様を画像で見るよりSQLで見た方が分かりやすいのにインテント消してくれるから、全く分からなくなる。
0951デフォルトの名無しさん (ワッチョイ 5b8e-sVqB)
垢版 |
2019/06/19(水) 21:26:28.65ID:6fahuBEB0
>>946
馬鹿の見本
0956デフォルトの名無しさん (ワッチョイ d77c-zNK4)
垢版 |
2019/06/19(水) 23:05:18.04ID:2kB/Q0rZ0
>>955
VBEで見えないワークシートはExcel画面上では表示状態
そのシートをアクティブにしてマクロからActiveSheetでアクセスすることはできるが、シート名やシートのインデックスで直接指定しようとするとエラー9になる
For Each work In Thisworkbook.Worksheets で回してもそのシートは取得できない
Worksheets.Countでも1個少ない数が返ってくる
他のシートからセルの数式で参照とかは普通にできる
何か特殊な隠され状態なのか?と思ったけど初めて見た状態でよくわからない
0957デフォルトの名無しさん (ワッチョイ 33da-2qry)
垢版 |
2019/06/19(水) 23:15:02.34ID:JOXgiKKG0
>>956
う〜んわからん。
ファイルをZIP解凍して、↓こうやってちゃんと出てくるか調べてみるとか。
(解凍できなければ、拡張子をZIPにしてから解凍)

_rels
sheet1.xml
sheet2.xml
sheet3.xml
sheet4.xml
  :
  :
0964956 (スププ Sdb3-vf3t)
垢版 |
2019/06/20(木) 12:36:35.26ID:gCFGGCT7d
>>959
試してみた
workbook.xml の中には問題のシート名が存在し、_relsのsheet*.xmlの数は一つ足りなかった
sheet*.xmlが無いなら一体何に基づいて開かれているのか…
0965956 (スププ Sdb3-vf3t)
垢版 |
2019/06/20(木) 12:58:10.64ID:gCFGGCT7d
>>963
これが答えっぽい!
forでworksheetsじゃなくてsheetsで回してみたら取得できた
新しく4.0マクロシート作ってみたらやっぱりvbeには表示されないしxmlも作られなかった
こんな罠があったとは…
作った人がシート挿入時に間違えて操作したかな
0968731 (ワンミングク MMd3-6WzX)
垢版 |
2019/06/20(木) 16:06:52.35ID:zvUhnE4+M
>>965
アタリだったか。
今どきワンクリックでシート増やせるから間違えようが無いんだけど古いの使ってるのかな
0970956 (エムゾネ FFb3-vf3t)
垢版 |
2019/06/20(木) 17:55:46.20ID:Tp7kQisuF
>>967
4.0マクロシートというのを初めて見たんで、完全に普通のワークシートだと思い込んでた
今後まだ残すつもりなら見分け付く何かを入れて貰いたいな…
0978デフォルトの名無しさん (ワッチョイ 09ce-Im5L)
垢版 |
2019/06/21(金) 16:51:19.19ID:eaArQIkA0
ファイル名を加工してリネームするだけの簡単なコードなんだけど
何年も前に作って今まで問題なく動いてたのが、最近エラーで落ちるようになって
原因を調べたらユニコード文字が勝手に半角「?」に置換されてて、ワイルドカード文字はファイル名に使えないからエラーで停止していたという

とりあえず糸口は見えたのでがんばってみるありがとう
0982デフォルトの名無しさん (ワッチョイ 4b02-9YLa)
垢版 |
2019/06/23(日) 15:51:30.57ID:banyueIf0
みんな初心者の時って、どんな勉強してたの??

自分で作った渾身のコードや、ネットから拾ってきたけど、まだ理解できないコードとかって、どっかに書き写して勉強してたと思うんだけど、
ふつうにwindowsのnotepadとかにコピペしたりして勉強してたんですか?

VBEの中にどっか溜めといたりしてたんですか?

紙のノートとか使ってましたか??
0984デフォルトの名無しさん (ワッチョイ 5b68-Im5L)
垢版 |
2019/06/23(日) 16:30:26.63ID:kpoBM8Yu0
>自分で作った渾身のコード
大切に取っておいたものもあるなぁ
でもvbaだとそれを探すよりは即興で書いた方が早い。コードを保存することはなくなった

>ネットから拾ってきたけど、まだ理解できないコード
無い
理解できるまで読む

>windowsのnotepadとかにコピペしたりして勉強してたんですか?
VBEしか使ってない

>VBEの中にどっか溜めといたりしてたんですか?
無い

>紙のノートとか使ってましたか??
10年前は、コードではなく仕組みをメモとったりしてたな
今思えばずいぶんと非効率的な事をしていた気がする
0985デフォルトの名無しさん (ワッチョイ 597c-YoOR)
垢版 |
2019/06/23(日) 16:33:09.26ID:DUIO4rsc0
>>982
自分はきちんと勉強したんじゃなくて使っていくうちに覚えたんでノートにきっちり書いたりとかはしてないが、VBAだけでなく他の言語も、知ったことを今もPCに溜めていってる
0986デフォルトの名無しさん (ワッチョイ d991-cyYs)
垢版 |
2019/06/23(日) 17:37:15.90ID:knZW+YIf0
>>982
全部GoogleDriveにxlsmで保存してる。(古いのはxls)

その場で書けるようなものは保存する必要も無いし、渾身のコードではない。
ネットから拾って来たコードは理解出来るまで運用では使わない。

複雑なものって、全部覚えてるわけじゃ無いから理解してても、一から作ると大変だよ。
全て覚えて無くても溜め込んだ中にいつ保存したかは覚えてるから探した方が楽。

あとはGithubやGistに保存。
昔はVBE上から自動でアップロードするの作ってたけど、今は何故か手動でアップロードしてる。
0989デフォルトの名無しさん (ワッチョイ 5b68-Im5L)
垢版 |
2019/06/23(日) 23:08:24.18ID:kpoBM8Yu0
自分の書いたコード使ってもらうと承認欲求か満たされて凄い幸せな気分になるよ
これを知らないのは勿体無い

ただ、vbaではやらんけど・・・ってか、そんな発想が無かった
0996デフォルトの名無しさん (スップ Sdf3-eRKM)
垢版 |
2019/06/24(月) 08:33:36.60ID:t+0XHwH4d
googleスプレッドシートをGoogle Apps Scriptで操作すれば良い
VBAなんて時代遅れ
0999デフォルトの名無しさん (ワッチョイ d991-cyYs)
垢版 |
2019/06/24(月) 10:12:32.89ID:az1pt4By0
ここにいる人達はGithubも使ったこと無いんだろうな。
ピント外ればっかり。

有名人じゃなければ見に来る人もいないし。
承認欲求とか想像してるようなのは使ったことないの丸わかり。
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 59日 10時間 55分 35秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

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