X



Excel VBA 質問スレ Part48 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 6f8e-Fc1g)垢版2017/05/16(火) 08:24:45.78ID:iIGA/64l0
!extend:checked:vvvvv:1000:512

スレ立ての際は一行目に
!extend:checked:vvvvv:1000:512
と入れてスレ立てして下さい

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

※前スレ
Excel VBA 質問スレ Part47 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1489557874/

※関連スレ
VBAなんでも質問スレ Part2
http://echo.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://echo.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 125
http://echo.2ch.net/test/read.cgi/bsoft/1481369538/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
0005デフォルトの名無しさん (ワッチョイ 934c-8ulf)垢版2017/05/16(火) 11:08:01.35ID:l+zZTb7Y0
ScreenUpdatingの有無で速度が左右されるのは、セルに値を入れる等して描画に影響する操作をする場合だけだから、
結果を吐き出す際に一度だけしかセルにアクセスしないとかなら要らないね。
0006デフォルトの名無しさん (オッペケ Sr27-fj9k)垢版2017/05/16(火) 12:41:08.19ID:6Q26Nvh7r
>>5
表示の更新してんなら要るわ

あとエクセルでセルに値を書き込むことを「吐き出す」と言うのは
素人が玄人の真似して訳もわからずそれっぽい言葉使ってみました感が強すぎる
分かる人が見ればコイツ馬鹿だなってバレバレだからやめた方がいいぞ
0009デフォルトの名無しさん (スップ Sd9f-F59I)垢版2017/05/16(火) 13:03:31.49ID:J7MMoyEGd
つまり量によるわけだな。
ScreenUpdating = False しないと辛くなってきたら、それは
ワークシートで管理するデータや式が多くなりすぎたという警告とみなすスタイルが成り立つ。
0010デフォルトの名無しさん (アウアウカー Sa67-vcg+)垢版2017/05/16(火) 14:23:33.68ID:Gxqu5M/Va
>>6
えっ?
素人玄人関係なく使うでしょ。
そんなの意識したこと無いぞ。

>>9
量なのかなあ。
そりゃいい加減にコード書くことも有るけど、そういう場合で遅く感じたらちゃんとしたコードに変更するだけだろ。
どうしても描画が何回か走ってチラつきを防止するために最後に追加するぐらいだな。
0013デフォルトの名無しさん (ワッチョイ 934c-8ulf)垢版2017/05/16(火) 14:57:07.86ID:l+zZTb7Y0
>>9
ワークシートから値を取り込んだり、値をワークシートに書き出したりっていう処理は、
Rangeを使えば一括して行うことが出来るので、データ量はそこまで問題にならない。

どちらかというと罫線、色、数式みたいな一括処理しづらいものが問題で、
ScreenUpdating次第で処理に大きく差が出る。
こういったものは保守も面倒なので手作業で代替出来ないかとか考えるといいかもね。
0017デフォルトの名無しさん (ササクッテロレ Sp27-EjkN)垢版2017/05/16(火) 19:31:35.09ID:qhacRso4p
>>16
必要かどうかってことなら必要ない
でも大がかりなの作るなら使って整理したほうがやりやすいんじゃないのかな

for文と比較する感覚がいまいち伝わってないから的はずれならごめんなさい
関数とか配列とかと比較するならわからなくもないんだけれど
0019デフォルトの名無しさん (ワッチョイ 53c7-00IQ)垢版2017/05/16(火) 19:48:36.06ID:YL1OfOAE0
>>10
悪いけど素人しか使わんわそんな恥ずかしい言い方w
0021デフォルトの名無しさん (アウアウカー Sa67-vcg+)垢版2017/05/16(火) 20:28:49.31ID:rEbfD8DUa
>>13
うん、罫線とかはしようが無いね。
でも罫線もマクロ記録のままの酷いコード書く人もいる。

データについては1つ1つのセルに値を入れるなんてことはすべきじゃない。
普通は1つの表で一括入力でしょ。
どうしても速度を出したい時は汚くなるけどシート内データ全部を一括入力にする。
あとは、使える場面が限定されるけどマルチプロセスにするとか。

>>18
クラスを使う場面ってのは慣れてれば感覚的にぴったりくる。
オブジェクト指向的にぴったりくる場合。
でも、他のメンバーが慣れて無いと却って良くない場合もあるね。
0028デフォルトの名無しさん (ワッチョイ 53c7-00IQ)垢版2017/05/16(火) 21:54:30.99ID:YL1OfOAE0
>>25
あーあ、やっちゃったね
質問するにもマナーってものがあるんだよ
スレを荒ららない為にもこの際覚えておけ

「目的を聞くやつにレスを返してはいけない」
0033デフォルトの名無しさん (ワッチョイ 6f8e-sSiL)垢版2017/05/16(火) 22:35:06.66ID:iIGA/64l0
>>26
クラス名で分岐させたいパターンがある
ゲームプログラムだとclass名で敵か味方か判別する、というのは見たことがあるな
せめて継承でもできればその辺共通化できるんだけど、そこはvba。めんどくさい

しかしエクセルだとどういう状況か思い浮かばない

>>30
してなくて草
0034デフォルトの名無しさん (ワッチョイ 53c7-00IQ)垢版2017/05/16(火) 22:44:02.80ID:YL1OfOAE0
>>31
質問の意図が分からん奴は質問に答えられない
目的を聞いても質問者の意図を引きだす事はできない
簡単な事だ
0038デフォルトの名無しさん (ワッチョイ 6f8e-nvoP)垢版2017/05/17(水) 00:32:22.34ID:9uxtifvV0
>>37
それはできるけど、Meがない
Meがあればなんとでもできる

標準モジュール
Sub foo()
Set c = New Class1
'これはできる
Debug.Print TypeName(c)
End Sub

'クラスモジュール
Private Sub Class_Initialize()
'これができない
Debug.Print Me.TypeName
End Sub
0040デフォルトの名無しさん (ワッチョイ 6f8e-nvoP)垢版2017/05/17(水) 00:45:43.01ID:9uxtifvV0
>>39
すまん、いけた

解決!

標準モジュール
Sub foo()
Set bar = New Class1
Debug.Print bar.get_name()
End Sub

'クラスモジュール
Public name
Private Sub Class_Initialize()
name = TypeName(Me)
End Sub
Function get_name()
Debug.Print Me.name
End Function
0043デフォルトの名無しさん (JP 0Hff-+8ye)垢版2017/05/17(水) 17:53:56.84ID:GJ9WSlKVH
>>40
そのコード、
Sub foo()
  Set bar = New Class1
  Debug.Print TypeName(bar)
End Sub
と同じじゃないの?

>>33
> せめて継承でもできればその辺共通化できるんだけど、そこはvba。めんどくさい
VBEのオブジェクトコンボボックスとプロシージャコンボボックスを選択すれば、
コードを自動生成してくれるから、全然めんどくさくないよ。
0044デフォルトの名無しさん (ワッチョイ 53c7-00IQ)垢版2017/05/17(水) 20:29:29.04ID:G7cUCqPy0
俺は今重要な判断を下した
お前らは事務のねーちゃんよりスキルが低い
少なくともうちの事務のねーちゃんより低い事は確実だ
0045デフォルトの名無しさん (ワッチョイ 6f8e-yN95)垢版2017/05/17(水) 21:05:07.82ID:9uxtifvV0
>>44
お前、レスもらうのめっちゃうまいなw
思わず反論しそうになった
2chでレスをもらう能力、俺は敬意を表するよ

もしよければ、年齢と性別、職業を教えてほしい。どんな人か本気で気になる
0048デフォルトの名無しさん (ワッチョイ eef3-8cHL)垢版2017/05/18(木) 14:52:51.70ID:5nCvEgDF0
Private Sub Worksheet_Change(ByVal Target As Range)

Select Case Target.Address

Case "$A$1"

If Not IsNumeric(Target.Value) Or Target.Value = "" Then

Exit Sub

Range("B1:B9").Copy Range("B2")

Range("B1").Value = Range("A1").Value

Target.Select

End Select

End Sub

このコードの意味教えてくださいー
0050デフォルトの名無しさん (ワッチョイ 7e75-hgKb)垢版2017/05/18(木) 17:11:10.34ID:d+oDyp660
Private Sub Worksheet_Change(ByVal Target As Range)
ここに、Subの処理を定義する
End Sub

Select Case Target.Address
ここに、Caseの処理を定義する
End Select

Select Case Target.Address
// Target.Address が、"$A$1"なら
Case "$A$1"

// Target.Value が数値ではない、または、空文字列なら、Subを抜ける
If Not IsNumeric(Target.Value) Or Target.Value = "" Then

Exit Sub

// copy
Range("B1:B9").Copy Range("B2")

// 代入
Range("B1").Value = Range("A1").Value

// 選択?
Target.Select

End Select
0055デフォルトの名無しさん (ワッチョイ 6bb2-PZTw)垢版2017/05/19(金) 12:10:12.11ID:Hh88K1uA0
最新版のExcelで、ファイルを開いた直後にだけコンパイルエラーが出るようになったから絶対更新しないほうがいいぞ

エラーが出るのは
Function ProcName(cel As Range) As Double
とか、パラメータにAs Rangeを持つところみたいで
一応As Objectに変えてしまえば通るけど、治すの大変だ・・・
0059デフォルトの名無しさん (ワッチョイ 6bb2-PZTw)垢版2017/05/19(金) 13:13:31.21ID:Hh88K1uA0
>>58
すまない。新規ブックでは検証していなかった。

問題無いことを確認
14.0.718.5000
16.0.7927.1024
コンパイルエラーを確認
15.0.4927.1002
16.0.8067.2115
なので、>>58の環境でも発生すると思う。

新規ブックで、
Module1に
Function ProcName(cel As Range) As Double
ProcName = cel.Value
End Function

Sub btn_Click()
MsgBox "click"
End Sub
を書いて、ブック上のシェイプのマクロにbtn_Click()を割り当てるとファイルを開いた瞬間にだけコンパイルエラーが起こるよ

上記URLによれば、モジュール範囲の定義なら起こるらしいので
Private 変数 As Workbook
Sub btn_Click()
MsgBox "click"
End Sub
でもダメぽ

解決策はAs Objectとするか、モジュールを切り分けるしかない。
0061デフォルトの名無しさん (ワッチョイ 6bb2-PZTw)垢版2017/05/19(金) 13:52:53.66ID:Hh88K1uA0
>>60
全くもって仰る通り。

以前から.xlsmへの切り替えを勧めているが、なかなか全てを切り替えられなくてね。
各個人に持たせているファイルを差し替えろって言ってもメール無視されるし。

あと単純に.xlsmに変えてしまうと
・他のシステムが対応していないせいでxlsしか使えない。
・表の最大値が大きくなったお陰で、既存のマクロだと末端の列列まで処理するループが混ざっていて永久に処理が終わらない。
  (そのくらいマクロ直せよ・・)
・ブックのリンクが貼ってあるせいで過去のエクセルファイル全てのリンクを修復しないといけない。
  (作ったやつ誰だよ・・)
・データサイズの大きい「共有ブック」をxlsmに変えるととてつもなく重くなる。
  (データとマクロ分離しろよ・・)
とか様々な理由があって切り替えが終わってない。

ツッコミどころ満載やで。
0063デフォルトの名無しさん (ワッチョイ 4a92-wIp5)垢版2017/05/19(金) 22:44:50.72ID:ELP3hVnQ0
変数宣言を一番上に書くと、
確認する時、スクロールで戻るのが面倒なんですが、
Excelなのに、上の方の画面を固定出来るという発想は無かったのでしょうか。
Excelなのに。
0071デフォルトの名無しさん (ワッチョイ 068e-xJM8)垢版2017/05/19(金) 23:54:11.19ID:1s7BLiGf0
中身のわからない変数名を付けるからそんなアホな事をせにゃならんようになるんだ
似たような変数名が多すぎてややこしいならfunctionに分ける等、予め余計な手間が発生しないようにするんだ
0076デフォルトの名無しさん (ワッチョイ 068e-6Kgr)垢版2017/05/20(土) 09:33:47.65ID:TX7Bd0Me0
>>75
別にどっちでもいい。好み

ファイルの保存なんかもこの方が見やすいと思う
例えば保存時で比べる
ファイル形式を定数で打つと分かり辛い
Thisworkbook.SaveAs("C:\foo",43)
こう書けばフォーマットなんだな、ということが見てすぐにわかると思う
Thisworkbook.SaveAs Filename:="C:\foo",FileFormat:="43"
本当はこの方が良いけどね
Thisworkbook.SaveAs Filename:="C:\foo",FileFormat:="xlExcel9795"

他にも引数が大量にあるときやパラメータが複雑な時にわかりやすい。以下は見辛い
dummy = hoge(xxx, , , yyy, , ,zzz)

逆にsum()を
sum arg1:=xxx, arg2:=yyy
なんてすると読みづらいだけになる

と言ってる俺も保存の時ぐらいにしか使わないけどね
0077デフォルトの名無しさん (ワッチョイ 6731-N4F7)垢版2017/05/20(土) 09:53:58.83ID:5sPtJFYn0
ありがとうございます
事務仕事でExcelVBAをいじる必要があったんだけど
大昔の非構造化BASICやFORTRAN、Cなどの印象しかないので最近の言語は抽象的すぎて分かりにくい
0078デフォルトの名無しさん (ワッチョイ ca3c-J3Da)垢版2017/05/20(土) 10:13:55.47ID:I6OViHCS0
>>75
その名前じゃあまりメリットないけど引数の名前をちゃんとつけてたら分かりやすい
あと引数がたくさんある場合に後ろの方の引数を指定したい時とか
Workbook.Open FileName:="test.xlsx", AddToMru:=True
0082デフォルトの名無しさん (ワッチョイ 068e-kvD5)垢版2017/05/20(土) 10:54:07.27ID:TX7Bd0Me0
>>81
上で見たけど、vbaは内部的にかなり変な挙動をしている
newの時点ではメモリ領域は確保されず、初めてプロパティやメソッドにアクセスした段階でメモリ領域が確保される

また、
set foo = thisworkbook
set bar = thisworkbook
は、foo == barに「ならない」
fooとbarは常に違う参照が生成されるので、別扱いとなる

そのコードを教えてくれれば問題解決できると思う
というか後学のためにも見てみたい
0087デフォルトの名無しさん (ワッチョイ 4692-cm4/)垢版2017/05/20(土) 13:11:22.41ID:DWQm6waj0
Visual Basic Edtor って、単体じゃ入手できないよな?
しかもExcelのバージョン違えば使い物にならんヶ所出てくるし
ThisWorkbook だって、どの?に成るだろうし
Microsoft Script Editer じゃあるまいし、どう考えてもExcelの付属品っつー立ち位置だろ
Excelの「おまけ」機能に決定

Word とか Outlook とかバリエーションは在るにしても
0100デフォルトの名無しさん (ワッチョイ 068e-kvD5)垢版2017/05/20(土) 22:25:58.77ID:TX7Bd0Me0
>>97
やったらわかる
phpでsqlは黄金パターンでうまくいく。db設計もいつも通り。文字コードはutf8
エラー処理も死ぬほどある

C#やVBはかなりめんどくさい、というよりもそもそも使う必要がかったので、前任者の引き継ぎが非常にだるい
つまずく場面としては、具体的には文字コード。shift-jisだと最悪。また、db設計が適当
db接続も何かうまくいかない
0107デフォルトの名無しさん (ワッチョイ c6c8-TsZx)垢版2017/05/21(日) 03:17:25.81ID:GlMb9Muz0
>>100
君なあ、能力の問題なのか性格の問題なのか分からんが説明が足らんのだよ。
ExcelからDAOを使うかADOを使うかによって変わるのは当然のことだし、ExcelとAccessでどうとか言われてもどういう観点の話か分からんだろ。
0109デフォルトの名無しさん (ワッチョイ 6792-qKRX)垢版2017/05/21(日) 07:08:05.80ID:S79+g3VB0
質問させてください。
excelからoutlook起動させてメールを作成するマクロ作ってます。
数パターン用意したテンプレートに任意の文言を置換・挿入してoutlookに渡す?感じです。
動作自体はうまくいってるんですが、なぜかoutlookに渡した本文の文字サイズが12ptになってしまいます。
outlookのデフォルトの文字サイズは10ptだし、12ptになる理由が全く想像つきません...
漠然とした質問で申し訳ないですが、outlook側で設定したデフォルトの文字サイズでメールを作成するようにできないでしょうか?

初心者なので、的はずれなこと言ってたらごめんなさい。
0110デフォルトの名無しさん (ワッチョイ 068e-dGTj)垢版2017/05/21(日) 07:40:39.09ID:DM2pkhyK0
>>109
とりあえずぱっと思いつく原因は、エクセル側が12ptなのでそれがoutlook側に渡っている気がする
テキストだけ渡すようにするか、エクセル側を一時的に10ptにしてメール作成後に12ptに戻すとかで対処できるかもしれない
全然違うかもしれない。コードを見せてもらえたら試してみるよ
0114デフォルトの名無しさん (ワッチョイ ca3c-J3Da)垢版2017/05/21(日) 10:23:28.85ID:1Ubd4ETn0
>>112
DBMS だけじゃなくてレポート機能とかが欲しいんだろ

>>113
localhost で使えばどんなデータベースもローカルで使えるけど?
サーバーを立てたくないと言うなら sqlite とか
SQL-Server Compact Edition が見捨てられつつあるのが残念
0116デフォルトの名無しさん (ワッチョイ 6792-kvD5)垢版2017/05/21(日) 11:48:21.26ID:S79+g3VB0
>>110
レスありがとうございます。
excel側の文字サイズは10ptなので、ご指摘の原因ではなさそうです。
恥ずかしいですが、ファイルをアップロードしました。
ダウンロードキーは「excel」です。
https://www.axfc.net/u/3807959
実行ボタンを押すと、outlookが起動されてメールが作成されます。
ご確認お願いします。
0118デフォルトの名無しさん (ワッチョイ 068e-rE0G)垢版2017/05/21(日) 14:33:37.38ID:DM2pkhyK0
>>116
さっぱり分からん。なんか挙動がバグくさい
エクセルvbaからメールを作るとフォルトで12pxになるようだ。これは仕様と捉えていいと思う
で、解決方法としてはこう
<body>タグにインラインcssを設定する

