Excel VBA 質問スレ Part48 [無断転載禁止]©2ch.net

レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん 転載ダメ©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
2017/05/16(火) 10:48:12.64ID:Gxqu5M/Va
前スレでScreenUpdating=Falseしない派いる?ってのがあったけど、コード書いてる時は基本しない。
あれで速くなったっていうのは基本コードが悪いだろ。
2017/05/16(火) 11:05:20.21ID:J7MMoyEGd
>>2
ScreebUpdating =False : 警告Off
ScreebUpdating =True : 警告On
2017/05/16(火) 11:06:03.77ID:J7MMoyEGd
連続typo失礼
2017/05/16(火) 11:08:01.35ID:l+zZTb7Y0
ScreenUpdatingの有無で速度が左右されるのは、セルに値を入れる等して描画に影響する操作をする場合だけだから、
結果を吐き出す際に一度だけしかセルにアクセスしないとかなら要らないね。
6デフォルトの名無しさん (オッペケ Sr27-fj9k)
垢版 |
2017/05/16(火) 12:41:08.19ID:6Q26Nvh7r
>>5
表示の更新してんなら要るわ

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

>>9
量なのかなあ。
そりゃいい加減にコード書くことも有るけど、そういう場合で遅く感じたらちゃんとしたコードに変更するだけだろ。
どうしても描画が何回か走ってチラつきを防止するために最後に追加するぐらいだな。
2017/05/16(火) 14:27:59.56ID:J7MMoyEGd
>>10
ちゃんとしたコードとは?

コードの問題ではなくてデータの問題だ、というのが俺の主張
2017/05/16(火) 14:53:18.62ID:Ilchk1CoH
不毛
2017/05/16(火) 14:57:07.86ID:l+zZTb7Y0
>>9
ワークシートから値を取り込んだり、値をワークシートに書き出したりっていう処理は、
Rangeを使えば一括して行うことが出来るので、データ量はそこまで問題にならない。

どちらかというと罫線、色、数式みたいな一括処理しづらいものが問題で、
ScreenUpdating次第で処理に大きく差が出る。
こういったものは保守も面倒なので手作業で代替出来ないかとか考えるといいかもね。
2017/05/16(火) 15:11:19.05ID:tw+4NZDm0
オートフィルタかけた後のデータの、特定の1列だけを配列に格納したいのですが、何かいい方法はないでしょうか
2017/05/16(火) 16:37:32.48ID:l+zZTb7Y0
>>14
SpecialCells(xlCellTypeVisible)で可視状態にあるセルだけを取り出せる。
2017/05/16(火) 19:14:29.63ID:iIGA/64l0
クラスモジュールって使いますか?
大抵のことはfornext、foreachで済んでしまうのですが、vbaでクラスを使ったほうが便利なのでしょうか
2017/05/16(火) 19:31:35.09ID:qhacRso4p
>>16
必要かどうかってことなら必要ない
でも大がかりなの作るなら使って整理したほうがやりやすいんじゃないのかな

for文と比較する感覚がいまいち伝わってないから的はずれならごめんなさい
関数とか配列とかと比較するならわからなくもないんだけれど
2017/05/16(火) 19:45:30.76ID:iIGA/64l0
>>17
私が使うのは事務処理で、表を作ったり、リネームする時にマクロを使う程度なのです
クラスはあんまり必要無さそうですね、ありがとうございました
19デフォルトの名無しさん (ワッチョイ 53c7-00IQ)
垢版 |
2017/05/16(火) 19:48:36.06ID:YL1OfOAE0
>>10
悪いけど素人しか使わんわそんな恥ずかしい言い方w
2017/05/16(火) 19:53:23.03ID:Y/+V2TLHM
言い方はどーだっていいんだよ
伝われば
2017/05/16(火) 20:28:49.31ID:rEbfD8DUa
>>13
うん、罫線とかはしようが無いね。
でも罫線もマクロ記録のままの酷いコード書く人もいる。

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

>>18
クラスを使う場面ってのは慣れてれば感覚的にぴったりくる。
オブジェクト指向的にぴったりくる場合。
でも、他のメンバーが慣れて無いと却って良くない場合もあるね。
2017/05/16(火) 21:04:28.77ID:ORpNRMoi0
Dim スコーン As New Class

↑このスコーン自体を引数に使うことは出来ますか?
スコーン.Name =
2017/05/16(火) 21:05:07.95ID:ORpNRMoi0
スコーン.Name = "スコーン" とか書きたんくないですんけど。
2017/05/16(火) 21:12:00.81ID:qp8pXuJpx
>>22
出来るよ。
そうしたい目的はなに?
2017/05/16(火) 21:38:51.33ID:ORpNRMoi0
>>24
>>23だと、スコーンの名前はスコーンとか言ってるようなものじゃないですか。
何か変なので、どうにかしたほうがいいなと。
2017/05/16(火) 21:44:47.11ID:FLRqiZ6lx
>>25
引数にしたいことと
nameに代入することの関係性が分からない。
まぁ宣言をお菓子にしとけばいいんでない。
2017/05/16(火) 21:48:13.03ID:iIGA/64l0
PHPならget_class()なんてそのまんまなものがあるんだけどね
vbaには無いっぽいな
28デフォルトの名無しさん (ワッチョイ 53c7-00IQ)
垢版 |
2017/05/16(火) 21:54:30.99ID:YL1OfOAE0
>>25
あーあ、やっちゃったね
質問するにもマナーってものがあるんだよ
スレを荒ららない為にもこの際覚えておけ

「目的を聞くやつにレスを返してはいけない」
2017/05/16(火) 21:59:56.08ID:wnIq1TKW0
そんな法則は聞かないな
2017/05/16(火) 22:19:15.46ID:FLRqiZ6lx
>>28
いつかそのマナー広まるといいね!
影でこっそり応援してぬわ。
2017/05/16(火) 22:30:24.74ID:H5+sVhHM0
なんで目的を聞くやつにレスを返してはいけないの?
質問の意図を汲もうとしているかもよ?
2017/05/16(火) 22:33:38.25ID:FLRqiZ6lx
>>31
その聞き方だと件の>>28は返事出来ないよ。
理由は察してあげて
2017/05/16(火) 22:35:06.66ID:iIGA/64l0
>>26
クラス名で分岐させたいパターンがある
ゲームプログラムだとclass名で敵か味方か判別する、というのは見たことがあるな
せめて継承でもできればその辺共通化できるんだけど、そこはvba。めんどくさい

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

>>30
してなくて草
34デフォルトの名無しさん (ワッチョイ 53c7-00IQ)
垢版 |
2017/05/16(火) 22:44:02.80ID:YL1OfOAE0
>>31
質問の意図が分からん奴は質問に答えられない
目的を聞いても質問者の意図を引きだす事はできない
簡単な事だ
2017/05/16(火) 22:49:11.64ID:FLRqiZ6lx
>>34
なるほど。
素晴らしいね。
がんばれー
2017/05/17(水) 00:01:38.90ID:qRwApybV0
>>33
制御の向きが逆だよなあ
2017/05/17(水) 00:23:20.25ID:sfPoWe8nx
TypeName関数で自作クラス名って取り出せないんだっけ?
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
2017/05/17(水) 00:39:06.93ID:dws00LGS0
クラス内部で つかうんなら
これじゃいかんのか?
Debug.Print TypeName(Me)
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
2017/05/17(水) 00:51:22.92ID:sfPoWe8nx
解決やな
2017/05/17(水) 17:27:48.02ID:mwqvXh9q0
>>39
>>40
ありがとうございます。
それで名前があるものに名前を付けなくて済みます。
2017/05/17(水) 17:53:56.84ID:GJ9WSlKVH
>>40
そのコード、
Sub foo()
  Set bar = New Class1
  Debug.Print TypeName(bar)
End Sub
と同じじゃないの?

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

もしよければ、年齢と性別、職業を教えてほしい。どんな人か本気で気になる
2017/05/18(木) 06:43:55.44ID:PgOUGGac0
24歳

マイクロソフトジャパン勤務
2017/05/18(木) 08:36:51.83ID:7Fv0UmYNx
>>46
悪くないよ。
なんつーかコウウン
48デフォルトの名無しさん (ワッチョイ 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

このコードの意味教えてくださいー
2017/05/18(木) 15:34:33.70ID:ZtOQ2Qac0
まずは実行してみたらどうだ
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
2017/05/18(木) 19:06:48.56ID:hKe3x/Mw0
>>48
ugokanai kedo

A1セルの中身が数字に変わった場合、
B1:B9をB2:B10にコピーペースト
B1をA1の内容にする
2017/05/18(木) 19:21:07.71ID:f5T5khCgr
>>51
A1を選択
が抜けてる
2017/05/18(木) 22:27:14.87ID:EwzTzSyyM
マウスポインターの移動量かマウスのスクロール量を検知って出来ますか?
2017/05/18(木) 23:31:41.56ID:fbyfCIXE0
form上の話ならMouseMoveイベント使えばなんとかなるんじゃね?
form以外でならwin32api(GetCursorPosとか)を駆使すれば
2017/05/19(金) 12:10:12.11ID:Hh88K1uA0
最新版のExcelで、ファイルを開いた直後にだけコンパイルエラーが出るようになったから絶対更新しないほうがいいぞ

エラーが出るのは
Function ProcName(cel As Range) As Double
とか、パラメータにAs Rangeを持つところみたいで
一応As Objectに変えてしまえば通るけど、治すの大変だ・・・
2017/05/19(金) 12:26:18.38ID:Hh88K1uA0
関連してそうな情報を発見
https://blogs.msdn.microsoft.com/office_client_development_support_blog/2017/05/17/
とうとう本気で.xls形式を殺しに来たか
2017/05/19(金) 12:27:06.53ID:OupscBB+0
>>55
なんていうか、まあ頑張れ
2017/05/19(金) 12:49:41.54ID:P+QgsC3b0
俺のInsider slow バージョン 1704(ビルド8067.2115)では
>>55の情報だけを たよりにやって みたけど 問題ない (xls,xlsm 両方)
とだけ言っておく
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とするか、モジュールを切り分けるしかない。
2017/05/19(金) 13:33:37.37ID:P+QgsC3b0
>>59
なるほどね
少なくとも 俺の環境下では >>59の条件で xls のみだな その現象が発生するのは
xlsmは 問題ない

つかもう excel2003までのexcel形式(xls)使うのやめたら? と思うのだけど?
2017/05/19(金) 13:52:53.66ID:Hh88K1uA0
>>60
全くもって仰る通り。

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

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

ツッコミどころ満載やで。
2017/05/19(金) 13:56:26.64ID:P+QgsC3b0
いい 切り替えの機会じゃん
xlsは もうまともに 使えません(キリッ


・・・・と言えたらいいねw
2017/05/19(金) 22:44:50.72ID:ELP3hVnQ0
変数宣言を一番上に書くと、
確認する時、スクロールで戻るのが面倒なんですが、
Excelなのに、上の方の画面を固定出来るという発想は無かったのでしょうか。
Excelなのに。
2017/05/19(金) 23:07:15.86ID:HsQ+il8a0
そんなことより行番号表示かと。
2017/05/19(金) 23:10:43.79ID:1s7BLiGf0
グローバルで別のモジュールに書いてウィンドウを並べるとか
2017/05/19(金) 23:27:00.50ID:vYjNISl1x
Excel VBAしかやったことない人が何だか勘違いしてるようだがそもそもVBEはExcelの機能ではないぞ
2017/05/19(金) 23:34:30.47ID:vnM/uOfn0
>>63
> 変数宣言を一番上に書くと、
必要な所に書けばいいやん
って言うかスクロールが面倒なほどでかい関数とか書くなよ
2017/05/19(金) 23:42:30.09ID:FnbaGtrQ0
>>63
確認する時って
変数の何を確認するの?
2017/05/19(金) 23:49:13.07ID:ELP3hVnQ0
>>68
poって何の変数だっけ?
みたいな。
2017/05/19(金) 23:52:43.48ID:FnbaGtrQ0
>>69
何の変数ってのがよく分からんのだけど、
Dim Example As Long: Example = 1
みたいに宣言と代入を上の方でしてるって話?
ローカルウインドウとかその他機能でなんとかならんの?
2017/05/19(金) 23:54:11.19ID:1s7BLiGf0
中身のわからない変数名を付けるからそんなアホな事をせにゃならんようになるんだ
似たような変数名が多すぎてややこしいならfunctionに分ける等、予め余計な手間が発生しないようにするんだ
2017/05/19(金) 23:59:18.39ID:dZkjjWfrx
>>63
書かなきゃよい
2017/05/20(土) 00:21:30.52ID:foz/Iffu0
ネタだよな
コードウィンドウ分割するだけじゃねえのって思っちゃったけど
http://i.imgur.com/jnQLIFk.png
2017/05/20(土) 08:57:37.77ID:k9L+DwNA0
>>63は赤の他人が書いたクソ長いコードを解析させられている気の毒な人だ
と好意的に解釈しておこう
2017/05/20(土) 09:20:18.91ID:5sPtJFYn0
hoge param1:=xxx, param2:=yyy みたいな書き方に慣れないんですが
dummy = hoge(xxx, yyy) とかではダメな理由ってあるんでしょうか?
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
なんてすると読みづらいだけになる

と言ってる俺も保存の時ぐらいにしか使わないけどね
2017/05/20(土) 09:53:58.83ID:5sPtJFYn0
ありがとうございます
事務仕事でExcelVBAをいじる必要があったんだけど
大昔の非構造化BASICやFORTRAN、Cなどの印象しかないので最近の言語は抽象的すぎて分かりにくい
2017/05/20(土) 10:13:55.47ID:I6OViHCS0
>>75
その名前じゃあまりメリットないけど引数の名前をちゃんとつけてたら分かりやすい
あと引数がたくさんある場合に後ろの方の引数を指定したい時とか
Workbook.Open FileName:="test.xlsx", AddToMru:=True
2017/05/20(土) 10:29:20.36ID:0mLljkpvd
>>77
大昔のCって関数と最初の { の間に変数宣言するようなやつ?
2017/05/20(土) 10:44:25.75ID:5sPtJFYn0
>>79
そんなやつ、カーニハンとリッチーの第1版、白いカバーの表紙のやつ
2017/05/20(土) 10:50:27.63ID:5sPtJFYn0
変数を宣言しただけでは領域が確保されず
値を代入しただけでプログラムが暴走するんだけど原因に思い当たらず3日間悩んだ挙句に挫折した
2017/05/20(土) 10:54:07.27ID:TX7Bd0Me0
>>81
上で見たけど、vbaは内部的にかなり変な挙動をしている
newの時点ではメモリ領域は確保されず、初めてプロパティやメソッドにアクセスした段階でメモリ領域が確保される

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

そのコードを教えてくれれば問題解決できると思う
というか後学のためにも見てみたい
2017/05/20(土) 10:54:21.25ID:TX7Bd0Me0
newじゃないや、setか
2017/05/20(土) 11:19:48.33ID:nyexelOB0
日本語も変数として使えるからわかりやすい名前つければいい
2017/05/20(土) 11:57:41.20ID:w41RCx9Yp
日本語は好き嫌い分かれるからなあ
俺は日本語が見易いけどさ
2017/05/20(土) 11:59:34.10ID:TX7Bd0Me0
google翻訳しながら英語変数使うぐらいなら、日本語使ったほうが絶対に良い
2017/05/20(土) 13:11:22.41ID:DWQm6waj0
Visual Basic Edtor って、単体じゃ入手できないよな?
しかもExcelのバージョン違えば使い物にならんヶ所出てくるし
ThisWorkbook だって、どの?に成るだろうし
Microsoft Script Editer じゃあるまいし、どう考えてもExcelの付属品っつー立ち位置だろ
Excelの「おまけ」機能に決定

Word とか Outlook とかバリエーションは在るにしても
2017/05/20(土) 13:21:20.46ID:9VI8goCbM
根本的に勘違いしててワロタw
2017/05/20(土) 15:37:38.60ID:VKPh1Lah0
>>73
>>63じゃないけど、これ知らんかったわ
2017/05/20(土) 18:04:39.38ID:yKxdvQKVr
無知って凄いね
感心した
2017/05/20(土) 18:24:24.01ID:KHEwJCpd0
>>63
C#とかVB.netでアドイン作ればOK。
VBAでもセキュリティに問題出るけど作ることは可能。
2017/05/20(土) 18:58:10.02ID:E4Y2PkRr0
Excel VBA で Access と連携する業務システムって、ここの人達的にざっくりどう思いますか。社内システムの改良にアサインされてしまった。
2017/05/20(土) 19:08:49.87ID:KHEwJCpd0
>>92
どう思うって、どういう意味?
別に何とも思わんが。
2017/05/20(土) 19:16:24.30ID:E4Y2PkRr0
>>93
前スレ478さんが、VBAでSQLは鬼門って書き込みしてるのを覚えてたもんで、苦労するシステム構成なのかなぁと

Excel VBAの質問じゃないからスレチでしたかね、すんません
2017/05/20(土) 19:18:51.52ID:bcgPDffLp
>>92
良いんじゃね
2017/05/20(土) 19:51:15.58ID:nuBqrdCz0
苦労するかどうか、VBA以外にもSQL知っておかないといけないような気もするけど…
2017/05/20(土) 20:11:15.06ID:SOOWfvsE0
なんでVBAでSQLが鬼門なのか、理由とかあるの?
2017/05/20(土) 21:48:00.24ID:ZQ24XbJz0
Accessと連携なら、問題ないんじゃ…。
単体だと、更新処理系が面倒。
参照だけなら大差ないと思う。
2017/05/20(土) 22:03:15.15ID:SOOWfvsE0
ExcelVBAとAccessVBAでSQLの構文に違いがあると言いたいの??
2017/05/20(土) 22:25:58.77ID:TX7Bd0Me0
>>97
やったらわかる
phpでsqlは黄金パターンでうまくいく。db設計もいつも通り。文字コードはutf8
エラー処理も死ぬほどある

C#やVBはかなりめんどくさい、というよりもそもそも使う必要がかったので、前任者の引き継ぎが非常にだるい
つまずく場面としては、具体的には文字コード。shift-jisだと最悪。また、db設計が適当
db接続も何かうまくいかない
2017/05/20(土) 23:25:01.03ID:SOOWfvsE0
>>100
要するにお前のスキルが低すぎてVBA程度もロクに使いこなせない、としか理解できない内容だな
2017/05/20(土) 23:32:49.13ID:RVvLdbs7x
>>100
その差が大きいとは思えないけど。
vbaでもutf8扱えるよ。
接続はodbcで繋がる。
2017/05/20(土) 23:35:59.38ID:S4VyllBW0
ODBC=おでぶちゃん
2017/05/21(日) 00:10:42.76ID:iEpK3Njn0
>>99
SQLのUpdate、Delete、Replaceが駄目。

Excel側のRows().Deleteとか、Replace使えばいいだろって?
遅くないですか、それ。
2017/05/21(日) 00:16:44.29ID:o4hB34de0
それはVBAじゃなくてオラクルの問題なんじゃないのか?
2017/05/21(日) 00:22:22.71ID:o4hB34de0
>>105
どこからオラクルが出てきた!?
2017/05/21(日) 03:17:25.81ID:GlMb9Muz0
>>100
君なあ、能力の問題なのか性格の問題なのか分からんが説明が足らんのだよ。
ExcelからDAOを使うかADOを使うかによって変わるのは当然のことだし、ExcelとAccessでどうとか言われてもどういう観点の話か分からんだろ。
2017/05/21(日) 03:20:01.97ID:GlMb9Muz0
というか、文字コードの話が出てくるってことはODBCとかドライバの話まで出てくるじゃねーか。
それじゃあ違って当然だ。
109デフォルトの名無しさん (ワッチョイ 6792-qKRX)
垢版 |
2017/05/21(日) 07:08:05.80ID:S79+g3VB0
質問させてください。
excelからoutlook起動させてメールを作成するマクロ作ってます。
数パターン用意したテンプレートに任意の文言を置換・挿入してoutlookに渡す?感じです。
動作自体はうまくいってるんですが、なぜかoutlookに渡した本文の文字サイズが12ptになってしまいます。
outlookのデフォルトの文字サイズは10ptだし、12ptになる理由が全く想像つきません...
漠然とした質問で申し訳ないですが、outlook側で設定したデフォルトの文字サイズでメールを作成するようにできないでしょうか?

初心者なので、的はずれなこと言ってたらごめんなさい。
2017/05/21(日) 07:40:39.09ID:DM2pkhyK0
>>109
とりあえずぱっと思いつく原因は、エクセル側が12ptなのでそれがoutlook側に渡っている気がする
テキストだけ渡すようにするか、エクセル側を一時的に10ptにしてメール作成後に12ptに戻すとかで対処できるかもしれない
全然違うかもしれない。コードを見せてもらえたら試してみるよ
2017/05/21(日) 08:14:42.08ID:1Ubd4ETn0
>>97
>>104 とかの話でシートを SQL で操作する話を言ってるんだろ
あと >>100 は単にディスりたいだけ
PHP だといつも通りの DB 設計が VB/C# だと DB の設計が適当とか C# に挫折した底辺 PHPer の煽りだろ
2017/05/21(日) 09:34:47.94ID:bvqoufgo0
しかしなんで今どきAccessなんか使うんだろ。
SQL Server簡単だよ。Management Studio使いやすいし。
2017/05/21(日) 09:46:01.40ID:76EOq35R0
事務的な作業ならAccessで十分だからだろうな。
というかローカルで使えるDBソフトってAccess以外にあんのかな。
2017/05/21(日) 10:23:28.85ID:1Ubd4ETn0
>>112
DBMS だけじゃなくてレポート機能とかが欲しいんだろ

>>113
localhost で使えばどんなデータベースもローカルで使えるけど?
サーバーを立てたくないと言うなら sqlite とか
SQL-Server Compact Edition が見捨てられつつあるのが残念
2017/05/21(日) 11:05:17.83ID:DM2pkhyK0
使える人が多いってのは会社では非常に大きなメリット
桐ってソフトを使ってたけど、使える人が少なすぎてaccessに変えることになった

そしてword、てめーはダメだ
2017/05/21(日) 11:48:21.26ID:S79+g3VB0
>>110
レスありがとうございます。
excel側の文字サイズは10ptなので、ご指摘の原因ではなさそうです。
恥ずかしいですが、ファイルをアップロードしました。
ダウンロードキーは「excel」です。
https://www.axfc.net/u/3807959
実行ボタンを押すと、outlookが起動されてメールが作成されます。
ご確認お願いします。
2017/05/21(日) 14:13:30.87ID:/uUqSVmCx
>>113
発想が貧困過ぎて草
118デフォルトの名無しさん (ワッチョイ 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のフォントサイズになる
119デフォルトの名無しさん (ワッチョイ 6792-qKRX)
垢版 |
2017/05/21(日) 17:02:34.86ID:S79+g3VB0
>>118
ありがとうございます。
望み通りの動作しました。

ちなみに、自分の環境では13pxだと6.5ptになってしまいました。(1/2になる?)
あと、>>116で作成したメールのタグを見てみたんですが、「p.MsoNormal...」ってとこのfont-sizeが12ptになっていて、そこを10ptに変更するとうまく表示されるようになるようです。
120デフォルトの名無しさん (ワッチョイ 0fc7-X+GT)
垢版 |
2017/05/21(日) 18:41:32.83ID:Ox0ZLs5T0
いまだにptとpx違いがわからない人っているんだね勉強になる
2017/05/21(日) 18:46:19.26ID:DM2pkhyK0
>>120
ありがとう本当に気づかなかった
web触ってるとptって単位は記憶から抹消されるわ
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
2017/05/21(日) 23:12:50.81ID:bvqoufgo0
>>122
テキトーに答えるけどByValで受け取った変数に
Set rec = Nothing
しても意味ないと思う
2017/05/21(日) 23:25:21.22ID:aKuhNyUq0
>>122
型の不一致の根本原因は (wkR) だと思われ

S_RecordsetClose wkR

Call S_RecordsetClose(wkR)
にしる
2017/05/21(日) 23:26:47.02ID:+shsKnP00
>>123
あ、、、、言われたらそうだ^^;。

それは確かにその通りで、この処理自体の問題だとは思うのですが、引数を受け取る段階で型が一致しないのはどうして?
ちなみにByRefでも同じなんですが。
2017/05/21(日) 23:34:14.77ID:+shsKnP00
>>124
リロってなかった
Call S_RecordsetClose(wkR)
でかつByRefにしました。
ありがとです。
動作についていまいちよく判ってないっす^^;
2017/05/22(月) 00:57:19.08ID:MyMt2epv0
>>122
ADODB.Recordsetと、Recordsetの違いじゃないの?
Recordsetって複数あるから省略しちゃうとどれ指してるか分からなくなるぞ。
2017/05/22(月) 12:17:47.19ID:0dv64TbrM
質問ですがVBAのプロパティやメソッドの扱い方について詳しい入門書はありませんか?
会社でマクロ使うため超入門(マクロの記録からつかうやつ)と学校で教わったプログラム知識(basicとc++)でなんとかやってるんですがやはりVBAの命令の扱い方が怪しく…
予算は2〜3千円程度でお願いします
2017/05/22(月) 12:26:52.79ID:csbpN2HFr
>>128
ExcelとAccessのVBAの本なら腐るほどあるからここで聞かなくてもググれば良い
Word、Outlook、PowerPointのVBAとなると日本語ではかなり少なくなるので教えるまでもなくググれば出てくる
ググって出てこないなら英語書籍やネットブログを漁るか、MSDNを直接参照することになるね
2017/05/22(月) 12:56:42.47ID:AKn80VTzp
>>128
vbeでF2キー
2017/05/22(月) 13:29:08.29ID:o9BH+SoNH
>>128
メソッドやプロパティの方から網羅的に学習するのはきついので、やりたいことの方から網羅的に
説明してる本の方がいいと思う。

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

似たような『○○700』みたいなのがいくつかあるから、どれか選んで流し見するのがいいと思う。
2017/05/22(月) 14:44:41.19ID:nSxPTPKq0
本なんて必要か?

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

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

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

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

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

だったら当然
'A1の値を1にする
Range("A1").Value=1
ということになる。
2017/05/22(月) 15:17:01.68ID:o9BH+SoNH
>>132
そんな無駄な試行錯誤や調査を、たかだか2,3000円の本を読むだけで省略できるんだが。
入門書とか馬鹿にする人いるけど、たいてい>>132みたいな感じだね。
2017/05/22(月) 15:42:03.39ID:W5+S3ypfM
>>132
デジタルに調べる良さとアナログに調べる良さは別物だよ

アナログだと「調べるつもりもなかったけどたまたま見かけて使ってみたらいい感じになった」ってことはアナログならでは
2017/05/22(月) 15:47:18.44ID:0dv64TbrM
色々意見ありがとうございます
うちの会社ネット禁止なので本に頼るしかない事情があるのです…
ネット可ならネット検索でやりたいのが本音です
2017/05/22(月) 16:20:04.11ID:yUPIrMPGd
>>135
開発環境だけでなくどこからもネットに繋がらないというなら会社に文句をいうべき
煽りではなく
2017/05/22(月) 18:00:49.91ID:AKn80VTzp
>>133
その試行錯誤が無駄かどうか長期的に考えれば分からない
2017/05/22(月) 18:15:29.31ID:MyMt2epv0
業務なのか自主的なのかで話が変わってくると思うけど、
VBAいじるのにネット無しは辛いなぁ。
2017/05/22(月) 18:29:46.83ID:o9BH+SoNH
>>137
書籍で基本的な知識を学んだ後でも、試行錯誤はするでしょ。
その試行錯誤には意味がなく、>>132のような試行錯誤には意味があるという主張?
だとしたら、それは自分で勝手にやってくださいと言うしか。
2017/05/22(月) 18:56:05.69ID:pWkjNq5k0
おおむかしは、FAXでMicrosoftから資料を引き出していたものじゃ
先ず、目次を引っ張れるFAX番号に掛けて、延々何十枚もの目次をげっと
その目次から欲しい機能を探し出し、今度は欲しい機能のFAX番号へ掛けて
これまた延々と資料を文字通り引きずり出しておったわ

よく覚えてないけど、そんなかんじ
その頃のFAXはB4の感光紙で、うっかり陽の当たるところに置きっぱで
外出したりすると、帰社した時には真っ黒くろすけで愕然と膝から頽れたり
2017/05/22(月) 19:18:46.60ID:g3oHLvAy0
>>135
検索できるPCを用意してもらったほうが良い。もしくは自分で用意するか
ネットでその都度検索できないとあまりに効率が悪い
2017/05/22(月) 19:45:17.11ID:ewHRkUXfd
>>136
金融じゃ普通だぞ
いちいちググらないとコード書けないやつはお呼びじゃない
2017/05/22(月) 20:10:34.61ID:3QNKGHFQ0
>>142
金融案件みたいなデスマーチの温床に言われてもww
2017/05/22(月) 20:13:17.75ID:g3oHLvAy0
>>142
金融業界にvbaでセコセコやってるやつなんでいねーよwww
帳票システムは全部外注、ボタンひとつで出るようになってるんだよwww
しかもエクセルよりアクセスの方が使用頻度が高い

岡三証券とかは知らんけど
145デフォルトの名無しさん (ワッチョイ 0fc7-X+GT)
垢版 |
2017/05/22(月) 20:44:19.38ID:rXkCxzW60
なんかさあ…もう少しオープンに自分の無知をさらけ出そうぜ
無知ってそんなに悪いもんじゃないぜ?
2017/05/22(月) 21:21:30.49ID:yUPIrMPGd
>>142
金融でもいわゆるOA環境は与えられててネットは見れるだろ
2017/05/22(月) 23:25:21.82ID:KgZfg/yx0
>>139
どっちの試行錯誤も意味があるんじゃね
試行錯誤が無駄といったのはそっち
148デフォルトの名無しさん (ワッチョイ 8a2d-8zZG)
垢版 |
2017/05/22(月) 23:36:28.18ID:fGR6ky/u0
空白と重複をなくしたドロップダウンリストを作成したいんだけど、作業列つくらないと厳しいですか?
A列に重複がたくさんあるものから、重複を削除したリストをB2に追加したいですが、VBAでは厳しいですか?
2017/05/22(月) 23:39:29.41ID:W5+S3ypfM
>>148
繰り返しとifでいける
2017/05/22(月) 23:41:44.53ID:EzxM7okx0
vba使い始めた頃はヘルプに結構お世話になったけどなあ
最近のバージョンだとオフラインのヘルプが入ってないからきついよね
>>128のバージョンもダメなやつなのかな
151デフォルトの名無しさん (ワッチョイ 8a2d-8zZG)
垢版 |
2017/05/22(月) 23:43:11.76ID:fGR6ky/u0
>>149
ループでリストってできるんですか!!知りませんでした。
例えば1〜"A1に入力された数字"までのリストとかも可能ですか??
A1に20とあった場合、1・2・3・4・5・6・・・・20といった感じで。
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でもできるけど作業列作ったほうが早いと思う
俺なら作業列を使う
153デフォルトの名無しさん (ワッチョイ 8a2d-8zZG)
垢版 |
2017/05/22(月) 23:57:33.95ID:fGR6ky/u0
>>152
完璧すぎて鼻水でました
ありがとうございます
2017/05/22(月) 23:58:56.03ID:EzxM7okx0
俺も作業列勧めるな
直値で入れると文字数の制限があるだろ
2017/05/23(火) 00:12:52.19ID:fMtQNmiV0
>>149
If 俺 = "イケメン" Then
  俺 = 俺 & 彼女
End If
2017/05/23(火) 00:30:37.63ID:bLVWAbWWM
>>155
イケメンだったらおまえが消えて新しい命に書き換えられてしまうな
157デフォルトの名無しさん (ササクッテロル Sp03-8zZG)
垢版 |
2017/05/23(火) 01:06:28.10ID:G9caL/WXp
>>155
実行時エラー
型が一致しません。
2017/05/23(火) 01:16:03.77ID:aBKdrymv0
>>157
酷過ぎワロタwww
2017/05/23(火) 02:03:21.06ID:3SYK1IcP0
>>139
省略する人は試行錯誤を大してやらないよ。
答えを求める奴は結局身にならない。

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

本は必要無いと思うけど有っても良いとは思うし、自分もかなり買う方だ。
でも自分が本を買うのは興味からだな。
あ、自分は今はVBAの本を買うことはありません。
初心者なら読んでおもしろそうだったら買ってみれば良いんじゃない?
2017/05/23(火) 06:24:30.98ID:2tE3UxZ+0
多分その天才どもは英語の仕組みは既に把握したうえで、
上積みとして単語を丸暗記してるんじゃないか?
仕組みがエンジン、単語がガソリンと考えたら、
エンジンだけでもガソリンだけでも走れない。
効率の良いエンジンは少しのガソリンでも遠くまで走れるし、
沢山ガソリン積めれば少々お粗末なエンジンでもやっぱり遠くまで走れる。
どっちが大事じゃなくて両方大事。
2017/05/23(火) 06:30:19.51ID:DZlqaxyP0
試行錯誤する事で答えが判らない事を解決するスキルが身につく
このスキルはVBAにとどまらない
他のことにも応用できる
2017/05/23(火) 06:50:44.94ID:3FTCY8r/r
本は嘘が書かれてたりするから厄介

想定読者の知識レベルに合わせる理由でいろんな説明を端折ってミスリーディングな表現になってしまってたりするし、著者の知識が根本から間違ってるときもある
2017/05/23(火) 07:27:49.86ID:pxpRUDcgM
結局身に付かないから自分で調べろとかw
ここで聞くってことは理解したいんじゃなくて答えが知りたいだけなんだよ
教える気がないなら黙ってろ
2017/05/23(火) 07:34:02.08ID:Y2XmHkKh0
>>163
勉強の仕方の話だよ
回答はする
2017/05/23(火) 10:12:46.48ID:3SYK1IcP0
>>163
ほら、これが弊害だ。
きちんとアンカー追っていけば初心者がどうやって勉強すれば良いかの話から来てるのがわかる筈。

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

多少出来る奴なら誰でもマクロ記録のままのゴミコードを否定するだろうよ。
2017/05/23(火) 11:58:25.09ID:IihgumLkM
>>167
時間が無駄だってことだと思う
お前の技術レベルの話じゃない

物事には期日があるんだからそんなどうでもいいことに時間使うんなら本買った方がいい
2017/05/23(火) 12:01:49.66ID:ZBpIQRDpM
>>167
コミュ障技術者にありがちなバランス感覚の無さだな
VBAを理解する事が目的じゃないんだよ
2017/05/23(火) 12:06:29.03ID:TeKp5Ts0d
Validationて何だ?
と思うくらいExcelのオブジェクトのことを知らない。
VBAばっかりだからなあ
2017/05/23(火) 13:08:14.56ID:BzWPCBXiH
>>167
> というか、あれを書いた俺がそんなレベルに無いことなんて想像も出来ないのか?
お前のレベルなんか知ったこっちゃない。

> 多少出来る奴なら誰でもマクロ記録のままのゴミコードを否定するだろうよ。
ケースバイケースだし、議論する価値ない話題だね。
2017/05/23(火) 13:09:17.49ID:TeKp5Ts0d
友達じゃあるまいしな
2017/05/23(火) 13:19:37.53ID:DZlqaxyP0
>>168
それは答えが判ってる事にしか使えない
仕事では誰にも答えが判らない事を解決する事も多い

答え合わせができる問題で訓練した方が良い
2017/05/23(火) 13:26:08.31ID:DZlqaxyP0
答えが判ってることを効率的に片付けるには
答えを聞いたり調べれば良いけど

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

自分で考えずに答えを求める事が
日本でイノベーションとかが比較的少ない原因かもな
2017/05/23(火) 13:29:05.48ID:BzWPCBXiH
新しい何かを始めるにあたって、入門書を読むとこから始めるのが「答えを求めること」なのか
2017/05/23(火) 13:36:08.12ID:S9zv8N7Q0
そして、答えはひとつだけでは無い
2017/05/23(火) 13:40:08.67ID:DZlqaxyP0
>>176
答えは一つじゃないから
入門書にこだわる必要はないな

入門書は何のために読むの?
小説か何か?
自分が判らないことの答えを知るためじゃないのか?
2017/05/23(火) 13:47:15.75ID:OJ3bnrAra
>>168
>>169
>>171

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

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

コミュニケーションの取れない奴はこれだから困る。
2017/05/23(火) 13:56:20.46ID:BzWPCBXiH
>>178
この流れのそもそもの始まりは、>>128に対して>>132みたいなレスをしたからだ。

そもそも>>128は、おすすめの入門書を聞いてるんだよ。
それを本なんか不要とするからこうなった。
2017/05/23(火) 14:43:29.82ID:YXklfP5tx
お勧めの本は知りません
をやたら回りくどくやるのなw
2017/05/23(火) 15:12:36.24ID:zqdwD1uL0
>>180
マは性格捻くれたクソ野郎が多いからw
2017/05/23(火) 16:36:03.71ID:ZjKWQBEz0
たしかに>>132はクソレスだな
質問スレなんだから、素直におすす目入門書を挙げれば済む事
2017/05/23(火) 18:13:36.59ID:PCM7pP9za
横レスだけど128の質問も少し違和感がある。
"詳しい入門書"というのはなかなかないんじゃないか。

128は少なくとも全然vbaが分からないわけでわなくプロパティやメソッドの使い方が難しいと言ってるわけだから求めてるのはもはや入門レベルとは思えない。
感覚としては優しく丁寧に書いてある、という意味かもしれないが。
2017/05/23(火) 18:22:11.37ID:IihgumLkM
>>173
それは設計の話だな
実装からスタートする案件だとしたら話は変わってくるけど、、、
2017/05/23(火) 18:45:32.25ID:YXklfP5tx
早く教えて挙げて
2017/05/23(火) 18:53:06.25ID:IihgumLkM
>>131
187デフォルトの名無しさん (ワッチョイ 0fc7-X+GT)
垢版 |
2017/05/23(火) 20:04:53.74ID:vE+85AhN0
逆引き系の本てやりたい事がズバリ書いてある事ってどんだけあるの?
本当に使えるのかいまいち信用できん
188デフォルトの名無しさん (ワッチョイ d3b9-cm4/)
垢版 |
2017/05/23(火) 20:24:44.89ID:4WGZqsHw0
星君の業務改善でいいじゃん
2017/05/23(火) 20:25:40.01ID:Y2XmHkKh0
逆引きは、逆引きがいらない事に気づかせてくれるありがたい本だよ
2017/05/23(火) 20:59:03.89ID:mDga4JbQ0
そう、誰も、
本を
読んでいないのである・・・
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みたいな勤務の場合どうやって深夜労働時間を求めればいいのでしょうか?
2017/05/23(火) 21:35:35.13ID:z+zsvOR8p
>>191
就業規則をよめ
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
無能の自己紹介はいらないよぉ
2017/05/23(火) 21:41:20.14ID:Y2XmHkKh0
>>193>>191へのレスね
2017/05/23(火) 22:01:45.26ID:ADqqpGm90
以前、ここでシフト表を作りたいって人がいて、んで別スレまで出来てあれこれ皆が頑張っていたけど、途中で多分本人がやる気なくしてw
アボンだったな
2017/05/23(火) 22:07:18.85ID:z+zsvOR8p
>>193
残業代(金額)が、労働時間-8時間(時間)
とかw

好意的に解釈して残業代じゃなくて残業時間だとしても
-8時間かどうかは就業規則を読まないと判らないだろ
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
おかしかったら誰か直して〜
2017/05/23(火) 22:55:16.52ID:Y2XmHkKh0
?cells(1,1).Address
で絶対参照の$A$1は取得できますが、
行のみ相対参照の$A1を取得する方法はありますか?
2017/05/23(火) 22:59:09.40ID:p/2ZNHs9p
それくらいヘルプ見れ
https://msdn.microsoft.com/ja-jp/library/office/ff837625.aspx
2017/05/23(火) 23:08:02.98ID:Y2XmHkKh0
>199
ありがとうございます、解決しました
2017/05/23(火) 23:10:34.50ID:Y2XmHkKh0
Range.Address プロパティ (Excel)について質問です

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

他言語ではオブジェクトのメンバを直接取得したり値を設定するのがプロパティ、式がメソッドと思っていたのですが、
vbaが特別なのでしょうか。それとも他にこういう区分けの言語はあるのでしょうか
http://piyo-js.com/01/keyword.html
2017/05/23(火) 23:39:33.41ID:kSdgf1uK0
プログレスバー使ったら値更新するたびにフォーカス奪うようになって別ウィンドウで文字入力とかスクロールしてると邪魔される
せっかくの長い処理中に別作業できるメリットが損なわれるようになってしまって困ってるんだけど何か解決策ないでしょか…?
プログレスバーないと処理中不安になって長く感じるのでできれば使いたいです
ちなみにWindows7上で使ってるExcel 2010です
2017/05/23(火) 23:44:33.10ID:CFQVOeJer
>>201
Addressは要はgetterですよね
Rangeクラス内部から見ればメソッドのように見え、クラス利用側から見るとメンバ変数のように振る舞いますが、
実態はString型の変数を返すメソッドでふ
メソッドがパラメーターを持つのは普通のことじゃないですかね
2017/05/23(火) 23:47:22.57ID:CFQVOeJer
でふって何だよ馬鹿かよ俺
2017/05/23(火) 23:52:40.77ID:Y2XmHkKh0
>>191
暇だから作った
http://www.dotup.org/uploda/www.dotup.org1258917.xlsx.html

>>203
そうそう、そうなんです
で、vbaではそれをプロパティと呼ぶの?という質問なんです
このリンク先ではaddressをプロパティと言っています
https://msdn.microsoft.com/ja-jp/library/office/ff837625.aspx
2017/05/23(火) 23:55:26.87ID:CFQVOeJer
>>201
引数つきのgetter/setter(プロパティへのアクセサ)を作れるかどうかは言語仕様によります。
VBでは作れる、というだけの話
2017/05/24(水) 00:16:59.54ID:jVvBcvpG0
今日飲んだビール.TopValue
2017/05/24(水) 01:48:09.41ID:nPuq94IW0
>>205
自作クラスで言うと、
property get/set/let で定義するのがプロパティ、
sub/function で定義するのがメソッド。

range.addressみたく、getだけ定義されているプロパティとfunctionは外から見たら同じようなものだし、気にする意味がないと思う。
2017/05/24(水) 07:02:03.86ID:NmLbt9VS0
>>206>>208
なるほど、ありがとうございました
色々な考え方があるのですね

>>207
韓国産でしたっけ?危険ですのでやめたほうが良いと思います
お金のために健康を捨てるのはもったいないです
2017/05/24(水) 10:47:49.12ID:ktSIKEk8H
>>202
ステータスバーに進捗状況を表示するようにしたら?
211デフォルトの名無しさん (ワッチョイ 031f-QnPL)
垢版 |
2017/05/24(水) 14:14:59.56ID:9bsixbB10
VBA勉強中の初心者です。
最終的にやりたいのはテキストエディタから一部データを抜き出すのをしたいんですが抜き出し方がわかりません。
メモ帳にログが取り込まれてそこから必要なデータを取り除きたいです。

コンビニのレシートがデータしてるものと考えてください。
それでそのレジの最後の一台当たりの発売金額がわかるんですけど発売金額を抜き出したいのですが何をどうしたらいいのでしょうか?
まだ変数と制御構文くらいしか理解していません。
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
213デフォルトの名無しさん (ワッチョイ 031f-QnPL)
垢版 |
2017/05/24(水) 14:44:53.85ID:9bsixbB10
おお!ありがとうございます。
これを元に一つ一つググりながら理解していこうと思います。
2017/05/24(水) 14:53:05.51ID:9OGm2Cju0
>>211
VBAからADO使ってログファイル読み込みその際にSQL使って絞り込み

>>212
fooを使うんじゃねえhg
2017/05/24(水) 18:37:48.65ID:NmLbt9VS0
なんでfoo使うのダメなの?
2017/05/24(水) 18:45:27.67ID:BVqzNkwop
>>214
何でテキストファイルを読み込むのにSQLとかADO使うの?
2017/05/24(水) 18:52:32.09ID:qKRKK3Glx
>>216
適材適所
2017/05/24(水) 19:02:38.69ID:LTICL+DVa
HYPERLINK関数(mailto:)を使って、メールを送信するシートを作成しました。
B2からB30セルまで、ハイパーリンクが設定されている状態です。
この、B列に並んだハイパーリンクを全てクリックして自動で実行したいのですが、どのようなコードを使えばよいのか分かりません。

Hyperlink.Followメソッドでは、関数によるハイパーリンクを開けないことは分かったのですが、何か代替手段はあるでしょうか?
2017/05/24(水) 19:18:29.39ID:NmLbt9VS0
>>218
マクロ4.0でいけるっぽい
https://oshiete.goo.ne.jp/qa/7192323.html
2017/05/24(水) 20:09:08.13ID:YRGsLxEEr
>>218
なぜハイパーリンクしてるの?
VBAでセルの文字列データを取得して、それを使ってふつうにメールアイテムを作成して送信すれば良さそうだが
221デフォルトの名無しさん (ワッチョイ 0fc7-X+GT)
垢版 |
2017/05/24(水) 20:17:47.99ID:WW1YGaoR0
>>220
それはあらゆる場面において最低の解法
なぜかは自分で考えてね
2017/05/24(水) 20:48:39.32ID:42FTyawn0
だから、ちゃんと教える気がないなら黙ってろと
2017/05/24(水) 20:49:24.31ID:NmLbt9VS0
>>221
横からだけどさっぱり分からない
教えてください
2017/05/24(水) 21:12:42.89ID:9OGm2Cju0
>>216
>>211見てなんで使わないと思ったの?
2017/05/24(水) 21:23:52.71ID:YRGsLxEEr
>>221
あらゆる場面で、というのは随分と強い主張だな
シートのUI上でハイパーリンクを設定すべきかどうか、コード側でメールアイテム作成を制御すべきかどうかは設計次第だろ
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型って文字数制限があるんですか?
それにに引っかかったみたいで途中クエリが消えてしまい原因がわからずかなり苦戦しました
2017/05/24(水) 23:03:01.52ID:BVqzNkwop
>>224
何でテキストをsqlで読もうとするの?
2017/05/24(水) 23:06:50.11ID:NmLbt9VS0
>>226
数式読みなよ、全部書いてる
http://www.dotup.org/uploda/www.dotup.org1258917.xlsx.html

あとstringに制限は事実上ない
一旦varchar(255)辺りに入れてない?テーブルの制限に引っかかってる気がする
2017/05/25(木) 00:02:05.58ID:rwwycwh80
>>227
>>211見てなんで使わないと思ったの?
2017/05/25(木) 00:54:27.96ID:UDUA6Pg7p
>>229
sqlって何する為のものか知ってる?
2017/05/25(木) 01:14:28.72ID:+tui60Va0
SQLはOracleに代表されるようなDBMSを制御するための言語 ExcelでもDMMSを相手にして使えるがそれはDBMSあってのこと
2017/05/25(木) 01:15:33.62ID:+tui60Va0
×DMMSを相手に ○DBMSを相手に
2017/05/25(木) 04:05:21.88ID:VTDAVdX70
別にADOは便利なツールとしても使えるだろ。
けど、俺もテキストエディタだったらもっと単純にゴリゴリしたの考えるな。
LeftとかMidとかRightとかInstrとかInstrRevとかを使ったようなの。
2017/05/25(木) 04:15:26.23ID:VTDAVdX70
あっ、テキストエディタ作りたいんじゃ無くて、テキストからデータ取り出したいだけ?

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

>>211
発売金額はテキストの中でどんな風に位置してるの?
例えば10行目の20文字目から10桁みたいな感じ?
2017/05/25(木) 04:18:03.03ID:VTDAVdX70
>>211
あと、何でメモ帳使いたいのかな?
別にメモ帳上でいろいろ操作することも出来るけど、少しだけ高度になるんだよね。
2017/05/25(木) 08:42:10.69ID:QSuakdFza
>>219
ありがとうございます!
リンク先に記載のコードを試してみたのですが、残念ながら「指定されたファイルを開くことができません」のエラーが出てしまいました。
普通にセルをクリックするとメールが立ち上がるのですが、vbaを使うと、このようになってしまいます…


>>220
大変レベルが低い話なのですが、
滅多に触ることのない超初心者のため、作る労力とメンテナンスのことを考えて、できることは関数ですませ、vbaは最低限にしている次第です。
2017/05/25(木) 08:53:36.25ID:MawhMErZ0
>>236
「ハイパーリンクをクリック」
逆に難易度が上がってるぞ
2017/05/25(木) 12:02:32.06ID:KGZHRfFH0
>>236

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

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


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

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

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

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

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

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

単純に空のメールを一度に複数開きたいだけならハイパーリンク使う方が簡単な気もするけど、そんな需要で完結するとは思えない。
だから自分だったら両方作って片方をコメントアウトしとくだろうな。
2017/05/25(木) 16:42:30.82ID:yXnULsJhH
俺語りうぜぇ
2017/05/25(木) 16:44:23.96ID:9Akggys5x
>>242
お前の感想は
もっと要らない
2017/05/25(木) 16:58:40.94ID:yXnULsJhH
>>229
> >>211見てなんで使わないと思ったの?
なんでって普通使わないから。
2017/05/25(木) 17:43:48.64ID:6krMH9aUr
>>241
メールアイテム作成が複雑そうと言ってるのは質問者なので、そこは間違えないでね
2017/05/25(木) 17:58:07.99ID:yS9f0RVc0
VBAに滅多に触ることのない超初心者になに難しいこと語っちゃってんだよw
2017/05/25(木) 18:04:11.11ID:yX9RoGiCa
データの取り出し方とか質問するならせめてデータ構造の例ぐらい出しておかないと返事のしようがないような
2017/05/25(木) 18:13:41.54ID:DyEVqbiqd
テキストファイルをSQLで扱うときってどのドライバを使うもんなの?
2017/05/25(木) 18:18:45.36ID:yXnULsJhH
>>248
> テキストファイルをSQLで扱うときってどのドライバを使うもんなの?
だから、普通はしないってば。
相手がCSVならかろうじてする場合もあるかもレベル。
2017/05/25(木) 19:08:00.44ID:BhGEKkNfa
いや、だから便利にADO使う場合もあるってば。
例えばUTF8の読み書きとか。

他にも色々利用できるものがある。
2017/05/25(木) 19:19:07.99ID:IjFnSfL20
>>250
色々って例えば何?
2017/05/25(木) 19:35:14.21ID:eYj1KCTuM
曖昧だなぁ
2017/05/25(木) 20:12:54.49ID:MawhMErZ0
テキストファイルにSQL使える事に驚き
2017/05/25(木) 21:35:50.77ID:Prbt/S0pa
>>251
例えばネットからファイルをダウンロードする場合、普通はURLDownloadToFileを使うと思うが認証付きの場合はADOが使える場合がある。
2017/05/25(木) 22:27:40.96ID:bN5MkpLw0
名前の判別でRかLのはいったやつを分けるマクロが書きたいんですがRとLは,かスペースに挟まれてるか最後一文字です
ただし最後一文字ならその前にスペースが入ってます
こういう場合スマートな判別ってどうしますか?
2017/05/25(木) 22:47:25.62ID:o/KEVGaTr
>>255
正規表現で解決じゃね
2017/05/25(木) 23:08:23.52ID:rwwycwh80
>>247
まぁそうだけど大体ログと言えば規則的に並んでいると推測できるよね
視野が狭い人多い
そもそも>>211>>216をよく読んで理解せずに発言してる人多過ぎ
2017/05/25(木) 23:14:32.15ID:Priyoi2O0
煽ってるわけじゃないが、>>211は全力で意味を理解しようと思って読んでも
どういう状態を説明しているのか、よく分からなかった(特に後半)
みんなスゴイね(まじで)
2017/05/25(木) 23:23:44.35ID:rwwycwh80
>>255
>>212のように正規表現がいいけど
細かい話をするとスマートが何を指しているのか
早さとかコードの見た目とかね

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

たった3種類なんだから答えてあげれば?
2017/05/25(木) 23:31:18.48ID:rwwycwh80
>>261
そういうのいいからw仲良くやろうぜ
263デフォルトの名無しさん (ワッチョイ 3bc7-x63M)
垢版 |
2017/05/25(木) 23:33:20.64ID:trQS6AD+0
>>262
お前がいじわるなつっこみするから俺もいじわるしただけだ
2017/05/25(木) 23:35:49.43ID:MawhMErZ0
この件で言えばスマートなのはどう考えても正規表現だろう
ifやmidで無理矢理解決するのは力技ではなく、単に勉強不足だ
2017/05/25(木) 23:36:09.55ID:rwwycwh80
マにありがちな意地悪なw
突っ込まれたいとか>>263ホモ警報w
2017/05/25(木) 23:37:26.93ID:rwwycwh80
>>255は多分釣り
分かってて書いてる感
267デフォルトの名無しさん (ワッチョイ 3bc7-x63M)
垢版 |
2017/05/25(木) 23:40:28.47ID:trQS6AD+0
>>265
あ?調子に乗りすぎだお前
2017/05/25(木) 23:43:35.70ID:rwwycwh80
>>267
255の正規表現を誰かが書くと、とたんに俺が書いた正規表現の方がスマートだ合戦開始の流れだよなw
2017/05/25(木) 23:45:17.90ID:o/KEVGaTr
midとかifだと、検索対象文字列のパターンが変更されたらいちいち検索処理の制御構造を変えなきゃならないかもしれない
正規表現だったら大抵RegExpオブジェクトのプロパティの設定値を変えるだけで修正が終わる
2017/05/25(木) 23:49:52.88ID:2PvZEflm0
俺なら正規表現とか難しいのわかんないからこれで済ませちゃうな
スマートさのかけらもないけど

Function isRL(str) As Boolean
 isRL = str Like "*[, ][RL][, ]*" Or str Like "* [RL]"
End Function
2017/05/25(木) 23:53:17.40ID:rwwycwh80
>>270
それだと
,R_
みたいなのも反応しちゃうような
_はスペースね
これも全角半角スペース区別とか不明だからまあ
2017/05/25(木) 23:57:37.38ID:2PvZEflm0
>>271
日本語がどっち指してるかわからなかったからそれも含まれると解釈したんだけど
それ入らないならOrいっこ増やすだけだし

もちろんもっと複雑さが増してくれば正規表現調べようって気にもなってくるけどね
2017/05/26(金) 00:01:53.74ID:WxppAu020
>>272
>>263と同じで突っ込みたかっただけ、めんごめんごw

あとLikeだと大文字小文字区別しないよね、だから
RLもrlも混同してしまうマッチだけにwww
2017/05/26(金) 00:08:29.13ID:JFu5myv50
>>273
おまえいいやつだな
それでも突っ込むとOption Compare Text書いてなければ大文字小文字区別するよ
2017/05/26(金) 00:09:45.41ID:WxppAu020
>>274
勘違いしてたすまん、女だから許してw
2017/05/26(金) 00:15:45.66ID:Q8wFVHRlr
女だから許してで草
今度から俺も使おうw
2017/05/26(金) 00:16:58.01ID:WxppAu020
>>276
だってせっかくこれ言いたかったら間違えたのに
誰も突っ込んでくれないからさ
>RLもrlも混同してしまうマッチだけにwww
2017/05/26(金) 00:24:41.93ID:JFu5myv50
Option Compare Gender
2017/05/26(金) 00:48:48.42ID:Q8wFVHRlr
混同でマッチで喜ぶとかババァで草
2017/05/26(金) 06:10:08.78ID:7RhNv1Zw0
>>257
そんなのただの推測に過ぎないだろ
2017/05/26(金) 08:11:41.20ID:Y2pnKR05a
>>257
そりゃそうだが、たまに意味わからん形式のログあったりするし
説明のしやすさに直結するだろ
2017/05/26(金) 08:38:47.74ID:iQOaaYC+M
いろいろな意見ありがとうございます
釣りではないですが正規表現で良さそうとは感じていました
ただ正規表現の書き方がわからなかったのと本当に正規表現が一番適した書き方かわからないのでああいう聞き方になりました
なんか混乱させてしまったようですみません
2017/05/26(金) 09:24:25.07ID:HjxgyacU0
すまん俺も女だわ
髭そって会社いくか・・
2017/05/26(金) 09:50:48.59ID:Vk+zDyie0
正規表現が良いとは限らんよ。
構造を元にした固定の場所の方が良い場合もある。
だからデータの中から取り出したい値がどの様に配置されてるかが重要。

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

[]内に$はダメなんかね
2017/05/26(金) 20:07:54.29ID:I1+YwiguM
>>289
文字列の最後としての $ は文字じゃないから [ ] の中には入れられない
(入れると文字としての $ と見なされると思う)

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

これちょっと曖昧
",R," とか " R " はいいとして " R," とか ",R " もいいのか?
とりあえずいいとしてスマートかどうかを問わなきゃ
"(?:[\s,][LR][\s,].*|\s[LR])$"
辺りでどうか
2017/05/26(金) 20:08:59.71ID:WxppAu020
>>289
勘違いしてます

([,\s][R][,\s]?$)

あとそれだと、,R,だけじゃなくて,R_みたいなのも反応するけどいいの?
って聞いたんだけどお前全然人のレス読んでないのなw
2017/05/26(金) 20:19:12.02ID:WxppAu020
質問者 >>255 (ドコグロ MM3f-fCG8) ID:iQOaaYC+M
回答者 >>291 (ドコグロ MM3f-ijLw)  ID:I1+YwiguM

やはりお姉さんの言った通り(>>266)釣りだった感
2017/05/26(金) 23:27:30.93ID:KALLaxQr0
回答ありがとうございます
[]内に$は受け付けないんですね…
,R_は信じがたいことにそう入力されてるデータを見つけてしまったので分別に必要です。
なんか荒れに荒れてる感じですいません…
とりあえず私は質問しかしてません
2017/05/26(金) 23:32:22.16ID:HjxgyacU0
荒れてないから大丈夫
ただそろそろスレから退散した方が、不愉快な思いをしなくて済むとは思う
2017/05/27(土) 01:01:00.58ID:acGsd7ij0
>>294
もう解決したんでしょ?バイバイ
297デフォルトの名無しさん (ワッチョイ 2b77-nzfl)
垢版 |
2017/05/27(土) 01:04:32.39ID:SLDKDwXi0
嘘つきは泥棒の始まり
2017/05/27(土) 01:37:01.15ID:P2SJDJfj0
ほらねw
2017/05/27(土) 11:48:01.37ID:j+tL9L540
>>287
ああ、すまん。
俺は>>233でADOの観点で絡んでた。
確かに元々の話は何故SQLって話だね。
2017/05/27(土) 16:06:04.75ID:acGsd7ij0
では次の方どうぞ
2017/05/27(土) 21:40:12.40ID:BMnR9+ov0
>>253
使えるってだけだよ。
Schema.iniを使わないと、
勝手に型を決めやがるから、物凄く使い勝手が悪い。
2017/05/27(土) 22:24:03.65ID:vVj1nMv00
マの特技:あらさがし
2017/05/27(土) 22:53:30.64ID:P2SJDJfj0
当たり前だ
その技術がなければバグだらけのコードになる
304デフォルトの名無しさん (ワッチョイ 3bc7-x63M)
垢版 |
2017/05/27(土) 23:19:58.15ID:wHxGIeSt0
だがならない
2017/05/29(月) 06:22:57.97ID:KA+g5PFR0
$$$4.3$$$
"V"="1.3335412","0","1","3Q",
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
2017/05/29(月) 19:48:29.74ID:aGWTIe1b0
>>306
とりあえず走らせたけどエラーでなかったよ
どこで出るの?

そもそも何をしたいの?
元々あるのはsheet1だけとして
sheet2のA1にB1-B699貼り付け
sheet3のA1にB700-B1399貼り付け
ってこと?
2017/05/29(月) 19:59:34.93ID:CxTrZaFuM
>>307
699毎なのでB700-B1398じゃね?
2017/05/29(月) 20:27:18.52ID:Q1hkb32K0
失礼しました
説明が間違ってました。
エラーではなくて、A行もコピーしてしまうのでB行をA行にコピーしたいです。
まさに、>>307-308さんの言ってることをやりたい形です!!


ちなみに別bookにコピーする場合は、
どういった記述にすれば良いのでしょうか?
2017/05/29(月) 20:40:52.02ID:2e2e3QA1d
>>309
A列に貼るようにするなら
"R" & n & "C2:R" & n + 699 & "C2"
に変えるだけかな
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
2017/05/29(月) 20:53:24.05ID:aGWTIe1b0
そういや昔はsetがさっぱり意味不明だったな
今は普通に使えるけど、なんだったんだろう
2017/05/29(月) 21:01:49.00ID:dfm78vLC0
>>312
ま、やらしぃ
2017/05/29(月) 21:12:47.40ID:aGWTIe1b0
>>313
sexじゃないよ><
2017/05/29(月) 21:15:07.23ID:CxTrZaFuM
>>314
今は普通に使えるsexとか
2017/05/29(月) 22:00:26.21ID:YdL4iPz30
>>311
だからfooを使うんじゃねえhg
2017/05/29(月) 22:02:15.89ID:aGWTIe1b0
>>316
理由教えてくれよ
理由がなければ使い続けるぞ。名前考えるの一番めんどくさいからな
2017/05/29(月) 22:15:25.36ID:MyydkzNO0
毛を吹き飛ばされるかんじがするんじゃないの?
2017/05/29(月) 22:23:14.52ID:EJnEHaIs0
俺ルールに違反してんだろ?スルーしろよ
2017/05/29(月) 22:31:37.50ID:nT+AAD4u0
俺ルールかっけー!
2017/05/29(月) 22:34:37.05ID:YdL4iPz30
>>317
>名前考えるの一番めんどくさいからな
代わりにわたしが考えたよ
hogeでよろ
これでもう考える必要ないよ

>>318
そうです
>>319
生理的に無理
322デフォルトの名無しさん (ワッチョイ 3bc7-DNyE)
垢版 |
2017/05/29(月) 22:38:31.20ID:A34reMmc0
ピリピリしてるハゲってなんていうか、微笑ましいよな
ハゲ好きだわーオレ、なりたくねーけど
2017/05/29(月) 22:56:21.54ID:aGWTIe1b0
>>321
hogeがfooにまさるメリットとは?
先にfooのメリットを書くと、
・文字数が少ない
です
2017/05/29(月) 23:01:15.36ID:YdL4iPz30
>>323
じゃあ f だけにして
・文字数が少ないよ
2017/05/29(月) 23:04:09.54ID:aGWTIe1b0
>>324
fooは慣例の単語
それを不必要に削ると無駄な間違いが増える
揚げ足取りしか出来ないなら使い続けるね
2017/05/29(月) 23:05:06.76ID:73+YE/SF0
そもそもhogeとfooが何なのか分からん。
C言語のスタジオえっちみたいなものですか?
2017/05/29(月) 23:06:16.47ID:YdL4iPz30
>>325
Sub foo()
としか使ってないのに、なんの間違いが増えるの?
2017/05/29(月) 23:08:06.88ID:aGWTIe1b0
>327
名前が被る
2017/05/29(月) 23:08:08.96ID:qTUj1SpC0
4〜3月の売上をまとめて円グラフで描画したいんですがどう描けばいいのかわかりません
そもそも各月の売上をまとめて円グラフで描画しようとするのが間違いでしょうか?
2017/05/29(月) 23:10:27.21ID:T7IU40/g0
ヒソヒソ( ゚д゚)ヤダァ(゚д゚ )ネェ、キイタ?( ゚д゚)オクサン(゚д゚ )アラヤダワァ ハゲテルノニExcelツカッテルンデスッテ! シツレイシチャウワネ
2017/05/29(月) 23:10:38.64ID:aGWTIe1b0
>>329
はい
扇風機なら夏、おもちゃなら必ず12月が伸びるので毎年同じ形になる円グラフは向いていません
折れ線グラフで前年度、その前の年度を重ねて昨年度対比にするとわかりやすいと思います
2017/05/29(月) 23:21:33.31ID:YdL4iPz30
>>328
被ってるのお前のあそこだろ
2017/05/29(月) 23:23:51.96ID:aGWTIe1b0
>>332
結局「なんとなく嫌い」以上の理由が一切ないの?
申し訳ないがそれでは従う気にはならないなぁ
2017/05/29(月) 23:25:30.91ID:YdL4iPz30
Sub fooをNGにした
2017/05/29(月) 23:29:17.49ID:YdL4iPz30
>>333
ところで何であなたワッチョイの後半部分ころころ変わるの?
2017/05/29(月) 23:33:39.65ID:aGWTIe1b0
>>334
だから何www

>>335
知らないよ。プロバイダはio光。別に回線を繋げなおしたりはしてないよ
2017/05/29(月) 23:55:50.00ID:YdL4iPz30
>>336
eoだろ
無駄な間違いが増えるとか言ってる割に2文字すら間違えるっていうwww
2017/05/29(月) 23:56:19.54ID:EJnEHaIs0
これからは Sub foo()って書いとけば馬鹿避けになるのね。了解!!
2017/05/29(月) 23:56:51.93ID:aGWTIe1b0
>>337
(ノ∀`)アチャー
Sub fooをNGにしてるなら>>336は本来見えないはずだけど、連鎖NGしてないの?
連鎖NGしないとNGの意味がないからさっさと設定しようね
透明あぼーんがオススメだよ
2017/05/30(火) 00:02:35.81ID:q6a+ppT10
>>338
という結論以外でなかったね
大体予想してたけど、無意味な結論にたどり着くというのも有意義なことだ
2017/05/30(火) 00:05:37.88ID:OSl0TMez0
>>339
効いてる効いてるwww
2017/05/30(火) 00:09:03.85ID:q6a+ppT10
>>341
実は>>337でひっかかることを予想して>>339>>336の直後に書いてたんだよ
ほんとは>>337の5秒後以内に書き込みたかった。リロードしてる内にめんどくさくなった
1分空くと後付っぽい?
2017/05/30(火) 00:09:14.81ID:yu6lRt6yx
>>340
同意する

ID:YdL4iPz30
さよなら。
また来世でな
2017/05/30(火) 00:11:22.34ID:OSl0TMez0
>>342
悔しいの?www
後付けかどうかより
>リロードしてる内にめんどくさくなった
お前は面倒発言ばっかりだなwww
2017/05/30(火) 00:12:08.17ID:q6a+ppT10
>>344
vbaなんて仕事が面倒くさいから習得するもんだろう
それ以外なんかあんの?
2017/05/30(火) 00:13:23.62ID:OSl0TMez0
>>345
vbaじゃなくてVBAってちゃんと大文字で書け
2017/05/30(火) 00:16:18.61ID:q6a+ppT10
>>339>>337の数秒後にレスできたら完璧だったんだけどなぁ
これはちょっと悔しかった。予想以上にレスが遅かった。見え見えの釣りに飛びつくと思ったら2分もかかるとは
俺の実力も足りんし、忍耐力も足りなかった
申し訳ない

>>346
なんのために?vbaって書いてそれで誰か損してるの?
じゃあ書いてやるよwwwVBA!VBA!満足かwww
2017/05/30(火) 00:17:08.32ID:OSl0TMez0
>>347
満足したありがとう
2017/05/30(火) 00:17:13.63ID:q6a+ppT10
だから>>347が見えるってことはNGにしてないってことなの
何回引っかかるの
2017/05/30(火) 00:45:32.08ID:RIAflGJM0
すぐ消すテストプログラムをfooとかにしたことはないなあ。
2017/05/30(火) 06:56:36.98ID:tBmyQlvfM
>>350
ほんとに一時的なら t とか x とかにしてるわ
2017/05/30(火) 08:10:45.63ID:06cdz9ADx
久々にスレ開いたらハゲが躍動してて笑った
2017/05/30(火) 08:16:18.25ID:Pn7VLVPda
なんやこのガイジは
2017/05/30(火) 08:50:49.88ID:C+7xWm9cM
>>310,311
亀レスですいません!!!
できました!!!!
ありがとうございました!!
2017/05/30(火) 12:29:57.72ID:1+UI8ryZ0
誰かアドバイスおばお願いできませんか

野球関連の仕事をしているんですが、選手成績のデータをcsvで貰っていて
それを自分の所のcsvに入力しないといけないんですが、いかんせん数が膨大でデータを
並び替えやら抽出やらで変換したいんですが、この場合に覚えた方が良いプログラムってのは
エクセルでマクロを組むってのが手っ取り早い近道なんでしょうか?
それともほかのプログラム言語を覚えてソフトを開発って手も考えた方が良いのでしょうか?
2017/05/30(火) 12:42:58.11ID:I4Et1tpDd
>>355
「自分の所」って?
一人で自由度が高いならSQLServer Express入れるのが一番だと思う。
タダだし将来性もある。難しくもない。
2017/05/30(火) 12:44:07.68ID:I4Et1tpDd
膨大っても高々数十MBのレベルでしょ?
2017/05/30(火) 13:14:12.67ID:1+UI8ryZ0
>>356
正確に言い過ぎると微妙な案件だと思って濁し気味なのですが、貰っているデータというのは
プロ野球のデータ提供サービスのBISと言われるデータ提供会社のcsvで
『自分』というのは自分の会社で使っている野球中継用のソフトとなります。
(野球中継用のソフトもcsvでデータを賄っているのですが、当然フォーマットが違うので
貰ったデータをもとに普段は手入力しています。)

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

本来なら仕様を出して、プログラム作ってもらえば済むことなのかもしれませんが
自分の所で使っている野球ソフトも仕様変更でcsvの項目順番とかずれる可能性もありますし、
提供してもらっているデータも仕様変更とかで順番ずれたりした時に毎回発注とかしたくないので
急ぎではないし自分で作れる様になりたいなと思って相談させてもらいました。
2017/05/30(火) 13:29:23.00ID:06zvEzNR0
必要なデータ抽出して、並び替えて、別ソフト用のCSVに変換するってことかな?
エクセルでもできるだろうけど、自分ならC#かPowerShellでつくるな
エクセルを介す必要性がないからわざわざ使いにくくてめんどくさいVBAでやることもない
初心者にはちょうどいいお題だと思うからプログラム作ってみたらいいと思うよ
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' にアクセスできません。
2017/05/30(火) 14:01:00.02ID:YF+PwbQtH
>>358
Excel + VBAでいいんじゃない?

>>360
これ?
http://darumaexcel.uijin.com/info/pause.html
2017/05/30(火) 14:21:24.38ID:C+7xWm9cM
>>361
ありがとうございます!
ただ直しても同じエラー分が出てしまいます。。。
2017/05/30(火) 14:27:48.25ID:1szQs/d90
>>358
AccessなりSQL Serverなりのデータベースソフトでcsvのインポートを試行錯誤してみればすぐに出来るようになる。
2017/05/30(火) 14:43:31.52ID:YF+PwbQtH
>>362
SaveAs行の前に、mySheet.Selectを追加してみて
2017/05/30(火) 14:53:27.61ID:C+7xWm9cM
>>364
できないですね、、、

実行時エラー '1004':

‘選択中のシート名.xlsx' にアクセスできません。

と表示されます。
2017/05/30(火) 15:14:30.20ID:EOieG+pf0
>>355
perl PHP 辺りが簡単だし便利なモジュールも沢山ある
2017/05/30(火) 15:19:43.12ID:EOieG+pf0
>>355
sqlite3と
firefoxのsqlite3用アドインとかと
SQL言語を使う方法もある
2017/05/30(火) 15:35:45.48ID:YF+PwbQtH
>>365
Excelのバグですかね。
2017/05/30(火) 15:40:39.49ID:oatsCbfo0
単なる当てずっぽうでCSVファイル作成前に同名のcsvファイルが既にあるんならそれを消すなりリネームするなりしてるか?
2017/05/30(火) 15:44:54.03ID:fdB84jON0
数MB程度のテキストデータならピボットでいいと思うが
2017/05/30(火) 16:21:56.98ID:1+UI8ryZ0
みなさん沢山のアドバイスありがとうございます。
言語的にはどれとってもほぼ確実にできるけど、道が沢山ありすぎる状態なんですね。
関数電卓のBASIC程度しかかじっていない軟弱な頭にはどれがとっかかりやすいモノなんでしょうか・・・
2017/05/30(火) 16:40:48.70ID:C+7xWm9cM
>>369
空フォルダなのでファイルは存在してないんですよね、、、
2017/05/30(火) 18:10:35.56ID:YF+PwbQtH
>>371
Excelだったらすぐに試せるだろ
すぐやれ
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がいい
諦めなければ絶対に完成する。諦めるな
わからなくなったらいつでもおいで
375デフォルトの名無しさん (ワッチョイ 3bc7-x63M)
垢版 |
2017/05/30(火) 19:22:34.02ID:Fp/ortWi0
>>374
> 諦めなければ絶対に完成する。諦めるな
仕事でやってる人には最低のアドバイスだな

ニートのお前とは違うんだよ
仕事ってのは限られた時間の中で最大限の結果を求められる
少しでも人の役に立ちたい気持ちはわからないでもないけど
それ以前に自分がニートだっていう事実を忘れちゃいかんな
お前が本当に誰かの役に立ちたいのだったら
まず自分の身をわきまえ
そして相手の立場を理解するって事が何よりも大切な事だ
よく覚えておけ
2017/05/30(火) 19:26:38.95ID:yu6lRt6yx
>>375
まじでそう思う。


>>375
反省して
ソリューションはどこに記載?
2017/05/30(火) 19:47:55.75ID:q6a+ppT10
>>375
じゃあ諦めて手作業で延々と作業しろってことか
効率的だな〜
378デフォルトの名無しさん (ワッチョイ 3bc7-x63M)
垢版 |
2017/05/30(火) 20:01:37.18ID:Fp/ortWi0
>>377
少しはわかったみたいだな
効率>>>>>>>>>>>>>>自己満足
仕事ってそういうもんなんだよ
2017/05/30(火) 20:09:38.66ID:1szQs/d90
まぁ実際、出来るかどうか分からないVBAよりも、手作業で確実に済ませるという場面は仕事してると出てくるな。
ただ件の話はルーチン業務のマクロ化についての話だから、多少時間が掛かっても挑戦する価値はある。

しかしながらごく一般的な悩みで、それを解決する手段が用意されているのでVBAに拘る必要がないのも事実。
2017/05/30(火) 20:11:24.56ID:q6a+ppT10
マクロの腕上げてどんどん効率化したほうがいいと思うけどねぇ
会社行ってもすること無いから出勤時間減らしたわ
2017/05/30(火) 20:52:10.68ID:1+UI8ryZ0
ありがとうございます。
取りあえずエクセル環境で動くとどの現場でも楽になるので
エクセルマクロでどうにか作ってみます。また、来ざる得なく成る様な気がするので
その時にまた相談に乗ってください。ありがとうございました。
2017/05/30(火) 21:03:04.18ID:0IDFiFSH0
Excelが必要でないならVBAよりはVBSscriptかな
VBScriptはExcel VBAにほぼそのまま持っていける
VBScriptやVBA扱いに慣れたらpowershell
いきなりpowershellでもいいけど前提知識が割と必要になる
powershellの良い入門書って見たことないし
2017/05/30(火) 21:48:33.00ID:RIAflGJM0
>>378
余裕がどれくらいあるかによるけどね
2017/05/30(火) 21:50:18.98ID:Upz1NUPj0
>>374
まだ懲りずにfoo使ってるのニートさん
あ、NGしてないのバレちゃうwww
385デフォルトの名無しさん (ワッチョイ 9faa-w9y6)
垢版 |
2017/05/30(火) 21:56:44.25ID:GySYMHzV0
>>379
ウチの会社の場合、マクロ書いてると「そんな暇があったら直接打ったらいいじゃん」と言われる。バカは手作業こそ
仕事だと思い込むもんなんだよな。
2017/05/30(火) 22:01:43.70ID:Upz1NUPj0
>>360
- ActiveWorkbook.Path & "\" & mySheet.Name & ".csv", _
+ ActiveWorkbook.Path & ":" & mySheet.Name & ".csv", _

こうじゃないかな?
2017/05/30(火) 22:03:50.22ID:Upz1NUPj0
>>360
Sub Example
MsgBox Application.PathSeparator
End Sub

これ実行すると多分¥じゃなくて:が表示されるはず
2017/05/30(火) 22:41:04.16ID:b4dt9kdA0
>>385
その場で言えよw
2017/05/30(火) 22:59:03.08ID:FYFuo4390
セルの書式を保持したまま変数に格納する方法ってありますか?
文字の一部分だけ太字とか、嫌がらせみたいなデータがあるんです。
Copy Destinationで別のシートに格納しろ、とかいうのはなしで。
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
2017/05/30(火) 23:29:44.49ID:KvP+eqH30
>>389
オブジェクトの変数へのコピーができないから無理。
見えないシートやワークブックを一時的に作って、Range.Copy じゃだめなん?
392デフォルトの名無しさん (ワッチョイ 9faa-w9y6)
垢版 |
2017/05/30(火) 23:58:44.86ID:GySYMHzV0
>>388
ああ、言ってる。でも延々と手作業でやって残業時間自慢してるヤツが殆どw
393デフォルトの名無しさん (アウアウイー Sa0f-MJsu)
垢版 |
2017/05/31(水) 02:10:54.01ID:LgGj7rqFa
VBA初心者です。
今データの分析をしてるのですが色々な関数を使ってるシートをとりあえず10000くらいまでデータを作っておいてピポットテーブルで分析しています。
それだとデータが重くなりますが入力されたデータに行をオートフィルで追加することはできますか?
例えば
A列に日付 B列に店名 C列に商品名 D列に個数
を入力していて
列やG列に日付の関数で月やH列にVLOOKUP関数で店舗の種類の仕分けをしています
データを入力した行に関数が自動で追加できるようにするにはどうしたらいいでしょうか?
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
2017/05/31(水) 05:55:04.74ID:5otW7Lci0
Excelの機能でやった方が良さそうに見えちゃうな
月で集計は列足さずにピボット側で日付をグループ化すればいいし
範囲の拡張はデータ範囲をテーブルにしておけばいいだけだし

VBAスレだしVBAでやりたいんならまあいいか
2017/05/31(水) 06:30:09.92ID:u3wQ/TLpM
補助列作っとくのが最善だと思う
次点でピボットの集計フィールド追加
2017/05/31(水) 07:14:56.30ID:CCxYhvtc0
>データを入力した行に関数が自動で追加
したいだけなら、テーブルにすればいいのでは

Excelのテーブル機能の使い方まとめ
https://www.forguncy.com/blog/20161014_table
>一覧表の最終行の次の行にデータを入力すると、その上の行に入っている書式設定が自動で反映されます。 計算式も自動で反映します。
398デフォルトの名無しさん (アウアウイー Sa0f-MJsu)
垢版 |
2017/05/31(水) 11:34:55.36ID:2HZ6ZV5Na
イメージと
2017/05/31(水) 14:19:26.52ID:O9qNIaK10
>>360だけど未だに出来ない、アドバイスいただいたものも全てダメしたけどダメ。
200枚ものシートをいちいち手作業でやらないといけないのか、、、
2017/05/31(水) 14:38:23.24ID:vzRkDbrnH
>>399
Excelのバグじゃないというのは確認したか?
アプリケーションの更新とかが出てたりしないか?
2017/05/31(水) 14:40:32.00ID:O9qNIaK10
>>400
エクセルのバグ確認の仕方を知らないので不十分かもしれないですが、
アプリケーションは最新なので、問題無いとおもいます。
2017/05/31(水) 14:44:29.80ID:O9qNIaK10
>>360です
お騒がせしました、これでできたっぽい。
http://excel-magic.com/post-24/
<font color>のどこを修正すれば良いのか分からないので、ひとまず回して見ましたが途中で止めてCSVを200ファイルほど吐き出せました!


これを機会にVBAをちゃんと勉強しようと思いました、、、
2017/05/31(水) 14:44:47.62ID:vzRkDbrnH
>>401
じゃ、マクロを記録しつつシートをCSVで保存してみて、生成されたコードを観察してみるとか。

今回1度きりの作業だったらあきらめて手作業でエクスポートするか、それが嫌なら他のQAサイトで
質問するとか。
2017/05/31(水) 14:50:06.21ID:vzRkDbrnH
>>402
マジか・・・
何がいけなかったんだろうか・・・
2017/05/31(水) 15:23:51.75ID:V02iWLllM
>>402
うまくいきそうで良かった。
リンク先を見てる感じ、
ActiveWindow.SelectedSheets
ActiveWorkbook.Path
のどっちかがcsvを保存した時点でおかしくなってるのかなと感じる。

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

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

タグの件もありがとうございました!
2017/05/31(水) 18:16:14.53ID:EYxbNvW1a
>>355
エクセルvba以外を選べる環境があるなら選ぶ必然がないけどな
初心者向きに見えて初心者向きじゃないから
といまさら
2017/05/31(水) 18:54:55.73ID:lGWBXgBz0
>初心者向きに見えて初心者向きじゃない
分かる
2017/05/31(水) 19:38:54.48ID:jM8viQpZx
>>408
VBAしかやったことないから他の言語との比較ができないんだけど、一体どのあたりが初心者向きじゃないと感じるんだ?
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ライクとかええやろ、など他にも色々あるけど
2017/05/31(水) 20:16:19.68ID:oF6IsnwB0
違う言語に対応できない初心者の愚痴で草

とりあえず何にでも文句言ってんだろうなって印象
2017/05/31(水) 20:43:19.50ID:487dhIIWM
なんか大部分がVBAじゃなくてエクセルの仕様な気が。
2017/05/31(水) 20:46:24.66ID:JJWe2xBC0
実際そこだと思う
エクセルに拘る理由が無いならVBAに拘る理由もないし
414デフォルトの名無しさん (ワッチョイ 3bc7-x63M)
垢版 |
2017/05/31(水) 20:49:37.96ID:ac0fXejp0
>>410
だいたいエクセルも知らんやつがなんでいきなりエクセルマクロやろうとしてんだよw

「エクセルvbaでプログラミングを学ぼう」みたいな風潮が諸悪の根源なんだよな
そういう意味では>>407の言うことにも一理あるわw
2017/05/31(水) 20:57:43.48ID:EYxbNvW1a
初心者向きやりたいならVB.netでもやりゃいいのよ

プログラム言語としては不親切極まりないのは間違いないだろ、VBAは
機能拡張も期待できないし
敷居は低いが不親切
2017/05/31(水) 21:14:12.59ID:Nua5RAmq0
プログラミングなんて、変に凝らなきゃそこそこの処理ロジックは誰でも作れるよ。

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

>>414
エクセルもそもそも自由度が高すぎる。テーブルで大分機能的には落ち着いたけど、肝心のテーブルが使われていない
とりあえずセルの結合だけでも廃止してほしい
2017/05/31(水) 21:42:12.36ID:YZgbxTyGM
>>417
それはエクセルが優れてるからというより、ワードが糞過ぎるからワードの守備範囲までエクセルでカバーせざるを得ないだけだろう
2017/05/31(水) 22:00:18.50ID:lGWBXgBz0
ワードなぁ・・・ワードはずっと扱ってないよ。いくつかの会社の人に聞いたけど、やっぱりワードは糞

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

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

とにかく、作業中のデータとプリントアウト等の見せるデータ、これを抜本的に乖離しないと話にならない
とにかくセル結合が最初だ。
2017/05/31(水) 22:24:29.36ID:Nua5RAmq0
>>421
見せるためのデータをまた入力にするなんてバカなことをしなければ別にいいだろ
セル結合したって
2017/05/31(水) 22:28:56.46ID:lGWBXgBz0
>>422
>見せるためのデータをまた入力にするなんてバカなこと
中小企業では普通にある。
もうええ、これに関しては突っ込むな時間の無駄だ
2017/05/31(水) 22:55:16.15ID:xZexTgw80
>>391
>>390
諦めてCopy Destinationします。
ありがとうございました。
2017/05/31(水) 22:55:23.97ID:Nua5RAmq0
そんな感じ
426デフォルトの名無しさん (スプッッ Sdbf-uKyG)
垢版 |
2017/05/31(水) 23:56:16.90ID:N23t2UmQd
画面に表示されてるとおり印刷してくれ
俺の要望はそれだけだ
2017/06/01(木) 00:07:36.27ID:xwlKrZPp0
プリントスクリーンボタン
428デフォルトの名無しさん (ワッチョイ ddba-+vtu)
垢版 |
2017/06/01(木) 00:30:28.19ID:3kmI9vZh0
その手があったか!
2017/06/01(木) 00:37:46.47ID:7jSAnpp50
>>402
お前毎回人の話聞かないクズなのな
2017/06/01(木) 00:38:42.21ID:7jSAnpp50
>>405
セパレータの問題だって
2017/06/01(木) 00:39:34.14ID:xwlKrZPp0
_人人人人人人人人_
> 突然の亀レス <
 ̄Y^Y^Y^Y^Y^Y^Y ̄
2017/06/01(木) 00:47:31.72ID:7jSAnpp50
>>431
4b19=ef8eだった
2017/06/01(木) 00:47:35.28ID:xEezSy0Q0
突然セパレータの話を持ち出しておいて「だって」とはwww
2017/06/01(木) 00:50:32.04ID:7jSAnpp50
>>433
mac版で:じゃなくて\で動くの?w
ソースは?w
2017/06/01(木) 00:57:03.34ID:7jSAnpp50
>>431
>>433
ワッチョイの仕様変わったの?
ID:lGWBXgBz0この人UA部分がころころ変わってるんだけど
デフォルトの名無しさん (ワッチョイ ef8e-9J/J)
デフォルトの名無しさん (ワッチョイ ef8e-kjbA)
デフォルトの名無しさん (ワッチョイ ef8e-c3sC)
デフォルトの名無しさん (ワッチョイ ef8e-h4wC)
2017/06/01(木) 03:36:38.16ID:DLazu0lV0
>>410
RangeをSelectする必要なんて普通無いだろう。
Selectする場合はSheetをActiveにするのも自然だろ。

何かおかしなこと言ってない?
2017/06/01(木) 05:02:21.03ID:AjLNIuL80
>>436
おもた
“見せる”時以外使わない
2017/06/01(木) 07:00:00.45ID:YbQp1MN1M
>>436
select しないといろんな操作ができないって思ってるのかも
マクロの自動記録で覚えた奴にありがち
2017/06/01(木) 07:39:25.88ID:xwlKrZPp0
>>436
あんまり無いだろうね。これは俺の好み
Workbook_BeforeSaveで全sheetのcells(1,1)か、最終行に選択セルを持って行くことがよくあるんだ
2017/06/01(木) 07:58:39.77ID:J+CWW2790
取り敢えずのapplication.goto
2017/06/01(木) 08:15:30.82ID:Vftk4o9ex
わざわざシートのActivate/Selectメソッド使わなくても、シート.Range(Index).Selectで終わる話だろ
そんなにGlobal.Range使いたいんか?
Global.Rangeなんてほぼ使わないぞ俺は、コードの可読性下がるから
2017/06/01(木) 08:55:51.01ID:mJLzyhAZx
ごとーーー!
2017/06/01(木) 08:58:27.48ID:VCI0My45d
シートがアクティブになってないとセルのselectできない話でしょ
2017/06/01(木) 10:28:17.60ID:d3jolD7CM
>>434
修正したけど出来ないってレスしてんじゃん
ちゃんと読んでからレスしなよwww
2017/06/01(木) 18:30:37.54ID:N6tgl860x
>>443
>>410は「シートをselectするかactivateしないと、rangeがselectできない」って書いてるよな
シートがアクティブになってないとRange.Selectが使えないっていう話をしてるわけじゃなくて、
シート.Selectメソッドかシート.Activateメソッドを使ってシートをActiveにしないとRange.Selectが使えないっていう嘘を言ってるんだぞ
2017/06/01(木) 20:31:16.93ID:J+CWW2790
>>445
念のために聞いておくが、何が嘘で、正解は何なのか教えてくれないか
447デフォルトの名無しさん (ワッチョイ 09c7-xxAH)
垢版 |
2017/06/01(木) 20:53:27.07ID:gEanndL50
どっちにしろSelectするかActivateすれば使えるんだろ?
たいした問題じゃねえよそんなの
2017/06/01(木) 22:54:42.48ID:DaNoSOMR0
文法的に納得いかないけど上手くいく不思議
Set Newbook = Worksheets.Add
2017/06/01(木) 23:25:19.57ID:4Mx8xPkv0
むしろ参照を返さないAddの方が少数派では
2017/06/01(木) 23:30:05.12ID:0CdKwKMK0
>>441
そうですよね
http://i.imgur.com/c7ccxuI.png
2017/06/01(木) 23:30:45.71ID:xwlKrZPp0
>>448
どう納得行かないのか分からん
2017/06/01(木) 23:32:46.29ID:DaNoSOMR0
>>451
代入してんのか?実行してんのか?っていう。
2017/06/01(木) 23:33:10.29ID:DaNoSOMR0
Setだから代入ではないか。
2017/06/01(木) 23:34:35.43ID:xwlKrZPp0
>>452
戻り値を代入してる。特に違和感がないんだが
2017/06/01(木) 23:37:20.08ID:JcXv0anO0
むしろ NewBook と言う変数名の方に違和感があるんだが...
2017/06/01(木) 23:47:19.51ID:L+dplH4ca
個人的にはworksheet.copyが値返してくれないほうが納得行かない
2017/06/02(金) 00:18:14.15ID:WCh1iO0Y0
>>456
その気持ちはよくわかる
その行を実行した直後はどの変数にも入っていないシートだからなんか不安になる

どうしても不安なときは先に新規ブック作っといてそこをコピー先にしてるけどね
それはそれで無駄なことしてんなあという気になる
2017/06/02(金) 06:38:31.89ID:tmNEumAvx
>>448
機能とは関係ない話だけど変数名はNewBookじゃなくてNewSheetにした方がニュアンス的に正しくない?
2017/06/02(金) 06:52:23.32ID:MGPR/erb0
>>456
機能的に代替出来る操作がある場合は値返さないものが多い気がする。
たぶんユーザー操作をマクロ化する為だけのメソッドは返さないんだと思う。
2017/06/02(金) 11:33:41.01ID:8fOMtk3c0
>>444
おい間抜け、↓この事だろ?こいつは嘘だ
>>399
>アドバイスいただいたものも全てダメしたけどダメ。

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

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

余談だけど、foo野郎との質問野郎はなぜかセットで来る
2017/06/02(金) 11:39:22.60ID:EMy/L9NX0
>>460
義務じゃないんだから、嫌ならもう来なくていよ
2017/06/02(金) 12:18:35.67ID:8fOMtk3c0
>>461
またそうやって話逸らして逃げるんだから
2017/06/02(金) 12:26:31.41ID:I1EQuNZXM
ある数値に対して指数表記の有理数と指数を楽に拾いたいときって、format関数を使うのがいいですかね?
他に楽な方法ありますか?
2017/06/02(金) 14:32:15.95ID:zUUtTsys0
どんな方法があるにせよ、お前はそれで納得できずもっと他にないの?って
聞き続けるんだろ? >>463
2017/06/02(金) 17:47:56.11ID:I1EQuNZXM
書いてたら泥沼化してたんだけど、結構すっきり書けました。

指数=cint(split(format(数値,"0e+0"),"e")(1))
有理数=数値*0.1^指数
2017/06/02(金) 21:26:05.82ID:rlzCeZS80
エクセルの複数のセルの外枠に罫線を引きたいのですが、アプリケーション定義なんたらのエラーが出ます。
workbooks(********.***).worksheets(*****).range(cells(StartRow,StartCol),cells(endrow,endocol).borderaround
でstartrow startcol endrow endcolは変数です

どこがおかしいでしょうか?
2017/06/02(金) 21:45:23.47ID:Zr32bafNM
>>466
cellsがActiveSheetのセルなのでエラーになる。
↓のような感じでどうぞ。

with workbooks(********.***).worksheets(*****)
.range(.cells(StartRow,StartCol), .cells(endrow,endocol).borderaround
end with
2017/06/02(金) 22:52:19.74ID:rlzCeZS80
>>467 ありがとう。 そういうことだったんですね。
2017/06/03(土) 17:22:19.30ID:u7+4M4Ru0
>>468
初心者が一番嵌まる奴だな。
470デフォルトの名無しさん (ワッチョイ 66e2-mhqb)
垢版 |
2017/06/03(土) 21:54:33.85ID:4eBaDiw20
クラスモジュールってクラス定義してインスタンス化できるってこと?マルチスレッド可能なの?
オブジェクト指向?
2017/06/03(土) 22:20:24.58ID:KC92KqWf0
>>470
>クラス定義してインスタンス化できるってこと?
そう
>マルチスレッド可能なの?
無理
2017/06/03(土) 22:30:10.37ID:aDOlFL7Wx
>>470
オブジェクト指向は中途半端なとこまでしかできない
マルチスレッドは無理
2017/06/03(土) 22:32:25.28ID:KC92KqWf0
エクセルvbaの場合エクセル自体がメインのオブジェクトだから、そんなにclassにこだわることもないけどね
エクセルvbaでゲーム作ってる人は知らん
474デフォルトの名無しさん (ワッチョイ 66e2-mhqb)
垢版 |
2017/06/03(土) 22:56:31.41ID:4eBaDiw20
>>471
>>472
プロパティくらいなのか
サンキュ
2017/06/03(土) 23:02:58.42ID:aDOlFL7Wx
>>474
カスタムイベント実装、インターフェース継承くらいなら出来る
ただ引数付きコンストラクタの作成やクラス継承・オーバーロードが出来ない
2017/06/03(土) 23:49:37.74ID:KC92KqWf0
vbaって継承できたのか、知らなかった・・・
2017/06/03(土) 23:53:01.27ID:6M92ecdj0
>>475
C++でそれらを使ってた時は
無くてもいいかなあとか思ってたけど
VBA始めたらありがたさがわかった
478デフォルトの名無しさん (ワッチョイ 09c7-hSUX)
垢版 |
2017/06/04(日) 00:02:03.04ID:SMq8qLM70
>>477
C++でわからなかったんだからわかってないよそれw
2017/06/04(日) 00:14:43.34ID:QJwsDnIt0
>>478
いや、普通に使ってるものに対して
いちいちありがたみなんて感じないだろ?
あるのが当然なんだから
正直lamdaもほしい
480デフォルトの名無しさん (ワッチョイ 09c7-xxAH)
垢版 |
2017/06/04(日) 00:23:32.29ID:SMq8qLM70
>>479
そうか?オレ毎日納豆食うけど食うたびに美味しいぜ?
2017/06/04(日) 00:46:27.14ID:TICwxklg0
無くてもいいかなあ
とわざわざ考えるとは疑問
2017/06/04(日) 00:55:58.63ID:/9No1Vdv0
C++の共用体はこんなもん使うか?と思ったけど、使うべき場面が来たら普通に使う
そういうもんだった
2017/06/04(日) 01:47:41.87ID:ObX9l6mb0
ありとあらゆる機能を使って実装するっていう状況自体少ないだろうしな。
2017/06/04(日) 08:43:15.60ID:/sAoF2vM0
マルチスレッドが無理って、
2つのブックでDoEventsして、
2つ実行したらおかしくなるってこと?
2017/06/04(日) 11:38:52.57ID:ParPgGiC0
>>484
それはマルチスレッドじゃなくね?
2017/06/04(日) 11:40:48.80ID:NZhuuX9z0
なんやかんやクラスは便利
データまとめるのにはよく使うわ
2017/06/04(日) 12:00:24.95ID:I9SwB1IFx
>>486
クラスでデータまとめるって、具体的にはどういう場面で使ってる?
ワークシート使うより便利?
2017/06/04(日) 12:55:28.25ID:NZhuuX9z0
>>487
シートにあるやつを一回配列かコレクションか(俺はやらないけどレコードセットでもいい)にクラスん中でまとめるのよ
メインコードにリストに入れる処理入れるとごちゃごちゃするからさ
2017/06/04(日) 13:22:31.55ID:tlzlLDo0x
>>488
レスありがとう
なるほどね
複数のレコードに対して同じ処理を繰り返す必要がある場合には便利そう
2017/06/04(日) 17:48:58.65ID:1s3T2QVw0
>>484
全然ちがう。
win32API使って別スレッド作る方法はあるし可能だよ。
けどExcelVBAでそれをやると物凄い不安定になる。
自分が試した感触ではRangeとかCellとかのExcelのオブジェクト触った瞬間にExcelごと落ちる感じ。

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

基本、やめた方が良い。
2017/06/05(月) 01:20:19.17ID:oPyz6kCkd
別処理をWord使って処理させようとしてもOffice全体で連携かかってるみたいでうまくいかなかったことがある
変なとこで作り込まれていてやりたいようにできないんだよな
2017/06/05(月) 08:37:00.53ID:nJSdLO+iM
元々マルチスレッドに対応してないものを無理矢理動かそうとして文句言われてもなぁ...
2017/06/05(月) 08:43:10.54ID:+xVCJOY00
文句じゃなくね
2017/06/05(月) 08:55:26.49ID:btJTHdak0
想定外の使い方ができないぞ!ってのは文句じゃないのか
2017/06/05(月) 09:24:51.60ID:Sx3XxldLd
>>490
ほほ同じ経験がある。
自分の場合は処理が終了したデータをDBにINSERTするところは上手くマルチスレッド化できた。
待ち合わせが必要ないパターンだったし。

COMそのものがマルチスレッドだめなんかね?
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
2017/06/05(月) 11:54:25.53ID:Sx3XxldLd
>>496
プライマリスレッドからでもダメなこと多かったよ。
2017/06/05(月) 11:59:36.00ID:bwrXOc4qH
>>497
> プライマリスレッドからでもダメなこと多かったよ。
どの言語で?
2017/06/05(月) 12:54:03.39ID:cR57/ADJM
>>495
> COMそのものがマルチスレッドだめなんかね?
COM 自体はアパートメントモデルをちゃんと設定すればマルチスレッドでも動く
http://eternalwindows.jp/com/apartment/apartment01.html
個々のオブジェクトが正しく動作するかどうかはまた別の話
500デフォルトの名無しさん (ササクッテロラ Sp3d-mjoq)
垢版 |
2017/06/05(月) 23:38:18.98ID:bd1ggU41p
マクロを作成は通常MODULEですが、
Sheet1やThisworkbookに記入するのはどういうときでしょうか。済みません。
2017/06/06(火) 00:15:48.16ID:d6CS0Xy90
なんでVBAでマルチスレッドにするの
2017/06/06(火) 04:12:26.65ID:NdFOOmMr0
>>501
要望として有るのは待ち状態の時に先に進めるためとか。

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

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

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

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

でも動いても趣味のプログラム以外じゃ危なっかしくて使えない。
マルチプロセスで代替えできるものも多いから無理する必要もない。
2017/06/06(火) 04:20:46.72ID:LBKXQv4G0
>>500

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

>Thisworkbook

ブックの起動時や終了時にDBとの接続処理や切断処理を入れてる
2017/06/06(火) 07:54:06.29ID:xLIl+dL/0
sheetやbookに書くのはそのオブジェクトのイベント
使い捨ての整形マクロなんかはsheetに書いてもいいけど、標準モジュールに書いたほうベター
2017/06/06(火) 09:05:13.69ID:YhE+Nuz8x
>>500
シートやブックのイベントを使用するためだよ
2017/06/06(火) 20:09:22.46ID:Uy4z/eLw0
vlookup等を使用しているとソルバーが使えないらしいのでVBAで作ろうと思っていますが、定番というか定石というか、参考になるサイトややり方等はありますか?
言ってて抽象的だなとは思ってはいますが、どうすべきなのか判らず…よろしくお願いします。
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が変わっちゃったら嫌じゃないですか?
508デフォルトの名無しさん (ササクッテロラ Sp3d-mjoq)
垢版 |
2017/06/06(火) 21:56:25.64ID:vXDpJbBwp
教えてください。

マクロでハイパーリンクを実行したいのですが、セルにリンクを貼る必要がない、ただマクロから実行するだけというとき、どう書けば良いのでしょうか。
2017/06/06(火) 22:06:15.37ID:XIE7cY+50
>>508
これ?

Sub foo()
ThisWorkbook.FollowHyperlink "http://www.google.co.jp/";
End Sub
2017/06/06(火) 22:14:17.43ID:efHThVDq0
そっち?

ハイパーリンクじゃなきゃダメなのか、
飛べば何でもいいのか。

Dim Ie As InternetExplorer
Set Ie = CreateObject("InternetExplorer.Application")
Ie.Visible = True
Ie.Navigate "http://www.google.co.jp/";
2017/06/06(火) 22:21:53.88ID:efHThVDq0
↑Microsoft Internet Controlsを参照設定しないとだめだわ。
2017/06/06(火) 22:53:35.96ID:xLIl+dL/0
>>510
IEではなく、chromeインスタンスを作ることって出来ますか?
2017/06/06(火) 23:09:15.48ID:NPrNQzK4x
Dim objShell as Object
Set objShell = CreateObject(“WScript.Shell”)
GC.Run (“chrome.exe -url ” & アクセスしたいページのアドレス)
2017/06/06(火) 23:10:19.79ID:NPrNQzK4x
間違えたので

Dim objShell as Object
Set objShell = CreateObject(“WScript.Shell”)
objShell.Run (“chrome.exe -url ” & アクセスしたいページのアドレス)
2017/06/07(水) 00:14:23.17ID:iB9NoSxCd
>>507
activesheetがどこだろうとsheetモジュールに書いてんなら関係なかんべ

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

DOMの勉強するよろし。
2017/06/08(木) 07:40:44.87ID:fJC45ZIB0
>>517
パット見たけどかなりめんどくさそう
キーボードマクロの方が良いと思う
2017/06/08(木) 15:33:04.11ID:1DKX/Vru0
>>519
キーボードマクロは危険だよ。
動いてる最中にマウスクリックとかすると場合により大変なことになる。

操作は難しくないけどキャプチャをどうするかで難しくなるかも。
自分だったら難しい方法を選択するので。
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になる」
というのは仕様なのでしょうか?
522デフォルトの名無しさん (ワッチョイ dd8b-Loth)
垢版 |
2017/06/08(木) 20:40:46.12ID:TyBSFeDZ0
仕様ではないけど現実はそうなる
2017/06/08(木) 20:45:04.87ID:xavUYSpk0
ループ変数が指定の範囲を「越えたら」ループを終了する、というのがForの仕様
2017/06/08(木) 20:46:19.32ID:x3QO3rgpx
>>521
xlupの値を使えばいいでしょ
525デフォルトの名無しさん (ワッチョイ dd8b-Loth)
垢版 |
2017/06/08(木) 20:46:39.16ID:TyBSFeDZ0
ループ変数が指定の範囲の「間」ループを繰替えす、というのがForの仕様
2017/06/08(木) 20:53:59.27ID:ajpliBtkx
>>522
仕様だよ
For Nextはカウンタ変数の値が引数endを超過した(または引数endの値未満になった)と判断したときにループ終了になる
Step1でループさせた場合、カウンタ変数がend+1の値になったときに次の処理に移るので、ループを抜けた後のカウンタ変数は当然end+1になる
2017/06/08(木) 20:55:48.28ID:HogApBmCa
お答えありがとうございます

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

>>524
ごり押しでi=i-1とするつもりでしたが断然スマートですね
というか、最終行取得のCells(Rows.Count, 1).End(xlUp).Rowも定型文のように覚えていたので、
きちんと構文の意味と動作を調べ直します
2017/06/08(木) 20:59:19.38ID:x3QO3rgpx
>>527
へっ
良いってことよ!
達者でな
2017/06/08(木) 21:43:39.15ID:ZLqPeRaK0
i = 1
Do While i <= 11
i = i + 1
Loop

みたいなもんだね。
あと言語によってはループ変数(i)がfor文の中だけのスコープで
for文を抜けたら破棄されたりするから、ループ変数はループの中だけで
使う癖をつけておいた方が無難。
2017/06/08(木) 21:44:40.10ID:/ZCsTOrv0
別ブックのデータを自動で取り込むプログラムを書いていて思うんだけど、
そういうのが簡単に出来るクラスとかないの?
2017/06/08(木) 21:47:25.81ID:XdC3vCwF0
>>530
Workbooks.Open
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で書くのと大差なくなる気がする。
2017/06/08(木) 22:01:50.62ID:/ZCsTOrv0
>>531
そうだけどさ、
自身のファイルを開いてないか?
開いたファイルにフィルタがかかってないか?
開こうとしているファイルは既に開いてないか?
xlsかcsvか?
って、色々チェックするの面倒じゃん。
2017/06/08(木) 22:16:37.58ID:fJC45ZIB0
作ればいいんじゃないの
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

こんなんだろ。大した手間でもないと思うんだけど。
俺はモジュール一個にワークブック、ワークシート、セルの各種チェック含めた操作関係まとめてたけど、
二十個くらいにしかならなかったぞ。
536デフォルトの名無しさん (ワッチョイ dd8b-Kuea)
垢版 |
2017/06/08(木) 23:01:17.07ID:TyBSFeDZ0
>>535
まあそんなもんなら大した手間じゃないよな
それじゃ全然ダメだけど禿
2017/06/08(木) 23:08:59.28ID:fJC45ZIB0
Function foo1(FilePath As String) As Workbook
on error resume next
この魔法の一行で全て解決
2017/06/08(木) 23:28:03.30ID:XdC3vCwF0
On Errorだと原因が分からないからなぁ。
単純なマクロならそれでもいいんだけど。
2017/06/08(木) 23:37:56.75ID:ZLqPeRaK0
>>535
> If x.FullName = FilePath Then Set foo1 = x: Exit For
これ通るのか…知らなかった…
2017/06/08(木) 23:41:02.10ID:q8X0hO01M
application.runをaccessから呼んだんだけど、
activateしないと失敗してしまう。

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

おかげで処理に失敗するので、何とかならないだろうか。
2017/06/08(木) 23:47:27.35ID:XdC3vCwF0
>>539
コロンが改行の代わりになるから、コロンで区切りさえすればだいたいのものは通るぞ。

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

あとはExcelで直接DBを開いてSQLで制御するという地獄の選択肢もあるぞ。
2017/06/09(金) 03:33:36.27ID:Vt79/8Sl0
アクセル
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
2017/06/09(金) 07:54:37.94ID:SNIZYBKJM
>>542
なんかふと笑った
2017/06/09(金) 11:39:02.72ID:MW/jqskx0
excelで直接DBに接続してSQLの何が地獄なんだろう…
2017/06/09(金) 12:02:22.23ID:KaOScHzEx
>>545
説明できるほうに100億ドル










ただしジンバブエの
2017/06/09(金) 12:08:37.61ID:6C6XVn6H0
>>545
Accessと文法が違う
使えない命令がある
エラーが返ってこない
データ型の指定が出来ない

過去スレとかで何度も出たけど、だいたいこの辺の理由で地獄
2017/06/09(金) 12:17:15.07ID:lNiKtgPwM
>>546
ジンバブエドルってもう回収済みだから割と価値高いよな
2017/06/09(金) 12:23:12.97ID:6C6XVn6H0
今の1ジンバブエドル=0.3円らしいから、100億ジンバブエドル=30億円かな
2017/06/09(金) 12:48:37.15ID:8EXeePojM
>>541
access起点で作ってるらもう駄目だー。
551デフォルトの名無しさん (ブーイモ MMa9-+CHm)
垢版 |
2017/06/09(金) 12:52:52.49ID:jWLsfRM+M
素人にVBAを教えるとき
いきなりRange()とするんじゃなく

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

って最初から教えるべき?
それとも慣れてから教えるべき?
2017/06/09(金) 14:03:55.81ID:DLo2rfbX0
>>551

>>466 のようなエラーがあるから
Cells Rangeの前には必ず上位層を指定する癖を 付けさせた方がいいと俺は思う

手を抜いて省略するのは慣れてからでもいいんじゃね?
2017/06/09(金) 14:16:07.35ID:ehLmIvolH
>>552
普通に、「シートモジュールから自分のシートを参照するときは不要、それ以外は必要」と教えれば?
2017/06/09(金) 14:20:33.43ID:6C6XVn6H0
>>551
べったり張り付いてられるなら失敗してから教える方がいい。
PC教室みたいに一過性の教育なら省略しない書き方で覚えさせた方がいい。
2017/06/09(金) 14:43:26.16ID:DLo2rfbX0
>>553
アンカミスなのか 俺宛てなのか分らが・・・

シートモジュールの場合 省略していいよじゃなくて 自分自身を示すMeを使って
Me.Range(・・・・) と教えた方が良いと思うんだけど
2017/06/09(金) 14:48:22.03ID:LCUpZwW2a
>>533
fso使って自分で作りゃいいじゃん
難しくないでしょ
2017/06/09(金) 14:50:28.52ID:LCUpZwW2a
>>551
同時に教える
動かして動かせたらなんでか、というふうに
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だらけになる。
2017/06/09(金) 15:00:45.88ID:DLo2rfbX0
>>558
あい分った
きみの主張を否定するつもりはないよ
でも俺の主張は >>552 で変えるつもりはない

これにて終了
2017/06/09(金) 15:05:08.05ID:6C6XVn6H0
Range(Cells,Cells)の教え方が本題じゃないし、
かといってエラーの網羅なんか現実的じゃないしで、
本題に沿わない意見ってだけだからな。

そもそも同じ話してないから否定も何も話し合いにならないぞ。
2017/06/09(金) 15:16:13.50ID:ehLmIvolH
>>559
まぁ、俺は全力で君の意見を否定するけどね。
2017/06/09(金) 16:06:32.05ID:Vt79/8Sl0
これにて終了
2017/06/09(金) 19:01:42.64ID:8JxPJdKv0
>>551
慣れてからは省略することが無くなった。そんなしょーもないとこで手を抜くとミスする確率が跳ね上がる
その分setは多用するけどね

set 集計シート = sheets("total")
集計シート.cells(1,1)
564デフォルトの名無しさん (ワッチョイ dd8b-Loth)
垢版 |
2017/06/09(金) 21:53:45.20ID:yARYpVIR0
>>563
sheetsは省略しとるけどええんかこれで?
2017/06/09(金) 21:53:49.39ID:Vt79/8Sl0
Set 集計シート = Sheets("Total")
集計シート.Cells(1, 1)
2017/06/09(金) 22:01:02.57ID:8JxPJdKv0
>>564
自分の信じた道を進めばいい
もし君の不注意が多いなら、いつか俺と同じ表記になる
sheetを書こうが書くまいが絶対にミスしないなら、sheetはずっと書かないのだろう
それはそれでいいことだと思う
567デフォルトの名無しさん (ワッチョイ dd8b-Loth)
垢版 |
2017/06/09(金) 22:04:36.45ID:yARYpVIR0
>>566
あいやーw伝わらんかなw
(デフォルトのワークブック.)sheets()
という表記になってるけどそれはええんか?
という意味やでw
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だけはそのまま使う事が多い
569デフォルトの名無しさん (ワッチョイ 250d-kOr2)
垢版 |
2017/06/09(金) 22:15:20.46ID:dxrWbrOn0
worksheetsをsheetsと略してるのはどうなの?ってことだろ
2017/06/09(金) 22:21:42.71ID:8JxPJdKv0
>>569
グラフシートやマクロ4..0シートを使うなら問題かもしれないね
俺は使わないからどうでもいいけど
2017/06/09(金) 22:24:19.15ID:w6iYvsph0
面白いな。
そんな書き方あったのかよっていう例が色々。

でも、Openしたブックを直接セットしちゃったら、
ReadOnlyとかできるの?
2017/06/09(金) 22:26:44.97ID:e02rbmqe0
必ずBookも省略しない。
慣れだね。
気分でSetもWithも使わずに物凄い長い文を書くこともある。
ー度動かしてから修正するけどね。
2017/06/09(金) 22:28:37.54ID:8JxPJdKv0
>>571
https://msdn.microsoft.com/ja-jp/library/office/ff194819.aspx
3つめの引数で設定できるよ
Workbooks.Open(path,,true)
多分これで読み取り専用になる(はず)
2017/06/09(金) 22:30:26.13ID:e02rbmqe0
>>571
Open時に引き数として与えればOK
2017/06/10(土) 09:26:47.69ID:+HgNy1AT0
単独ブックで使うときだってブックは省略しない方がいいに決まってるだろ
ユーザーがどんな使い方するかなんてこっちで管理できないんだから
そもそも大した手間じゃねえし
576551 (ブーイモ MMa9-+CHm)
垢版 |
2017/06/10(土) 10:06:36.80ID:0yj13WovM
やはり、最後にはちゃんと指定を教えることにはなりますよね。

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

悩む、、
2017/06/10(土) 11:32:19.99ID:1OFjIP+40
>>579
With はともかく Set はおまじないレベルでもいいので教えておくべきだ思う
2017/06/10(土) 11:34:39.43ID:WC+0mLwsx
>>578
基底クラスのRange、Cellsは使わない、という意味だよ
RangeクラスやCellsクラスを使う場合は必ず操作対象のブック、シートを指定する
2017/06/10(土) 11:59:16.65ID:7onqK0zV0
住所と一緒。
いきなり中央区と言われても「どこの?」となる。
ブックから指定した方が曖昧さが無くなる。
2017/06/10(土) 12:02:23.03ID:1OFjIP+40
>>581
お前は基底クラスの意味をもう一度調べてこい
知ったかかと思ったらそれ以下だったわ w
584デフォルトの名無しさん (ワッチョイ 2391-mrwT)
垢版 |
2017/06/10(土) 12:18:14.91ID:FN/PeeFU0
既定クラスの間違いかも
2017/06/10(土) 12:21:14.78ID:33ScHThx0
ちゃんとLetを書こう
586デフォルトの名無しさん (オッペケ Sr71-Kuea)
垢版 |
2017/06/10(土) 12:22:40.92ID:7x8i6naHr
でもなあ…このスレで上から目線で偉そうに語ってるやつは例外なく>>581レベルなんやで…かなりマジに…
2017/06/10(土) 12:38:07.24ID:6tSezeKAM
>>584
既定クラス?
なにそれ初耳なんだが...
588デフォルトの名無しさん (ワッチョイ 2391-mrwT)
垢版 |
2017/06/10(土) 12:41:29.80ID:FN/PeeFU0
>>587
既定は知ってる?

クラスは知ってる?
2017/06/10(土) 12:57:48.98ID:6tSezeKAM
>>588
そんなアホな返しは要らんからあると言うなら定義してあるところ教えて
590デフォルトの名無しさん (ワッチョイ 2391-mrwT)
垢版 |
2017/06/10(土) 13:13:15.38ID:FN/PeeFU0
>>589
既定のクラスのことだろ

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

日本語が解るなら既定とクラスから類推出来る
2017/06/10(土) 13:30:09.52ID:1OFjIP+40
>>590
ひょっとしてクラスとオブジェクト/インスタンスの区別もついてないのか?
2017/06/10(土) 13:33:07.94ID:fc8/KSyR0
自作の造語を常識のように語られても…
2017/06/10(土) 14:04:53.91ID:blUYIu4Y0
その既定のクラスとやらは、いつどんな状況で使われてるの?

まあ>>581に対してなら、基底クラスより規定クラスの方がまだ納得できる文書になるけどな
594デフォルトの名無しさん (ワッチョイ 2391-mrwT)
垢版 |
2017/06/10(土) 14:10:07.47ID:FN/PeeFU0
>>592
私は581じゃないけどな
595デフォルトの名無しさん (ワッチョイ 2391-mrwT)
垢版 |
2017/06/10(土) 14:11:14.32ID:FN/PeeFU0
>>593
既定のクラスを想定できる状況で使うんじゃね?
2017/06/10(土) 14:15:13.25ID:aQSdDkWeM
なぜオブジェクトを代入するとき、setをつけないといけないんでしょうか?

他の言語ではそんなことないのに
597デフォルトの名無しさん (ワッチョイ 2391-mrwT)
垢版 |
2017/06/10(土) 14:21:16.85ID:FN/PeeFU0
>>592
赤のペン→赤ペン
青の信号→青信号
自動車の教習所→自動車教習所
机の上→机上

抽象化する知能があれば解るよな
2017/06/10(土) 14:33:18.65ID:kwqfnDcj0
>>597
痛い
それ以上はやめてくれ、頼む
599デフォルトの名無しさん (ワッチョイ 2391-mrwT)
垢版 |
2017/06/10(土) 14:40:44.58ID:FN/PeeFU0
>>598
旗色が悪くなると誤魔化すんだなw
2017/06/10(土) 14:41:38.33ID:VN5tpTLe0
>>596
VBAではそういうルールになってるから。嫌なら使わなければOK
2017/06/10(土) 14:42:49.77ID:fc8/KSyR0
それでうまく誤魔化したつもりなのか・・・
嘘に嘘を重ねて、引っ込みがつかない状態で強がられても・・・
2017/06/10(土) 15:12:00.04ID:1OFjIP+40
>>597
それ抽象化じゃなくて単なる省略だろ w
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が無いと誤解が増えるよ。
2017/06/10(土) 16:09:54.37ID:blUYIu4Y0
Setが必要な理由は、デフォルトプロパティへのアクセスなのかオブジェクト(参照)へのアクセスなのか区別できないから

ちなみに、VB6ではSetは必要だったが、VB.NETではSetは無くなった
その代わりに、デフォルトプロパティが廃止された
605デフォルトの名無しさん (ワッチョイ 7de4-yugn)
垢版 |
2017/06/10(土) 16:14:05.66ID:blUYIu4Y0
>>595
俺にはVBAで既定のクラスと言う物を想定できる場面がないからきいてるんだがな
2017/06/10(土) 16:23:44.38ID:kwqfnDcj0
>>581
は規定のクラスという謎の単語を使っていたのか?
それとも基底クラスを何かと間違えているのか?
10秒考えたけど分からなかった
607デフォルトの名無しさん (ワッチョイ e511-mrwT)
垢版 |
2017/06/10(土) 17:09:39.63ID:39iXd9D70
>>602
本当にアホなんだな
2017/06/10(土) 17:10:45.65ID:LZTdgH18d
Setなあ...
IsObject 判定が必要になる状況ではいつもウザいと感じる
609デフォルトの名無しさん (ワッチョイ a3b3-YGYj)
垢版 |
2017/06/10(土) 17:23:02.47ID:F7MRd5sO0
VBAしか知らない俺なんかからしたらSetなんか当たり前じゃんとしか思わん。

ところで、「既定のクラス」って何?
2017/06/10(土) 17:35:30.79ID:1OFjIP+40
>>607
まだいたのか w
抽象化の意味を調べてから出直してこいよ
2017/06/10(土) 17:39:49.82ID:Ofv2bo9fx
>>597
抽象化?
612デフォルトの名無しさん (ワッチョイ e511-mrwT)
垢版 |
2017/06/10(土) 18:08:59.12ID:2cJYycRP0
>>610
https://ja.m.wikipedia.org/wiki/抽象化

これでも意味が理解できないなら救いようがないな
2017/06/10(土) 19:11:36.37ID:kwqfnDcj0
>>609
setは他の言語触ってるとめっちゃめんどくさい。
ついでに言うと比較が「=」なのも糞すぎる。代入か比較かわからん
2017/06/10(土) 19:14:23.49ID:1OFjIP+40
>>612
リンクもまともに貼れないアホ乙 w
2017/06/10(土) 19:18:57.08ID:kLEBGxy40
>>613
そういうのは単純にVBAについての習熟度が低いから混乱するってだけで慣れの問題だし、
なんならC言語処理系の代入演算子が代入した値を返すっていう動作の方が、
仕組み上は原始的で、シンタックス上は冗長的とも言えるしなぁ。
616デフォルトの名無しさん (ワッチョイ dd8b-Loth)
垢版 |
2017/06/10(土) 19:32:35.73ID:cjBRJJZZ0
>>615←ほらまた新たな>>581が現われた、なんやねんこのスレ
2017/06/10(土) 19:48:04.56ID:HZN1Em+70
「規定クラス」とかいかにも公式に定義されてるっぽい言葉を使いながら
抽象化だよわかるだろ、とか
省略だよわかるだろ、とか

>>614
いろいろすまんw
618デフォルトの名無しさん (ワッチョイ a3b3-YGYj)
垢版 |
2017/06/10(土) 20:04:44.43ID:F7MRd5sO0
ところで、規定クラスの説明まだかよ!とっとと書けよ
619デフォルトの名無しさん (ワッチョイ 2391-mrwT)
垢版 |
2017/06/10(土) 20:06:51.92ID:FN/PeeFU0
>>617
話の筋を混同してる
話しにならない
2017/06/10(土) 20:13:51.75ID:fc8/KSyR0
>>619
勘違いしてるのはお前だろ
書き間違いや勘違いでないと思ってるのならちゃんと説明してとっとと終わらせろ
2017/06/10(土) 20:20:56.79ID:kLEBGxy40
そもそも大本の>>577が別におかしな事言ってないのに、
何故か勝手に混乱してる気がするんだけど。

「基底クラス(CellsやRangeに対するWorksheets等)」を省略すると、
あたかもRangeやCellsが何にも属さず単体で存在している様に見えてしまうので、
教育上良くないと言っているだけだろ?
2017/06/10(土) 20:31:50.61ID:+HgNy1AT0
基底クラスのことではないのか…
まあだとしたら意味が違うけど
でもさ、規定って英語で言うとデフォルトだろ
何かちがうかんじが
2017/06/10(土) 20:36:39.98ID:HZN1Em+70
CellsやRangeに対するWorksheets等のことを「基底クラス」と呼ぶなんて、
いくら何でもオレオレ過ぎる

自ら混乱を呼んどいて勝手に混乱するなよ、とか
2017/06/10(土) 20:37:04.09ID:blUYIu4Y0
>>621
WorksheetsがRangeの基底クラスはあり得んわけですよ
まだそれを既定クラスって用語だと勝手に定義してる方がマシ
2017/06/10(土) 20:55:32.09ID:/gz2q8SE0
おれのほうが詳しい()
でスレ埋めるのやめろマヌケ共
2017/06/10(土) 20:58:47.80ID:kLEBGxy40
>>624
ああ、そうか。
継承しているわけではなくてメンバーだから基底クラスではなく親クラスか。
俺も(たぶん)>>577と同じ勘違いしてたわ。

しかしなんでそんな喧嘩腰なんだ。何を主張したいのか推測して訂正すれば荒れずに済んだんじゃないか?
言葉を間違えているだけで主張がおかしいわけではないんだし。
2017/06/10(土) 21:06:51.30ID:blUYIu4Y0
基底クラスに突っ込んでるやつはそんなにいないだろ
きっぱり間違ってるし
そのおおもとの意見そのものにも反対してるやつも見受けられない

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

複数考えられるならどれなのかを聞けばいいだけだし。
2017/06/10(土) 21:16:22.17ID:blUYIu4Y0
だからVBAでの実例出してみろって言われてるだろ
それで納得すれば終わりの話なのに
2017/06/10(土) 21:22:35.32ID:+HgNy1AT0
既定のクラス、だとしてもよくわからんな
まあともかく省略はさせるべきではないよ
まあオブジェクトについてしっかり説明できないといかんから難しいけどな
俺はよくわからん
2017/06/10(土) 21:37:29.45ID:3DV/qfOH0
既存クラスって言いたかったんじゃね?
既定クラスは日本語としても意味がわからんな
どーでもいい話題だが
2017/06/10(土) 21:39:47.31ID:ZCyQEzNl0
おれのほうが詳しい()
でスレ埋めるのやめろマヌケ共
2017/06/10(土) 21:40:10.24ID:kLEBGxy40
>>629
俺は既定のプログラムとか、既定値とかって例からして、
MS側が作って公式に提供しているクラスを既定クラスと言っているもんだと思ったけど。

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

いずれにしても何も考えずに「なにそれ」って言うよりも先に、自分から進んで例を出せば角も立たなかったと思うよ。
634デフォルトの名無しさん (ワッチョイ dd8b-Loth)
垢版 |
2017/06/10(土) 21:42:04.24ID:cjBRJJZZ0
どーでもいいかねえ
無知の教えたがりってのは言わば無能な働き者と等価なんだよなあ
存在自体が害悪でしかないわ
2017/06/10(土) 22:11:30.10ID:kwqfnDcj0
まだやってたのか?
規定クラスなんて釣りに決まってるだろう
無駄な時間を過ごしてご苦労さん
2017/06/10(土) 22:13:24.23ID:fc8/KSyR0
>>635
考えた上で答えがわからないんじゃなかったのかよw
2017/06/10(土) 22:24:00.52ID:HZN1Em+70
Set はいやだ

以上
2017/06/10(土) 23:27:12.17ID:qdVNuGxa0
>>604
わかりやすい。ずっと疑問だったんだ
2017/06/10(土) 23:40:28.71ID:HZN1Em+70
>>604
Dim a As ***

a = 他のオブジェクト

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

で十分区別できると思うけど?
640デフォルトの名無しさん (ワッチョイ 7de4-yugn)
垢版 |
2017/06/10(土) 23:58:16.76ID:blUYIu4Y0
>>639
デフォルトプロパティは代入先(左辺)でも使えるんだぜ
aのデフォルトプロパティへの代入かaへの参照の代入か区別できんだろ
641デフォルトの名無しさん (ワッチョイ 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年はやらないとここまではいかないだろうけど才能とアイデアと
企画力と継続力があればが大儲けできる可能性がなくもない
まだまだ他の職種に比べれば競争率は低いからオススメ
顔出したくないならラファエルみたいに仮面つければいい
2017/06/11(日) 00:29:53.21ID:P5Uv9Xu70
>>640
うーんそうか。
だが敢えて言わせてもらうがそういうコードはクソだ
2017/06/11(日) 00:31:10.41ID:P5Uv9Xu70
とは言ったもののどうしようもねえのか
誰だデフォルトプロパティなんて作った奴は
2017/06/11(日) 00:31:49.94ID:46pYjw9V0
これはこれで便利なんだが、弊害多いよねぇ
2017/06/11(日) 05:51:37.28ID:eCVTs9al0
>>639
出来ない。

せっかく>>603の例を挙げたのに。
真ん中の例を見てね。
この場合はSet付いてないからデフォルトプロパティ。

そして最後の例はSetを付ければあり得る。
その場合当然オブジェクト。
2017/06/11(日) 07:45:58.35ID:P5Uv9Xu70
>>645

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

Printは代入文じゃないからここでの議論には関係ない。ここはデフォルトプロパティ(Value)でいい。
意味論的になにも破綻しないと思う。
2017/06/11(日) 08:20:06.89ID:P5Uv9Xu70
意味論的ってなんだよw

意味的にも構文的にも
2017/06/11(日) 08:22:28.65ID:q49UmmFG0
>>645
>>603 程度なら
> Dim var1 As Varient
> var1=Range("A1")
の時点では var1 はセルA1への参照の代入として
> Debug.Print var1
の時点でディフォルトプロパティを取得して表示すればいいだけ
できないのは >>640 の方
2017/06/11(日) 09:54:43.68ID:Tl5W6+aa0
その手の仕様に関しての「こっちの方がいい」は何を言おうが変わりようがないので意味ないけどな。
2017/06/11(日) 10:53:34.91ID:eCVTs9al0
>>646
ハァ...
疲れるわ。

だから>>639の言うように***がVarientなのにオブジェクトへの参照じゃない。
そしてSetが無くて良いなら最後の例も認めなければならない。
そうすると>>639の言うような区別がつかないことになる。
2017/06/11(日) 10:56:21.93ID:eCVTs9al0
>>648
実際に真ん中の例は動作している。
Set無しで。
その時点でデフォルトプロパティが代入されていることになる。
2017/06/11(日) 10:57:57.11ID:P5Uv9Xu70
>>650
疲れると言われてもねぇ

君はなにか根本的なところで勘違いしてない?
2017/06/11(日) 10:59:57.17ID:P5Uv9Xu70
>>650

君は>>639の主張を理解していないんじゃない?
2017/06/11(日) 11:05:46.55ID:P5Uv9Xu70
念のため言っておくけど自分は>>639だよ
655デフォルトの名無しさん (ワッチョイ dd8b-Loth)
垢版 |
2017/06/11(日) 11:08:37.85ID:ED3vqoUB0
キミらはvbaの仕様策定委員にでもなったつもりなのかね?
既に過去のものになりつつあるマクロ言語の
2017/06/11(日) 11:12:48.87ID:P5Uv9Xu70
>>655
その点は>>649の言う通りだけどそういう議論(遊び)だからいいんだよw
657デフォルトの名無しさん (ワッチョイ dd8b-Loth)
垢版 |
2017/06/11(日) 11:15:00.15ID:ED3vqoUB0
>>656
いつから議論をしていると勘違いしていた?
2017/06/11(日) 11:15:11.60ID:eCVTs9al0
>>653
よく分からんな。
>>639>>603の真ん中の例形になっていると思うんだが違うのかい?
2017/06/11(日) 11:18:50.23ID:q49UmmFG0
>>651
「今のVBA」の話と「Set を無くしたVBA」の話の区別もつかないなら話に入ってくるなよ
2017/06/11(日) 11:22:02.96ID:eCVTs9al0
>>659
だからSetを無くしたVBAでは今は動作してない最後の例も認めることになるだろ。

真ん中の例はデフォルトプロパティ、最後の例はオブジェクトだ。
区別つかないんじゃね?って話なんだが。
2017/06/11(日) 11:26:05.68ID:eCVTs9al0
それともSetを無くしたVBAでは真ん中の例も今動いてる状態と違ってオブジェクトへの参照を代入する仕様になる?
2017/06/11(日) 11:28:30.89ID:P5Uv9Xu70
>>658

>>603の真ん中
=代入文は参照、Printの引数は文字列なのでデフォルトプロパティ

>>603の下
=代入文は参照、Print文はプロパティを明示しているから曖昧さはない
2017/06/11(日) 11:32:11.23ID:q49UmmFG0
>>660
代入時点で区別する必要はなくて Print 時点で判断すればいいだけって話
>>648 を理解できてないなら絡んでくるなよ
2017/06/11(日) 11:38:19.86ID:P5Uv9Xu70
>>661
Yesだ
>>639はそう書いている
2017/06/11(日) 11:47:41.80ID:eCVTs9al0
>>662
ということは、今動いてる状態とは違う仕様になるということだな。

そうすると、
Dim var1 As Variant
var1=Range("A1")+1
はエラーとなる?
2017/06/11(日) 11:52:36.50ID:eCVTs9al0
>>663
それは間違い。
代入時点で決まらなければ区別がついていないことと同じ。
次の文まで不定なら言語仕様が滅茶苦茶になる。
2017/06/11(日) 11:58:44.94ID:eCVTs9al0
Dim var1 As Variant
var1=Range("A1")+1
では先にRange("A1")+1が評価されるからその時点でデフォルトプロパティに+1された値がvar1に代入されてうだな。

う〜ん。
2017/06/11(日) 12:02:43.42ID:P5Uv9Xu70
>>667
そりゃそうだろ。
式の両辺の型によって挙動が決まるんだから。
2017/06/11(日) 12:02:50.72ID:46pYjw9V0
他のオフィススイートについてるスクリプトには、デフォルトプロパティってあるの?
2017/06/11(日) 12:06:35.73ID:q49UmmFG0
>>666
お前の能力だと滅茶苦茶になるだけだろ w
滅茶苦茶になる例のひとつでも書いてみろよ
2017/06/11(日) 12:08:58.69ID:46pYjw9V0
そもそもなんでデフォルトプロパティなんて面白い物を作ったんだ
入門の敷居をできるだけ下げるために、.value・.valeu2・text、などを考えなくていいようにしたんだろうか
2017/06/11(日) 12:12:28.05ID:eCVTs9al0
>>670
デバックでステップ実行してみろ。
1行1行解釈実行されるのが基本。
後の文により前の文の解釈が変わる言語なんて滅茶苦茶だぞ。
構文エラーはプログラム全体を評価するまで決まらないことになる。
2017/06/11(日) 12:18:03.12ID:eCVTs9al0
>>668
君の仕様では式の両辺の型で挙動が決まらない。
var1=Range("A1")ではオブジェクト
var1=Range("A1")+1ではデフォルトプロパティとなるけど、今んとこ辻褄は合っているようにも見えるから、う〜んと考えている。
2017/06/11(日) 12:22:52.52ID:46pYjw9V0
Range("A1") = Range("A1")
2017/06/11(日) 12:52:35.79ID:q49UmmFG0
>>672
> 後の文により前の文の解釈が変わる言語なんて滅茶苦茶だぞ。

バカなの?
理解力ないのに無理すんなよ w
> var1=Range("A1")
の解釈変わってないぞ
2017/06/11(日) 13:30:16.95ID:eCVTs9al0
>>675
日本語が変なんじゃね?

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

代入時点で区別する必要ないということはどういうこと?
代入時点で確定してるなら区別もできてる筈だし。
2017/06/11(日) 13:32:39.14ID:eCVTs9al0
>>675
君の説明では
var1=Range("A1")
の段階では型が決まるのか、それとも決まらないのかどっち?
2017/06/11(日) 13:42:39.50ID:P5Uv9Xu70
>>674
変数への代入の話題なのでそれは関係ないよ。
その左辺 Range("A1") は変数ではない。
2017/06/11(日) 13:50:31.78ID:46pYjw9V0
>>678
変数じゃなければ何だろう?
アプリケーション側で用意されているとは言え、変数ではなかろうか
2017/06/11(日) 13:56:28.52ID:eCVTs9al0
>>674
俺の理解ではそれは左辺の側がデフォルトプロパティかオブジェクトかという話になるから>>640と同じことになると思う。

だからその点では、つまり>>640以外で辻褄が合っていないという例にはならないと思う。
2017/06/11(日) 14:01:42.55ID:q49UmmFG0
>>676-677
代入時点で Variant ならオブジェクトの参照を入れときゃいいだけだろ

>> var1=Range("A1")
> の時点では var1 はセルA1への参照の代入として
ってはっきり書いてあるんだから人の日本語にいちゃもんつける前に自分の理解力を省みろよ
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();
2017/06/11(日) 14:30:41.83ID:nUk6Os5uM
そういや自作クラスでデフォルトプロパティって作れるの?
作ろうと思ったこともなかった
2017/06/11(日) 14:35:03.70ID:P5Uv9Xu70
http://www.cpearson.com/excel/DefaultMember.aspx
2017/06/11(日) 14:38:19.83ID:46pYjw9V0
>>683
一応作れる
ただ普通は作ろうと思わないレベルでめんどくさいし、そんなもんアテにするような設計にしないだろう
2017/06/11(日) 14:55:51.72ID:Rohm8Nl3a
>>681
つまりPrint文は関係無いんだよ。

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

は間違い。
代入時点で区別はついてる。
2017/06/11(日) 16:32:41.31ID:TSTIJwyzM
>>682
まあそのケースがまずいのはわかってるがそんなクラスを作る必要がどんだけあるんだ?
って話だな
2017/06/11(日) 16:40:50.47ID:TSTIJwyzM
>>686
> 代入時点で区別はついてる。
だから区別なんてしない
両方ともに参照を入れとくだけ
って書いてあるんだが...
どうやったらそんなアホな考え方になるのか不思議だよ
まあ引っ込みつかなくなってるんだろうな w
2017/06/11(日) 16:45:50.31ID:46pYjw9V0
>>687
わかってるならその反論はおかしいだろう
言語仕様としておかしくなる

デフォルトプロパティがあるなら、setはどうしても発生すると思う
2017/06/11(日) 17:19:36.49ID:q49UmmFG0
>>689
別にそのケースなら参照を返すようにしてディフォルトプロパティは明示する(つまりディフォルトプロパティの意味がなくなる)ようにすればいいだけ
特殊なケースで使えないからと言って全部ダメって言う話ではないでしょ
2017/06/11(日) 17:25:11.30ID:CaL9CXkoa
>>688
引っ込みも何も、今だに何言ってるのか分からん。
とレスしようとしたけど今分かった。


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



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

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

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

>> Debug.Print var1
> の時点でディフォルトプロパティを取得して表示すればいいだけ
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)
->?

こういう問題?
2017/06/11(日) 17:43:49.85ID:CaL9CXkoa
>>692
俺は>>661の段階で真ん中も参照と気付いたわけ。
その後に>>663が書かれているのは日本語が悪いと言ってる。
2017/06/11(日) 17:47:03.90ID:46pYjw9V0
>>690
自身のclassがメンバに〜は普通にある。特殊ではない
2017/06/11(日) 17:48:52.10ID:46pYjw9V0
話はずれるが、「エクセルvaが特殊」は事実
20年以上前から生き残っている、大衆に使われ続けているスクリプト言語なんてエクセルvbaだけ
次点でjsだろう

デフォルトプロパティだろうがなんだろうが、実装すればデファクトスタンダードになる
ある意味、王様である
好きなようにあすれば良いんじゃないかな
2017/06/11(日) 17:51:02.18ID:q49UmmFG0
>>694
> その後に>>663が書かれているのは日本語が悪いと言ってる。
>>663>>648 へのアンカー打ってあるのに何を言ってるんだよ w
恥の上塗りにしかなってないぞ
2017/06/11(日) 17:53:41.74ID:q49UmmFG0
>>695
自身のクラスオブジェクトを返すディフォルトプロパティを持つクラスが特殊じゃないって?
例えば何よ?
2017/06/11(日) 18:07:00.10ID:CaL9CXkoa
>>697
アンカー打ってあっても日本語が悪いのは変わらんぞ。

>>648>>663の文章とどう関係するのか分からん書き方になってるんだから。
2017/06/11(日) 18:18:57.69ID:46pYjw9V0
>>698
特殊かどうかは言ってないね
存在すると整合性が保てなくなると言っている
それがExcelの中にあるかどうかなんて知らん
2017/06/11(日) 18:39:15.05ID:q49UmmFG0
>>699
そもそも >>663 の日本語もおかしくないだろ
前提をいくつかはしょってるのは話の流れで省略してもわかるはずって言う考えで書いてる
それでも横入りで絡んでくるアホがいるから念のために
> >>648 を理解できてないなら絡んでくるなよ
とまで書いてある
ここまで書いてあって理解できない奴の面倒までは見れんよ w
2017/06/11(日) 18:41:48.44ID:46pYjw9V0
>701
代入時点で評価の必要があります
2017/06/11(日) 18:42:38.69ID:q49UmmFG0
>>700
> 特殊かどうかは言ってないね
頭大丈夫?
> 特殊ではない
ってはっきり書いてますけど? w
> 存在すると整合性が保てなくなると言っている
お前さんの考える整合性とやらがどんなもんか知らんけど >>690 でなんの問題もないけどね
2017/06/11(日) 18:43:10.17ID:q49UmmFG0
>>702
理由は?
2017/06/11(日) 18:45:21.77ID:Tl5W6+aa0
Set無しVBA言語作るって流れになったら面白いんだけどなぁ。
2017/06/11(日) 18:56:04.59ID:46pYjw9V0
>>703
デフォルトプロパティは毎回明示するのか?
A1セルのvalueを知りたい場合は
cells(1,1).value
と書けば良いのか、なるほどな

cells(1,1)
だけならエラーを変えした方がいいな
2017/06/11(日) 19:01:02.23ID:P5Uv9Xu70
型を意識する・させることで皆が幸せになる

...そんなふうに思っていた時期が自分にもありました
2017/06/11(日) 19:05:21.58ID:UNIZBcCUa
>>701
>代入時点で区別する必要はなくて
ってのは>>639の"十分区別できると思うけど"の区別のことだよな。

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

>Print 時点で判断すればいい
も、何言ってるのか分かりにくい。
2017/06/11(日) 19:08:29.30ID:UNIZBcCUa
>>706
それ、デフォルトなの?
デフォルトって何なの?

って言いたいってこと?
2017/06/11(日) 19:12:53.44ID:UNIZBcCUa
まあ、実際には自分はSetに違和感全く感じないし、Variantで宣言することも殆ど無いし、デフォルトプロパティの省略も殆どしないんだけどね。
2017/06/11(日) 19:20:07.39ID:q49UmmFG0
>>706
> デフォルトプロパティは毎回明示するのか?
>>682 のケースだけね
実際にあるのかどうかは知らんけど w

> cells(1,1)
> だけならエラーを変えした方がいいな
そう言うオプションはあってもいいと思う
2017/06/11(日) 19:21:24.90ID:46pYjw9V0
>709
いやもう言語仕様を考える時って最初によっぽど不具合がなければそれでいいよねってこと
vbaは非常に変則液だけど、まぁエクセル・アクセルのためなら仕方ないんじゃないの
2017/06/11(日) 19:27:31.75ID:q49UmmFG0
>>708
> "必要"とか何が必要?
> という話になる。
はあ?
「区別する」必要がないって書いてあるだろ

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

> Print 時点で判断すればいい
も、誰が何を判断するんだ?と受け取られる。
2017/06/11(日) 19:42:52.34ID:P5Uv9Xu70
型を意識しようよ

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

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

あと、真ん中はやっぱりデフォルトプロパティの代入の方がしっくり来ると思うんだ。
だからこそ、あっさりデフォルトプロパティの代入を捨て去ると思えなかったから>>645書いたんだぜ。
2017/06/11(日) 20:02:29.23ID:46pYjw9V0
>>715
application内の型を意識しなくていいための、弱い動的型付けなんだよ
この設計思想は街ぃがってないと思う
2017/06/11(日) 20:12:03.18ID:q49UmmFG0
>>714
> 代入時点で区別はついてる
それはお前が勝手に言ってるだけの話だろ
俺は初めから必要ないって書いてるから
> なんで必要とかの話になるの?と受けとられるだろ。
なんて受けとるアホはいないと思うぞ、お前以外は w

>> Print 時点で判断すればいい
> も、誰が何を判断するんだ?と受け取られる。
マジでオブジェクト指向の勉強しなよ...
そんなのを疑問に思うなんて相当レベル低いから
2017/06/11(日) 20:17:12.06ID:46pYjw9V0
>>682
はだめかなぁ
徹底的に論破してほしいんだけどなぁ
2017/06/11(日) 20:19:33.09ID:P5Uv9Xu70
しかし冷静に考えると斬新かもな。
単一の文だけ見て解釈するんじゃなく、複数の文を見て意味を解釈するプログラミング言語。
2017/06/11(日) 20:25:38.17ID:UNIZBcCUa
>>718
>それはお前が勝手に言ってるだけの話だろ

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

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

を省略せずにきちんと書いてみなよ。
2017/06/11(日) 20:26:28.99ID:tRESVVuh0
俺の考えた最強の言語仕様の話はよそでやってくれ
2017/06/11(日) 21:00:46.39ID:q49UmmFG0
>>721
> 代入時点で参照であると区別がついてるのが実態だろ。
お前はまず「区別」の意味を調べてから出直してこい
A か B かの区別がつくと言う言い方はあるけど A と区別がつくとは言わん

> を省略せずにきちんと書いてみなよ。
>>648 で十分だろ
それで不十分と言うならほぼ同じこと書いてる >>691 も不十分と言うことだ w
2017/06/11(日) 21:12:26.64ID:VtUxFQZs0
いつまでくっだらねーーーーーーーー話を続けるつもり?別スレでも立ててそこでやれよ
2017/06/11(日) 21:17:53.56ID:P5Uv9Xu70
もはやどこが起点かわからない
2017/06/11(日) 21:31:09.13ID:P5Uv9Xu70
だれかQiitaにまとめてくれ
2017/06/11(日) 21:46:23.06ID:UNIZBcCUa
>>723
お前な、自分は省略してるのに俺の省略は認めないのか?

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

>>691は省略しても分かるだろ。
>>663は省略されてると分からんのだよ。
というより省略しなかった時に正しい日本語になるように思えないからやってみろと言ったんだよ。
728デフォルトの名無しさん (ワッチョイ 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


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

些細なことで申し訳ありませんが
どなたか原因わかる方教えてください。
2017/06/11(日) 21:56:59.58ID:46pYjw9V0
>728
凄まじい個人情報でてる気もするけど、まぁいいか
・保存するかどうかを聞かれ
2010では聞かれない

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

バージョンを教えてほしい
2017/06/11(日) 22:06:15.50ID:P5Uv9Xu70
>>728
保存するかどうかなんて聞かれないな
数式もないようだ
2017/06/11(日) 22:10:07.67ID:q49UmmFG0
>>727
> 代入時点で参照であるとデフォルトプロパティとは区別がついてるのが実態だろ。
だからそれはお前が勝手に言ってる話
そもそも区別がつくとか言ってるが勝手につく訳じゃなくて処理系が何らかの判断をしてるんだからそんな判断は「必要ない」って書く方が適切だろ

> >>663は省略されてると分からんのだよ。
話の流れ見てたらわかるし、わからん奴のためにアンカーまで書いてるだろ
何回ループするんだよ
2017/06/11(日) 22:46:10.07ID:KFvNUsfN0
>ファイルサイズが半分くらい減ってしまうのも気になります

減った状態が正しいファイルサイズなんじゃないの。
2017/06/11(日) 23:33:20.89ID:49bQJmPP0
なんか、何時何分何秒地球が何回回った時ですかあ?と同レベルのやりとりだな
2017/06/12(月) 00:17:03.07ID:y5ZQ52Yx0
>>731
やっぱり日本語の問題なんだ。
今をもってしても分かりにくい。

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

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

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

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

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

今だに分からんのは>>663の判断するのは誰かって話。
処理系なら判断すれば"いい"などとはならないと思うし。
Print時点で決まっているんだから判断とかいう話にはならない筈だろ。
2017/06/12(月) 00:24:47.55ID:Ch/XnpW30
┐(´д`)┌ヤレヤレ
2017/06/12(月) 01:25:41.57ID:YlzHeDxH0
>>682
foo君久しぶりじゃんwww


つかお前らhgだからって不毛な争いしてんじゃねえ
よそでやれクズ共
2017/06/12(月) 01:28:29.93ID:YlzHeDxH0
>>728
ワッチョイ e511-
臭う
2017/06/12(月) 05:44:51.02ID:RhdpYx9V0
長文君はなぜか自分の日本語能力を疑わない w
2017/06/12(月) 08:46:55.31ID:ZaZcTWz8x
>>736
承認するよ
740デフォルトの名無しさん (ワッチョイ 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
2017/06/12(月) 20:31:46.57ID:ysyGP+YI0
>>740
マジで?
742デフォルトの名無しさん (ワッチョイ eb4c-irun)
垢版 |
2017/06/13(火) 10:48:41.12ID:UX2HAupn0
マクロは記録をいじるぐらいの初心者です

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

というのを作れるものなら作りたいけど、可能ですか?
Bファイルは毎日新しいのが来ます
出来るとしたら検索ワードが悪いらしく、見つけられないので
なんという動作なのか教えてください
2017/06/13(火) 11:35:01.49ID:P4se3SJtd
>>742
Aは自分の手元にあるブックでBは他所から届くのか。

「BでAで作ったマクロが動き、」の意味がよくわからない。
なんとなく簡単ぽいけど
2017/06/13(火) 11:35:40.67ID:mycfBP+w0
workbook.open
記録ではできない
745デフォルトの名無しさん (ワッチョイ eb4c-irun)
垢版 |
2017/06/13(火) 12:08:11.62ID:UX2HAupn0
>>743
Aは自分のパソコンに作ったもので、Bは毎日他所からきます。
Bを開いてそこからAで作ったマクロを動かすしかダメですか?

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

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

マクロのボタンの作り方とか調べても、同じファイル内で
動くものしか出てこないので、ボタン一押しで動かせないのかと
そういう話です
748デフォルトの名無しさん (アウアウウー Sa99-pGgJ)
垢版 |
2017/06/13(火) 12:32:20.96ID:5pkXRrDKa
星くん vbaでググって
第2章読めば似たようなことが書いてあるよ
2017/06/13(火) 13:52:35.48ID:TodKlzHt0
>>742
普通はアドインにする。
Aファイルは開く必要が無い。
アドインならExcel開いたらAファイルも開いてる。
ブックは非表示だから開いてるようには見えないけどメニューにボタンを追加すればマクロは動作する。
2017/06/13(火) 14:48:02.77ID:3KAtKhUpH
>>749
君の中では普通かもな
2017/06/13(火) 14:50:25.60ID:B6CxFrBV0
@@@EMO@@@
}
000-"E=0.133348213376128"
001-"4","1.6","2","3","13","3","81","47","0","1","2","85",
002-"813-1>>>1%$1.3Q!@!$%81.3!$%B,61.2,"13.2"21.7[[%$EMOLA\%/7#/OBLA[%!\2.3=0!&#%<<<Q,S,L,7P,%41%-%2]]%End\]{
752デフォルトの名無しさん (ワッチョイ eb4c-irun)
垢版 |
2017/06/13(火) 14:52:38.21ID:UX2HAupn0
アドインで出来きました
すごい

星君も読みつつあったのですが、とりあえず
アドインが上手くいったのでこれで進めます
相談に乗ってくださった方々、ありがとうございました
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内に書く。
2017/06/13(火) 15:07:40.67ID:y6bvTk4c0
既に解決している悲しみ
2017/06/13(火) 15:25:46.39ID:mycfBP+w0
そして求められていない汎用性のために冗長なコード
756デフォルトの名無しさん (ワッチョイ a3b3-YGYj)
垢版 |
2017/06/13(火) 18:18:21.99ID:Te/HyupM0
事務職向けマクロなんだから冗長でも何でも良いと思うけどね。オブジェクト指向バカとか
業務妨害以外の何者でもないと思うしw
2017/06/13(火) 18:24:08.96ID:3KAtKhUpH
という思考停止
2017/06/13(火) 18:43:27.69ID:kYQNn7N60
上げでちょっと変わった質問する人と
foo君がセットで登場するのはたまたまだから
ほんとに偶然だから
2017/06/13(火) 18:47:56.47ID:3KAtKhUpH
>>758
お前がfoo君と呼んでるのは一人ではない
2017/06/13(火) 18:58:03.59ID:SvV5ll3TE
( ´_ゝ`)フーン
2017/06/13(火) 19:10:28.45ID:YXJzvR0D0
>>756
エクセルがモロにオブジェクトだから、自然とみんなオブジェクト指向バカになるんだな、これが


>>760
そこはfoonじゃないかな?かな?
762デフォルトの名無しさん (ワッチョイ a3b3-YGYj)
垢版 |
2017/06/13(火) 19:18:04.89ID:Te/HyupM0
>>761
ははは、オブジェ馬鹿降臨w
2017/06/13(火) 20:06:15.93ID:YXJzvR0D0
>>762
LISP、Haskell、Schemeは本当に使いこなせなかった
君の指摘は正しいよ
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

これではだめですよね。
2017/06/14(水) 16:40:22.05ID:M/IwJ83O0
>>764
いまいち何やりたいのか分からないけど、処理 Aを飛ばしたい場合とそうでない場合があるって事なら

Sub Foo(b As Boolean)
If b Then 処理 A
処理 B
処理 C
...
End Sub
2017/06/14(水) 17:02:48.98ID:bVPmX3VEa
処理というのがどのレベルなのか分からない。

Sub A()
処理A
B
End Sub

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

とする場合もあれば、
全部の処理をそれぞれ別のプロシージャとして作り、メインとなるプロシージャでそれぞれをよび出す場合もある。
この場合はAからよび出すメインプロシージャやBからよび出すメインプロシージャを作ることになる。
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
ってやるとか
2017/06/14(水) 22:27:07.82ID:Gr+r/r4M0
ありがとうございました

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

767さんがわかりやすいですが、>>765のやり方を勉強してみます
769デフォルトの名無しさん (ワッチョイ 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の行をマクロが通過したときに処理すべきオブジェクトは固定されないんですか?
2017/06/16(金) 12:07:15.60ID:Qtgdul+t0
For Eachで列挙される順番は、実装依存で保障はされてないはずだけど
普通は同じコレクションに対しては同じ順で帰ってくるよ

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

その上でそれを回避するような定番な方法や定石的手順の方法を知りたいのですが。
2017/06/16(金) 12:33:46.29ID:pJSV/jBP0
>>772
ループ内で対象を記録しておいて後で書き換えるとか
一時保管場所を作って蓄積してから元の場所へ戻すとか
774デフォルトの名無しさん (ワッチョイ ba52-2WTa)
垢版 |
2017/06/16(金) 12:39:06.98ID:uw1+X6cJ0
>>773
しかしそれでも記憶させておくものは参照のメモリアドレスには変わりないと思うから
対処によってこの参照先が変わってしまい同じような意図しないぐちゃぐちゃな結果になったりしませんかね?

あとわからないのがFileSystemObjectでファイル名を変えただけで対象が変わってしまうのが不思議。
これは別に要素の増減でもなんでもないのに。
2017/06/16(金) 13:09:33.45ID:pJSV/jBP0
>>774
しませんかね? と質問する前に自分でテスト環境作ってやってみるべき。
2017/06/16(金) 13:14:04.57ID:Qtgdul+t0
>>772
>その上でそれを回避するような定番な方法や定石的手順の方法を知りたいのですが。
For Eachを使わない
単純に減るだけならFor Nextで逆順に回すのが定番

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

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

ボタンの色を元に(ボタンのデフォルトの色に)戻すのに↓だとエラー(型が一致しません)。どうすればいいんでしょうか?
CommandButton1.BackColor = "&H8000000F&"
2017/06/16(金) 16:08:49.37ID:0rZ836RR0
>>778
Debug.Print Typename("&HFF00FF")
Debug.Print Typename("&H8000000F&")

なんで""で括ってるの?
2017/06/16(金) 16:34:33.26ID:OvmXQ03X0
>>779
""は不要でしたか。たぶんどこかのサイトにそのような記述があったんだと思います。
↓でエラーなく色変わりますが""なくてもよかったのか。
CommandButton1.BackColor = "&HFF00FF"

debug.printの結果はstringでした。そりゃそうか。
2017/06/16(金) 16:41:13.41ID:OvmXQ03X0
>>779
あ、書くの忘れてました。
↓これの""を取ったらエラー出ず色がもとに戻りました。ありがとうございました。
CommandButton1.BackColor = "&H8000000F&"
2017/06/16(金) 17:59:38.04ID:LikhkzB3a
>>778
&H〜&は16進数だったかな
2017/06/16(金) 21:04:08.81ID:8NWwObqWM
>>774
VBAのforeachは扱いづらいよね。
for each file in folder.files なんかは一度別の配列なりcollectionなりに入れちゃった方がindexが動かないから無難。
range.deleteやrange.insertは一度のループで処理しようとせずに、別にループを回すか、index降順でループするのが無難。
2017/06/16(金) 21:12:24.56ID:QcYuYCTF0
for eachとcells()は相性が悪い
cells().deleteを絡めると参照が変な位置に飛ぶ(気がする)。理由はわからん
deleteを絡めるならfor next step-1にしたほうがいい
2017/06/16(金) 21:13:11.64ID:OvmXQ03X0
>>778です。何度もすいません。
>>778の質問はダブルクオーテーションマークを削除して解決しましたが、
なぜ、CommandButton1.BackColor = "&HFF00FF"、はエラーが出ずにボタン背景色が変更され、
CommandButton1.BackColor = "&H8000000F&"、これだとエラーが出るのか教えて頂けないでしょうか?
786デフォルトの名無しさん (ワッチョイ ba91-XHCC)
垢版 |
2017/06/16(金) 21:14:43.63ID:82cvwDvY0
>>785
エラーが出る方は桁数が多いからじゃね?
2017/06/16(金) 21:15:01.98ID:OvmXQ03X0
>>785
ちなみに、VBAはマクロの記録したものをネットで検索してちょっといじくる程度の初心者レベルです
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
2017/06/16(金) 21:20:57.72ID:OvmXQ03X0
>>786
"&H8000000F&"の方が文字数が多い(桁数が多い)というのはわかりますが、それでなぜエラーが出るのでしょうか?
2017/06/16(金) 21:22:35.82ID:nh1Jx8jt0
>>785
CommandButton1.BackColor = "&H8000000F"
でどう?
2017/06/16(金) 21:24:07.49ID:QcYuYCTF0
>>789
コンソールで以下を叩いてみれ
? &H8000000F
792デフォルトの名無しさん (ワッチョイ ba91-XHCC)
垢版 |
2017/06/16(金) 21:25:32.82ID:82cvwDvY0
>>789
色の取りうる範囲を超えた値だからかな
2017/06/16(金) 21:29:07.51ID:8NWwObqWM
>>785
colorはlong型なので、右辺はlong型にキャストされている。
そんで、右辺=2147483663は、そもそもlong型の上限を超えているのでエラーになる。
まあその前に、色は256の3乗=16777216パターンなので、そこではねられてるかもしれない。
2017/06/16(金) 21:37:27.08ID:Wj1oysWPa
Debug.Print Typename(&H8000000F&)
Debug.Print Typename(Val("&H8000000F&"))

Longに見える文字列でも自動型変換では以前の型は考慮されないと思う。
795デフォルトの名無しさん (ワッチョイ ba91-XHCC)
垢版 |
2017/06/16(金) 21:43:40.45ID:82cvwDvY0
>>794
typename(clng("&H8000000F"))
なんじゃね
2017/06/16(金) 21:49:00.55ID:Wj1oysWPa
>>795
それじゃLongになっちまうだろ。
"&H8000000F&"が型変換でどう解釈されたかを調べてるんだぞ。

わざわざ最後に&付けてLong指定してるのにどうしてDoubleになるのかと言えば&付いててもStringなんだから&は考慮されないと予想。
2017/06/16(金) 21:49:23.66ID:YneIl6smM
確認したら、
clng("&800000F") => -2147483633
でキャストは通るね。間違い書いてすんません。
798デフォルトの名無しさん (ワッチョイ ba91-XHCC)
垢版 |
2017/06/16(金) 21:51:25.40ID:82cvwDvY0
そもそもエラーって何のエラーかわかってないんだが
何エラー?
2017/06/16(金) 21:52:52.22ID:Wj1oysWPa
>>798
Long型のプロパティにDouble型の値を代入しようとしたエラー
800デフォルトの名無しさん (ワッチョイ ba91-XHCC)
垢版 |
2017/06/16(金) 21:55:42.55ID:82cvwDvY0
>>799
エラーメッセージにそう出るの?
エラーメッセージを解釈した結果?
2017/06/16(金) 21:57:25.30ID:YneIl6smM
.backcolorプロパティ内で範囲外エラーを返しているのかと思ったけど違うのかな?
2017/06/16(金) 21:58:00.70ID:Wj1oysWPa
>>800
解釈した結果
そのために>>794書いたつもり。
2017/06/16(金) 22:02:09.58ID:Wj1oysWPa
>>801
""取ったらエラー出てないし、エラーも型が一致していないってことだから。
まあ、同じことでしょ。
804デフォルトの名無しさん (ワッチョイ ba91-XHCC)
垢版 |
2017/06/16(金) 22:02:42.94ID:82cvwDvY0
>>802
それだと本当はDouble型かLong型かわからなくね?
暗黙の型変換でlong型になってるかもしれない

colorプロパティはlong型みたいだし
2017/06/16(金) 22:25:40.96ID:Wj1oysWPa
>>804
Val("&H8000000F&")はDoubleだけど、
"&H8000000F&"を暗黙の型変換した場合はLongかも知れないということ?
だったらエラーは出ないんじゃね?
2017/06/17(土) 03:41:22.96ID:5p5fyGrH0
暗黙の変換やClng関数は、型指定文字があるとエラーになる
それだけ
ちなみにValは、型指定文字を無視する

試したけど
暗黙の変換でLongに収まらないときはオーバーフロー
型指定文字が入ってるときは型が一致しません
エラーの種類違うし
2017/06/17(土) 05:35:44.93ID:sBDEiRXs0
>>792 >>801
&H8000000F は RGB値ではなくシステム カラーだと思うのだけど?

システム カラー定数
https://msdn.microsoft.com/ja-jp/library/office/gg264801.aspx
808デフォルトの名無しさん (ワッチョイ ba91-XHCC)
垢版 |
2017/06/17(土) 05:54:42.06ID:Zt5CuQ5d0
>>807
"で囲ってない時はシステムカラー定数と認識されるけど
"で囲ってる時は型変換されてlong値になって値の範囲が不正になるのかな
2017/06/17(土) 06:26:45.69ID:sBDEiRXs0
>>808
"&H8000000F"は16進表現として認識てきて 型変換してるけど

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

最後の&がエラーの原因だな
2017/06/17(土) 08:14:56.44ID:SCg1HEQ40
おいらの法則
2017/06/17(土) 08:22:33.99ID:qHcE0uCX0
シドロモドロ以来だな
2017/06/17(土) 19:37:25.20ID:VvIBcq8u0
>>813
それだと"&H8000&"でもエラーになる?
2017/06/17(土) 19:57:38.80ID:Es/QpSxK0
トランスポーズすると、2次元配列を1次元配列に変換できる!!
使い道は分からない!!
以上!!
818デフォルトの名無しさん (ワッチョイ ba91-XHCC)
垢版 |
2017/06/17(土) 22:12:46.54ID:Zt5CuQ5d0
>>816
同じ型が一致しませんのエラーになる
2017/06/18(日) 00:00:52.09ID:8soX4XuF0
>>818
おお、じゃあ変換できないので文字列のままでエラーってことだな。
2017/06/18(日) 15:49:05.91ID:RSPvKv4Y0
>>817
横に並んだデータをサクッと一次元配列にしたいときに使う
821デフォルトの名無しさん (ササクッテロリ Spab-XHCC)
垢版 |
2017/06/18(日) 16:32:07.44ID:rdefnVQJp
>>817
a. 2行2列を要素数4の配列にできる
b. 1行4列を要素数4の配列にできる
c. 4行1列を要素数4の配列にできる

どれが出来てどれが出来ないの?
2017/06/18(日) 17:09:23.21ID:Q0TjVwCE0
Transposeは一列もしくは一行の場合は強制的に一次元配列する。
なお同じ機能の関数を自作しても処理時間は変わらない模様。
2017/06/18(日) 17:17:35.08ID:dGQ95y/Y0
>>822
一行だったら二次元配列に変換されるよ
2017/06/19(月) 03:47:46.84ID:5j/B6amKa
便利だから使ってたけど処理時間変わらないのか
それは知らなかった

自作関数書くよりはちょっとお手軽くらいに思っとけばいいのかな
2017/06/19(月) 12:09:46.78ID:ABDk/3ER0
WorksheetFunctionとかの一部の関数は処理時間見る限り全部VBAで書かれているか、あるいは同じレベルで実装されているみたい。
なんなら初めに条件を絞れる分、元から入っている関数よりも自分で書いた方が速い事もある。
2017/06/19(月) 13:25:12.20ID:VrV9No710
すいません。
エクセル初心者です。
エクセルでハンゲームのオセロの棋譜を取得するツールを作ろうと
思ったのですがよくわかりません。
誰か作り方を教えてください。
2017/06/19(月) 15:14:07.46ID:kr/oTAEDa
>>826
その聞き方じゃ何もわからないし、君には無理だね
2017/06/19(月) 18:50:13.11ID:qZE6both0
>>826
君のレベルに対してやろうとしてることのレベルが高すぎる
あとめちゃくちゃめんどくさい
素直に棋譜の取れるオセロゲームやったほうが良い
829デフォルトの名無しさん (ワッチョイ b78b-1MEk)
垢版 |
2017/06/19(月) 19:04:20.53ID:/dj/ZZBt0
ダウンロードするだけとちゃうんか?
2017/06/19(月) 19:25:26.80ID:VrV9No710
多少面倒くさくても頑張ろうと思います。
ご教授お願いします。
やる気はあります。
ヒントだけでもm(_ _)m
2017/06/19(月) 19:38:14.34ID:qZE6both0
>>830
IEインスタンス作ってそこから中身引っ張り出して・・・
正直、内容がアホらしすぎて教える側にやる気が出ない
2017/06/19(月) 19:44:05.99ID:VrV9No710
ありがとう。
IEインスタンスってものを作れば作れるんですか。
もう少し踏み込んだヒントをください。
お願いします。
833デフォルトの名無しさん (ワッチョイ b78b-1MEk)
垢版 |
2017/06/19(月) 19:45:57.34ID:/dj/ZZBt0
え?ハンゲームやろ?なんで急にインスタが出てくるんや?
2017/06/19(月) 19:53:07.52ID:qZE6both0
>832
この先は俺も知らないし、他の誰も知らない
インスタンスの中身を探っていけばその内見つかると思う
2017/06/19(月) 20:02:44.41ID:VrV9No710
>>833
インスタンスを使わない手段もあるんですか?

>>834
ありがとうございます。
インスタンスを探してみます。

一つ質問ですが
インスタンスってなんですか?
2017/06/19(月) 20:21:11.16ID:PPgDuBFH0
ネタにマジレスすんなスルーしろよ
2017/06/19(月) 20:23:09.22ID:VrV9No710
ネタ?
誰に言ってるの?
838デフォルトの名無しさん (ワッチョイ b78b-1MEk)
垢版 |
2017/06/19(月) 20:31:11.32ID:/dj/ZZBt0
>>835
いや普通に考えて使わんやろ?
それとも俺が知らんだけでハンゲームの棋譜がインスタにアップされてたりすんのやろか?
2017/06/19(月) 20:33:24.35ID:VrV9No710
>>838
よしよろしければインスタを使わない方法を御存知でしたら教えてください。
2017/06/19(月) 20:38:44.97ID:bf7vlYv00
1)棋譜を君の脳内に取得して(記憶というw)
2)その脳内に取得した棋譜を 手入力という手法を使ってexcelへ転記する
-完成-
841デフォルトの名無しさん (ワッチョイ b78b-1MEk)
垢版 |
2017/06/19(月) 20:44:19.79ID:/dj/ZZBt0
>>839
まずハンゲームをダウンロードしたらええんとちゃうか?
2017/06/19(月) 20:47:27.35ID:n6H3aqi00
ID:/dj/ZZBt0 ...
2017/06/19(月) 20:50:01.00ID:VrV9No710
>>841
ハンゲームはダウンロード済みです。
ダウンロードしないとゲームができません。
その後はどうすればいいの?
844デフォルトの名無しさん (ワッチョイ b78b-VPaF)
垢版 |
2017/06/19(月) 20:57:49.05ID:/dj/ZZBt0
>>843
ああそうなんかw知らんかったw
ハンゲームがあるんやったら次はおもむろに
wiresharkとかfiddlerを立ち上げて通信の傍受やろな普通は
2017/06/19(月) 21:30:02.75ID:xy6F3ofWa
一般に公開されてるデータじゃないなら無理
不可能
846デフォルトの名無しさん (ワッチョイ 5623-VLdI)
垢版 |
2017/06/19(月) 21:54:46.68ID:VrV9No710
エクセルに詳しい方、回答お願いします。
2017/06/19(月) 22:03:15.20ID:xy6F3ofWa
>>846
一応いっとくけど、エクセルの問題じゃないからね
2017/06/19(月) 22:06:34.40ID:VrV9No710
>>847
VBAってものを使えばいいんですよね?
それは承知しております。
2017/06/19(月) 22:06:40.01ID:UFkjuB9W0
>>846
ちなみにVBAはどの程度知っているのか?
Option Explicit って知っている?
2017/06/19(月) 22:14:02.70ID:NPLs9gl60
そもそもハンゲームのオセロがどういうものかわからないし
たぶんUWSCあたりで盤面を画像処理で認識して記録していくのが一番手っ取り早いと思う
これなら調べながら誰でもできる
2017/06/19(月) 22:15:29.75ID:VrV9No710
VBAはよくわかりません。
ただVBAを使えばなんでもできるという話を聞きました。
これから勉強しようと思ってます。
Option Explicitは聞いたことないです。
2017/06/19(月) 22:19:01.40ID:VrV9No710
>>850
ハンゲームオセロの棋譜取得ツールは既に作って公開されてる方がいます。
画像認識で高速で打つオセロの棋譜なんかも取得できるものなのでしょうか?
公開されてるツールはVBAではありませんが、何か画像認識とは異なるようです。
2017/06/19(月) 22:19:42.57ID:UFkjuB9W0
>>851
完成目標 10年後くらいで勉強していけw
2017/06/19(月) 22:22:04.62ID:NPLs9gl60
>>852
じゃあそれ使ってログを読み込めばいいだけじゃんw
2017/06/19(月) 22:28:44.54ID:VrV9No710
>>853
10年かかっても勉強する根気はあります
VBAを始めるにしても具体的に何の勉強が必要なのか
そのヒントが欲しいです

>>854
ログを読み込むというのは別の人が作ったツールを使うってことでしょうか?
自分で作りたいのです。
856デフォルトの名無しさん (ワッチョイ db0d-VLdI)
垢版 |
2017/06/19(月) 22:29:24.47ID:POTmza9M0
釣りならvipでやれ
2017/06/19(月) 22:32:38.02ID:VrV9No710
>>856
逆にお返ししますが
冷やかしならvipでやれ

僕は真面目に質問してます。
2017/06/19(月) 22:34:02.52ID:UFkjuB9W0
>>855
プログラミングの初歩から勉強しないといけないわけで。千里の道も一歩からなんで
とりあえずはVBAの入門書でも見繕ってそれを勉強していけよ。やりたいことはそういう基礎が
出来てからの話なんで

後、あまり続けけるとここの住人から怒られるよ(もう既に怒り始めてるけどw)
2017/06/19(月) 22:42:15.31ID:VrV9No710
入門書は見たことがありますが
棋譜の取得方法が載ってませんでした
2017/06/19(月) 22:43:01.87ID:qZE6both0
10年かかってオセロの棋譜を取得、結構面白かったw
2017/06/19(月) 22:47:50.75ID:UFkjuB9W0
>>859
そんなピンポイントに自分の希望するネタが載ってるかってのw
後、俺もコレに関しての書込みはもう止める
2017/06/19(月) 22:55:14.29ID:VrV9No710
ピンポイントで載ってないのは知ってますよ。
これが最後の質問なのでどなたかマジレスお願いします。
オセロの棋譜を取得するには入門書の次はどの書籍で何を勉強すればいいですか?
863デフォルトの名無しさん (ワッチョイ b78b-VPaF)
垢版 |
2017/06/19(月) 22:57:30.40ID:/dj/ZZBt0
まだやっとったんか
もう少しマジメにこたえてやろうか?
2017/06/19(月) 23:00:07.06ID:VrV9No710
>>863
おねがいします
2017/06/19(月) 23:00:26.94ID:PPgDuBFH0
だからスルーしろって言っただろ…
2017/06/19(月) 23:27:28.51ID:sdf0wvxm0
Excelで作成済みの表で太線部分をすべて二重線に変更するとか
通常の太さの線をすべて点線に変更するような処理をVBAでできますか?
2017/06/19(月) 23:41:34.64ID:VrV9No710
オマエラ、回答スキルがないから冷やかしや煽りしかせんのだろ
こんなスレで質問した僕が愚かでした
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
2017/06/20(火) 00:06:57.22ID:cAv1G3zS0
>こんなスレで質問した僕が愚かでした
これ言いたかっただけやろ
2017/06/20(火) 00:57:33.30ID:epuuDDzl0
棋譜作成ツールの存在を知ってたんなら、まず制作者にコンタクト取ればいいのに。
2017/06/20(火) 01:49:00.45ID:daMMiZS+0
普通そういう対戦ゲームってテキストかなんかでゲームヒストリー保存されてるんじゃないの?
2017/06/20(火) 07:04:14.89ID:kfZB+qqb0
>>866
できるよ
2017/06/20(火) 07:05:49.17ID:kfZB+qqb0
>>867
ちがうよ
質問が間抜けすぎると回答できないんだよ
野球未経験者に150キロの投げ方教えろって言われても無理なもんは無理
2017/06/20(火) 08:15:35.18ID:0I9nr4ea0
>>871
ハンゲームはフラッシュだからな〜
IEの中身見て、フラッシュの中身見て…
暗号化やプロテクトがかかってると更にめんどくさい、ってかお手上げ
2017/06/20(火) 09:31:22.77ID:Yjttzp/I0
>>873
残念。
野球素人にも正しいフォームとトレーニング方法を教えれば
150キロは無理でも120キロの球なら投げられる。
僕はこのスレで質問しても120キロの投げ方のヒントすら得られなかったよ。
120キロの投げ方でも教えてくれればオマエラを尊敬したのにね。

>>874
ハンゲはフラッシュゲームもあるけど
僕が質問してるのはFlash版じゃない方ですよ。
2017/06/20(火) 09:48:00.02ID:4C+vIjyGx
>>875
まぁ身に付くかは別問題だし
教えるなら150の香りがする方よ。








君?
匂う臭う
2017/06/20(火) 10:30:33.26ID:epuuDDzl0
調べて分かる事すら訊いてくる性格の人には何教えても身につかないしね。
2017/06/20(火) 10:35:20.51ID:fiT3zbOfa
>>875
すまん例えを間違えたわ
サッカー選手にそれを聞いてるようなもんだわ
なぜならハンゲームの仕組みは専門外だから
まずは棋譜がどのような仕組みで配布されているのか、いないのか
ダウンロード出来るのか出来ないのか
アプリはどんな形で配布されているものなのか
質問するならそのぐらいは情報としてないとね
ハンゲームのことなんて知らないからさ
2017/06/20(火) 11:41:22.61ID:M2VUAsfa0
>野球素人にも正しいフォームとトレーニング方法を教えれば
>150キロは無理でも120キロの球なら投げられる。

その素人が練習したらだろ?お前、練習すらしねーじゃん。練習した上で抜かせヴォケ
2017/06/20(火) 11:52:13.42ID:JmP4tpNDd
2ちゃんねるをプロが集まる場所だと勘違いしたんだろうよ
2017/06/20(火) 12:04:10.53ID:5ysl0/W+M
な。スルーで正解だったろw
882デフォルトの名無しさん (オッペケ Srab-VPaF)
垢版 |
2017/06/20(火) 12:17:43.67ID:PW/vl+jdr
いやお前はどっちにしろ答えられんから正解かもしれんけどw
2017/06/20(火) 12:38:17.50ID:z3uMks1C0
すぐ上に誰にも答えられないって書いてあるわけだが
2017/06/20(火) 12:45:36.63ID:JmP4tpNDd
>>851
「VBAを使えばなんでもできる」という話は信じ込んでいるわけか。
でもこのスレでの忠告は聞かない、と。

なかなか変わった精神の持ち主だ。
885デフォルトの名無しさん (アウアウウー Sa77-lwmD)
垢版 |
2017/06/20(火) 12:48:41.53ID:R6esiUjXa
オセロの棋譜もとれるんです
そう!vbaならね
2017/06/20(火) 14:07:00.11ID:epuuDDzl0
既にハンゲームのオセロの棋譜を取るツールがあるんだから作れる事は作れるだろうけどね。
ただ言語的な向き不向きがあるから。
887(ワッチョイ 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で買える仕組みにしています。
他人の商品を紹介して、そこから「おこぼれ」を貰うより、自分の商品を売った方が
遥かに儲かりますからね。
リンジー・スターリングは踊りながら、バイオリンを演奏する、アーティストですが・・・
彼女の場合も、あくまでも動画を投稿するのは、自分のビジネスである、
ツアーチケットやアルバムの販売のためなのです
2017/06/20(火) 17:07:28.52ID:nFgQnGjya
できるけどハードル高過ぎだよな。
UIAutomationで攻めるかWindowHandleで攻めるか、それともGDI+で攻めるかになると思うけど。

意外にGDIplusで攻めるのが簡単かもね。
889デフォルトの名無しさん (ワッチョイ b78b-1MEk)
垢版 |
2017/06/20(火) 19:12:39.08ID:pPHD0ZXr0
お前らが丁度盛り上がれる質問てめちゃくちゃ幅が狭いよなw
それよりちょっとでも上か下にずれたら質問者総叩きっていうw
2017/06/20(火) 19:19:55.60ID:0I9nr4ea0
>>889
9割ぐらいのまともな質問は一瞬で回答して終わるから、そう見えるだけだよ
891デフォルトの名無しさん (ワッチョイ b78b-1MEk)
垢版 |
2017/06/20(火) 19:26:00.76ID:pPHD0ZXr0
>>890
盛り上がれる質問の幅が狭い

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

わかるかな?
でお前にはどう見えてるの?言うてみ?w
2017/06/20(火) 19:34:28.87ID:0I9nr4ea0
イベントで貼り付けって検知できますか?
2017/06/20(火) 20:08:27.14ID:Yjttzp/I0
>>880
ここは素人が玄人ぶるスレか?
2017/06/20(火) 21:32:49.05ID:JmP4tpNDd
プロはブログかTwitterだろう
2ちゃんとQiitaは素人ばっかり
2017/06/20(火) 22:07:50.66ID:epuuDDzl0
実績のある個人を追跡しやすい媒体に比べたら不特定多数が参加できる媒体は敷居が低い分ノイズが乗りやすいからね。
どんなふうに検索しても見つからない時、糸口になればいいなくらいの気持ちで付き合っていくべきでしょ。
2017/06/21(水) 00:33:07.21ID:uohPApVY0
>>892
Excelのユーザー操作ということでいいんだよなこのスレなんだから

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

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

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

もっとストレートにやりたいこと書けばもうちょい回答出そうだけど
2017/06/21(水) 01:34:26.99ID:WuwcSk/R0
>>892
少し前に組んだことある。
たしかUndoの情報にアクセスしてゴニョゴニョ、、
2017/06/21(水) 07:42:58.19ID:ICxYo2sfa
>>889
質問が悪いから仕方ないよね
もう少し具体的に質問してくれたら盛り上がれたかもしれない
2017/06/21(水) 08:31:04.14ID:/9zCdexY0
レベルの低い質問のにはレベルの低い回答しかできないってだけなんだが
2017/06/21(水) 08:33:43.68ID:ajPkQF0EM
プロなら質問内容を精査してちゃんと答えたりするんだろうが所詮吹き溜まりだからなぁ
俺らにゃ難しいな
2017/06/21(水) 10:47:46.94ID:eLmte6hpa
>>900
してやる義理もないし
2017/06/21(水) 10:56:10.43ID:v7daEmTSH
>>900
俺もしないよ
なんで無料でそんなことしなきゃならんのだ
2017/06/21(水) 11:24:04.77ID:XUERnIj3d
>>900
吹き溜まりっていうか、普通のユーザーしかいないってだけだろう
2017/06/21(水) 11:34:07.17ID:XUERnIj3d
野球がどうこう言ってるやつは野球板に行って同じ発言してこい
「プロはいないのか?ここは雑魚ばっかりだな」
905デフォルトの名無しさん (オッペケ Srab-VPaF)
垢版 |
2017/06/21(水) 12:18:28.53ID:GOe8ggdQr
>>901
お前が回答する義理がないのはもちろんだが
回答できないからといって質問者を妨害する行為はいただけないな
906デフォルトの名無しさん (アウアウウー Sa77-lwmD)
垢版 |
2017/06/21(水) 12:24:13.39ID:UVc+8Jvua
でもあの質問者はvbaってよく知らないけどなんでも出来るって聞きましたってレベルだったからな
答えわかる奴がいても伝えられなかっただろうな
2017/06/21(水) 12:24:50.30ID:/9zCdexY0
妨害って具体的に何よ
2017/06/21(水) 12:28:46.90ID:aEmRy35ox
>>907
思い通りにならないこと
909デフォルトの名無しさん (ササクッテロリ Spab-XHCC)
垢版 |
2017/06/21(水) 12:39:14.77ID:OZ7YKCT4p
>>900
プロなら代金を取る
2017/06/21(水) 12:41:10.08ID:39L7Vonk0
回答するしないは自由だが
回答できない雑魚はROMってろ

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

雑魚は黙ってROM
これが2CHのルールやで
911デフォルトの名無しさん (ササクッテロリ Spab-XHCC)
垢版 |
2017/06/21(水) 12:43:11.08ID:OZ7YKCT4p
>>910
そんなルールあったか?
あったとしても守らないといけないのか?
2017/06/21(水) 12:55:06.38ID:v7daEmTSH
まあ大抵において、俺ルールを押しつけようとする奴が現れると荒れるわな
2017/06/21(水) 12:56:32.98ID:aEmRy35ox
ワッショイ
ワッショイ
└(゚∀゚└) (┘゚∀゚)┘
2017/06/21(水) 13:08:10.40ID:39L7Vonk0
>>911
「俺様は優秀、でも回答してやらない」アピールをすることに何の意味があるの?
お前は法律がなくなれば明日にでも人を殺すのか?
>>910に書くルールがなくてもマナーとしてはアタリマエのことだろ?
2017/06/21(水) 13:10:07.01ID:v7daEmTSH
>>914
お前には、誰のどんなレスも止められない
この程度のことがわからない奴が暴れるから荒れるんだよ
2017/06/21(水) 13:29:54.52ID:39L7Vonk0
質問スレは
質問者が質問をし
回答者が回答するスレやで

雑魚が自分アピールするスレちゃうよ
2017/06/21(水) 13:32:38.01ID:AkQPZhAca
>>905
俺はちゃんと要件伝えてねってそれしか言ってないが
2017/06/21(水) 13:38:49.64ID:YcBGJgEk0
>>916
質問スレであって 回答スレじゃないと思うが

ここの存在意義?? 知らん 楽しけりゃなんでもいいんよ
2017/06/21(水) 13:39:58.40ID:39L7Vonk0
質問スレは
・質問
・回答
・誘導
・スルー

この4つだけでいいよ
次スレのテンプレに入れておいてな
2017/06/21(水) 13:42:09.01ID:v7daEmTSH
ここが気に入らないんなら、teratailあたりにでも行けばいいんじゃないですかね
2017/06/21(水) 13:43:02.96ID:v7daEmTSH
>>919
まずお前がスルーしろや
2017/06/21(水) 14:15:34.69ID:ajPkQF0EM
>>919
質問したけど回答が満足行かないから俺ルールを強制するってみっともないよ
2017/06/21(水) 14:20:17.16ID:39L7Vonk0
優秀なオマエラのVBA作品が見てみたいな
どれほどのスキルが有るんやろなw
2017/06/21(水) 14:31:16.49ID:Nqf9zhaca
たかだか2ちゃんのスレに本気になりすぎだろ
肩の力抜けよ
そもそもお前のルールから行くと自治もいらんからな
2017/06/21(水) 15:04:48.95ID:39L7Vonk0
本気にはなってるが熱くはなってないよ
オマエラがExcelでハンゲの棋譜取得ツールを作ってうpしたら
俺は土下座したるわ
2017/06/21(水) 15:09:03.30ID:YcBGJgEk0
誰もおまいの土下座なんか興味ないと思うな
2017/06/21(水) 15:10:01.24ID:XUERnIj3d
どんなに壮麗雄大なVBA作品でもその目的にかなうものでないとダメ
2017/06/21(水) 16:21:06.15ID:wPEHzi2i0
クラスモジュールにメソッド記述できるの?コンストラクタ機能する?
2017/06/21(水) 16:58:18.58ID:/9zCdexY0
暴れてるのはやっぱり棋譜君かw
もう来ないっていう奴に限って粘着するんだよな

自分にできないことをタダで教えてもらおうとしてるのに、変に態度がデカイから叩かれてるって状況なのは理解できてんのか?
2017/06/21(水) 17:17:01.69ID:v7daEmTSH
>>928
> クラスモジュールにメソッド記述できるの?
もちろんできる

> コンストラクタ機能する?
もちろん機能するが、引数は受け取れない
2017/06/21(水) 19:44:11.93ID:XUERnIj3d
>>928

Private Sub Class_Initialize()
というメソッドがコンストラクタに相当するが引数を取れない。
各メンバを任意の値で初期化することがここではできない。
別なユーティリティー関数(createなんちゃら系)を用意するとかすればいいけど面倒だしかなり制約がある。
932デフォルトの名無しさん (ワッチョイ b78b-1MEk)
垢版 |
2017/06/21(水) 20:12:26.52ID:Nm67/2LE0
>>929,930
お前ら変に態度がデカイな
というか分不相応に背伸びしてるなw
2017/06/21(水) 20:19:33.82ID:smv2bKPw0
>>932
棋譜君に言われたくないわw
934デフォルトの名無しさん (ワッチョイ b78b-1MEk)
垢版 |
2017/06/21(水) 20:37:08.53ID:Nm67/2LE0
>>933
お前は素直に悔しさがにじみ出ててある意味好ましいなw
せやけどワイは棋譜君ちゃうでwどこに目つけとんのやボケカスw
2017/06/21(水) 20:46:41.02ID:2GAW1ejj0
>>931
>各メンバを任意の値で初期化することがここではできない。
詳しく
2017/06/21(水) 21:30:21.72ID:smv2bKPw0
棋譜君ブーメラン刺さり過ぎ少し自重しろw
2017/06/21(水) 21:31:18.60ID:FfOd2t570
>>935
任意じゃなくて生成時に(任意の値を)指定できない
って言いたかったんだと思う
固定でいいなら Class_Initialize() で設定すればいいだけ
2017/06/21(水) 21:46:01.44ID:XUERnIj3d
>>935
Private Sub Class_Initialize(ByVal a As...)

というふうに任意の引数を取れたなら、コンスタラクタ内で
member_a = a
とメンバを初期化できるけど、残念ながらそうはいかない。
Setterメソッドを作るとかProperty Setするとかでもいいんだけど、
最初にコンストラクタで設定した後はconsantにしたい、などといったありがちな要件の実装がたるい。
2017/06/21(水) 22:16:06.05ID:XUERnIj3d
× consant
○ constant
2017/06/21(水) 23:09:43.88ID:X7TxQ1fN0
棋譜君か
いいな称号もらえて
2017/06/21(水) 23:28:59.00ID:4v2NPsWb0
>>925
多分出来ると思うけどさ、ハンゲってインストールしないとダメだろ。
正直、めんどくさい。

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

オセロの場合は64マスのそれぞれの中心の1点の色を取得するだけで判断できそうだ。
2017/06/22(木) 04:54:14.84ID:mLhBpt5P0
>>941
優秀なVBAの達人さん。
お待ちしております。
VBAのプロなんだからハンゲインストールくらい余裕だよな?
VBA初心者の俺でもハンゲインストールはワンクリックで出来たよw
2017/06/22(木) 06:17:32.89ID:TFRkyanR0
老害っぽいやつだ
2017/06/22(木) 08:56:25.64ID:S0Iit3hkd
棋譜...か

http://internet.watch.impress.co.jp/docs/special/fukui/644307.html
2017/06/22(木) 11:33:54.73ID:mLhBpt5P0
オマエラがスレ荒らしてる間に俺は勉強して
メッセージボックスにハローワールドを表示できるようになったわ
このペースなら一ヶ月で棋譜取得も余裕だな
2017/06/22(木) 11:52:44.41ID:hctlo4/EM
わかったから完成するまで戻ってくるなよ
2017/06/22(木) 12:19:13.83ID:/tNwi6Pdx
>>948
逆に教えてやれよ
951デフォルトの名無しさん (オッペケ Sr0b-PFZU)
垢版 |
2017/06/22(木) 12:19:24.38ID:GH5F8R2nr
やっぱり悔しいの?自分には出来ない話題になると?
2017/06/22(木) 12:29:19.22ID:9kjviait0
>>951
棋譜君がやっと自分でやる気になったんだから、そっとしておいてやれよ
2017/06/22(木) 12:32:59.06ID:/tNwi6Pdx
>>951
できない自分に悔しさ感じないとか
変わったお人ですね
2017/06/22(木) 12:37:38.83ID:S0Iit3hkd
むしろ特定の目的をもってプログラミングを学ぼうとすることが羨ましい。
俺にそういうものはなかった。
955デフォルトの名無しさん (アウアウウー Sa9b-3vDw)
垢版 |
2017/06/22(木) 12:53:45.84ID:eYzO7IsEa
「vba初心者の棋譜くんがハンゲから棋譜を取得するスレ」でスレたてすれば勉強してて分からないとこを質問できるし良いアイデアももらえるかもしれないよ
棋譜くんがんばれ
2017/06/22(木) 12:55:39.70ID:ZjBitWzo0
>>945
そうじゃなくてインストールしたくないという話。
コードも面倒くさくなりそうだってのも含む。

>>948
多分、数年はかかるんじゃない?
そんなレベルなら。
20年前の俺もExplorerみたいなの作りたいとか難易度も知らずに無謀なこと考えてたけど。
2017/06/22(木) 13:29:52.31ID:2BtLx4BNa
なんでお前に教えるために興味のないアプリをインストールしなきゃならんのだ
前提がおかしいんだよな
俺が間違ってんのか?
2017/06/22(木) 13:29:58.85ID:mLhBpt5P0
>>950
おう!俺は出し惜しみしないぜ

>>955
うん、頑張るよ
スレ立ても躓いたら検討するよ

>>956
20年て。。。
プロ通り越して仙人やないかいw
プログラミングの仙人でも難しいのか。
目標はそれくらいの方がええわw
2017/06/22(木) 15:04:39.46ID:S0Iit3hkd
目標は高く持つけどVBAなのか。
止めはしないけど
2017/06/22(木) 16:05:33.54ID:mLhBpt5P0
手始めにVBAでアルゴリズムの基本を学んだ後に別の言語へ移ろうと考えてます。
情報量も多いし、敷居も低そうなので。。。
JavaScriptとどちらにしようか悩んだけどExcelが使えるのでより直ぐ形になると考えたんだけど
選択を間違えてるかな?
2017/06/22(木) 16:20:13.94ID:L6J8NTN5H
>>960
rubyにしとけ
2017/06/22(木) 16:26:38.28ID:mLhBpt5P0
rubyを勧める理由ってなんですか?
プログラミング入門に向いてるの?
2017/06/22(木) 16:31:17.18ID:M1N7LhZL0
C言語が定石でしょ。
2017/06/22(木) 17:33:47.29ID:L6J8NTN5H
>>962
情報量が多いし、敷居も低そうだから
http://paiza.hatenablog.com/entry/2015/02/12/%E5%88%9D%E5%BF%83%E8%80%85%E3%81%A7%E3%82%82%E3%81%BB%E3%81%BC%E7%84%A1%E6%96%99%E3%81%A7%E6%A5%BD%E3%81%97%E3%81%8FRuby%E3%82%92%E5%AD%A6%E3%81%B9%E3%82%8B%E3%82%B3%E3%83%B3%E3%83%86%E3%83%B3%E3%83%8411
2017/06/22(木) 17:48:14.89ID:TQCcarKna
わざわざ他の言語が使える環境なのにVBAでやる必要性はたしかに無い
不親切だからな
966デフォルトの名無しさん (ワッチョイ b78b-IH/U)
垢版 |
2017/06/22(木) 19:41:10.91ID:hFeKbvvW0
>>957
そもそもお前には他人にものを教えられる程の知識も技能もねえじゃんw
根本からお前が間違ってるわw
2017/06/22(木) 20:31:25.01ID:8ePuyD7a0
ホントそれ
質問に難癖つけてるだけにしか見えないよね

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

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

人工知能にも興味あるのでPythonってよく聞く名前だなあ。
ありがとう。ちょっとググってみる。
2017/06/22(木) 22:36:46.43ID:mLhBpt5P0
最終的にはマイコン制御、Androidアプリ、人工知能の開発をやりたいんだけど
Rubyとpythonは向いてますか?
973デフォルトの名無しさん (ワッチョイ b78b-PFZU)
垢版 |
2017/06/22(木) 22:43:25.90ID:hFeKbvvW0
どれもエクセルで十分
2017/06/22(木) 22:45:06.66ID:9Bs/appw0
>>972
色々やりたいならjava覚えておくといい。一番潰しが効く
pythonもいい。アメリカでは児童の教育にはpythonが使われている。ただ色々と癖が強い
Rubyは楽だけどなんだかんだで使えない器用貧乏
2017/06/22(木) 22:49:11.54ID:M1N7LhZL0
マイコン制御やるならマシン語から覚えるべきじゃないかな。
2017/06/22(木) 23:04:57.74ID:mLhBpt5P0
>>974
トンクス。
入門にpythonかRubyを選択して
行く行くはjabaって感じがいいのかな。。。
勉強します。
2017/06/22(木) 23:42:17.05ID:TQCcarKna
windowsAPIとかをExcelVBAの範疇に含むのかという微妙な線引き
2017/06/23(金) 01:53:42.48ID:PRZBxWUY0
含みはしないだろどう考えても
いろいろ作ってると必要になる場面があるのも事実だから
どこまでこのスレで受け付けるのかとなると微妙な線引きだけれどさ
2017/06/23(金) 04:09:20.38ID:xFxOWaa40
基本的に参照設定の要らない範囲だけに絞ってしまえばいいのでは。
機能を名指して来た場合は個別に答えるものとすれば、質問スレとしては用が足りる気がするけど。
2017/06/23(金) 10:37:14.35ID:cw0tcleu0
>>971
無理じゃないけど何故?ってのがある。

>>977
>>978
>>979
他の言語だってライブラリ込みだろ。
2017/06/23(金) 11:33:03.90ID:MetN1w+0H
jabaという言語が有るのか
不勉強でしらなかった
2017/06/23(金) 11:38:48.48ID:wPBxbG6Pd
自分が無理なく使えるのものは何でも使えばいいさ
2017/06/23(金) 21:24:53.71ID:GsZt4akIa
風呂洗うやつか
2017/06/23(金) 23:08:49.98ID:ht4/Fnqg0
エクセル2019あたりで、セルにレイヤーが付いてくれるといいなぁ。
今のままじゃ、BGが1枚しか使えないファミコンみたいだ。
2017/06/23(金) 23:28:54.63ID:VjW8l0810
>>981
無能
>>983
有能
2017/06/24(土) 05:18:31.04ID:W4HWrwdy0
シェイプのコントロールはどこのスレですか?ここで良いですか?
>>984
シェイプの半透明化とかシェイプの長方形をセルにピッタリフィットで
並べて重ねまくることは出来ないんですか?
987デフォルトの名無しさん (ワッチョイ 9f91-ANCk)
垢版 |
2017/06/24(土) 06:08:35.69ID:BWeLxVdN0
>>984
セルにレイヤーをつけてどう使う?
表計算ソフトなんだけど
2017/06/24(土) 06:58:38.65ID:W4HWrwdy0
人工知能関連の話で、HTM理論のセルエンジンを時間レイヤーでってイメージ
https://qiita-image-store.s3.amazonaws.com/0/43487/562d0d06-3012-2a8f-798a-3b10c300c035.png
989デフォルトの名無しさん (ワッチョイ 9f91-ANCk)
垢版 |
2017/06/24(土) 09:28:59.82ID:BWeLxVdN0
>>988
別に一つのシートでレイヤーにする必要は無い
2017/06/24(土) 13:28:51.98ID:evqv3EbU0
既に複数シートあるんだからそれをレイヤーに見立てればいいんじゃね?
2017/06/24(土) 13:44:24.64ID:W4HWrwdy0
>>989
そうですね。巨大なマップにすりゃ良いのか。。。
アニメやゲームみたいに数千枚のシート作って追加削除を秒以下で更新出来るのかなと思って。
992デフォルトの名無しさん (ササクッテロロ Sp0b-ANCk)
垢版 |
2017/06/24(土) 13:46:22.84ID:dUf5y4w4p
>>991
そんな要件があるならExcel vbaを使わないのが正解じゃね?
2017/06/24(土) 14:15:50.13ID:W4HWrwdy0
>>992
おっしゃる通りです。データベースとのやり取りやCSVファイル保存とか、
GUIを一から書かずにセルの挙動を見える化したかっただけの興味本位です。
2017/06/24(土) 14:16:14.32ID:6gmpnk4q0
>>987
2重スクロール。

じゃなくて、普通にサブウインドウ。
リストビューだと、制限多すぎだし。
2017/06/24(土) 19:52:26.24ID:pyzyezad0
うめ
2017/06/25(日) 05:22:06.80ID:R1qEXwQR0
うめ
2017/06/25(日) 16:54:13.63ID:A4A49pvi0
梅ついでに

>>984
ここ辺りで提案してみるとか 賛同が多いと一応は検討はしてくれるみたいよ
https://excel.uservoice.com/
2017/06/25(日) 19:48:34.89ID:hkv0kvNA0
うめ
2017/06/26(月) 02:16:04.74ID:T3ylemnb0
次スレだよ

Excel VBA 質問スレ Part49
http://mevius.2ch.net/test/read.cgi/tech/1498410914/
2017/06/26(月) 02:41:27.66ID:PYNS3+mjx
誕生日だよ
僕の
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を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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