Sub msg2olapp()
'''Outlookでメール作成
Set mail_item = olapp.CreateItem(0)
mail_item.To = toadd 'To
mail_item.Cc = ccadd 'Cc
mail_item.subject = mailsub '件名
mail_item.body = mailbody '本文
mail_item.htmlbody = Replace(mail_item.htmlbody, "<BODY>", "<body style=""font-size:13px"">")
mail_item.Display '表示
End Sub

インラインcssで設定したフォントサイズは何故か3/4になる。理由も意味もわからんが、ゲイツの趣味かなんかだろう
深く考えずに10pxの4/3、つまり13pxでインラインcssを指定する。こうすれば10pxのフォントサイズになる
0119デフォルトの名無しさん (ワッチョイ 6792-qKRX)垢版2017/05/21(日) 17:02:34.86ID:S79+g3VB0
>>118
ありがとうございます。
望み通りの動作しました。

ちなみに、自分の環境では13pxだと6.5ptになってしまいました。(1/2になる?)
あと、>>116で作成したメールのタグを見てみたんですが、「p.MsoNormal...」ってとこのfont-sizeが12ptになっていて、そこを10ptに変更するとうまく表示されるようになるようです。
0120デフォルトの名無しさん (ワッチョイ 0fc7-X+GT)垢版2017/05/21(日) 18:41:32.83ID:Ox0ZLs5T0
いまだにptとpx違いがわからない人っているんだね勉強になる
0122デフォルトの名無しさん (ワッチョイ 4aa8-PZTw)垢版2017/05/21(日) 23:02:22.04ID:+shsKnP00
データベースとの接続処理で一つ教えてください

Sub test()
Dim wkR As New ADODB.Recordset


S_RecordsetClose (wkR)
End Sub

レコードセットのcloseとnothingの処理を一つにまとめようとしたんですが、
型が一致しません   と S_RecordsetClose (wkR) のところでエラーになります

Debug.Print TypeName(wkR) で見たら当然(だと思うんですが)Recordsetに
なってるんで、なんでこれで型の不一致になるんです?

ちなみに S_RecordsetClose に書いた処理は↓です

Sub S_RecordsetClose(ByVal rec As Recordset)
rec.Close
Set rec = Nothing
End Sub
0125デフォルトの名無しさん (ワッチョイ 4aa8-PZTw)垢版2017/05/21(日) 23:26:47.02ID:+shsKnP00
>>123
あ、、、、言われたらそうだ^^;。

それは確かにその通りで、この処理自体の問題だとは思うのですが、引数を受け取る段階で型が一致しないのはどうして?
ちなみにByRefでも同じなんですが。
0128デフォルトの名無しさん (ドコグロ MM02-9sZ1)垢版2017/05/22(月) 12:17:47.19ID:0dv64TbrM
質問ですがVBAのプロパティやメソッドの扱い方について詳しい入門書はありませんか?
会社でマクロ使うため超入門(マクロの記録からつかうやつ)と学校で教わったプログラム知識(basicとc++)でなんとかやってるんですがやはりVBAの命令の扱い方が怪しく…
予算は2〜3千円程度でお願いします
0129デフォルトの名無しさん (オッペケ Sr03-sIut)垢版2017/05/22(月) 12:26:52.79ID:csbpN2HFr
>>128
ExcelとAccessのVBAの本なら腐るほどあるからここで聞かなくてもググれば良い
Word、Outlook、PowerPointのVBAとなると日本語ではかなり少なくなるので教えるまでもなくググれば出てくる
ググって出てこないなら英語書籍やネットブログを漁るか、MSDNを直接参照することになるね
0131デフォルトの名無しさん (JP 0H16-cm4/)垢版2017/05/22(月) 13:29:08.29ID:o9BH+SoNH
>>128
メソッドやプロパティの方から網羅的に学習するのはきついので、やりたいことの方から網羅的に
説明してる本の方がいいと思う。

たとえば、
『Excel VBA逆引き辞典パーフェクト』
http://www.shoeisha.co.jp/book/detail/9784798146584

似たような『○○700』みたいなのがいくつかあるから、どれか選んで流し見するのがいいと思う。
0132デフォルトの名無しさん (ワッチョイ c6c8-TsZx)垢版2017/05/22(月) 14:44:41.19ID:nSxPTPKq0
本なんて必要か?

多少の英語カがあればインテリセンスの中からそれっぽいもの選んで実験+Web検索で十分だろ。
あとは、インタフェースへのセンス(絶対この場合だったらこんなプロパティがある筈という嗅覚)とかね。

初心者だったら以下に気を付けてコード書くと良い。

・マクロ記録したらコードの中で必要無い部分をとことん削るのが常識と考えよう。
・それで動作確認して問題無いことを確めよう。
・削って問題無いと思っても、その場では問題無くても場合により問題出ることあるから削って残った部分をWeb検索で皆はどうしてるのかを確認しておこう。

・英語的にそのコードの意味を考えよう。
'A1を選択
Range("A1").Select

'選択したものの値を1にする
Selection.Value=1

だったら当然
'A1の値を1にする
Range("A1").Value=1
ということになる。
0134デフォルトの名無しさん (ワキゲー MM82-5gYI)垢版2017/05/22(月) 15:42:03.39ID:W5+S3ypfM
>>132
デジタルに調べる良さとアナログに調べる良さは別物だよ

アナログだと「調べるつもりもなかったけどたまたま見かけて使ってみたらいい感じになった」ってことはアナログならでは
0139デフォルトの名無しさん (JP 0H16-cm4/)垢版2017/05/22(月) 18:29:46.83ID:o9BH+SoNH
>>137
書籍で基本的な知識を学んだ後でも、試行錯誤はするでしょ。
その試行錯誤には意味がなく、>>132のような試行錯誤には意味があるという主張?
だとしたら、それは自分で勝手にやってくださいと言うしか。
0140デフォルトの名無しさん (ワッチョイ 4692-cm4/)垢版2017/05/22(月) 18:56:05.69ID:pWkjNq5k0
おおむかしは、FAXでMicrosoftから資料を引き出していたものじゃ
先ず、目次を引っ張れるFAX番号に掛けて、延々何十枚もの目次をげっと
その目次から欲しい機能を探し出し、今度は欲しい機能のFAX番号へ掛けて
これまた延々と資料を文字通り引きずり出しておったわ

よく覚えてないけど、そんなかんじ
その頃のFAXはB4の感光紙で、うっかり陽の当たるところに置きっぱで
外出したりすると、帰社した時には真っ黒くろすけで愕然と膝から頽れたり
0144デフォルトの名無しさん (ワッチョイ 068e-dGTj)垢版2017/05/22(月) 20:13:17.75ID:g3oHLvAy0
>>142
金融業界にvbaでセコセコやってるやつなんでいねーよwww
帳票システムは全部外注、ボタンひとつで出るようになってるんだよwww
しかもエクセルよりアクセスの方が使用頻度が高い

岡三証券とかは知らんけど
0145デフォルトの名無しさん (ワッチョイ 0fc7-X+GT)垢版2017/05/22(月) 20:44:19.38ID:rXkCxzW60
なんかさあ…もう少しオープンに自分の無知をさらけ出そうぜ
無知ってそんなに悪いもんじゃないぜ?
0148デフォルトの名無しさん (ワッチョイ 8a2d-8zZG)垢版2017/05/22(月) 23:36:28.18ID:fGR6ky/u0
空白と重複をなくしたドロップダウンリストを作成したいんだけど、作業列つくらないと厳しいですか?
A列に重複がたくさんあるものから、重複を削除したリストをB2に追加したいですが、VBAでは厳しいですか?
0151デフォルトの名無しさん (ワッチョイ 8a2d-8zZG)垢版2017/05/22(月) 23:43:11.76ID:fGR6ky/u0
>>149
ループでリストってできるんですか!!知りませんでした。
例えば1〜"A1に入力された数字"までのリストとかも可能ですか??
A1に20とあった場合、1・2・3・4・5・6・・・・20といった感じで。
0152デフォルトの名無しさん (ワッチョイ 068e-/hLn)垢版2017/05/22(月) 23:49:46.04ID:g3oHLvAy0
>>151
Sub Macro1()
arr = ""
For tmp = 1 To Cells(1, 1).Value
arr = arr & "," & tmp
Next
Cells(1, 1).Validation.Delete
Cells(1, 1).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=arr
End Sub

>>148
vbaでもできるけど作業列作ったほうが早いと思う
俺なら作業列を使う
0153デフォルトの名無しさん (ワッチョイ 8a2d-8zZG)垢版2017/05/22(月) 23:57:33.95ID:fGR6ky/u0
>>152
完璧すぎて鼻水でました
ありがとうございます
0157デフォルトの名無しさん (ササクッテロル Sp03-8zZG)垢版2017/05/23(火) 01:06:28.10ID:G9caL/WXp
>>155
実行時エラー
型が一致しません。
0159デフォルトの名無しさん (ワッチョイ c6c8-TsZx)垢版2017/05/23(火) 02:03:21.06ID:3SYK1IcP0
>>139
省略する人は試行錯誤を大してやらないよ。
答えを求める奴は結局身にならない。

昔、高校受験用に行ってた塾にいた天才共は英語の辞書を丸暗記してたが俺は天才じゃ無いので英語の使い方(しくみ)を勉強した。
プログラミングもしくみが重要で個々の単語は都度調べれば良い。

本は必要無いと思うけど有っても良いとは思うし、自分もかなり買う方だ。
でも自分が本を買うのは興味からだな。
あ、自分は今はVBAの本を買うことはありません。
初心者なら読んでおもしろそうだったら買ってみれば良いんじゃない?
0160デフォルトの名無しさん (ワッチョイ 8af3-hdnB)垢版2017/05/23(火) 06:24:30.98ID:2tE3UxZ+0
多分その天才どもは英語の仕組みは既に把握したうえで、
上積みとして単語を丸暗記してるんじゃないか?
仕組みがエンジン、単語がガソリンと考えたら、
エンジンだけでもガソリンだけでも走れない。
効率の良いエンジンは少しのガソリンでも遠くまで走れるし、
沢山ガソリン積めれば少々お粗末なエンジンでもやっぱり遠くまで走れる。
どっちが大事じゃなくて両方大事。
0162デフォルトの名無しさん (オッペケ Sr03-sIut)垢版2017/05/23(火) 06:50:44.94ID:3FTCY8r/r
本は嘘が書かれてたりするから厄介

想定読者の知識レベルに合わせる理由でいろんな説明を端折ってミスリーディングな表現になってしまってたりするし、著者の知識が根本から間違ってるときもある
0165デフォルトの名無しさん (ワッチョイ c6c8-TsZx)垢版2017/05/23(火) 10:12:46.48ID:3SYK1IcP0
>>163
ほら、これが弊害だ。
きちんとアンカー追っていけば初心者がどうやって勉強すれば良いかの話から来てるのがわかる筈。

直近のレスだけ見るような手っ取り早さを求めるような奴には教えても無駄になるだけだ。
0166デフォルトの名無しさん (JP 0H16-cm4/)垢版2017/05/23(火) 10:34:38.44ID:BzWPCBXiH
>>159
一生、
> Range("A1").Select
> Selection.Value=1
> Range("A1").Value=1
みたいなレベルを手探りで探し出すようなことやってろよ。誰にも迷惑かからないし。
だが、人には勧めるな。
0167デフォルトの名無しさん (アウアウカー Sacb-TsZx)垢版2017/05/23(火) 11:06:55.30ID:3CTg7HpXa
>>166
それが分からないようじゃレベルがうかがいしれるねw
というか、あれを書いた俺がそんなレベルに無いことなんて想像も出来ないのか?

多少出来る奴なら誰でもマクロ記録のままのゴミコードを否定するだろうよ。
0171デフォルトの名無しさん (JP 0H16-cm4/)垢版2017/05/23(火) 13:08:14.56ID:BzWPCBXiH
>>167
> というか、あれを書いた俺がそんなレベルに無いことなんて想像も出来ないのか?
お前のレベルなんか知ったこっちゃない。

> 多少出来る奴なら誰でもマクロ記録のままのゴミコードを否定するだろうよ。
ケースバイケースだし、議論する価値ない話題だね。
0174デフォルトの名無しさん (ワッチョイ cad4-PCQh)垢版2017/05/23(火) 13:26:08.31ID:DZlqaxyP0
答えが判ってることを効率的に片付けるには
答えを聞いたり調べれば良いけど

答えが判っていない新しいことを実現するには
その方法は使えない

自分で考えずに答えを求める事が
日本でイノベーションとかが比較的少ない原因かもな
0178デフォルトの名無しさん (アウアウカー Sacb-TsZx)垢版2017/05/23(火) 13:47:15.75ID:OJ3bnrAra
>>168
>>169
>>171

>一生、...みたいなレベルを手探りで探し出すようなことやってろよ。

に対してのレスだからコミュ障はオマエラだよ。
そもそもの話のはじまりは>>128だから具体的な案件で期日が既にあるという話じゃない。

コミュニケーションの取れない奴はこれだから困る。
0183デフォルトの名無しさん (アウアウウー Sa2f-PCQh)垢版2017/05/23(火) 18:13:36.59ID:PCM7pP9za
横レスだけど128の質問も少し違和感がある。
"詳しい入門書"というのはなかなかないんじゃないか。

128は少なくとも全然vbaが分からないわけでわなくプロパティやメソッドの使い方が難しいと言ってるわけだから求めてるのはもはや入門レベルとは思えない。
感覚としては優しく丁寧に書いてある、という意味かもしれないが。
0187デフォルトの名無しさん (ワッチョイ 0fc7-X+GT)垢版2017/05/23(火) 20:04:53.74ID:vE+85AhN0
逆引き系の本てやりたい事がズバリ書いてある事ってどんだけあるの?
本当に使えるのかいまいち信用できん
0188デフォルトの名無しさん (ワッチョイ d3b9-cm4/)垢版2017/05/23(火) 20:24:44.89ID:4WGZqsHw0
星君の業務改善でいいじゃん
0191デフォルトの名無しさん (ワッチョイ de75-p4im)垢版2017/05/23(火) 21:24:06.93ID:PaLG7AjU0
勤務表を作りたいと考えています
A1からの各セルにA1勤務開始時間、A2勤務終了時間、A3休憩時間と入れたら
A4からの各セルにA4割増無の勤務時間、A58時間以上の勤務時間、A6休日労働時間、A7深夜労働時間
とVBAを使用して入れたいのですがA7に入れる深夜労働時間の求め方が思い浮かびません
深夜勤務は22:00〜5:00の間なのですが21:00〜4:00、18:00〜6:00みたいな勤務の場合どうやって深夜労働時間を求めればいいのでしょうか?
0193デフォルトの名無しさん (ワッチョイ 068e-/hLn)垢版2017/05/23(火) 21:41:04.89ID:Y2XmHkKh0
昔作ったなぁ

まず概念として、
0-5,5-22,22-29,29-46
と4つの区分に分ける。0-5と22-29を分けるのが味噌。一緒にするとややこしくなる
俺は甲時間 乙時間 丙時間 丁時間と名付けていた

入力は3項目じゃなく6項目。
出勤、退勤、甲乙丙丁それぞれいつ休み時間を取ったかわかるようにする

残業代は労働時間の合計-8時間になり、
休日は休日フラグを作り、勤務時間*割増分を別枠で付ける。

で、
21:00〜4:00の場合の考え方は
開始時間が5:00以前なら5:00△開始時間が甲時間(仮)。終了時間が5:00以前なら更に5:00△終了時間を甲時間(仮)から引く。これが甲時間。今回は0
乙時間も似たような感じで、開始時間が5:00~22:00なら22:00△開始時間が乙時間(仮)。終了時間が22:00以前なら更に22:00△終了時間を乙時間(仮)から引く。これが乙時間。今回は1:00
あとは丙時間、丁時間も同じように求める

個人的には関数の方が修正しやすい、見通しも良いで作りやすいと思う

>>192
無能の自己紹介はいらないよぉ
0197デフォルトの名無しさん (ブーイモ MMea-Srcm)垢版2017/05/23(火) 22:34:24.97ID:D2f+EUmlM
>>191
timevalue関数はご存知かな?
日時の時間部分だけをDate型に変換してくれるけど、Date型の値は24時間(=1日)を1とした数値として扱える。
以下、日付を跨ぐ値は1(=24時間)を足してます。

深夜開始 = TimeValue("22:00:00")
深夜終了1 = TimeValue("5:00:00")
深夜終了2 = TimeValue("5:00:00") + 1
出勤 = TimeValue(Range("A1").Value)
退勤 = TimeValue(Range("A2").Value)
If 出勤 > 退勤 Then 退勤 = 退勤 + 1
休憩 = TimeValue(Range("A3").Value)

労働時間 = 退勤 - 出勤 - 休憩
深夜労働時間 = IIf(出勤 < 深夜終了1, 深夜終了1 - 出勤, 0)
If 出勤 < 深夜終了2 And 退勤 > 深夜開始 Then
深夜労働時間 = 深夜労働時間 + IIf(退勤 < 深夜終了2, 退勤, 深夜終了2) - IIf(出勤 > 深夜開始, 出勤, 深夜開始)
End If

たぶんこんな感じ。
出勤表なんて作ったことないからテキトーですw
おかしかったら誰か直して〜
0201デフォルトの名無しさん (ワッチョイ 068e-JSuV)垢版2017/05/23(火) 23:10:34.50ID:Y2XmHkKh0
Range.Address プロパティ (Excel)について質問です

AddressはRangeオブジェクト内の関数ですが、vbaだと、値を取得する場合はプロパティと呼ぶのでしょうか?
引数があってもプロパティと呼ぶのですか?

他言語ではオブジェクトのメンバを直接取得したり値を設定するのがプロパティ、式がメソッドと思っていたのですが、
vbaが特別なのでしょうか。それとも他にこういう区分けの言語はあるのでしょうか
http://piyo-js.com/01/keyword.html
0202デフォルトの名無しさん (ワッチョイ ca2d-PCQh)垢版2017/05/23(火) 23:39:33.41ID:kSdgf1uK0
プログレスバー使ったら値更新するたびにフォーカス奪うようになって別ウィンドウで文字入力とかスクロールしてると邪魔される
せっかくの長い処理中に別作業できるメリットが損なわれるようになってしまって困ってるんだけど何か解決策ないでしょか…?
プログレスバーないと処理中不安になって長く感じるのでできれば使いたいです
ちなみにWindows7上で使ってるExcel 2010です
0203デフォルトの名無しさん (オッペケ Sr03-sIut)垢版2017/05/23(火) 23:44:33.10ID:CFQVOeJer
>>201
Addressは要はgetterですよね
Rangeクラス内部から見ればメソッドのように見え、クラス利用側から見るとメンバ変数のように振る舞いますが、
実態はString型の変数を返すメソッドでふ
メソッドがパラメーターを持つのは普通のことじゃないですかね
0208デフォルトの名無しさん (ワッチョイ ca3c-PZTw)垢版2017/05/24(水) 01:48:09.41ID:nPuq94IW0
>>205
自作クラスで言うと、
property get/set/let で定義するのがプロパティ、
sub/function で定義するのがメソッド。

range.addressみたく、getだけ定義されているプロパティとfunctionは外から見たら同じようなものだし、気にする意味がないと思う。
0211デフォルトの名無しさん (ワッチョイ 031f-QnPL)垢版2017/05/24(水) 14:14:59.56ID:9bsixbB10
VBA勉強中の初心者です。
最終的にやりたいのはテキストエディタから一部データを抜き出すのをしたいんですが抜き出し方がわかりません。
メモ帳にログが取り込まれてそこから必要なデータを取り除きたいです。

コンビニのレシートがデータしてるものと考えてください。
それでそのレジの最後の一台当たりの発売金額がわかるんですけど発売金額を抜き出したいのですが何をどうしたらいいのでしょうか?
まだ変数と制御構文くらいしか理解していません。
0212デフォルトの名無しさん (JP 0H16-cm4/)垢版2017/05/24(水) 14:38:10.49ID:ktSIKEk8H
>>211
正規表現(RegExp)を使うと、指定したパターンに適合する文字列を抜き出せる。
以下は、"発売金額 \1,000"という文字列から"1,000"を抜き出すコード。

Sub foo()
  Set regex = CreateObject("VBScript.RegExp")
  regex.Pattern = "発売金額 \\([\d,]+)"
  
  Set res = regex.Execute("aaa発売金額 \1,000 bbb")
  If res.Count > 0 Then
    Set res2 = res(0).SubMatches
    Debug.Print res2(0)
  End If
End Sub
0213デフォルトの名無しさん (ワッチョイ 031f-QnPL)垢版2017/05/24(水) 14:44:53.85ID:9bsixbB10
おお!ありがとうございます。
これを元に一つ一つググりながら理解していこうと思います。
0218デフォルトの名無しさん (アウアウカー Sacb-PCQh)垢版2017/05/24(水) 19:02:38.69ID:LTICL+DVa
HYPERLINK関数(mailto:)を使って、メールを送信するシートを作成しました。
B2からB30セルまで、ハイパーリンクが設定されている状態です。
この、B列に並んだハイパーリンクを全てクリックして自動で実行したいのですが、どのようなコードを使えばよいのか分かりません。

Hyperlink.Followメソッドでは、関数によるハイパーリンクを開けないことは分かったのですが、何か代替手段はあるでしょうか?
0221デフォルトの名無しさん (ワッチョイ 0fc7-X+GT)垢版2017/05/24(水) 20:17:47.99ID:WW1YGaoR0
>>220
それはあらゆる場面において最低の解法
なぜかは自分で考えてね
0226デフォルトの名無しさん (ワッチョイ de75-p4im)垢版2017/05/24(水) 23:00:58.40ID:LLuwxDnS0
>>193
>>205
ありがとうございます。入力フォーマットが既に決まっていて変更できず休憩時間を手入力させるのは難しいです
21:00〜6:00の場合、22:00〜5:00の時間が何時間含まれているかわかればいいんですがいいロジックが思い浮かびません
今思い浮かんだのは1ヶ月間を0〜744時と考えて、24(n-1)を足せば求められるんではと考えてしまいます


あと今日VBAでSQLのクエリ文を作っていたのですがString型って文字数制限があるんですか?
それにに引っかかったみたいで途中クエリが消えてしまい原因がわからずかなり苦戦しました
0233デフォルトの名無しさん (ワッチョイ efc8-ttqU)垢版2017/05/25(木) 04:05:21.88ID:VTDAVdX70
別にADOは便利なツールとしても使えるだろ。
けど、俺もテキストエディタだったらもっと単純にゴリゴリしたの考えるな。
LeftとかMidとかRightとかInstrとかInstrRevとかを使ったようなの。
0234デフォルトの名無しさん (ワッチョイ efc8-ttqU)垢版2017/05/25(木) 04:15:26.23ID:VTDAVdX70
あっ、テキストエディタ作りたいんじゃ無くて、テキストからデータ取り出したいだけ?

だったら、やっぱりMidとかInstrとか基本的な関数で十分な気がするね。

>>211
発売金額はテキストの中でどんな風に位置してるの?
例えば10行目の20文字目から10桁みたいな感じ?
0236デフォルトの名無しさん (アウアウカー Sa8f-0req)垢版2017/05/25(木) 08:42:10.69ID:QSuakdFza
>>219
ありがとうございます!
リンク先に記載のコードを試してみたのですが、残念ながら「指定されたファイルを開くことができません」のエラーが出てしまいました。
普通にセルをクリックするとメールが立ち上がるのですが、vbaを使うと、このようになってしまいます…


>>220
大変レベルが低い話なのですが、
滅多に触ることのない超初心者のため、作る労力とメンテナンスのことを考えて、できることは関数ですませ、vbaは最低限にしている次第です。
0238デフォルトの名無しさん (ワッチョイ 4b44-qh4d)垢版2017/05/25(木) 12:02:32.06ID:KGZHRfFH0
>>236

>>219の方法でやるなら
HYPERLINK関数の 第二引数を省略した形で Evaluate しないとだめよん
よって
・元々の HYPERLINK関数で 第二引数を省略してしまう
・VBAで HYPERLINK関数の第二引数をカットしてからの Evaluate
のどっちかにするしかない

がんばってね
0239デフォルトの名無しさん (アウアウカー Sa8f-0req)垢版2017/05/25(木) 12:10:08.17ID:slr5zzcza
>>238
第二引数を省略したら、無事にメール作成できました!
今の自分のレベルでは、仕組みが理解できていませんが、本当に助かりました。
ありがとうございます!


>>237
こちらの方がレベルが高かったのですか…
そういったことの判断すらできず、vbaでノーツメールを直接作るコードを調べてみて、複雑そうなので、諦めてしまっていました。
もう少し勉強しようと思います。
0240デフォルトの名無しさん (オッペケ Sr0f-fInE)垢版2017/05/25(木) 12:33:52.09ID:6krMH9aUr
>>239
クリック等のイベントをトラップしようとすると、既定オブジェクトのモジュールやクラスモジュール等にコードを書いてハードコーディングしなきゃならなくやる
イベントの発生タイミングを考えてエラー回避の制御なども追加しなきゃならない
イベントはコードディングと保守の難易度を上げる、と認識すると良いよ

メーラーアプリのオブジェクトインスタンスを作成して操作するやり方は一見複雑そうだけど、やってることはエクセルの既定オブジェクトの操作と一緒
基本的には標準モジュール一個でコードが収まるから楽だよ
0241デフォルトの名無しさん (アウアウカー Sa8f-ttqU)垢版2017/05/25(木) 16:27:17.14ID:BhGEKkNfa
>>240
別にそんなにハードル上がってるわけじゃないでしょ。

こういう場合、自分はまずメールを作るプロシージャを作る。
それはメールに必要な宛先、タイトル、本文等の引数を元にしたプロシージャとなるだろう。
そして当然汎用的なものだから標準モジュールに書くことになるだろう。

後はそれをどのようによび出すかを考えれば良い。
B2からB30までのアドレスを元にメールを作るのだからメニュー(コマンドバー)から呼び出すとかシートに貼り付けたボタンから呼び出すとかが考えられる。

呼び出す処理ではB2からB30までのループ処理の中で標準モジュールに作ったメール作成プロシージャを呼び出すようにすれば良い。

尚、この場合ハイパーリンクはプログラムと関係が無い。
個別に開くために設定しても良いし、設定しなくても良い。

単純に空のメールを一度に複数開きたいだけならハイパーリンク使う方が簡単な気もするけど、そんな需要で完結するとは思えない。
だから自分だったら両方作って片方をコメントアウトしとくだろうな。
0249デフォルトの名無しさん (JP 0H7f-/6qz)垢版2017/05/25(木) 18:18:45.36ID:yXnULsJhH
>>248
> テキストファイルをSQLで扱うときってどのドライバを使うもんなの?
だから、普通はしないってば。
相手がCSVならかろうじてする場合もあるかもレベル。
0255デフォルトの名無しさん (ワッチョイ 1f3d-fCG8)垢版2017/05/25(木) 22:27:40.96ID:bN5MkpLw0
名前の判別でRかLのはいったやつを分けるマクロが書きたいんですがRとLは,かスペースに挟まれてるか最後一文字です
ただし最後一文字ならその前にスペースが入ってます
こういう場合スマートな判別ってどうしますか?
0259デフォルトの名無しさん (ワッチョイ 8bcd-wwwt)垢版2017/05/25(木) 23:23:44.35ID:rwwycwh80
>>255
>>212のように正規表現がいいけど
細かい話をするとスマートが何を指しているのか
早さとかコードの見た目とかね

>>258
ド素人の言い回しって大体わかるじゃん?たまにぶっとんでるのいるけど
だいたいこういうのは、CSVで出力されたPOSデータの計行のみ抽出したいってぱとぅーん
だから>>214、もちろんその後でMIDとか使う必要はあると思う
0261デフォルトの名無しさん (ワッチョイ 3bc7-x63M)垢版2017/05/25(木) 23:29:21.59ID:trQS6AD+0
>>259
正規表現は何がスマートなのか
早さ?がスマートな例は
コードの見た目がスマートな例は

たった3種類なんだから答えてあげれば?
0263デフォルトの名無しさん (ワッチョイ 3bc7-x63M)垢版2017/05/25(木) 23:33:20.64ID:trQS6AD+0
>>262
お前がいじわるなつっこみするから俺もいじわるしただけだ
0267デフォルトの名無しさん (ワッチョイ 3bc7-x63M)垢版2017/05/25(木) 23:40:28.47ID:trQS6AD+0
>>265
あ?調子に乗りすぎだお前
0269デフォルトの名無しさん (オッペケ Sr0f-fInE)垢版2017/05/25(木) 23:45:17.90ID:o/KEVGaTr
midとかifだと、検索対象文字列のパターンが変更されたらいちいち検索処理の制御構造を変えなきゃならないかもしれない
正規表現だったら大抵RegExpオブジェクトのプロパティの設定値を変えるだけで修正が終わる
0270デフォルトの名無しさん (ワッチョイ df61-hUAt)垢版2017/05/25(木) 23:49:52.88ID:2PvZEflm0
俺なら正規表現とか難しいのわかんないからこれで済ませちゃうな
スマートさのかけらもないけど

Function isRL(str) As Boolean
 isRL = str Like "*[, ][RL][, ]*" Or str Like "* [RL]"
End Function
0272デフォルトの名無しさん (ワッチョイ df61-hUAt)垢版2017/05/25(木) 23:57:37.38ID:2PvZEflm0
>>271
日本語がどっち指してるかわからなかったからそれも含まれると解釈したんだけど
それ入らないならOrいっこ増やすだけだし

もちろんもっと複雑さが増してくれば正規表現調べようって気にもなってくるけどね
0282255 (ドコグロ MM3f-fCG8)垢版2017/05/26(金) 08:38:47.74ID:iQOaaYC+M
いろいろな意見ありがとうございます
釣りではないですが正規表現で良さそうとは感じていました
ただ正規表現の書き方がわからなかったのと本当に正規表現が一番適した書き方かわからないのでああいう聞き方になりました
なんか混乱させてしまったようですみません
0284デフォルトの名無しさん (ワッチョイ efc8-ttqU)垢版2017/05/26(金) 09:50:48.59ID:Vk+zDyie0
正規表現が良いとは限らんよ。
構造を元にした固定の場所の方が良い場合もある。
だからデータの中から取り出したい値がどの様に配置されてるかが重要。

質問する時に出来ればそれを示して欲しかったね。
0286デフォルトの名無しさん (ワッチョイ 2b1f-xtIn)垢版2017/05/26(金) 10:23:01.77ID:4SMbnGa40
初心者です。
ユーザーフォームを最近覚えて作成中です。
中身はとりあえずメッセージBOXで工事中にしてユーザーフォームを凝ってみようと思うんですけど
いい見本とかありませんか?
アプリっぽく作ってシートへのハイパーリンクで満足しようかと思います。
0287デフォルトの名無しさん (JP 0H7f-/6qz)垢版2017/05/26(金) 11:05:39.54ID:FvwfjnU+H
>>250
> 例えばUTF8の読み書きとか。
それは、ADODB.Streamを使うということであって、SQL(クエリ)を使うということじゃないよね。
故意になのか無意識なのかしらないけど、それを混同させてどうしたいのか。
0289デフォルトの名無しさん (ワッチョイ 1f3d-w2wH)垢版2017/05/26(金) 19:40:01.56ID:KALLaxQr0
昨日正規表現で質問したものです。
リファレンスブックを読みながら正規表現で[,\s]R[,\s$]ってな感じで検索して
マッチした数値>0で分別ってプログラムを組んだのですが、一つ問題が…
取得した文字列の最後が,Rとなっていたときに反応しないです…
正規表現としてはこれであっていると思うのですが何か勘違いしてるんでしょうか?
0291デフォルトの名無しさん (ドコグロ MM3f-ijLw)垢版2017/05/26(金) 20:07:54.29ID:I1+YwiguM
>>289
文字列の最後としての $ は文字じゃないから [ ] の中には入れられない
(入れると文字としての $ と見なされると思う)

> 名前の判別でRかLのはいったやつを分けるマクロが書きたいんですがRとLは,かスペースに挟まれてるか最後一文字です

これちょっと曖昧
",R," とか " R " はいいとして " R," とか ",R " もいいのか?
とりあえずいいとしてスマートかどうかを問わなきゃ
"(?:[\s,][LR][\s,].*|\s[LR])$"
辺りでどうか
0294デフォルトの名無しさん (ワッチョイ 1f3d-w2wH)垢版2017/05/26(金) 23:27:30.93ID:KALLaxQr0
回答ありがとうございます
[]内に$は受け付けないんですね…
,R_は信じがたいことにそう入力されてるデータを見つけてしまったので分別に必要です。
なんか荒れに荒れてる感じですいません…
とりあえず私は質問しかしてません
0297デフォルトの名無しさん (ワッチョイ 2b77-nzfl)垢版2017/05/27(土) 01:04:32.39ID:SLDKDwXi0
嘘つきは泥棒の始まり
0304デフォルトの名無しさん (ワッチョイ 3bc7-x63M)垢版2017/05/27(土) 23:19:58.15ID:wHxGIeSt0
だがならない
0306デフォルトの名無しさん (ワッチョイ 4b19-Uhxf)垢版2017/05/29(月) 19:34:45.91ID:Q1hkb32K0
マクロ初心者ですが質問させてください。
Sheet1のB1-B16000の文字列を同じファイル内の新規シートに
699列毎コピーしたいです。

ググって下記まで作ったのですがエラーが出ます
いかんせん知識が無いため、何が間違っているのか分からないです。
どこを修正すればいいのかご教示いただけますでしょうか。


Sub マクロの記録改()
  Dim n As Long '変数の定義
  For n = 1 To 15206 Step 699
    Sheets("Sheet1").Select '元シートの「Sheet1]を選択
    Application.Goto Reference:="R" & n & ":R" & n + 699
    Selection.Copy 'コピー
    Sheets.Add 'シートを追加
    ActiveSheet.Paste '貼り付け
  Next n
  Application.CutCopyMode = False 'コピーの解除
End Sub
0307デフォルトの名無しさん (ワッチョイ ef8e-igqr)垢版2017/05/29(月) 19:48:29.74ID:aGWTIe1b0
>>306
とりあえず走らせたけどエラーでなかったよ
どこで出るの?

そもそも何をしたいの?
元々あるのはsheet1だけとして
sheet2のA1にB1-B699貼り付け
sheet3のA1にB700-B1399貼り付け
ってこと?
0309デフォルトの名無しさん (ワッチョイ 4b19-Uhxf)垢版2017/05/29(月) 20:27:18.52ID:Q1hkb32K0
失礼しました
説明が間違ってました。
エラーではなくて、A行もコピーしてしまうのでB行をA行にコピーしたいです。
まさに、>>307-308さんの言ってることをやりたい形です!!


ちなみに別bookにコピーする場合は、
どういった記述にすれば良いのでしょうか?
0311デフォルトの名無しさん (ワッチョイ ef8e-c3sC)垢版2017/05/29(月) 20:52:28.37ID:aGWTIe1b0
>>309
こんな感じかねぇ
http://www.dotup.org/uploda/www.dotup.org1264912.zip.html

Sub foo()
'setで参照を作成しておく
Set コピー元シート = ThisWorkbook.Sheets("main")
Set コピー先ブック = Workbooks.Open("./copy.xlsx")
'何行ごとか
処理行数 = 699
'ループ
For i = 1 To 21
Set コピー先シート = コピー先ブック.Sheets.Add(After:=Sheets(Sheets.Count))
'コピーでもいいけど、あえてvalueで処理。どっちでもいい
For k = 1 To 処理行数
コピー先シート.Cells(k, 1).Value = コピー元シート.Cells(k + (i - 1) * 699, 2).Value
Next
Next
End Sub
0322デフォルトの名無しさん (ワッチョイ 3bc7-DNyE)垢版2017/05/29(月) 22:38:31.20ID:A34reMmc0
ピリピリしてるハゲってなんていうか、微笑ましいよな
ハゲ好きだわーオレ、なりたくねーけど
0329デフォルトの名無しさん (ワッチョイ 0f75-GezL)垢版2017/05/29(月) 23:08:08.96ID:qTUj1SpC0
4〜3月の売上をまとめて円グラフで描画したいんですがどう描けばいいのかわかりません
そもそも各月の売上をまとめて円グラフで描画しようとするのが間違いでしょうか?
0331デフォルトの名無しさん (ワッチョイ ef8e-SJo5)垢版2017/05/29(月) 23:10:38.64ID:aGWTIe1b0
>>329
はい
扇風機なら夏、おもちゃなら必ず12月が伸びるので毎年同じ形になる円グラフは向いていません
折れ線グラフで前年度、その前の年度を重ねて昨年度対比にするとわかりやすいと思います
0347デフォルトの名無しさん (ワッチョイ ef8e-igqr)垢版2017/05/30(火) 00:16:18.61ID:q6a+ppT10
>>339>>337の数秒後にレスできたら完璧だったんだけどなぁ
これはちょっと悔しかった。予想以上にレスが遅かった。見え見えの釣りに飛びつくと思ったら2分もかかるとは
俺の実力も足りんし、忍耐力も足りなかった
申し訳ない

>>346
なんのために?vbaって書いてそれで誰か損してるの?
じゃあ書いてやるよwwwVBA!VBA!満足かwww
0355デフォルトの名無しさん (ワッチョイ fbf3-w2wH)垢版2017/05/30(火) 12:29:57.72ID:1+UI8ryZ0
誰かアドバイスおばお願いできませんか

野球関連の仕事をしているんですが、選手成績のデータをcsvで貰っていて
それを自分の所のcsvに入力しないといけないんですが、いかんせん数が膨大でデータを
並び替えやら抽出やらで変換したいんですが、この場合に覚えた方が良いプログラムってのは
エクセルでマクロを組むってのが手っ取り早い近道なんでしょうか?
それともほかのプログラム言語を覚えてソフトを開発って手も考えた方が良いのでしょうか?
0358デフォルトの名無しさん (ワッチョイ fbf3-w2wH)垢版2017/05/30(火) 13:14:12.67ID:1+UI8ryZ0
>>356
正確に言い過ぎると微妙な案件だと思って濁し気味なのですが、貰っているデータというのは
プロ野球のデータ提供サービスのBISと言われるデータ提供会社のcsvで
『自分』というのは自分の会社で使っている野球中継用のソフトとなります。
(野球中継用のソフトもcsvでデータを賄っているのですが、当然フォーマットが違うので
貰ったデータをもとに普段は手入力しています。)

>>357
確かに膨大というのはSEさん達からしたら笑ってしまうレベルの数なのでしょうが
限られた時間(集合時間から試合開始までの時間)で手入力で間違いなく必要項目を入力するという問題なので
プログラムにまかせて一括変換できるのなら、間違いも少ないでしょうし、オペレーターの習熟度に左右されずに仕事につかせやすいので、
非常に有益な事だと思ったのです。

本来なら仕様を出して、プログラム作ってもらえば済むことなのかもしれませんが
自分の所で使っている野球ソフトも仕様変更でcsvの項目順番とかずれる可能性もありますし、
提供してもらっているデータも仕様変更とかで順番ずれたりした時に毎回発注とかしたくないので
急ぎではないし自分で作れる様になりたいなと思って相談させてもらいました。
0359デフォルトの名無しさん (ワッチョイ 0b92-9J/J)垢版2017/05/30(火) 13:29:23.00ID:06zvEzNR0
必要なデータ抽出して、並び替えて、別ソフト用のCSVに変換するってことかな?
エクセルでもできるだろうけど、自分ならC#かPowerShellでつくるな
エクセルを介す必要性がないからわざわざ使いにくくてめんどくさいVBAでやることもない
初心者にはちょうどいいお題だと思うからプログラム作ってみたらいいと思うよ
0360デフォルトの名無しさん (オイコラミネオ MM7f-Uhxf)垢版2017/05/30(火) 13:57:11.50ID:C+7xWm9cM
どなたか助けてください

ブック内の約200シートを全て個別のcsvファイルに保存したいのですが、
うまくいきません。
エクセルファイルと同じフォルダにシート名+".csv"という名前の
CSVファイルを作成することが条件です。

ググって
下記は出てくるのですが、実行してもエラーが出てしまい
CSVにはき出すことが出来ません。
(こちらの環境がMacだからなのでしょうか?)
どこを修正すれば正しく、csvにはき出せるかご教示ください!



Sub SaveCsv()
Dim mySheet As Worksheet
For Each mySheet In ActiveWindow.SelectedSheets
ActiveWorkbook.SaveAs Filename:= _
ActiveWorkbook.Path & "¥" & mySheet.Name & ".csv", _
FileFormat:=xlCSV, CreateBackup:=False
Next
End Sub



エラー文
実行時エラー '1004':
'Sheet183.csv' にアクセスできません。
0371355 (ワッチョイ fbf3-w2wH)垢版2017/05/30(火) 16:21:56.98ID:1+UI8ryZ0
みなさん沢山のアドバイスありがとうございます。
言語的にはどれとってもほぼ確実にできるけど、道が沢山ありすぎる状態なんですね。
関数電卓のBASIC程度しかかじっていない軟弱な頭にはどれがとっかかりやすいモノなんでしょうか・・・
0374デフォルトの名無しさん (ワッチョイ ef8e-9J/J)垢版2017/05/30(火) 19:06:30.89ID:q6a+ppT10
>>360
ぐぐるんじゃなく自分で作れるようになると楽だよ
Sub foo()
Application.DisplayAlerts = False
For Each シート In ThisWorkbook.Worksheets
シート.Activate
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & シート.Name & ".csv", _
FileFormat:=xlCSV, CreateBackup:=False
Next
Application.DisplayAlerts = True
End Sub

>>371
エクセル+vbaがいい
諦めなければ絶対に完成する。諦めるな
わからなくなったらいつでもおいで
0375デフォルトの名無しさん (ワッチョイ 3bc7-x63M)垢版2017/05/30(火) 19:22:34.02ID:Fp/ortWi0
>>374
> 諦めなければ絶対に完成する。諦めるな
仕事でやってる人には最低のアドバイスだな

ニートのお前とは違うんだよ
仕事ってのは限られた時間の中で最大限の結果を求められる
少しでも人の役に立ちたい気持ちはわからないでもないけど
それ以前に自分がニートだっていう事実を忘れちゃいかんな
お前が本当に誰かの役に立ちたいのだったら
まず自分の身をわきまえ
そして相手の立場を理解するって事が何よりも大切な事だ
よく覚えておけ
0378デフォルトの名無しさん (ワッチョイ 3bc7-x63M)垢版2017/05/30(火) 20:01:37.18ID:Fp/ortWi0
>>377
少しはわかったみたいだな
効率>>>>>>>>>>>>>>自己満足
仕事ってそういうもんなんだよ
0379デフォルトの名無しさん (ワッチョイ fb4c-lYDY)垢版2017/05/30(火) 20:09:38.66ID:1szQs/d90
まぁ実際、出来るかどうか分からないVBAよりも、手作業で確実に済ませるという場面は仕事してると出てくるな。
ただ件の話はルーチン業務のマクロ化についての話だから、多少時間が掛かっても挑戦する価値はある。

しかしながらごく一般的な悩みで、それを解決する手段が用意されているのでVBAに拘る必要がないのも事実。
0381355 (ワッチョイ fbf3-w2wH)垢版2017/05/30(火) 20:52:10.68ID:1+UI8ryZ0
ありがとうございます。
取りあえずエクセル環境で動くとどの現場でも楽になるので
エクセルマクロでどうにか作ってみます。また、来ざる得なく成る様な気がするので
その時にまた相談に乗ってください。ありがとうございました。
0382デフォルトの名無しさん (ワッチョイ 4f4a-fjjf)垢版2017/05/30(火) 21:03:04.18ID:0IDFiFSH0
Excelが必要でないならVBAよりはVBSscriptかな
VBScriptはExcel VBAにほぼそのまま持っていける
VBScriptやVBA扱いに慣れたらpowershell
いきなりpowershellでもいいけど前提知識が割と必要になる
powershellの良い入門書って見たことないし
0385デフォルトの名無しさん (ワッチョイ 9faa-w9y6)垢版2017/05/30(火) 21:56:44.25ID:GySYMHzV0
>>379
ウチの会社の場合、マクロ書いてると「そんな暇があったら直接打ったらいいじゃん」と言われる。バカは手作業こそ
仕事だと思い込むもんなんだよな。
0389デフォルトの名無しさん (ワッチョイ 9f92-7zaT)垢版2017/05/30(火) 22:59:03.08ID:FYFuo4390
セルの書式を保持したまま変数に格納する方法ってありますか?
文字の一部分だけ太字とか、嫌がらせみたいなデータがあるんです。
Copy Destinationで別のシートに格納しろ、とかいうのはなしで。
0390デフォルトの名無しさん (ワッチョイ ef8e-pAKw)垢版2017/05/30(火) 23:26:10.83ID:q6a+ppT10
格納だけならsetで簡単にできる
しかし他のセルにこれを適用しようとするとフリーズ。理由は知らん

割りと真面目に
>Copy Destinationで別のシートに格納
したほうがいい気がする

Sub foo()
'A1の一文字目のフォント情報をB1二文字目に
Set bar = Cells(1, 1).Characters(Start:=1, Length:=1).Font
Cells(1, 2).Characters(Start:=2, Length:=1).Font = bar
End Sub
0392デフォルトの名無しさん (ワッチョイ 9faa-w9y6)垢版2017/05/30(火) 23:58:44.86ID:GySYMHzV0
>>388
ああ、言ってる。でも延々と手作業でやって残業時間自慢してるヤツが殆どw
0393デフォルトの名無しさん (アウアウイー Sa0f-MJsu)垢版2017/05/31(水) 02:10:54.01ID:LgGj7rqFa
VBA初心者です。
今データの分析をしてるのですが色々な関数を使ってるシートをとりあえず10000くらいまでデータを作っておいてピポットテーブルで分析しています。
それだとデータが重くなりますが入力されたデータに行をオートフィルで追加することはできますか?
例えば
A列に日付 B列に店名 C列に商品名 D列に個数
を入力していて
列やG列に日付の関数で月やH列にVLOOKUP関数で店舗の種類の仕分けをしています
データを入力した行に関数が自動で追加できるようにするにはどうしたらいいでしょうか?
0394デフォルトの名無しさん (ワッチョイ 0b92-9J/J)垢版2017/05/31(水) 03:10:26.82ID:ngSfzLWM0
>>393
イベントを使うといいと思う
例えば4列目に入力があったら5〜7列目がオートフィルされるようにするなら

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Row > 3 And Target.Column = 4 Then
Range(Cells(Target.Row - 1, 5), Cells(Target.Row - 1, 7)).Select
Selection.AutoFill Destination:=Range(Cells(Target.Row - 1, 5), Cells(Target.Row, 7)), Type:=xlFillDefault
Target.Select
End If
End Sub
0395デフォルトの名無しさん (ワッチョイ df61-hUAt)垢版2017/05/31(水) 05:55:04.74ID:5otW7Lci0
Excelの機能でやった方が良さそうに見えちゃうな
月で集計は列足さずにピボット側で日付をグループ化すればいいし
範囲の拡張はデータ範囲をテーブルにしておけばいいだけだし

VBAスレだしVBAでやりたいんならまあいいか
0397デフォルトの名無しさん (ワッチョイ 0b30-MgrD)垢版2017/05/31(水) 07:14:56.30ID:CCxYhvtc0
>データを入力した行に関数が自動で追加
したいだけなら、テーブルにすればいいのでは

Excelのテーブル機能の使い方まとめ
https://www.forguncy.com/blog/20161014_table
>一覧表の最終行の次の行にデータを入力すると、その上の行に入っている書式設定が自動で反映されます。 計算式も自動で反映します。
0398デフォルトの名無しさん (アウアウイー Sa0f-MJsu)垢版2017/05/31(水) 11:34:55.36ID:2HZ6ZV5Na
イメージと
0403デフォルトの名無しさん (JP 0H7f-/6qz)垢版2017/05/31(水) 14:44:47.62ID:vzRkDbrnH
>>401
じゃ、マクロを記録しつつシートをCSVで保存してみて、生成されたコードを観察してみるとか。

今回1度きりの作業だったらあきらめて手作業でエクスポートするか、それが嫌なら他のQAサイトで
質問するとか。
0405デフォルトの名無しさん (ブーイモ MM4f-MamD)垢版2017/05/31(水) 15:23:51.75ID:V02iWLllM
>>402
うまくいきそうで良かった。
リンク先を見てる感じ、
ActiveWindow.SelectedSheets
ActiveWorkbook.Path
のどっちかがcsvを保存した時点でおかしくなってるのかなと感じる。

あと、<font color="#ffff00">と</font>はVBAには無関係なので、丸々削除してオーケー。
詳しく知りたければ、「htmlタグ フォント」でググってみてね。
0406デフォルトの名無しさん (ワッチョイ 4b19-Uhxf)垢版2017/05/31(水) 15:43:17.11ID:O9qNIaK10
>>404
お忙しいところ、ご教示いただきありがとうございました。

>>405
なるほど、また使う事があると思うのでその部分を修正して、
ちゃんと使えるものになるようにいじってみます!

タグの件もありがとうございました!
0410デフォルトの名無しさん (ワッチョイ ef8e-kjbA)垢版2017/05/31(水) 20:03:43.86ID:lGWBXgBz0
>>409
とにかく変なルールや仕様が多すぎる
・まず前提条件として、エクセルについて理解する必要がある。仕事で使っていれば嫌でも覚えるけど、学生にとっては辛いところだろう
・標準モジュールが初期状態で存在しない。初心者が大きくつまずくのはここだろう。コードが思い浮かんでも、どこに書けばいいのかもわからない
・上記の続きで、スコープも変則的に見える。sheet1にコードを書くとなぜsheet2が見えないのか?はスコープ、privateやpublicの概念を先に知っておかないといけない
初心者からみたエクセルなんてどうみても全部publicなのにな
・まずシートをselectするかactivateしないと、rangeがselectできない。糞仕様です
・エラーが大雑把すぎる。
修正候補:式
って言われても、大抵の記述は全部式だろう。式のどの部分だよ

if
for i = 1 to 2
endif
これで出るエラーは「endifに対応するifがありません」そっちじゃねー!!!
・マクロの記録もあやふや。グラフやオートシェイプは記録したマクロを走らせるとエラーになる始末
他にもオブジェクトの塊なのにオブジェクト指向が全くなかったり、ダンプもできない、今更Bライクとかええやろ、など他にも色々あるけど
0414デフォルトの名無しさん (ワッチョイ 3bc7-x63M)垢版2017/05/31(水) 20:49:37.96ID:ac0fXejp0
>>410
だいたいエクセルも知らんやつがなんでいきなりエクセルマクロやろうとしてんだよw

「エクセルvbaでプログラミングを学ぼう」みたいな風潮が諸悪の根源なんだよな
そういう意味では>>407の言うことにも一理あるわw
0416デフォルトの名無しさん (ワッチョイ 9fa6-9J/J)垢版2017/05/31(水) 21:14:12.59ID:Nua5RAmq0
プログラミングなんて、変に凝らなきゃそこそこの処理ロジックは誰でも作れるよ。

でも入出力が楽にできるGUIが欲しいとか、プログラムに食わせる制御データの管理を手軽にしたいとか、
日常使いのアプリとして便利にってなるとExcelになっちゃうんだよね。
0417デフォルトの名無しさん (ワッチョイ ef8e-c3sC)垢版2017/05/31(水) 21:20:34.89ID:lGWBXgBz0
>>411
一般事務のデファクトスタンダードなのにあまりに酷いとは思う
さすがにバージョンアップしてほしい。エクセルは進化してるけど、vbaはvb6.0以下だろう

>>414
エクセルもそもそも自由度が高すぎる。テーブルで大分機能的には落ち着いたけど、肝心のテーブルが使われていない
とりあえずセルの結合だけでも廃止してほしい
0419デフォルトの名無しさん (ワッチョイ ef8e-c3sC)垢版2017/05/31(水) 22:00:18.50ID:lGWBXgBz0
ワードなぁ・・・ワードはずっと扱ってないよ。いくつかの会社の人に聞いたけど、やっぱりワードは糞

しかし唯一、日本を代表する金融企業の人と飲んだ時、その人が喜々として語っていた
その企業はエクセルもアクセスも使わず、資料は全てシステム部門に頼む体質
宴会や支店向けの広報をワードで一生懸命作る会社だったらしい

いいか悪いかはともかく、まぁ、日本の上層部は社会主義だ。
0420デフォルトの名無しさん (JP 0H4f-UmYi)垢版2017/05/31(水) 22:01:17.27ID:ZGVFQMFtH
>>417
自分もセル結合嫌派だけど、これまでセル結合で表現していた部分はどうするの?
個人的には、(選択範囲で中央)が水平方向だけでなく、垂直方向にもきけば満足だけど、、
現場の意向でどうしても使わないといけないことが多々ある。
0421デフォルトの名無しさん (ワッチョイ ef8e-h4wC)垢版2017/05/31(水) 22:12:44.56ID:lGWBXgBz0
>>420
・セル結合は機能自体なくす
・「選択範囲で中央揃え」的なものをもっと増やす
要するにとにかくセルと情報は1:1にする
その上で
・書式設定無し
機能があれば、
編集側、閲覧側に取っても幸せになるだろう

とにかく、作業中のデータとプリントアウト等の見せるデータ、これを抜本的に乖離しないと話にならない
とにかくセル結合が最初だ。
0426デフォルトの名無しさん (スプッッ Sdbf-uKyG)垢版2017/05/31(水) 23:56:16.90ID:N23t2UmQd
画面に表示されてるとおり印刷してくれ
俺の要望はそれだけだ
0428デフォルトの名無しさん (ワッチョイ ddba-+vtu)垢版2017/06/01(木) 00:30:28.19ID:3kmI9vZh0
その手があったか!
0435デフォルトの名無しさん (ワッチョイ 3acd-PQPf)垢版2017/06/01(木) 00:57:03.34ID:7jSAnpp50
>>431
>>433
ワッチョイの仕様変わったの?
ID:lGWBXgBz0この人UA部分がころころ変わってるんだけど
デフォルトの名無しさん (ワッチョイ ef8e-9J/J)
デフォルトの名無しさん (ワッチョイ ef8e-kjbA)
デフォルトの名無しさん (ワッチョイ ef8e-c3sC)
デフォルトの名無しさん (ワッチョイ ef8e-h4wC)
0441デフォルトの名無しさん (アークセー Sx3d-nANo)垢版2017/06/01(木) 08:15:30.82ID:Vftk4o9ex
わざわざシートのActivate/Selectメソッド使わなくても、シート.Range(Index).Selectで終わる話だろ
そんなにGlobal.Range使いたいんか?
Global.Rangeなんてほぼ使わないぞ俺は、コードの可読性下がるから
0445デフォルトの名無しさん (アークセー Sx3d-nANo)垢版2017/06/01(木) 18:30:37.54ID:N6tgl860x
>>443
>>410は「シートをselectするかactivateしないと、rangeがselectできない」って書いてるよな
シートがアクティブになってないとRange.Selectが使えないっていう話をしてるわけじゃなくて、
シート.Selectメソッドかシート.Activateメソッドを使ってシートをActiveにしないとRange.Selectが使えないっていう嘘を言ってるんだぞ
0447デフォルトの名無しさん (ワッチョイ 09c7-xxAH)垢版2017/06/01(木) 20:53:27.07ID:gEanndL50
どっちにしろSelectするかActivateすれば使えるんだろ?
たいした問題じゃねえよそんなの
0457デフォルトの名無しさん (ワッチョイ 7a61-N0z9)垢版2017/06/02(金) 00:18:14.15ID:WCh1iO0Y0
>>456
その気持ちはよくわかる
その行を実行した直後はどの変数にも入っていないシートだからなんか不安になる

どうしても不安なときは先に新規ブック作っといてそこをコピー先にしてるけどね
それはそれで無駄なことしてんなあという気になる
0460デフォルトの名無しさん (ワッチョイ 3acd-PQPf)垢版2017/06/02(金) 11:33:41.01ID:8fOMtk3c0
>>444
おい間抜け、↓この事だろ?こいつは嘘だ
>>399
>アドバイスいただいたものも全てダメしたけどダメ。

コード書いたり詳細に説明したレスに対してですら
個別にレスを返さない奴は、大体が釣り・試してない・見逃しのパターン

ソース?根拠?理由はこれだ、結果が書かれていない
>>387

余談だけど、foo野郎との質問野郎はなぜかセットで来る
0466デフォルトの名無しさん (ワッチョイ edd4-k7rq)垢版2017/06/02(金) 21:26:05.82ID:rlzCeZS80
エクセルの複数のセルの外枠に罫線を引きたいのですが、アプリケーション定義なんたらのエラーが出ます。
workbooks(********.***).worksheets(*****).range(cells(StartRow,StartCol),cells(endrow,endocol).borderaround
でstartrow startcol endrow endcolは変数です

どこがおかしいでしょうか?
0470デフォルトの名無しさん (ワッチョイ 66e2-mhqb)垢版2017/06/03(土) 21:54:33.85ID:4eBaDiw20
クラスモジュールってクラス定義してインスタンス化できるってこと?マルチスレッド可能なの?
オブジェクト指向?
0474デフォルトの名無しさん (ワッチョイ 66e2-mhqb)垢版2017/06/03(土) 22:56:31.41ID:4eBaDiw20
>>471
>>472
プロパティくらいなのか
サンキュ
0478デフォルトの名無しさん (ワッチョイ 09c7-hSUX)垢版2017/06/04(日) 00:02:03.04ID:SMq8qLM70
>>477
C++でわからなかったんだからわかってないよそれw
0480デフォルトの名無しさん (ワッチョイ 09c7-xxAH)垢版2017/06/04(日) 00:23:32.29ID:SMq8qLM70
>>479
そうか?オレ毎日納豆食うけど食うたびに美味しいぜ?
0488デフォルトの名無しさん (ワッチョイ 3511-UdBD)垢版2017/06/04(日) 12:55:28.25ID:NZhuuX9z0
>>487
シートにあるやつを一回配列かコレクションか(俺はやらないけどレコードセットでもいい)にクラスん中でまとめるのよ
メインコードにリストに入れる処理入れるとごちゃごちゃするからさ
0490デフォルトの名無しさん (ワッチョイ 9e23-amhP)垢版2017/06/04(日) 17:48:58.65ID:1s3T2QVw0
>>484
全然ちがう。
win32API使って別スレッド作る方法はあるし可能だよ。
けどExcelVBAでそれをやると物凄い不安定になる。
自分が試した感触ではRangeとかCellとかのExcelのオブジェクト触った瞬間にExcelごと落ちる感じ。

じゃあ、Excelのオブジェクト触らずに計算する所だけなら良いかというと、動く場合もあるけど複雑なものになると処理が間に合わなくて落ちるらしい。

基本、やめた方が良い。
0491デフォルトの名無しさん (スプッッ Sded-qcoX)垢版2017/06/05(月) 01:20:19.17ID:oPyz6kCkd
別処理をWord使って処理させようとしてもOffice全体で連携かかってるみたいでうまくいかなかったことがある
変なとこで作り込まれていてやりたいようにできないんだよな
0495デフォルトの名無しさん (スップ Sdea-rE82)垢版2017/06/05(月) 09:24:51.60ID:Sx3XxldLd
>>490
ほほ同じ経験がある。
自分の場合は処理が終了したデータをDBにINSERTするところは上手くマルチスレッド化できた。
待ち合わせが必要ないパターンだったし。

COMそのものがマルチスレッドだめなんかね?
0496デフォルトの名無しさん (JP 0H6e-rLqX)垢版2017/06/05(月) 11:01:11.07ID:bwrXOc4qH
>>490
> 自分が試した感触ではRangeとかCellとかのExcelのオブジェクト触った瞬間にExcelごと落ちる感じ。
それGUIアプリの常識。
全然関係ないスレッドからUIスレッド管理下のものに触ってはいけない。
https://ja.wikipedia.org/wiki/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%82%A4%E3%82%B9%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89
0500デフォルトの名無しさん (ササクッテロラ Sp3d-mjoq)垢版2017/06/05(月) 23:38:18.98ID:bd1ggU41p
マクロを作成は通常MODULEですが、
Sheet1やThisworkbookに記入するのはどういうときでしょうか。済みません。
0502デフォルトの名無しさん (ワッチョイ 9e23-amhP)垢版2017/06/06(火) 04:12:26.65ID:NdFOOmMr0
>>501
要望として有るのは待ち状態の時に先に進めるためとか。

ダイアログの中には何らかの操作をしてダイアログ自体を閉じさせないと次のステップに行かない物がある。
そういう時に別スレッドで無限ループ中でそのダイアログが見つかったら操作する処理を動かしてからダイアログ表示させるとか。

例えばメッセージボックス表示させるんだけど10秒間ボタンが押されなかったらキャンセルするとか。

こういうのは上手く書くと動く。

他にも複数の関連しない計算に時間がかかっている時に単純に速度アップのために使いたいと思うかもしれない。

でも動いても趣味のプログラム以外じゃ危なっかしくて使えない。
マルチプロセスで代替えできるものも多いから無理する必要もない。
0503デフォルトの名無しさん (ワッチョイ 6a06-k7rq)垢版2017/06/06(火) 04:20:46.72ID:LBKXQv4G0
>>500

>Sheet1
そのシートをActiveにした時の処理、DeActivateにする時の処理、あるいは
特定のセルにデータを入れた時の処理 etc

>Thisworkbook

ブックの起動時や終了時にDBとの接続処理や切断処理を入れてる
0506デフォルトの名無しさん (ワッチョイ bd23-KDIu)垢版2017/06/06(火) 20:09:22.46ID:Uy4z/eLw0
vlookup等を使用しているとソルバーが使えないらしいのでVBAで作ろうと思っていますが、定番というか定石というか、参考になるサイトややり方等はありますか?
言ってて抽象的だなとは思ってはいますが、どうすべきなのか判らず…よろしくお願いします。
0507デフォルトの名無しさん (ワッチョイ 6a6f-E6+r)垢版2017/06/06(火) 21:53:22.27ID:efHThVDq0
>>500
Thisworkbook.Worksheets(Activesheet.Name).Cells(1,1).Value=1
って書くのが面倒くさくて、
Me.Cells(1,1).Value=1
って書きたい時とか。

Me.も要らねえだろって?
何らかの理由でActivesheetが変わっちゃったら嫌じゃないですか?
0508デフォルトの名無しさん (ササクッテロラ Sp3d-mjoq)垢版2017/06/06(火) 21:56:25.64ID:vXDpJbBwp
教えてください。

マクロでハイパーリンクを実行したいのですが、セルにリンクを貼る必要がない、ただマクロから実行するだけというとき、どう書けば良いのでしょうか。
0515デフォルトの名無しさん (スプッッ Sded-qcoX)垢版2017/06/07(水) 00:14:23.17ID:iB9NoSxCd
>>507
activesheetがどこだろうとsheetモジュールに書いてんなら関係なかんべ

sheetオブジェクトまで省略できる手抜きコードで済ますのにたまに使ってるわ
あとsheetをコンフィグ書いとくのに使ってるときにプロパティ的な関数を置いといたりな
あまり行儀よくはない自覚はある
0516デフォルトの名無しさん (ブーイモ MM49-JT0G)垢版2017/06/07(水) 01:08:40.19ID:0NeAqWbNM
>>506
詳しくはないけど、VBAでやるものじゃない印象。
Excelのソルバーで収束するように数式を書き換えるか、他の言語やツールを使うのがいいんじゃないかなあ。
「ソルバー アルゴリズム」でググれば色々手段が出てくるよ。
0517デフォルトの名無しさん (ワッチョイ 7d6d-28Zt)垢版2017/06/08(木) 01:09:56.48ID:eFwaOcHQ0
あるサイトのスクロールバーを一番下まで下げて
キャプチャしてシートに貼り付けてトリミング。
同じページにあるフレーム内のスクロールバーを下まで下げて
キャプチャしてシートに貼り付けてトリミング。ってのを
3ページ分位繰り返し行いたいのですが
http://www.vba-ie.net/ie/iescroll.html
この辺とか見てるんですがヒントください
0518デフォルトの名無しさん (ワッチョイ 5b23-cb7n)垢版2017/06/08(木) 05:16:07.28ID:1DKX/Vru0
>>517
なんでこんなヘンテコなことしなきゃならんの?
JavaScriptなんて必要無いぞ。
と思ったけど、ちょっと調べてみるとJavaScriptでスクロールしてる例が多いな。
今、試す環境が無いから何とも言えないな。

DOMの勉強するよろし。
0520デフォルトの名無しさん (ワッチョイ 5b23-cb7n)垢版2017/06/08(木) 15:33:04.11ID:1DKX/Vru0
>>519
キーボードマクロは危険だよ。
動いてる最中にマウスクリックとかすると場合により大変なことになる。

操作は難しくないけどキャプチャをどうするかで難しくなるかも。
自分だったら難しい方法を選択するので。
0521デフォルトの名無しさん (アウアウイー Saf1-ptyI)垢版2017/06/08(木) 20:37:38.86ID:HogApBmCa
VBA初心者です
For Nextループのカウンタ変数について質問です

1) データの最終行を取得
  カウンタ変数の初期値 2、終了値をデータの最終行に設定(仮に11とします)
2) For Nextループで処理
3) ループ終了後、A11セルの値を変数に代入したい

  For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
処理
Next
★変数 = Cells(i, 1).Value

★For Nextループを抜けた直後のカウンタ変数iは、データの最終行(i=11)のはずなので、
そのままCellsプロパティに代入すればA11セルの値を取得できると考えたのですが、
ループ終了時にカウンタ変数iが終了値に+1されて12になってしまいます

「For Nextループ終了後のカウンタ変数iは終了値+1になる」
というのは仕様なのでしょうか?
0522デフォルトの名無しさん (ワッチョイ dd8b-Loth)垢版2017/06/08(木) 20:40:46.12ID:TyBSFeDZ0
仕様ではないけど現実はそうなる
0525デフォルトの名無しさん (ワッチョイ dd8b-Loth)垢版2017/06/08(木) 20:46:39.16ID:TyBSFeDZ0
ループ変数が指定の範囲の「間」ループを繰替えす、というのがForの仕様
0526デフォルトの名無しさん (アークセー Sx71-5Ux4)垢版2017/06/08(木) 20:53:59.27ID:ajpliBtkx
>>522
仕様だよ
For Nextはカウンタ変数の値が引数endを超過した(または引数endの値未満になった)と判断したときにループ終了になる
Step1でループさせた場合、カウンタ変数がend+1の値になったときに次の処理に移るので、ループを抜けた後のカウンタ変数は当然end+1になる
0527521 (アウアウイー Saf1-ptyI)垢版2017/06/08(木) 20:55:48.28ID:HogApBmCa
お答えありがとうございます

>>523,525-526さんがおっしゃってるようなことかなー、と思ったのですが
カウンタ変数は終了値を維持するという謎の思い込みがあったので
詳しい方々にきちんと教えていただけて有り難いです

>>524
ごり押しでi=i-1とするつもりでしたが断然スマートですね
というか、最終行取得のCells(Rows.Count, 1).End(xlUp).Rowも定型文のように覚えていたので、
きちんと構文の意味と動作を調べ直します
0529デフォルトの名無しさん (ワッチョイ 2311-OlK+)垢版2017/06/08(木) 21:43:39.15ID:ZLqPeRaK0
i = 1
Do While i <= 11
i = i + 1
Loop

みたいなもんだね。
あと言語によってはループ変数(i)がfor文の中だけのスコープで
for文を抜けたら破棄されたりするから、ループ変数はループの中だけで
使う癖をつけておいた方が無難。
0532デフォルトの名無しさん (ワッチョイ 2311-OlK+)垢版2017/06/08(木) 21:52:58.35ID:ZLqPeRaK0
>>517
こんな感じかな?
出来るかはわかんないけど。

IEインスタンスを生成する
IEを表示する
IEにURLを送る
IEの表示を待つ
IEのページにフォーカスする
sendkeysで一番下までスクロールする
sendkeysでPrintScreen
0.1秒位待つ
シートに貼り付けてトリミングする
IEのiframeにフォーカスする
sendkeysで一番下までスクロールする
sendkeysでPrintScreen
0.1秒位待つ
シートに貼り付けてトリミングする
以下ループ

キーマクロは俺も考えたけど、エクセルの操作が融通ききにくそう。
UWSCとか使えばいいかもしれないけど、結局VBAで書くのと大差なくなる気がする。
0533デフォルトの名無しさん (ワッチョイ 236f-xcYX)垢版2017/06/08(木) 22:01:50.62ID:/ZCsTOrv0
>>531
そうだけどさ、
自身のファイルを開いてないか?
開いたファイルにフィルタがかかってないか?
開こうとしているファイルは既に開いてないか?
xlsかcsvか?
って、色々チェックするの面倒じゃん。
0535デフォルトの名無しさん (ワッチョイ 7d3d-OlK+)垢版2017/06/08(木) 22:40:42.97ID:XdC3vCwF0
>>533
Function foo1(FilePath As String) As Workbook
For Each x In Workbooks
If x.FullName = FilePath Then Set foo1 = x: Exit For
Next
If foo1 Is Nothing Then Set foo1 = Workbooks.Open(FilePath)
End Function

Function foo2(WS As Workbook, SheetName As String) As Worksheet
For Each x In WS.Worksheets
If x.Name Like SheetName Then Set foo2 = x: Exit For
Next
If Not foo2 Is Nothing Then foo2.AutoFilterMode = False
End Function

こんなんだろ。大した手間でもないと思うんだけど。
俺はモジュール一個にワークブック、ワークシート、セルの各種チェック含めた操作関係まとめてたけど、
二十個くらいにしかならなかったぞ。
0536デフォルトの名無しさん (ワッチョイ dd8b-Kuea)垢版2017/06/08(木) 23:01:17.07ID:TyBSFeDZ0
>>535
まあそんなもんなら大した手間じゃないよな
それじゃ全然ダメだけど禿
0540デフォルトの名無しさん (ドコグロ MM13-UHXl)垢版2017/06/08(木) 23:41:02.10ID:q8X0hO01M
application.runをaccessから呼んだんだけど、
activateしないと失敗してしまう。

あと、マクロを保持してるブックを開いてマクロを実行すると処理中はブックを触れないが、accessから呼ぶと触れてしまう。

おかげで処理に失敗するので、何とかならないだろうか。
0541デフォルトの名無しさん (ワッチョイ 7d3d-OlK+)垢版2017/06/08(木) 23:47:27.35ID:XdC3vCwF0
>>539
コロンが改行の代わりになるから、コロンで区切りさえすればだいたいのものは通るぞ。

>>540
ExcelからAccessを触るようにしよう。
AccessからExcel触るのは管理がくっそ面倒だから(バージョンによるかもしれないが)
修飾付きのエクセルファイル出力がしたいとかでない限りやめた方がいい。

あとはExcelで直接DBを開いてSQLで制御するという地獄の選択肢もあるぞ。
0543デフォルトの名無しさん (ワッチョイ 5b23-cb7n)垢版2017/06/09(金) 04:45:48.88ID:e02rbmqe0
>>532
キーマクロもSendkeysもやめた方が良い。
Sendkeys等は宛先を指定しない。
VBA動作中でもアクティブウィンドウは操作で変更出来る。

IEのスクロールはページ表示後もDOMで出来る。

'1ページ高さ
lngPH=objIE.Document.DocumentElement.ClientHeight

'サイト高さ
lngBH=objIE.Document.Body.ScrollHeight

'1ページスクロール
objIE.DocumentParentWindow.ScrollTo 0, lngPH
0551デフォルトの名無しさん (ブーイモ MMa9-+CHm)垢版2017/06/09(金) 12:52:52.49ID:jWLsfRM+M
素人にVBAを教えるとき
いきなりRange()とするんじゃなく

Workbooks("うんたら")〜.RangeやCells
と、ちゃんと上位層の指定を書くんよ!

って最初から教えるべき?
それとも慣れてから教えるべき?
0555552 (ワッチョイ 3546-MFns)垢版2017/06/09(金) 14:43:26.16ID:DLo2rfbX0
>>553
アンカミスなのか 俺宛てなのか分らが・・・

シートモジュールの場合 省略していいよじゃなくて 自分自身を示すMeを使って
Me.Range(・・・・) と教えた方が良いと思うんだけど
0558デフォルトの名無しさん (JP 0H6b-m0Mh)垢版2017/06/09(金) 14:56:10.12ID:ehLmIvolH
>>555
> Cells Rangeの前には必ず上位層を指定する癖を 付けさせた方がいいと俺は思う
に対する俺の意見なんで、アンカーは間違ってないよ。

> Me.Range(・・・・) と教えた方が良いと思うんだけど
これにも反対。
MSが言うように、実引数のときのみ使う方がわかりやすい。
https://msdn.microsoft.com/ja-jp/library/office/gg251792(v=office.15).aspx
そうしないとMeだらけになる。
0559552 (ワッチョイ 3546-MFns)垢版2017/06/09(金) 15:00:45.88ID:DLo2rfbX0
>>558
あい分った
きみの主張を否定するつもりはないよ
でも俺の主張は >>552 で変えるつもりはない

これにて終了
0560デフォルトの名無しさん (ワッチョイ 7d3d-OlK+)垢版2017/06/09(金) 15:05:08.05ID:6C6XVn6H0
Range(Cells,Cells)の教え方が本題じゃないし、
かといってエラーの網羅なんか現実的じゃないしで、
本題に沿わない意見ってだけだからな。

そもそも同じ話してないから否定も何も話し合いにならないぞ。
0563デフォルトの名無しさん (ワッチョイ db6d-yT0o)垢版2017/06/09(金) 19:01:42.64ID:8JxPJdKv0
>>551
慣れてからは省略することが無くなった。そんなしょーもないとこで手を抜くとミスする確率が跳ね上がる
その分setは多用するけどね

set 集計シート = sheets("total")
集計シート.cells(1,1)
0564デフォルトの名無しさん (ワッチョイ dd8b-Loth)垢版2017/06/09(金) 21:53:45.20ID:yARYpVIR0
>>563
sheetsは省略しとるけどええんかこれで?
0566デフォルトの名無しさん (ワッチョイ db6d-RrxM)垢版2017/06/09(金) 22:01:02.57ID:8JxPJdKv0
>>564
自分の信じた道を進めばいい
もし君の不注意が多いなら、いつか俺と同じ表記になる
sheetを書こうが書くまいが絶対にミスしないなら、sheetはずっと書かないのだろう
それはそれでいいことだと思う
0567デフォルトの名無しさん (ワッチョイ dd8b-Loth)垢版2017/06/09(金) 22:04:36.45ID:yARYpVIR0
>>566
あいやーw伝わらんかなw
(デフォルトのワークブック.)sheets()
という表記になってるけどそれはええんか?
という意味やでw
0568デフォルトの名無しさん (ワッチョイ db6d-RrxM)垢版2017/06/09(金) 22:12:56.26ID:8JxPJdKv0
>>567
/(^o^)\
単独ブックならbook名は省略するかな
単独シートでマクロを使う場合は省略はしない。拡張した時に大抵必要になるし、そのパターンが多い

で、複数のブックを使う場合は必ずsetする
set 設定シート = thisworkbook.sheets("設定シート")
set 転記元ブック = workbooks.open("転記元ブック")
set 転記元シート = workbooks.open("転記元ブック").sheets("転記元シート")
set 転記先シート = workbooks.open("転記先ブック").sheets("転記先シート")

大体こんな感じでsetしてから使うかな
俺の癖で、設定はマクロファイルに入れるので、thisworkbookだけはそのまま使う事が多い
0569デフォルトの名無しさん (ワッチョイ 250d-kOr2)垢版2017/06/09(金) 22:15:20.46ID:dxrWbrOn0
worksheetsをsheetsと略してるのはどうなの?ってことだろ
0575デフォルトの名無しさん (ワッチョイ e511-qAom)垢版2017/06/10(土) 09:26:47.69ID:+HgNy1AT0
単独ブックで使うときだってブックは省略しない方がいいに決まってるだろ
ユーザーがどんな使い方するかなんてこっちで管理できないんだから
そもそも大した手間じゃねえし
0576551 (ブーイモ MMa9-+CHm)垢版2017/06/10(土) 10:06:36.80ID:0yj13WovM
やはり、最後にはちゃんと指定を教えることにはなりますよね。

とりあえず、プログラミングが簡単って感じで入れればいいかなと思って
最初から細かく行くと嫌になってしまわないか?というところで悩むところ、、、
でも、全部上位から書くって別に複雑では無いんよね、、、
0577デフォルトの名無しさん (アークセー Sx71-5Ux4)垢版2017/06/10(土) 10:17:23.18ID:WC+0mLwsx
RangeとかCellsとか使うコードを書かせることは、コード量が少なくなるから一見エクセルマクロやプログラミングの初学者向きに見えるが、後々オブジェクトモデル理解の妨げになる
0579551 (ブーイモ MMa9-+CHm)垢版2017/06/10(土) 10:55:41.58ID:0yj13WovM
コード量のために
withやsetを教えるとまた最初に覚えないといけないことが増えるし。
インデントも教えないといけなくて、、、

悩む、、
0584デフォルトの名無しさん (ワッチョイ 2391-mrwT)垢版2017/06/10(土) 12:18:14.91ID:FN/PeeFU0
既定クラスの間違いかも
0586デフォルトの名無しさん (オッペケ Sr71-Kuea)垢版2017/06/10(土) 12:22:40.92ID:7x8i6naHr
でもなあ…このスレで上から目線で偉そうに語ってるやつは例外なく>>581レベルなんやで…かなりマジに…
0588デフォルトの名無しさん (ワッチョイ 2391-mrwT)垢版2017/06/10(土) 12:41:29.80ID:FN/PeeFU0
>>587
既定は知ってる?

クラスは知ってる?
0590デフォルトの名無しさん (ワッチョイ 2391-mrwT)垢版2017/06/10(土) 13:13:15.38ID:FN/PeeFU0
>>589
既定のクラスのことだろ

既定のプログラム→既定プログラム
既定の値→既定値

日本語が解るなら既定とクラスから類推出来る
0594デフォルトの名無しさん (ワッチョイ 2391-mrwT)垢版2017/06/10(土) 14:10:07.47ID:FN/PeeFU0
>>592
私は581じゃないけどな
0595デフォルトの名無しさん (ワッチョイ 2391-mrwT)垢版2017/06/10(土) 14:11:14.32ID:FN/PeeFU0
>>593
既定のクラスを想定できる状況で使うんじゃね?
0597デフォルトの名無しさん (ワッチョイ 2391-mrwT)垢版2017/06/10(土) 14:21:16.85ID:FN/PeeFU0
>>592
赤のペン→赤ペン
青の信号→青信号
自動車の教習所→自動車教習所
机の上→机上

抽象化する知能があれば解るよな
0599デフォルトの名無しさん (ワッチョイ 2391-mrwT)垢版2017/06/10(土) 14:40:44.58ID:FN/PeeFU0
>>598
旗色が悪くなると誤魔化すんだなw
0603デフォルトの名無しさん (ワッチョイ 5b23-cb7n)垢版2017/06/10(土) 15:16:38.87ID:7onqK0zV0
>>596
Dim str1 As String
str1=Range("A1")
Debug.Print str1
は分かるよね。

Dim var1 As Varient
var1=Range("A1")
Debug.Print var1
も分かるでしょ。

じゃ、
Dim var2 As Varient
var2=Range("A1")
Debug.Print var2.Left
というのは有り得るかという話。

Setが無いと誤解が増えるよ。
0604デフォルトの名無しさん (ワッチョイ 7de4-yugn)垢版2017/06/10(土) 16:09:54.37ID:blUYIu4Y0
Setが必要な理由は、デフォルトプロパティへのアクセスなのかオブジェクト(参照)へのアクセスなのか区別できないから

ちなみに、VB6ではSetは必要だったが、VB.NETではSetは無くなった
その代わりに、デフォルトプロパティが廃止された
0605デフォルトの名無しさん (ワッチョイ 7de4-yugn)垢版2017/06/10(土) 16:14:05.66ID:blUYIu4Y0
>>595
俺にはVBAで既定のクラスと言う物を想定できる場面がないからきいてるんだがな
0607デフォルトの名無しさん (ワッチョイ e511-mrwT)垢版2017/06/10(土) 17:09:39.63ID:39iXd9D70
>>602
本当にアホなんだな
0609デフォルトの名無しさん (ワッチョイ a3b3-YGYj)垢版2017/06/10(土) 17:23:02.47ID:F7MRd5sO0
VBAしか知らない俺なんかからしたらSetなんか当たり前じゃんとしか思わん。

ところで、「既定のクラス」って何?
0612デフォルトの名無しさん (ワッチョイ e511-mrwT)垢版2017/06/10(土) 18:08:59.12ID:2cJYycRP0
>>610
https://ja.m.wikipedia.org/wiki/抽象化

これでも意味が理解できないなら救いようがないな
0615デフォルトの名無しさん (ワッチョイ 7d3d-OlK+)垢版2017/06/10(土) 19:18:57.08ID:kLEBGxy40
>>613
そういうのは単純にVBAについての習熟度が低いから混乱するってだけで慣れの問題だし、
なんならC言語処理系の代入演算子が代入した値を返すっていう動作の方が、
仕組み上は原始的で、シンタックス上は冗長的とも言えるしなぁ。
0616デフォルトの名無しさん (ワッチョイ dd8b-Loth)垢版2017/06/10(土) 19:32:35.73ID:cjBRJJZZ0
>>615←ほらまた新たな>>581が現われた、なんやねんこのスレ
0618デフォルトの名無しさん (ワッチョイ a3b3-YGYj)垢版2017/06/10(土) 20:04:44.43ID:F7MRd5sO0
ところで、規定クラスの説明まだかよ!とっとと書けよ
0619デフォルトの名無しさん (ワッチョイ 2391-mrwT)垢版2017/06/10(土) 20:06:51.92ID:FN/PeeFU0
>>617
話の筋を混同してる
話しにならない
0621デフォルトの名無しさん (ワッチョイ 7d3d-OlK+)垢版2017/06/10(土) 20:20:56.79ID:kLEBGxy40
そもそも大本の>>577が別におかしな事言ってないのに、
何故か勝手に混乱してる気がするんだけど。

「基底クラス(CellsやRangeに対するWorksheets等)」を省略すると、
あたかもRangeやCellsが何にも属さず単体で存在している様に見えてしまうので、
教育上良くないと言っているだけだろ?
0626デフォルトの名無しさん (ワッチョイ 7d3d-OlK+)垢版2017/06/10(土) 20:58:47.80ID:kLEBGxy40
>>624
ああ、そうか。
継承しているわけではなくてメンバーだから基底クラスではなく親クラスか。
俺も(たぶん)>>577と同じ勘違いしてたわ。

しかしなんでそんな喧嘩腰なんだ。何を主張したいのか推測して訂正すれば荒れずに済んだんじゃないか?
言葉を間違えているだけで主張がおかしいわけではないんだし。
0627デフォルトの名無しさん (ワッチョイ 7de4-yugn)垢版2017/06/10(土) 21:06:51.30ID:blUYIu4Y0
基底クラスに突っ込んでるやつはそんなにいないだろ
きっぱり間違ってるし
そのおおもとの意見そのものにも反対してるやつも見受けられない

それより既定クラスとかいう謎用語を出してつっこまれて
>抽象化する知能があれば解るよな
とかいう、本気でアホなのか誤魔化したかったのか分からんような返しをするから揉めてるんだよ
0628デフォルトの名無しさん (ワッチョイ 7d3d-OlK+)垢版2017/06/10(土) 21:11:46.59ID:kLEBGxy40
>>627
それこそなんで混乱するのか分からないんだが。
「既に定められたクラス」だろ? 正式な用語じゃないけど漢字見りゃだいたい何を指しているかは分かるだろ。

複数考えられるならどれなのかを聞けばいいだけだし。
0630デフォルトの名無しさん (ワッチョイ e511-qAom)垢版2017/06/10(土) 21:22:35.32ID:+HgNy1AT0
既定のクラス、だとしてもよくわからんな
まあともかく省略はさせるべきではないよ
まあオブジェクトについてしっかり説明できないといかんから難しいけどな
俺はよくわからん
0633デフォルトの名無しさん (ワッチョイ 7d3d-OlK+)垢版2017/06/10(土) 21:40:10.24ID:kLEBGxy40
>>629
俺は既定のプログラムとか、既定値とかって例からして、
MS側が作って公式に提供しているクラスを既定クラスと言っているもんだと思ったけど。

それだと大本の話と繋がらないから、
あるいはActiveSheetのターゲットがCellsを単体で実行する前に決まるから、
Cellsから見てActiveSheetが「既に定められて」省略された親クラスであるから既定クラスと言っているか。

いずれにしても何も考えずに「なにそれ」って言うよりも先に、自分から進んで例を出せば角も立たなかったと思うよ。
0634デフォルトの名無しさん (ワッチョイ dd8b-Loth)垢版2017/06/10(土) 21:42:04.24ID:cjBRJJZZ0
どーでもいいかねえ
無知の教えたがりってのは言わば無能な働き者と等価なんだよなあ
存在自体が害悪でしかないわ
0639デフォルトの名無しさん (ワッチョイ 23aa-D9zB)垢版2017/06/10(土) 23:40:28.71ID:HZN1Em+70
>>604
Dim a As ***

a = 他のオブジェクト

と書いたとき、*** がオブジェクト型もしくはVariant ならオブジェクトへの参照
そうでなければデフォルトプロパティへのアクセス

で十分区別できると思うけど?
0640デフォルトの名無しさん (ワッチョイ 7de4-yugn)垢版2017/06/10(土) 23:58:16.76ID:blUYIu4Y0
>>639
デフォルトプロパティは代入先(左辺)でも使えるんだぜ
aのデフォルトプロパティへの代入かaへの参照の代入か区別できんだろ
0641デフォルトの名無しさん (ワッチョイ 7dcf-f9xN)垢版2017/06/11(日) 00:19:36.88ID:/WpsuQpF0
ヒカル TV出演「年間5億は稼ぐ勢いですね」
https://www.youtube.com/watch?v=G7qL6ftpets
第1回案件王ランキング!YouTuberで1番稼いでるのは誰だ!
https://www.youtube.com/watch?v=asF2wQ2xhjY&;t=61s
ユーチューバーの儲けのカラクリを徹底検証!
https://www.youtube.com/watch?v=FUSb4erJSXE&;t=504s
【給料公開】チャンネル登録者4万人突破記念!YouTuberの月収公開!
https://www.youtube.com/watch?v=Y7DAQ0RKilM&;t=326s
誰も言わないなら俺がYouTuberのギャラ相場を教えます
https://www.youtube.com/watch?v=E4q-vaQh2EQ&;t=118s
YouTuberになりたいのは馬鹿じゃない!YouTuberになる方法
https://www.youtube.com/watch?v=Fr0WXXZRMSQ

最高月収5000万円だとさ。年収じゃなくて「月収」な
おまえらもyoutubeに動画投稿したほうがいい
やろうと思えばスマホがあればできるぞ
最低2年はやらないとここまではいかないだろうけど才能とアイデアと
企画力と継続力があればが大儲けできる可能性がなくもない
まだまだ他の職種に比べれば競争率は低いからオススメ
顔出したくないならラファエルみたいに仮面つければいい
0646デフォルトの名無しさん (ワッチョイ 23aa-D9zB)垢版2017/06/11(日) 07:45:58.35ID:P5Uv9Xu70
>>645

>>603の真ん中の例だって?
> Dim var1 As Varient
> var1=Range("A1")
> Debug.Print var1

Printは代入文じゃないからここでの議論には関係ない。ここはデフォルトプロパティ(Value)でいい。
意味論的になにも破綻しないと思う。
0655デフォルトの名無しさん (ワッチョイ dd8b-Loth)垢版2017/06/11(日) 11:08:37.85ID:ED3vqoUB0
キミらはvbaの仕様策定委員にでもなったつもりなのかね?
既に過去のものになりつつあるマクロ言語の
0657デフォルトの名無しさん (ワッチョイ dd8b-Loth)垢版2017/06/11(日) 11:15:00.15ID:ED3vqoUB0
>>656
いつから議論をしていると勘違いしていた?
0660デフォルトの名無しさん (ワッチョイ 5b23-cb7n)垢版2017/06/11(日) 11:22:02.96ID:eCVTs9al0
>>659
だからSetを無くしたVBAでは今は動作してない最後の例も認めることになるだろ。

真ん中の例はデフォルトプロパティ、最後の例はオブジェクトだ。
区別つかないんじゃね?って話なんだが。
0671デフォルトの名無しさん (ワッチョイ db6d-yT0o)垢版2017/06/11(日) 12:08:58.69ID:46pYjw9V0
そもそもなんでデフォルトプロパティなんて面白い物を作ったんだ
入門の敷居をできるだけ下げるために、.value・.valeu2・text、などを考えなくていいようにしたんだろうか
0672デフォルトの名無しさん (ワッチョイ 5b23-cb7n)垢版2017/06/11(日) 12:12:28.05ID:eCVTs9al0
>>670
デバックでステップ実行してみろ。
1行1行解釈実行されるのが基本。
後の文により前の文の解釈が変わる言語なんて滅茶苦茶だぞ。
構文エラーはプログラム全体を評価するまで決まらないことになる。
0673デフォルトの名無しさん (ワッチョイ 5b23-cb7n)垢版2017/06/11(日) 12:18:03.12ID:eCVTs9al0
>>668
君の仕様では式の両辺の型で挙動が決まらない。
var1=Range("A1")ではオブジェクト
var1=Range("A1")+1ではデフォルトプロパティとなるけど、今んとこ辻褄は合っているようにも見えるから、う〜んと考えている。
0676デフォルトの名無しさん (ワッチョイ 5b23-cb7n)垢版2017/06/11(日) 13:30:16.95ID:eCVTs9al0
>>675
日本語が変なんじゃね?

>代入時点で区別する必要はなくて Print 時点で判断すればいいだけって話

代入時点で区別する必要ないということはどういうこと?
代入時点で確定してるなら区別もできてる筈だし。
0681デフォルトの名無しさん (ワッチョイ 2311-W6lL)垢版2017/06/11(日) 14:01:42.55ID:q49UmmFG0
>>676-677
代入時点で Variant ならオブジェクトの参照を入れときゃいいだけだろ

>> var1=Range("A1")
> の時点では var1 はセルA1への参照の代入として
ってはっきり書いてあるんだから人の日本語にいちゃもんつける前に自分の理解力を省みろよ
0682デフォルトの名無しさん (ワッチョイ db6d-yT0o)垢版2017/06/11(日) 14:17:20.73ID:46pYjw9V0
>>678
確かにrangeだとややこしいな、新しいclassを作ってみよう
fooClassとする
fooClassのデフォルトメンバはfoo。fooのclassは自身と同じfooClass
class fooClass{
'この書き方は適当
default public Property foo as fooClass;
}

これだとfooで何が返ってくるか不定
Dim foo as fooClass
foo = New fooClass();
0688デフォルトの名無しさん (ドコグロ MM13-W6lL)垢版2017/06/11(日) 16:40:50.47ID:TSTIJwyzM
>>686
> 代入時点で区別はついてる。
だから区別なんてしない
両方ともに参照を入れとくだけ
って書いてあるんだが...
どうやったらそんなアホな考え方になるのか不思議だよ
まあ引っ込みつかなくなってるんだろうな w
0690デフォルトの名無しさん (ワッチョイ 2311-W6lL)垢版2017/06/11(日) 17:19:36.49ID:q49UmmFG0
>>689
別にそのケースなら参照を返すようにしてディフォルトプロパティは明示する(つまりディフォルトプロパティの意味がなくなる)ようにすればいいだけ
特殊なケースで使えないからと言って全部ダメって言う話ではないでしょ
0691デフォルトの名無しさん (アウアウカー Sae1-cb7n)垢版2017/06/11(日) 17:25:11.30ID:CaL9CXkoa
>>688
引っ込みも何も、今だに何言ってるのか分からん。
とレスしようとしたけど今分かった。


>代入時点で区別する必要はなくて Print 時点で判断すればいいだけ



「代入時点では参照が代入され、Print時点でデフォルトプロパティが返される」といいたいのだとしたら上の文章の日本語が悪いよ。
0692デフォルトの名無しさん (ワッチョイ 2311-W6lL)垢版2017/06/11(日) 17:36:51.51ID:q49UmmFG0
>>691
> 「代入時点では参照が代入され、Print時点でデフォルトプロパティが返される」といいたいのだとしたら上の文章の日本語が悪いよ。

ほとんどそのまま書いてあるだろ
これはさすがに恥ずかしすぎる w

>>648
>> var1=Range("A1")
> の時点では var1 はセルA1への参照の代入として

>> Debug.Print var1
> の時点でディフォルトプロパティを取得して表示すればいいだけ
0693デフォルトの名無しさん (アウアウカー Sae1-cb7n)垢版2017/06/11(日) 17:37:06.07ID:CaL9CXkoa
fooClassとする
fooClassのデフォルトメンバはfoo。fooのclassは自身と別のhogeClass
class fooClass{
'この書き方は適当
default public Property foo as hogeClass;
}

現在の仕様なら
Dim var1 As Varient
Set var1=New fooClass()
Debug.Print Typename(var1)
'->fooClass

Dim var1 As Varient
var1=New fooClass()
Debug.Print Typename(var1)
'->hogeClass

Set無しの仕様なら
Dim var1 As Varient
var1=New fooClass()
Debug.Print Typename(var1)
->?

こういう問題?
0696デフォルトの名無しさん (ワッチョイ db6d-RrxM)垢版2017/06/11(日) 17:48:52.10ID:46pYjw9V0
話はずれるが、「エクセルvaが特殊」は事実
20年以上前から生き残っている、大衆に使われ続けているスクリプト言語なんてエクセルvbaだけ
次点でjsだろう

デフォルトプロパティだろうがなんだろうが、実装すればデファクトスタンダードになる
ある意味、王様である
好きなようにあすれば良いんじゃないかな
0701デフォルトの名無しさん (ワッチョイ 2311-W6lL)垢版2017/06/11(日) 18:39:15.05ID:q49UmmFG0
>>699
そもそも >>663 の日本語もおかしくないだろ
前提をいくつかはしょってるのは話の流れで省略してもわかるはずって言う考えで書いてる
それでも横入りで絡んでくるアホがいるから念のために
> >>648 を理解できてないなら絡んでくるなよ
とまで書いてある
ここまで書いてあって理解できない奴の面倒までは見れんよ w
0703デフォルトの名無しさん (ワッチョイ 2311-W6lL)垢版2017/06/11(日) 18:42:38.69ID:q49UmmFG0
>>700
> 特殊かどうかは言ってないね
頭大丈夫?
> 特殊ではない
ってはっきり書いてますけど? w
> 存在すると整合性が保てなくなると言っている
お前さんの考える整合性とやらがどんなもんか知らんけど >>690 でなんの問題もないけどね
0708デフォルトの名無しさん (アウアウカー Sae1-cb7n)垢版2017/06/11(日) 19:05:21.58ID:UNIZBcCUa
>>701
>代入時点で区別する必要はなくて
ってのは>>639の"十分区別できると思うけど"の区別のことだよな。

だったら「代入時点で区別できる」とか、俺の>>603の"できない"を受けるなら「代入時点で区別できないということはない」とすべきだ。
"必要"とか何が必要?
という話になる。

>Print 時点で判断すればいい
も、何言ってるのか分かりにくい。
0712デフォルトの名無しさん (ワッチョイ db6d-RrxM)垢版2017/06/11(日) 19:21:24.90ID:46pYjw9V0
>709
いやもう言語仕様を考える時って最初によっぽど不具合がなければそれでいいよねってこと
vbaは非常に変則液だけど、まぁエクセル・アクセルのためなら仕方ないんじゃないの
0713デフォルトの名無しさん (ワッチョイ 2311-W6lL)垢版2017/06/11(日) 19:27:31.75ID:q49UmmFG0
>>708
> "必要"とか何が必要?
> という話になる。
はあ?
「区別する」必要がないって書いてあるだろ

>> Print 時点で判断すればいい
> も、何言ってるのか分かりにくい。
お前の理解力がないだけ
何度も書くけど理解できないなら >>648 見ろって書いてあるのになぜか見ずに文句だけは一人前 w
0714デフォルトの名無しさん (アウアウカー Sae1-cb7n)垢版2017/06/11(日) 19:42:43.65ID:UNIZBcCUa
>>713
いや、だから
>「区別する」必要がない
が変なんだって。
代入時点で区別はついてるのになんで必要とかの話になるの?と受けとられるだろ。

> Print 時点で判断すればいい
も、誰が何を判断するんだ?と受け取られる。
0715デフォルトの名無しさん (ワッチョイ 23aa-D9zB)垢版2017/06/11(日) 19:42:52.34ID:P5Uv9Xu70
型を意識しようよ

型を意識するというのは型によって構文(式の形)を変えることじゃないよ。
式の形は同じでも型によって意味が違うとかコンパイルエラーになったりすると認識することだ。

デフォルトプロパティが適用されるべきかどうかは等式の左右の型を見れば基本わかる。
わからないような式は曖昧なんだからコンパイルエラーにすべきだ。
0716デフォルトの名無しさん (アウアウカー Sae1-cb7n)垢版2017/06/11(日) 19:49:48.15ID:UNIZBcCUa
>>715
う〜ん。
むしろSet使ってクラスとリテラルを意識したいけどなあ。

あと、真ん中はやっぱりデフォルトプロパティの代入の方がしっくり来ると思うんだ。
だからこそ、あっさりデフォルトプロパティの代入を捨て去ると思えなかったから>>645書いたんだぜ。
0718デフォルトの名無しさん (ワッチョイ 2311-W6lL)垢版2017/06/11(日) 20:12:03.18ID:q49UmmFG0
>>714
> 代入時点で区別はついてる
それはお前が勝手に言ってるだけの話だろ
俺は初めから必要ないって書いてるから
> なんで必要とかの話になるの?と受けとられるだろ。
なんて受けとるアホはいないと思うぞ、お前以外は w

>> Print 時点で判断すればいい
> も、誰が何を判断するんだ?と受け取られる。
マジでオブジェクト指向の勉強しなよ...
そんなのを疑問に思うなんて相当レベル低いから
0721デフォルトの名無しさん (アウアウカー Sae1-cb7n)垢版2017/06/11(日) 20:25:38.17ID:UNIZBcCUa
>>718
>それはお前が勝手に言ってるだけの話だろ

俺が勝手に言ってるとかの話じゃなくて、代入時点で参照であると区別がついてるのが実態だろ。

>「区別」する必要ない
>Print 時点で判断すればいい

を省略せずにきちんと書いてみなよ。
0723デフォルトの名無しさん (ワッチョイ 2311-W6lL)垢版2017/06/11(日) 21:00:46.39ID:q49UmmFG0
>>721
> 代入時点で参照であると区別がついてるのが実態だろ。
お前はまず「区別」の意味を調べてから出直してこい
A か B かの区別がつくと言う言い方はあるけど A と区別がつくとは言わん

> を省略せずにきちんと書いてみなよ。
>>648 で十分だろ
それで不十分と言うならほぼ同じこと書いてる >>691 も不十分と言うことだ w
0727デフォルトの名無しさん (アウアウカー Sae1-cb7n)垢版2017/06/11(日) 21:46:23.06ID:UNIZBcCUa
>>723
お前な、自分は省略してるのに俺の省略は認めないのか?

代入時点で参照であるとデフォルトプロパティとは区別がついてるのが実態だろ。

>>691は省略しても分かるだろ。
>>663は省略されてると分からんのだよ。
というより省略しなかった時に正しい日本語になるように思えないからやってみろと言ったんだよ。
0728デフォルトの名無しさん (ワッチョイ e511-Z3xB)垢版2017/06/11(日) 21:54:15.52ID:7YVvLMef0
以下のエクセルファイルについてなんですが
https://kouseikyoku.mhlw.go.jp/tohoku/gyomu/gyomu/hoken_kikan/documents/zen_sitei_ika_h2905.zip


エクセルを開いたあと何もせず閉じようとすると
必ず保存するかどうかを聞かれてしまうのですが
なぜでしょうか?
また、そのまま「保存する」を選択すると
ファイルサイズが半分くらい減ってしまうのも気になります

些細なことで申し訳ありませんが
どなたか原因わかる方教えてください。
0729デフォルトの名無しさん (ワッチョイ db6d-RrxM)垢版2017/06/11(日) 21:56:59.58ID:46pYjw9V0
>728
凄まじい個人情報でてる気もするけど、まぁいいか
・保存するかどうかを聞かれ
2010では聞かれない

揮発性関数とか混じってるのかもな

バージョンを教えてほしい
0731デフォルトの名無しさん (ワッチョイ 2311-W6lL)垢版2017/06/11(日) 22:10:07.67ID:q49UmmFG0
>>727
> 代入時点で参照であるとデフォルトプロパティとは区別がついてるのが実態だろ。
だからそれはお前が勝手に言ってる話
そもそも区別がつくとか言ってるが勝手につく訳じゃなくて処理系が何らかの判断をしてるんだからそんな判断は「必要ない」って書く方が適切だろ

> >>663は省略されてると分からんのだよ。
話の流れ見てたらわかるし、わからん奴のためにアンカーまで書いてるだろ
何回ループするんだよ
0734デフォルトの名無しさん (ワッチョイ 5b23-cb7n)垢版2017/06/12(月) 00:17:03.07ID:y5ZQ52Yx0
>>731
やっぱり日本語の問題なんだ。
今をもってしても分かりにくい。

俺が「区別がつく」とか「区別がついてる」というのは「自動的に区別がついてしまっている」ということだ。
「区別がつく」自体に"自動的に"というニュアンスを含んでいる。
だから"勝手に"などという言葉は繋がらない。
"自動的に"というニュアンスを含んでいない場合、例えば意思をもって違いを定義する場合は「区別をつける」となるだろう。

一方、君の言う「判断する」というのは厳密に言えば「意思をもって判断する」ということだ。
「判断する」自体に"自動的ではない"というニュアンスを含んでいる。
君は処理系に対して擬人化を行っているから意思をもってではなく、自動的なニュアンスを含んでいるつもりだろうが、そうであるなら主語である"処理系"を省いてしまってはわかりにくくなるだろう。

これまでの経緯を無視した上で余計な補完をして

処理系が何らかの判断をしてるんだからそんな"俺の"判断は「必要ない」

としても日本語としておかしな文とはならないということは、「処理系が何らかの判断をしてるんだからそんな判断は必要ない」という文章はそれ単体では上記の受け取り方をされても仕方の無い文章だということだ。

今だに分からんのは>>663の判断するのは誰かって話。
処理系なら判断すれば"いい"などとはならないと思うし。
Print時点で決まっているんだから判断とかいう話にはならない筈だろ。
0740デフォルトの名無しさん (ワッチョイ e511-yTT2)垢版2017/06/12(月) 19:32:27.05ID:5L3xq22d0
%%%MC+7,8%%%

}

000-"M","LES","TUV=0.13325&/0\7&%&",

001-"23","1","0","2","7.14",[\b%7/1444*%812%2.3%7&6111\end\\]{%3%12%\br
0742デフォルトの名無しさん (ワッチョイ eb4c-irun)垢版2017/06/13(火) 10:48:41.12ID:UX2HAupn0
マクロは記録をいじるぐらいの初心者です

AとBファイル開く
Aのマクロ作動ボタンを押す
BでAで作ったマクロが動き、データが整形される
Aファイルが閉じる

というのを作れるものなら作りたいけど、可能ですか?
Bファイルは毎日新しいのが来ます
出来るとしたら検索ワードが悪いらしく、見つけられないので
なんという動作なのか教えてください
0745デフォルトの名無しさん (ワッチョイ eb4c-irun)垢版2017/06/13(火) 12:08:11.62ID:UX2HAupn0
>>743
Aは自分のパソコンに作ったもので、Bは毎日他所からきます。
Bを開いてそこからAで作ったマクロを動かすしかダメですか?

>>743
記録ではムリなので、見本となるのがあればいじれないかなと思って聞いてみました
0746デフォルトの名無しさん (ワッチョイ 2306-OlK+)垢版2017/06/13(火) 12:14:45.05ID:rPkjB82P0
>>742
Aのブックにマクロを記述
 ファイル名が固定でないなら GetOpenFilenameでファイルを選択
 ごちゃごちゃなんか知らんけど開いたブックBに対して処理をする
 Aを閉じる(ついでにExcelそのものも終了させる)

だろ?
0747デフォルトの名無しさん (ワッチョイ eb4c-irun)垢版2017/06/13(火) 12:31:59.08ID:UX2HAupn0
>>746
そうです

マクロのボタンの作り方とか調べても、同じファイル内で
動くものしか出てこないので、ボタン一押しで動かせないのかと
そういう話です
0748デフォルトの名無しさん (アウアウウー Sa99-pGgJ)垢版2017/06/13(火) 12:32:20.96ID:5pkXRrDKa
星くん vbaでググって
第2章読めば似たようなことが書いてあるよ
0749デフォルトの名無しさん (ワッチョイ 5b23-3GzE)垢版2017/06/13(火) 13:52:35.48ID:TodKlzHt0
>>742
普通はアドインにする。
Aファイルは開く必要が無い。
アドインならExcel開いたらAファイルも開いてる。
ブックは非表示だから開いてるようには見えないけどメニューにボタンを追加すればマクロは動作する。
0752デフォルトの名無しさん (ワッチョイ eb4c-irun)垢版2017/06/13(火) 14:52:38.21ID:UX2HAupn0
アドインで出来きました
すごい

星君も読みつつあったのですが、とりあえず
アドインが上手くいったのでこれで進めます
相談に乗ってくださった方々、ありがとうございました
0753デフォルトの名無しさん (ワッチョイ 7d3d-OlK+)垢版2017/06/13(火) 15:04:10.26ID:y6bvTk4c0
>>742
Sub foo()
Dim WB As Workbook

With Application.FileDialog(msoFileDialogFilePicker)
If .Show Then src = .SelectedItems(1)
End With

If IsEmpty(src) Then Exit Sub

Set WB = Workbooks.Open(src, 0, 1)

Process WB

If Not WB Is Nothing Then WB.Close: Set WB = Nothing
End Sub

Sub Process(WB As Workbook)
'行いたい処理
End Sub

fooをボタンに登録すれば好きなファイルを指定して開くことが出来る。
ファイルBの処理はProcess内に書く。
0756デフォルトの名無しさん (ワッチョイ a3b3-YGYj)垢版2017/06/13(火) 18:18:21.99ID:Te/HyupM0
事務職向けマクロなんだから冗長でも何でも良いと思うけどね。オブジェクト指向バカとか
業務妨害以外の何者でもないと思うしw
0762デフォルトの名無しさん (ワッチョイ a3b3-YGYj)垢版2017/06/13(火) 19:18:04.89ID:Te/HyupM0
>>761
ははは、オブジェ馬鹿降臨w
0764デフォルトの名無しさん (ワッチョイ 0539-vKbL)垢版2017/06/14(水) 16:29:22.88ID:Gr+r/r4M0
初心者です

1 処理A
2 処理B
3 処理C
  :
  :

こういう流れのVBAで、処理Aと処理Bそれぞれからスタートさせたいときは、どうやるのが一般的ですか。

sub A
 処理 A
sub B
 処理 B
end sub
end sub

これではだめですよね。
0766デフォルトの名無しさん (アウアウカー Sae1-cb7n)垢版2017/06/14(水) 17:02:48.98ID:bVPmX3VEa
処理というのがどのレベルなのか分からない。

Sub A()
処理A
B
End Sub

'処理B(Bプロシージャ自体が処理B)
Sub B()
'処理Bの内容
End Sub

とする場合もあれば、
全部の処理をそれぞれ別のプロシージャとして作り、メインとなるプロシージャでそれぞれをよび出す場合もある。
この場合はAからよび出すメインプロシージャやBからよび出すメインプロシージャを作ることになる。
0767デフォルトの名無しさん (ドコグロ MM43-W6lL)垢版2017/06/14(水) 18:56:34.83ID:e2eXjlywM
>>764
1 処理A
2 処理B
3 処理C
  :
  :
のパターンと
1 処理B
2 処理C
  :
  :
のパターンがあるってこと?
それなら >>765 みたいにするか
Sub ABC_()
 処理A
 Call BC_
End Sub
Sub BC_
 処理B
 処理C
  :
  :
End Sub
ってやるとか
0768デフォルトの名無しさん (ワッチョイ 0539-vKbL)垢版2017/06/14(水) 22:27:07.82ID:Gr+r/r4M0
ありがとうございました

自分なりに考えたのは、どこかのセルにフラグを置いといて、
処理中に分岐させるというものでした

767さんがわかりやすいですが、>>765のやり方を勉強してみます
0769デフォルトの名無しさん (ワッチョイ ba52-2WTa)垢版2017/06/16(金) 11:40:46.40ID:uw1+X6cJ0
拡張For文とも言われる
For Each (オブジェクト変数) in (そのオブジェクトのコレクション)
の構文で、ときどきその(オブジェクト変数)の処理によってFor Each文でまわすコレクションのオブジェクトの順番や数が変わってしまい困っています。

例えば
For Each iCell in Activesheet.UsedRange
である条件のiCellのときにその直下に新しい行を追加したり
For Each iFile in TargetFolder.Files
でiFileのファイル名を変えようとした場合に(FileSystemObjectを使ってる)
発生しました。

こんなときは処理結果が意図したものと違ってぐちゃぐちゃになって困っています。
最初にFor Eachの行をマクロが通過したときに処理すべきオブジェクトは固定されないんですか?
0770デフォルトの名無しさん (ワッチョイ 87e4-IXCZ)垢版2017/06/16(金) 12:07:15.60ID:Qtgdul+t0
For Eachで列挙される順番は、実装依存で保障はされてないはずだけど
普通は同じコレクションに対しては同じ順で帰ってくるよ

For Eachで列挙中にそのコレクションに対して変更した場合は、その列挙はどうなるか分からん
なので要素を増減させるような処理はFor Eachの中でやっちゃ駄目
0772デフォルトの名無しさん (ワッチョイ ba52-2WTa)垢版2017/06/16(金) 12:30:40.42ID:uw1+X6cJ0
>>770-771
そんなことはアホなオレでもわかっとりますわ。

その上でそれを回避するような定番な方法や定石的手順の方法を知りたいのですが。
0774デフォルトの名無しさん (ワッチョイ ba52-2WTa)垢版2017/06/16(金) 12:39:06.98ID:uw1+X6cJ0
>>773
しかしそれでも記憶させておくものは参照のメモリアドレスには変わりないと思うから
対処によってこの参照先が変わってしまい同じような意図しないぐちゃぐちゃな結果になったりしませんかね?

あとわからないのがFileSystemObjectでファイル名を変えただけで対象が変わってしまうのが不思議。
これは別に要素の増減でもなんでもないのに。
0776デフォルトの名無しさん (ワッチョイ 87e4-IXCZ)垢版2017/06/16(金) 13:14:04.57ID:Qtgdul+t0
>>772
>その上でそれを回避するような定番な方法や定石的手順の方法を知りたいのですが。
For Eachを使わない
単純に減るだけならFor Nextで逆順に回すのが定番

あとはループ用に別の列挙(コピー)を用意するか

>>774
FSOがどんな管理になってるかしらんが、名前の変更ってことは
古い名前の削除+新しい名前の追加 だと考えれば不思議はない
0777デフォルトの名無しさん (アウアウエー Saf2-CZIA)垢版2017/06/16(金) 13:24:05.09ID:LikhkzB3a
そもそもActivesheet.UsedRangeなんだからシートに処理加えたら要素の数が変わるのは当たり前だろ
一回変数に入れたら困るわけ?
多分fsoのfilesも変数に入れたら固定されるんじゃねえの
0778デフォルトの名無しさん (ワッチョイ 9aec-VgqF)垢版2017/06/16(金) 15:36:15.71ID:OvmXQ03X0
ユーザーフォームのボタンをクリックしたとき、ある条件を満たせばボタンの背景色を変えてます。
CommandButton1.BackColor = "&HFF00FF"

ボタンの色を元に(ボタンのデフォルトの色に)戻すのに↓だとエラー(型が一致しません)。どうすればいいんでしょうか?
CommandButton1.BackColor = "&H8000000F&"
0780デフォルトの名無しさん (ワッチョイ 9aec-VgqF)垢版2017/06/16(金) 16:34:33.26ID:OvmXQ03X0
>>779
""は不要でしたか。たぶんどこかのサイトにそのような記述があったんだと思います。
↓でエラーなく色変わりますが""なくてもよかったのか。
CommandButton1.BackColor = "&HFF00FF"

debug.printの結果はstringでした。そりゃそうか。
0783デフォルトの名無しさん (ブーイモ MMaf-/42z)垢版2017/06/16(金) 21:04:08.81ID:8NWwObqWM
>>774
VBAのforeachは扱いづらいよね。
for each file in folder.files なんかは一度別の配列なりcollectionなりに入れちゃった方がindexが動かないから無難。
range.deleteやrange.insertは一度のループで処理しようとせずに、別にループを回すか、index降順でループするのが無難。
0785デフォルトの名無しさん (ワッチョイ 9aec-VgqF)垢版2017/06/16(金) 21:13:11.64ID:OvmXQ03X0
>>778です。何度もすいません。
>>778の質問はダブルクオーテーションマークを削除して解決しましたが、
なぜ、CommandButton1.BackColor = "&HFF00FF"、はエラーが出ずにボタン背景色が変更され、
CommandButton1.BackColor = "&H8000000F&"、これだとエラーが出るのか教えて頂けないでしょうか?
0786デフォルトの名無しさん (ワッチョイ ba91-XHCC)垢版2017/06/16(金) 21:14:43.63ID:82cvwDvY0
>>785
エラーが出る方は桁数が多いからじゃね?
0788デフォルトの名無しさん (ワッチョイ 966d-6Cyg)垢版2017/06/16(金) 21:20:26.65ID:QcYuYCTF0
>>774
VBA独特のnewの特殊な仕様や、
setする度に生成される謎参照
vbaのforeach中に要素数を増減させるのはやめた方がいい
俺も絶対にしない。単純に間違うし、なんで間違うかもわからんから

Sub foo()
Set a = Cells(1, 1)
Set b = Cells(1, 1)
Debug.Print (a Is b) 'falseになる。参照しているアドレスも違う
End Sub
0792デフォルトの名無しさん (ワッチョイ ba91-XHCC)垢版2017/06/16(金) 21:25:32.82ID:82cvwDvY0
>>789
色の取りうる範囲を超えた値だからかな
0793デフォルトの名無しさん (ブーイモ MMaf-/42z)垢版2017/06/16(金) 21:29:07.51ID:8NWwObqWM
>>785
colorはlong型なので、右辺はlong型にキャストされている。
そんで、右辺=2147483663は、そもそもlong型の上限を超えているのでエラーになる。
まあその前に、色は256の3乗=16777216パターンなので、そこではねられてるかもしれない。
0795デフォルトの名無しさん (ワッチョイ ba91-XHCC)垢版2017/06/16(金) 21:43:40.45ID:82cvwDvY0
>>794
typename(clng("&H8000000F"))
なんじゃね
0796デフォルトの名無しさん (アウアウカー Sa33-gMwg)垢版2017/06/16(金) 21:49:00.55ID:Wj1oysWPa
>>795
それじゃLongになっちまうだろ。
"&H8000000F&"が型変換でどう解釈されたかを調べてるんだぞ。

わざわざ最後に&付けてLong指定してるのにどうしてDoubleになるのかと言えば&付いててもStringなんだから&は考慮されないと予想。
0798デフォルトの名無しさん (ワッチョイ ba91-XHCC)垢版2017/06/16(金) 21:51:25.40ID:82cvwDvY0
そもそもエラーって何のエラーかわかってないんだが
何エラー?
0800デフォルトの名無しさん (ワッチョイ ba91-XHCC)垢版2017/06/16(金) 21:55:42.55ID:82cvwDvY0
>>799
エラーメッセージにそう出るの?
エラーメッセージを解釈した結果?
0804デフォルトの名無しさん (ワッチョイ ba91-XHCC)垢版2017/06/16(金) 22:02:42.94ID:82cvwDvY0
>>802
それだと本当はDouble型かLong型かわからなくね?
暗黙の型変換でlong型になってるかもしれない

colorプロパティはlong型みたいだし
0806デフォルトの名無しさん (ワッチョイ 87e4-IXCZ)垢版2017/06/17(土) 03:41:22.96ID:5p5fyGrH0
暗黙の変換やClng関数は、型指定文字があるとエラーになる
それだけ
ちなみにValは、型指定文字を無視する

試したけど
暗黙の変換でLongに収まらないときはオーバーフロー
型指定文字が入ってるときは型が一致しません
エラーの種類違うし
0808デフォルトの名無しさん (ワッチョイ ba91-XHCC)垢版2017/06/17(土) 05:54:42.06ID:Zt5CuQ5d0
>>807
"で囲ってない時はシステムカラー定数と認識されるけど
"で囲ってる時は型変換されてlong値になって値の範囲が不正になるのかな
0809デフォルトの名無しさん (ワッチョイ e346-KEev)垢版2017/06/17(土) 06:26:45.69ID:sBDEiRXs0
>>808
"&H8000000F"は16進表現として認識てきて 型変換してるけど

"&H8000000F&"は 最後に& があるから 文字列のままで 型変換してないんじゃないの?
なぜか 皆さん型指定文字と みなしてる みたいだけど おいらにゃ それが理解できない
0810809 (ワッチョイ e346-KEev)垢版2017/06/17(土) 06:34:33.98ID:sBDEiRXs0
ちょっと補足
&H8000000F&
と書いたときの最後の& は型指定文字なのはいいんだけど
"&H8000000F&"
と書いたときの最後の& は型指定文字 ではないんじゃね? とおいらは思ってるって事
0811デフォルトの名無しさん (ワッチョイ ba91-XHCC)垢版2017/06/17(土) 06:40:18.44ID:Zt5CuQ5d0
>>809
最後の&があると文字列のままで型が一致しないエラー
"を外すと最後の&が削除されてlong型になるね
0813デフォルトの名無しさん (ワッチョイ ba91-XHCC)垢版2017/06/17(土) 06:46:10.05ID:Zt5CuQ5d0
最後の&が無いと"で囲ってても型変換されてエラーにならない

最後の&がエラーの原因だな
0818デフォルトの名無しさん (ワッチョイ ba91-XHCC)垢版2017/06/17(土) 22:12:46.54ID:Zt5CuQ5d0
>>816
同じ型が一致しませんのエラーになる
0821デフォルトの名無しさん (ササクッテロリ Spab-XHCC)垢版2017/06/18(日) 16:32:07.44ID:rdefnVQJp
>>817
a. 2行2列を要素数4の配列にできる
b. 1行4列を要素数4の配列にできる
c. 4行1列を要素数4の配列にできる

どれが出来てどれが出来ないの?
0825デフォルトの名無しさん (ワッチョイ 873d-VgqF)垢版2017/06/19(月) 12:09:46.78ID:ABDk/3ER0
WorksheetFunctionとかの一部の関数は処理時間見る限り全部VBAで書かれているか、あるいは同じレベルで実装されているみたい。
なんなら初めに条件を絞れる分、元から入っている関数よりも自分で書いた方が速い事もある。
0826デフォルトの名無しさん (ワッチョイ 5623-VLdI)垢版2017/06/19(月) 13:25:12.20ID:VrV9No710
すいません。
エクセル初心者です。
エクセルでハンゲームのオセロの棋譜を取得するツールを作ろうと
思ったのですがよくわかりません。
誰か作り方を教えてください。
0829デフォルトの名無しさん (ワッチョイ b78b-1MEk)垢版2017/06/19(月) 19:04:20.53ID:/dj/ZZBt0
ダウンロードするだけとちゃうんか?
0833デフォルトの名無しさん (ワッチョイ b78b-1MEk)垢版2017/06/19(月) 19:45:57.34ID:/dj/ZZBt0
え?ハンゲームやろ?なんで急にインスタが出てくるんや?
0838デフォルトの名無しさん (ワッチョイ b78b-1MEk)垢版2017/06/19(月) 20:31:11.32ID:/dj/ZZBt0
>>835
いや普通に考えて使わんやろ?
それとも俺が知らんだけでハンゲームの棋譜がインスタにアップされてたりすんのやろか?
0841デフォルトの名無しさん (ワッチョイ b78b-1MEk)垢版2017/06/19(月) 20:44:19.79ID:/dj/ZZBt0
>>839
まずハンゲームをダウンロードしたらええんとちゃうか?
0844デフォルトの名無しさん (ワッチョイ b78b-VPaF)垢版2017/06/19(月) 20:57:49.05ID:/dj/ZZBt0
>>843
ああそうなんかw知らんかったw
ハンゲームがあるんやったら次はおもむろに
wiresharkとかfiddlerを立ち上げて通信の傍受やろな普通は
0846デフォルトの名無しさん (ワッチョイ 5623-VLdI)垢版2017/06/19(月) 21:54:46.68ID:VrV9No710
エクセルに詳しい方、回答お願いします。
0850デフォルトの名無しさん (ワッチョイ c76f-2WTa)垢版2017/06/19(月) 22:14:02.70ID:NPLs9gl60
そもそもハンゲームのオセロがどういうものかわからないし
たぶんUWSCあたりで盤面を画像処理で認識して記録していくのが一番手っ取り早いと思う
これなら調べながら誰でもできる
0852デフォルトの名無しさん (ワッチョイ 5623-VLdI)垢版2017/06/19(月) 22:19:01.40ID:VrV9No710
>>850
ハンゲームオセロの棋譜取得ツールは既に作って公開されてる方がいます。
画像認識で高速で打つオセロの棋譜なんかも取得できるものなのでしょうか?
公開されてるツールはVBAではありませんが、何か画像認識とは異なるようです。
0855デフォルトの名無しさん (ワッチョイ 5623-VLdI)垢版2017/06/19(月) 22:28:44.54ID:VrV9No710
>>853
10年かかっても勉強する根気はあります
VBAを始めるにしても具体的に何の勉強が必要なのか
そのヒントが欲しいです

>>854
ログを読み込むというのは別の人が作ったツールを使うってことでしょうか?
自分で作りたいのです。
0856デフォルトの名無しさん (ワッチョイ db0d-VLdI)垢版2017/06/19(月) 22:29:24.47ID:POTmza9M0
釣りならvipでやれ
0858デフォルトの名無しさん (ワッチョイ 3a06-VgqF)垢版2017/06/19(月) 22:34:02.52ID:UFkjuB9W0
>>855
プログラミングの初歩から勉強しないといけないわけで。千里の道も一歩からなんで
とりあえずはVBAの入門書でも見繕ってそれを勉強していけよ。やりたいことはそういう基礎が
出来てからの話なんで

後、あまり続けけるとここの住人から怒られるよ(もう既に怒り始めてるけどw)
0862デフォルトの名無しさん (ワッチョイ 5623-VLdI)垢版2017/06/19(月) 22:55:14.29ID:VrV9No710
ピンポイントで載ってないのは知ってますよ。
これが最後の質問なのでどなたかマジレスお願いします。
オセロの棋譜を取得するには入門書の次はどの書籍で何を勉強すればいいですか?
0863デフォルトの名無しさん (ワッチョイ b78b-VPaF)垢版2017/06/19(月) 22:57:30.40ID:/dj/ZZBt0
まだやっとったんか
もう少しマジメにこたえてやろうか?
0868デフォルトの名無しさん (ワッチョイ 966d-6QMs)垢版2017/06/19(月) 23:55:37.37ID:qZE6both0
>>866
できる
マクロの記録見ながらやればok

とりあえずテキトーに作ったのは以下
セルをテキトーに範囲選択して以下マクロを実行すると、全部の罫線を調べて何か色々やる


Sub Macro1()
For Each cell In Selection
For Each line_item In cell.Borders
If line_item.linestyle = "" Then 'ここで判別
'テキトーに処理
End If
Next
Next
End Sub
0875デフォルトの名無しさん (ワッチョイ 5623-VLdI)垢版2017/06/20(火) 09:31:22.77ID:Yjttzp/I0
>>873
残念。
野球素人にも正しいフォームとトレーニング方法を教えれば
150キロは無理でも120キロの球なら投げられる。
僕はこのスレで質問しても120キロの投げ方のヒントすら得られなかったよ。
120キロの投げ方でも教えてくれればオマエラを尊敬したのにね。

>>874
ハンゲはフラッシュゲームもあるけど
僕が質問してるのはFlash版じゃない方ですよ。
0878デフォルトの名無しさん (アウアウエー Saf2-CZIA)垢版2017/06/20(火) 10:35:20.51ID:fiT3zbOfa
>>875
すまん例えを間違えたわ
サッカー選手にそれを聞いてるようなもんだわ
なぜならハンゲームの仕組みは専門外だから
まずは棋譜がどのような仕組みで配布されているのか、いないのか
ダウンロード出来るのか出来ないのか
アプリはどんな形で配布されているものなのか
質問するならそのぐらいは情報としてないとね
ハンゲームのことなんて知らないからさ
0879デフォルトの名無しさん (ワッチョイ 3a06-VgqF)垢版2017/06/20(火) 11:41:22.61ID:M2VUAsfa0
>野球素人にも正しいフォームとトレーニング方法を教えれば
>150キロは無理でも120キロの球なら投げられる。

その素人が練習したらだろ?お前、練習すらしねーじゃん。練習した上で抜かせヴォケ
0882デフォルトの名無しさん (オッペケ Srab-VPaF)垢版2017/06/20(火) 12:17:43.67ID:PW/vl+jdr
いやお前はどっちにしろ答えられんから正解かもしれんけどw
0885デフォルトの名無しさん (アウアウウー Sa77-lwmD)垢版2017/06/20(火) 12:48:41.53ID:R6esiUjXa
オセロの棋譜もとれるんです
そう!vbaならね
0887(ワッチョイ 87cf-pW+h)垢版2017/06/20(火) 15:02:50.92ID:Om3g1OA10
ユーチューバーは収入の仕組みが違う?!どっちが儲かるか?
http://youtube-youtuber.com/360.html

従来型のユーチューバーは、広告収入をメインの収入源としています
1.動画にのせる広告(動画広告+画像広告)からの報酬や
2.スポンサー収入(企業からの依頼を受けて商品を紹介)

海外のユーチューバーの傾向として、広告収入ではなく、自分のビジネスを
メインにすることによって広告収入を遥かに超える収入を叩き出しています。
例えば、beauty guru(美のカリスマ)と謳われる、ユーチューバーのミシェル・ファンは
広告収入は1800万得ていますが・・他方で美容化粧品会社Ipsyを立ち上げて、
年収1億ドル(約110億円)を売り上げました。
彼女は「メイクのチュートリアル動画」を投稿していますが、動画の中で自分の会社の商品を
使っているんです。
そしてその中で使った商品を、online shopで買える仕組みにしています。
他人の商品を紹介して、そこから「おこぼれ」を貰うより、自分の商品を売った方が
遥かに儲かりますからね。
リンジー・スターリングは踊りながら、バイオリンを演奏する、アーティストですが・・・
彼女の場合も、あくまでも動画を投稿するのは、自分のビジネスである、
ツアーチケットやアルバムの販売のためなのです
0889デフォルトの名無しさん (ワッチョイ b78b-1MEk)垢版2017/06/20(火) 19:12:39.08ID:pPHD0ZXr0
お前らが丁度盛り上がれる質問てめちゃくちゃ幅が狭いよなw
それよりちょっとでも上か下にずれたら質問者総叩きっていうw
0891デフォルトの名無しさん (ワッチョイ b78b-1MEk)垢版2017/06/20(火) 19:26:00.76ID:pPHD0ZXr0
>>890
盛り上がれる質問の幅が狭い

そもそも一瞬で終わる質問は問題になってない

わかるかな?
でお前にはどう見えてるの?言うてみ?w
0895デフォルトの名無しさん (ワッチョイ 873d-VgqF)垢版2017/06/20(火) 22:07:50.66ID:epuuDDzl0
実績のある個人を追跡しやすい媒体に比べたら不特定多数が参加できる媒体は敷居が低い分ノイズが乗りやすいからね。
どんなふうに検索しても見つからない時、糸口になればいいなくらいの気持ちで付き合っていくべきでしょ。
0896デフォルトの名無しさん (ワッチョイ fb11-pW+h)垢版2017/06/21(水) 00:33:07.21ID:uohPApVY0
>>892
Excelのユーザー操作ということでいいんだよなこのスレなんだから

「貼り付けた」イベントは無理じゃね?俺の知ってる範囲だとだけど

「貼り付けようとしている」イベントは一応取れそうな
https://msdn.microsoft.com/ja-jp/library/cc377048.aspx

ショートカットキーまで考えるとWin32APIまで要りそうな気がするな

もっとストレートにやりたいこと書けばもうちょい回答出そうだけど
0905デフォルトの名無しさん (オッペケ Srab-VPaF)垢版2017/06/21(水) 12:18:28.53ID:GOe8ggdQr
>>901
お前が回答する義理がないのはもちろんだが
回答できないからといって質問者を妨害する行為はいただけないな
0906デフォルトの名無しさん (アウアウウー Sa77-lwmD)垢版2017/06/21(水) 12:24:13.39ID:UVc+8Jvua
でもあの質問者はvbaってよく知らないけどなんでも出来るって聞きましたってレベルだったからな
答えわかる奴がいても伝えられなかっただろうな
0909デフォルトの名無しさん (ササクッテロリ Spab-XHCC)垢版2017/06/21(水) 12:39:14.77ID:OZ7YKCT4p
>>900
プロなら代金を取る
0910デフォルトの名無しさん (ワッチョイ 5623-VLdI)垢版2017/06/21(水) 12:41:10.08ID:39L7Vonk0
回答するしないは自由だが
回答できない雑魚はROMってろ

無能な癖に
「俺様は優秀。なんでも回答できる。でも、お前には回答してやらない」
こんなハッタリをかますアホが居るからスレが荒れるだけやろ?

雑魚は黙ってROM
これが2CHのルールやで
0911デフォルトの名無しさん (ササクッテロリ Spab-XHCC)垢版2017/06/21(水) 12:43:11.08ID:OZ7YKCT4p
>>910
そんなルールあったか?
あったとしても守らないといけないのか?
0914デフォルトの名無しさん (ワッチョイ 5623-VLdI)垢版2017/06/21(水) 13:08:10.40ID:39L7Vonk0
>>911
「俺様は優秀、でも回答してやらない」アピールをすることに何の意味があるの?
お前は法律がなくなれば明日にでも人を殺すのか?
>>910に書くルールがなくてもマナーとしてはアタリマエのことだろ?
0929デフォルトの名無しさん (ワッチョイ 1773-sPwl)垢版2017/06/21(水) 16:58:18.58ID:/9zCdexY0
暴れてるのはやっぱり棋譜君かw
もう来ないっていう奴に限って粘着するんだよな

自分にできないことをタダで教えてもらおうとしてるのに、変に態度がデカイから叩かれてるって状況なのは理解できてんのか?
0931デフォルトの名無しさん (スプッッ Sd7a-KVjL)垢版2017/06/21(水) 19:44:11.93ID:XUERnIj3d
>>928

Private Sub Class_Initialize()
というメソッドがコンストラクタに相当するが引数を取れない。
各メンバを任意の値で初期化することがここではできない。
別なユーティリティー関数(createなんちゃら系)を用意するとかすればいいけど面倒だしかなり制約がある。
0932デフォルトの名無しさん (ワッチョイ b78b-1MEk)垢版2017/06/21(水) 20:12:26.52ID:Nm67/2LE0
>>929,930
お前ら変に態度がデカイな
というか分不相応に背伸びしてるなw
0934デフォルトの名無しさん (ワッチョイ b78b-1MEk)垢版2017/06/21(水) 20:37:08.53ID:Nm67/2LE0
>>933
お前は素直に悔しさがにじみ出ててある意味好ましいなw
せやけどワイは棋譜君ちゃうでwどこに目つけとんのやボケカスw
0938デフォルトの名無しさん (スプッッ Sd7a-KVjL)垢版2017/06/21(水) 21:46:01.44ID:XUERnIj3d
>>935
Private Sub Class_Initialize(ByVal a As...)

というふうに任意の引数を取れたなら、コンスタラクタ内で
member_a = a
とメンバを初期化できるけど、残念ながらそうはいかない。
Setterメソッドを作るとかProperty Setするとかでもいいんだけど、
最初にコンストラクタで設定した後はconsantにしたい、などといったありがちな要件の実装がたるい。
0941デフォルトの名無しさん (ワッチョイ 5623-gMwg)垢版2017/06/21(水) 23:28:59.00ID:4v2NPsWb0
>>925
多分出来ると思うけどさ、ハンゲってインストールしないとダメだろ。
正直、めんどくさい。

あと、どう記録するかがちょっと気になる。
自動で記録するとなると処理スピード的にどうなんだろという疑問も有るな。
0943デフォルトの名無しさん (ワッチョイ 3a6f-VLdI)垢版2017/06/21(水) 23:37:43.98ID:s8ISniiy0
コンボボックスクリックのイベントで、2回動作するのは何で?
一応、実行フラグを作って、
1回毎にフラグ反転させれば回避できるけど、
2回動くのがデフォって、仕様としておかしくない?
何か重要な意味があったりする?
大事なことなので2回動きましたとか?
0944デフォルトの名無しさん (ワッチョイ bf23-t/Wh)垢版2017/06/22(木) 01:51:38.27ID:ZjBitWzo0
昔、ステータスバーの文字列を取得するコード書いた時と同じようにすれば多分いける。
最初UIAutomationやWindowHandleで組んだんだけど取得出来ない。
どうやらBitblt系で描画してるだけみたいだったんでGDIplusで画像から取得した。
文字は数字だけで位置も決まってたからできたわけで、どんな場合でもといわれると大変だろうな。

オセロの場合は64マスのそれぞれの中心の1点の色を取得するだけで判断できそうだ。
0951デフォルトの名無しさん (オッペケ Sr0b-PFZU)垢版2017/06/22(木) 12:19:24.38ID:GH5F8R2nr
やっぱり悔しいの?自分には出来ない話題になると?
0955デフォルトの名無しさん (アウアウウー Sa9b-3vDw)垢版2017/06/22(木) 12:53:45.84ID:eYzO7IsEa
「vba初心者の棋譜くんがハンゲから棋譜を取得するスレ」でスレたてすれば勉強してて分からないとこを質問できるし良いアイデアももらえるかもしれないよ
棋譜くんがんばれ
0956デフォルトの名無しさん (ワッチョイ bf23-+Ny0)垢版2017/06/22(木) 12:55:39.70ID:ZjBitWzo0
>>945
そうじゃなくてインストールしたくないという話。
コードも面倒くさくなりそうだってのも含む。

>>948
多分、数年はかかるんじゃない?
そんなレベルなら。
20年前の俺もExplorerみたいなの作りたいとか難易度も知らずに無謀なこと考えてたけど。
0960デフォルトの名無しさん (ワッチョイ bf23-q+YL)垢版2017/06/22(木) 16:05:33.54ID:mLhBpt5P0
手始めにVBAでアルゴリズムの基本を学んだ後に別の言語へ移ろうと考えてます。
情報量も多いし、敷居も低そうなので。。。
JavaScriptとどちらにしようか悩んだけどExcelが使えるのでより直ぐ形になると考えたんだけど
選択を間違えてるかな?
0966デフォルトの名無しさん (ワッチョイ b78b-IH/U)垢版2017/06/22(木) 19:41:10.91ID:hFeKbvvW0
>>957
そもそもお前には他人にものを教えられる程の知識も技能もねえじゃんw
根本からお前が間違ってるわw
0967デフォルトの名無しさん (ワッチョイ d7f2-8SzA)垢版2017/06/22(木) 20:31:25.01ID:8ePuyD7a0
ホントそれ
質問に難癖つけてるだけにしか見えないよね

>>878
> なぜならハンゲームの仕組みは専門外だから
だったら専門のスレを紹介するなり、それが面倒なら最初から黙ってろ

結局、こんなことを要求しても
> まずは棋譜がどのような仕組みで配布されているのか、いないのか
> ダウンロード出来るのか出来ないのか
> アプリはどんな形で配布されているものなのか
> 質問するならそのぐらいは情報としてないとね
何のアドバイスもできず、さらに質問者を煽るしかできないなら
最初から要求するなってはなしだよね
0970デフォルトの名無しさん (ワッチョイ 970d-q+YL)垢版2017/06/22(木) 22:11:50.57ID:NSWmrM5K0
勘違いしてるといけないから一応言っとくとVBAはなんでもできるわけじゃないぞMSオフィスで出来ることしか出来ない
オフィス高いしどうしてもオフィスを使わないといけないという理由がなければRubyとかpythonやった方がいい
0971デフォルトの名無しさん (ワッチョイ bf23-q+YL)垢版2017/06/22(木) 22:24:57.50ID:mLhBpt5P0
>MSオフィスで出来ることしか出来ない
そうなのか。。。
棋譜取得とか無理なの?

人工知能にも興味あるのでPythonってよく聞く名前だなあ。
ありがとう。ちょっとググってみる。
0973デフォルトの名無しさん (ワッチョイ b78b-PFZU)垢版2017/06/22(木) 22:43:25.90ID:hFeKbvvW0
どれもエクセルで十分
0974デフォルトの名無しさん (ワッチョイ bf6d-eRVN)垢版2017/06/22(木) 22:45:06.66ID:9Bs/appw0
>>972
色々やりたいならjava覚えておくといい。一番潰しが効く
pythonもいい。アメリカでは児童の教育にはpythonが使われている。ただ色々と癖が強い
Rubyは楽だけどなんだかんだで使えない器用貧乏
0979デフォルトの名無しさん (ワッチョイ 373d-NIhq)垢版2017/06/23(金) 04:09:20.38ID:xFxOWaa40
基本的に参照設定の要らない範囲だけに絞ってしまえばいいのでは。
機能を名指して来た場合は個別に答えるものとすれば、質問スレとしては用が足りる気がするけど。
0986デフォルトの名無しさん (ワッチョイ 379b-Lbv0)垢版2017/06/24(土) 05:18:31.04ID:W4HWrwdy0
シェイプのコントロールはどこのスレですか?ここで良いですか?
>>984
シェイプの半透明化とかシェイプの長方形をセルにピッタリフィットで
並べて重ねまくることは出来ないんですか?
0987デフォルトの名無しさん (ワッチョイ 9f91-ANCk)垢版2017/06/24(土) 06:08:35.69ID:BWeLxVdN0
>>984
セルにレイヤーをつけてどう使う?
表計算ソフトなんだけど
0989デフォルトの名無しさん (ワッチョイ 9f91-ANCk)垢版2017/06/24(土) 09:28:59.82ID:BWeLxVdN0
>>988
別に一つのシートでレイヤーにする必要は無い
0992デフォルトの名無しさん (ササクッテロロ Sp0b-ANCk)垢版2017/06/24(土) 13:46:22.84ID:dUf5y4w4p
>>991
そんな要件があるならExcel vbaを使わないのが正解じゃね?
0993991 (ワッチョイ 379b-Lbv0)垢版2017/06/24(土) 14:15:50.13ID:W4HWrwdy0
>>992
おっしゃる通りです。データベースとのやり取りやCSVファイル保存とか、
GUIを一から書かずにセルの挙動を見える化したかっただけの興味本位です。
10011001垢版Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 40日 18時間 16分 42秒
10021002垢版Over 1000Thread
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


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

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

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

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

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