板検索:
Excel VBA 質問スレ Part45 (1718)
まとめビュー
最新スレッド候補が見つかりました
Excel VBA 質問スレ Part47 (424) スレ作成日時:2017/03/15 15:04:34
 ▼もっと見る
過去ログ Excel VBA 質問スレ Part47 (424) 2017/03/15 15:04〜
過去ログ Excel VBA 質問スレ Part46 (1000) 2017/02/17 23:42〜
表示中 Excel VBA 質問スレ Part45 (681)
重複読み込みスレ:このスレは、2重読み込みでレスが重複している可能性があります。修復する場合はこちらをクリックしてください。
1
デフォルトの名無しさん[sage]   投稿日:2017/01/03 02:51:16  ID:9Y8iTik6.net(2)
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

※前スレ
Excel VBA 質問スレ Part44


※関連スレ
VBAなんでも質問スレ Part2
Access VBA 質問スレ Part1
Excel総合相談所 125 /ビジネスsoft板


2
デフォルトの名無しさん[sage]   投稿日:2017/01/04 23:43:25  ID:T2t87YWx.net(2)
スレ生きてるかな?

3
デフォルトの名無しさん[sage]   投稿日:2017/01/05 01:36:19  ID:3zitFiAl.net(2)
エクセルVBAのオススメ参考書とか教えて下さいませ
コメント6件

4
デフォルトの名無しさん[sage]   投稿日:2017/01/05 16:31:19  ID:rordfoes.net(2)
おちるぞー

5
デフォルトの名無しさん[sage]   投稿日:2017/01/05 17:49:33  ID:3kVSXnTB.net(2)
>3
Office TANAKA

6
デフォルトの名無しさん[sage]   投稿日:2017/01/05 19:15:59  ID:YlAAgZIP.net(2)
落ちたら落ちたでまた立てればいいのよ

7
デフォルトの名無しさん[sage]   投稿日:2017/01/05 21:50:17  ID:PrUsv/Jo.net(2)
excel関数のoffsetやsumifを多用してたせいでマクロ遅くなるなんて知らんかった
マクロ実行中も再計算してるのか
コメント4件

8
デフォルトの名無しさん[sage]   投稿日:2017/01/05 21:53:00  ID:EGC2o4Lu.net(2)
>7
計算止めてマクロ実行し終わるときに再計算させるんじゃダメなの?

9
デフォルトの名無しさん[sage]   投稿日:2017/01/05 22:36:04  ID:fbqYOVIL.net(4)
>3
Me.Thread

10
デフォルトの名無しさん[sage]   投稿日:2017/01/05 22:50:47  ID:olwzS93J.net(2)
どんな言語でもそうだけど、それ単体で覚えるって無理だよな。

11
デフォルトの名無しさん[sage]   投稿日:2017/01/05 23:06:24  ID:fbqYOVIL.net(4)
ていうかVBAって、
半分くらいは、神エクセルを作るクソ上司対策の為にあるようなもんだけどな。

12
デフォルトの名無しさん[sage]   投稿日:2017/01/06 00:22:50  ID:m+Jpe1FL.net(2)
>7
作り終わったら描画と計算止めるのは速度上げたいならマストだぞ
コメント4件

13
デフォルトの名無しさん[sage]   投稿日:2017/01/06 00:32:13  ID:yTw61UwJ.net(2)
>3
レベルによると思います。
マクロ少しはつかえるのか、全くダメだけどExcelは得意(関数、機能など)だとか、関数もよく分からんとか。
IF関数もよく分からないレベルだと、まずはExcelの関数(ワークシート関数)と、機能(条件付き書式とか、テーブルとか)をある程度勉強した方がいい。

14
デフォルトの名無しさん[sage]   投稿日:2017/01/06 19:20:32  ID:Eygm90s9.net(2)
新年早々質問いきます!
選択している写真の存在するセル領域Rangeを取得したいと思っています。
ところが、セルピッタリの位置に写真を配置(Alt+写真ドラッグ・Alt+拡大縮小)した場合に、特定のサイズの時に1セル余分に取得してしまう事が分かりました。
正確にRangeを取得できるように直したいのですが、何か良いアイディアを頂けないでしょうか。

'現在選択している写真の領域Rangeを選択状態にするテスト
Sub SelectShapeRangeTest()
Dim SP As Shape
For Each SP In Selection.Parent.Shapes
If SP.Name = Selection.Name Then Exit For
Next
Range(SP.TopLeftCell, SP.BottomRightCell).Select
End Sub
コメント6件

15
デフォルトの名無しさん[sage]   投稿日:2017/01/06 19:32:50  ID:5HA7V59p.net(4)
>14
Rangeを選択してその大きさにShapeのサイズを変える
コメント2件

16
デフォルトの名無しさん[sage]   投稿日:2017/01/06 19:50:55  ID:5HA7V59p.net(4)
>14
Rangeが大きくなった事を判定してRangeを小さくするとか
大きくなったRangeに合うようにShapeを移動する
例えばRangeの中心とShapeの中心が重なるようにとか


全てのShapeを同じ大きさにするとか

シートにシェイプは1つだけにしてシートの左上とシェイプの左上を合わせるとか

17
デフォルトの名無しさん[sage]   投稿日:2017/01/06 19:54:21  ID:ylhkczHt.net(2)
>15
スマホから、主です。
回答ありがとうございます。

たしかにこれから写真を貼るのであれば、その方法で解決すると思いますが、あくまで既に配置済みの写真から読み取る必要が有るんです。

上記はテストコードなのでセレクトしていますが、これを関数化して膨大な配置済みの写真からそれぞれのrangeを取り出すのが最終目標なので。
コメント2件


18
デフォルトの名無しさん[sage]   投稿日:2017/01/06 21:04:04  ID:S2R5Pk4v.net(2)
>17
どうせギリギリのところで次のセルに被ってるんだろ
対象のシェイプより少しだけ小さいシェイプおいて取得すりゃいいんじゃね?
コメント2件

19
デフォルトの名無しさん[sage]   投稿日:2017/01/06 21:54:38  ID:Q5cZMFD3.net(2)
>14
vbaでオラが画像を貼る時は
デフォのセルの左上を基準にするだけで
セルをはみ出そうが、画と画が被ろうが、複数枚貼っていく

その時、画像のセル位置はセーブしてるし
shapes.nameを一意に付けておくので
後でサイズ変更したり削除したり、、操作は自在なのだが

20
デフォルトの名無しさん[]   投稿日:2017/01/06 23:58:00  ID:8yYsxO6K.net(2)
初めてお伺いさせていただくんですが、

マクロでvlookupを使いたいと思っているのですがエラーしか返ってこず途方にくれています。。
=VLOOKUP(D8,データ欄!$C$9:$D$28,2,FALSE)
D8にはユーザーフォームで入力した品目名が出力されており、それに呼応するIDがデータ欄!C9:D28に記載されており、
E8にIDを出力したいと考えています。

ヒントでも頂ければ幸甚に存じます。
コメント6件

21
デフォルトの名無しさん[sage]   投稿日:2017/01/07 00:25:21  ID:LrFag0bm.net(4)
それ、マクロの問題なんですかね??
vlookup関数でエラーが出てるの?

22
デフォルトの名無しさん[sage]   投稿日:2017/01/07 00:30:28  ID:2J+LIFNT.net(4)
>12
途中でエラーが出て、アレっ?となる罠付きだけどな。
コメント2件

23
デフォルトの名無しさん[sage]   投稿日:2017/01/07 00:37:52  ID:2J+LIFNT.net(4)
>20
Cells(1,1).Value="=VLOOKUP(D8,データ欄!$C$9:$D$28,2,FALSE)"なのか?
WorksheetFunction.VLookupなのか?
実行時エラーなのか?
#N/Aなのか?

何となく、余計な改行コードが入っているとか、
数字の123と文字の123を比較してるとか、
そんな罠のような気がするけど。

24
デフォルトの名無しさん[sage]   投稿日:2017/01/07 00:48:37  ID:CI9p857v.net(4)

25
デフォルトの名無しさん[sage]   投稿日:2017/01/07 00:49:41  ID:TOrGuStJ.net(2)
自分の解釈をできるだけ排除して
事実だけを伝えた方がいい時もある

エラーと言っているが画面に表示される文字列やダイアログは何なのか
どんなタイミングで表示されるのか
自分が書いたコードはどんなものか

26
デフォルトの名無しさん[sage]   投稿日:2017/01/07 00:51:23  ID:LrFag0bm.net(4)
ファイル上げてくれると、分かりやすいんだけどね。

27
デフォルトの名無しさん[sage]   投稿日:2017/01/07 00:55:21  ID:CI9p857v.net(4)
まさかエクセルの関数をそのまま書いてるとかじゃないやろな

28
デフォルトの名無しさん[sage]   投稿日:2017/01/07 09:02:21  ID:Xo1hV6SK.net(2)
>22
作り終わるってのはテストも込みでだぞ

29
デフォルトの名無しさん[sage]   投稿日:2017/01/07 23:07:08  ID:so7B4l6a.net(2)
>20は解決したのかな?

30
デフォルトの名無しさん[]   投稿日:2017/01/07 23:55:04  ID:5WVocSaL.net(2)
すいません
とあるセルに入力するとvbaが実行するようにしてるのですが
コードに間違いがあるとエラーがでて終了を押すとまたセルに入力してもvbaが実行されなくなります (MsgBoxで確認してます)
実行メニューのリセットを押しても同じです
ファイルを開き直してもダメでexcelを再起動するとまた動くのですが再起動せずにする方法ってありますか?

excel 2016 win7です
コメント2件

31
30[]   投稿日:2017/01/08 00:49:37  ID:r1ASQ1zZ.net(4)
追記で動かなくなるのはそのWorkbook_SheetChange だけで
ボタンからsubの実行は動くようです

32
デフォルトの名無しさん[sage]   投稿日:2017/01/08 00:52:16  ID:mMTwBd0e.net(2)
>30
もしかして
Application.EnableEvents = False
とかしてて その後 実行時エラーが出て Trueに戻せてないとかじゃね?
On Error
でエラートラップして Trueに戻すようにしないと
コメント2件

33
デフォルトの名無しさん[sage]   投稿日:2017/01/08 12:37:54  ID:C9GVPqMv.net(2)
てかコードの間違いを直せよ...
コメント4件

34
デフォルトの名無しさん[sage]   投稿日:2017/01/08 14:23:39  ID:aANViJyG.net(2)
>33
まさにこれだが
デバッグモードにして止めてみろって

35
30[]   投稿日:2017/01/08 14:39:47  ID:r1ASQ1zZ.net(4)
>32
それが原因だったようです
ありがとうございますm(__)m

>33-34
デバックモードよく分かってません
勉強してみます

36
デフォルトの名無しさん[sage]   投稿日:2017/01/08 21:58:52  ID:LSCp0tLP.net(6)
超初心者の質問です。

A行(A5〜Aずっと下まで)に「食物」が入力されていると仮定して、
B行が一行上の値と違う場合、
一行上に行を挿入して、その行に「果物」と入れたいです。

B行に入る値
・みかん
・バナナ

Sub 入力
一番上 = 5
一番下 = Cells(Row.Count,1).End(xlup).Row
For Cnt = 一番上 To 一番下
If Cells(Cnt,1)="りんご"
If Cells(Cnt-1,2)<> cells(Cnt,2) then
If cells(Cnt,2)="みかん" or Cells (Cnt, 2) ="バナナ" Then
Range(Cells(Cnt,1),Cells(Cnt,2)).Insert
End If
End If
End If
Next Cnt

本来は「みかん」と「バナナ」をまとめて、その上に「果物」の見出しをつけたいのに、
このコードだと「みかん」と「バナナ」のそれぞれ一行上に行が入ってしまいます。
どうしたら、まとめて一行だけ挿入することが出来るでしょうか?
コメント4件

37
デフォルトの名無しさん[sage]   投稿日:2017/01/08 22:25:17  ID:KINgQhrq.net(4)
>36
俺が困るので先に言っとく
『行』とは横のことを指す(左の数字)
縦を指すときは『列』と呼ぶ(上の英字)

そこをふまえて
>B列が1行上の値と違う場合、1行上に行を挿入して、その行に「果物」と入れたい
と言う条件と
>「みかん」と「バナナ」のそれぞれ1行上に行が入ってしまいます。
と言う結果は整合性のある状態なので問題はないと思う

もしも望む結果ではないのであればまず

 >B列が1行上の値と違う場合、

を見直すことが必要
やりたい内容を鑑みれば

 B列に入力があり、1行上の値が空白である場合、

と変えればいいと思う
コメント2件

38
デフォルトの名無しさん[sage]   投稿日:2017/01/08 22:42:31  ID:LSCp0tLP.net(6)
>37
そうですね、表現の仕方が間違っておりました。

フォーマットがもう決まってしまっているので、これで何とかしたいんですよね・・・。
どうしても、「みかん」「バナナ」をまとめて、一行上に行を挿入したいのですが。
今、思いついたのは、「みかん」「バナナ」にそれぞれ行が入ってしまうことは承知で、
「果物_01」「果物_02」と連番になるように設定して(やり方は分かっていないです)
それで_02の行は削除するというifを組んで、
さらに「果物_01」の行は「01」の部分を省くコードを書けばいいかな、と思ったりもしますが、
効率が悪いでしょうか?(やり方は分かっていないです、ただ思いつき)
コメント2件

39
デフォルトの名無しさん[sage]   投稿日:2017/01/08 22:49:26  ID:KINgQhrq.net(4)
>38
条件を変えればいいと思う

A列(A5〜Aずっと下まで)に「食物」が入力されていると仮定して、
B列が1行上の値と違う場合、
1行上に行を挿入して、その行に「果物」と入れたい

A行(A5〜Aずっと下まで)に「食物」が入力されていると仮定して、
B列に入力があり、1行上の値が空白である場合、
1行上に行を挿入して、その行に「果物」と入れたい
コメント2件

40
デフォルトの名無しさん[sage]   投稿日:2017/01/08 23:15:02  ID:LSCp0tLP.net(6)
>39
なるほど、そういう発想もありますね。
でもそうなると、どういうコードになるのでしょうか??(・・?)

41
デフォルトの名無しさん[sage]   投稿日:2017/01/09 00:15:41  ID:t+szxcoe.net(2)
すごい、エスパーがいるな
ちょっと日本語が意味わからないからアドバイス出来ないわ…

42
デフォルトの名無しさん[sage]   投稿日:2017/01/09 00:55:08  ID:4/AW5Uyc.net(8)
>36
A列は全て 「食物」が入力されているのよね

B列にどのように入ってるの?

>B行に入る値
>・みかん
>・バナナ

これ以外は無い(すなわち空セル)って事?
コード見ると「りんご」 ってあるみたいだけど???

んで どのような結果を お望み?
コメント2件

43
デフォルトの名無しさん[sage]   投稿日:2017/01/09 00:58:47  ID:5IQR8Haa.net(4)
それって、

分類1
商品1
商品2
分類2
商品3
商品4

みたいなフォーマットなの?
もしそうなら、それは神エクセルだから、

>フォーマットがもう決まってしまっているので

そこをどうにかして、こう直したほうがいいと思うけど。

分類名 商品名
分類1  商品1
分類2  商品2

44
デフォルトの名無しさん[sage]   投稿日:2017/01/09 01:00:35  ID:5IQR8Haa.net(4)
違う、こうか。

分類名 商品名
分類1  商品1
分類1  商品2
分類2  商品3
分類2  商品4

45
デフォルトの名無しさん[]   投稿日:2017/01/09 02:56:04  ID:JlqgPD3/.net(6)
すみません、割り込みなのですが簡単な質問なので失礼します((+_+))


コマンドボタンを1回クリックするごとにラベルに100ごと加算される物を
作りたいのですが、↓だと、あたりまえですが1度クリックしかできません。


Private Sub CommandButton1_Click()
x = 100
Label1.Caption = x

End Sub
コメント2件

46
デフォルトの名無しさん[sage]   投稿日:2017/01/09 03:13:17  ID:4/AW5Uyc.net(8)
>45
コマンドボタンとラベルは ユーザフォーム上なの? シート上なの?

どちらでも良い方法として

ラベルのプロパティ開いて Captionを 0 にしておく
その上で
Private Sub CommandButton1_Click()
 Label1.Caption = Label1.Caption + 100
End Sub
コメント6件

47
デフォルトの名無しさん[]   投稿日:2017/01/09 03:24:27  ID:JlqgPD3/.net(6)
>46
ユーザーフォーム上です!ありがとうございました、無事できました!

48
デフォルトの名無しさん[]   投稿日:2017/01/09 04:07:15  ID:JlqgPD3/.net(6)
何度もすみません、45の者です。
45の続きで、ラベル1の値ーラベル2の値=差の値をラベル3に表示する
計算機をユーザーフォーム上に作りたいと思っています。
しかし以下ではエラー「一致する型がありません」とでます。
なぜなのでしょうか(T_T)


Private Sub CommandButton3_Click()
Label1.Caption = x '投入した金額
Label2.Caption = y '選択した金額

k = x - y

Label3.Caption = k

End Sub
-----------------
Private Sub CommandButton1_Click()
 Label1.Caption = Label1.Caption + 100 ←ここにエラ―がでる
End Sub
------------------
Private Sub CommandButton2_Click()
 Label2.Caption = Label2.Caption + 50
End Sub
コメント4件

49
デフォルトの名無しさん[sage]   投稿日:2017/01/09 04:23:14  ID:4/AW5Uyc.net(8)
>48

>46 を良く嫁
以上

50
デフォルトの名無しさん[sage]   投稿日:2017/01/09 10:17:57  ID:EPA1tS/m.net(8)
>48
引き算するとこのx,yの代入逆だろ
x=ラベルキャプションってしないとなんも価入らんぞ
あとちゃんと変数は宣言してる?

51
デフォルトの名無しさん[sage]   投稿日:2017/01/09 10:41:01  ID:HU0Vv46x.net(2)
>46
>ラベルのプロパティ開いて Captionを 0 にしておく

は前提として、プロパティを直接の演算の対象にするとダメなことはまれに経験したことがある
理由はわからないけど
そういう時は、変数をかまして回避した。たとえば、

Private Sub CommandButton1_Click()
Dim label1_c As Integer
label1_c = Label1.Caption
label1_c = label1_c + 100
 Label1.Caption = label1_c
End Sub

52
デフォルトの名無しさん[sage]   投稿日:2017/01/09 13:48:59  ID:O0/XMIqD.net(4)
シート1の表(2次元領域)をシート2やシート3に一行に横一列にコピーしたいのですが、
一旦シート1の表の値を変数ATAI(i)に入れて、シート2や3にコピーしてます。
また別の方法で直でシート1.COPY シート2でもコピーしてみました。

両方ともコピーするのが2万個ぐらいあるのですが、処理に3分ぐらいかかります。
もっと早くする方法はありますか?
コメント2件

53
デフォルトの名無しさん[sage]   投稿日:2017/01/09 13:50:27  ID:JSUf7hDg.net(2)
>12
エラーで中断したら再計算しないけどな
コメント2件

54
デフォルトの名無しさん[]   投稿日:2017/01/09 14:36:04  ID:SVvcq0Ni.net(8)
下記のコードでObjectにするとSheet1のaを呼び出せるのですが
WSだとメソッドまたはデータメンバーが見つかりませんになってしまいます
wsの方か厳密のような気がするのですがObjectで正解なんでしょうか?

ThisWorkbook
Dim ws As Worksheet ' Objectにすると成功
Set ws = Sheets("Sheet1")

Call ws.a() ' エラー


Sheet1
Sub a()
End Sub
コメント4件

55
デフォルトの名無しさん[sage]   投稿日:2017/01/09 14:36:23  ID:EPA1tS/m.net(8)
>52
Dim rng as Range
set rng = Range(元データ開始セル,元データ終了セル)
Range(貼り付け先開始セル,貼り付け先終了セル) = rng
って感じでやると早くない?
もしかしたらvariant型の変数にした方が早いかもしれんけど
OfficeTANAKAに高速化テクニックって感じで載ってるよ
コメント2件

56
デフォルトの名無しさん[sage]   投稿日:2017/01/09 14:37:11  ID:EPA1tS/m.net(8)
>53
あのな?「作り終わったら」ってどういう意味かわかるか?

57
デフォルトの名無しさん[sage]   投稿日:2017/01/09 14:51:56  ID:4FVlGxEy.net(2)
>54
目的に合致してれば
問題ないです
コメント2件

58
デフォルトの名無しさん[sage]   投稿日:2017/01/09 15:00:52  ID:cjVtQucR.net(4)
>54
Sheet1.NameがSheet1じゃないのかも
コメント2件

59
54[]   投稿日:2017/01/09 15:30:22  ID:SVvcq0Ni.net(8)
もう一個謎が

Workbook_SheetChange(ByVal ws As Object, ...

Call ws.a() ' エラー
Call Sheets(ws.Name).a() ' 成功

となり訳が分かりません...

>57
理解できてないとなにか気持ち悪いです
>58
同じにしてあります;;

セルやらシートがあるのでvbaってjsやpyより難しい気がします
basicの構文も癖があるし・・
コメント2件

60
デフォルトの名無しさん[sage]   投稿日:2017/01/09 16:49:38  ID:dWF3ZE3B.net(2)
>basicの構文も癖があるし・・
www

61
デフォルトの名無しさん[sage]   投稿日:2017/01/09 16:53:01  ID:6xa3UP1L.net(6)
プロシージャをcallで呼び出すのと何も付けないで呼び出すのとでは何が違うのでしょうか?
後者だと参照渡しになりませんでしたが。
コメント2件

62
デフォルトの名無しさん[sage]   投稿日:2017/01/09 16:53:39  ID:I9s0ZByk.net(2)
>59
他の人が追試出来るように端折らないコード乗せて。
コメント2件

63
デフォルトの名無しさん[sage]   投稿日:2017/01/09 16:57:16  ID:6xa3UP1L.net(6)
もうわかったのでいいですすいません
コメント2件

64
デフォルトの名無しさん[sage]   投稿日:2017/01/09 17:21:48  ID:EPA1tS/m.net(8)
>63
解決したならそれをのせろや

65
デフォルトの名無しさん[]   投稿日:2017/01/09 17:22:57  ID:SVvcq0Ni.net(8)
>62
新規の空ファイルで

ThisWorkbook
Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
Call sh.test
'Call Sheets(sh.Name).test
End Sub

Sheet1
Sub test()
MsgBox "テスト"
End Sub
コメント2件

66
デフォルトの名無しさん[sage]   投稿日:2017/01/09 18:15:14  ID:Z/GXP5pv.net(6)
>65
sh.Name="Sheet1"
を確認しないとダメな気がする
コメント4件

67
デフォルトの名無しさん[sage]   投稿日:2017/01/09 18:21:35  ID:Z/GXP5pv.net(6)
>66
動的にイベントが発生するまでシートを確定できないからコンパイルでエラーになるみたいだよ

68
デフォルトの名無しさん[sage]   投稿日:2017/01/09 18:23:08  ID:Z/GXP5pv.net(6)
オブジェクト名でSheet1.testとすればコンパイルも通るし実行時エラーも出ない

69
デフォルトの名無しさん[]   投稿日:2017/01/09 18:39:16  ID:SVvcq0Ni.net(8)
>66-68
ありがとうございますm(__)m
VBAはコンパイラだったのですね
納得しました

70
デフォルトの名無しさん[sage]   投稿日:2017/01/09 18:56:01  ID:jLw81RF+.net(2)
>61
厳密にいうと参照渡しになっている。
変数aをカッコで囲んで(a)とすると、aのコピーが一時オブジェクトとして作られ、それがプロシージャに渡されるので、
元の変数aそのものはプロシージャに渡らない。

プロシージャ a

Call プロシージャ(a)
が等価で、

プロシージャ (a)

Call プロシージャ((a))
と等価になる
コメント2件

71
デフォルトの名無しさん[sage]   投稿日:2017/01/09 19:32:58  ID:6xa3UP1L.net(6)
>70
カッコにそういう意味があったとは・・・!
わかりやすかったです、ありがとうございました。

72
デフォルトの名無しさん[sage]   投稿日:2017/01/09 22:18:09  ID:vYvrwg8z.net(2)
>VBAはコンパイラだったのですね

えっ
コメント2件

73
デフォルトの名無しさん[]   投稿日:2017/01/09 22:32:30  ID:o7+xqhMd.net(4)
>42-44
分かりづらく失礼しました。
途中のりんごは不要です。
また、B列には他の食べ物が入りますが、ここでは果物に分類されないので、省略しました。

Sub 入力
一番上 = 5
一番下 = Cells(Row.Count,1).End(xlup).Row
For Cnt = 一番上 To 一番下
If Cells(Cnt,1)="食物"
If Cells(Cnt-1,2)<> cells(Cnt,2) then
If cells(Cnt,2)="みかん" or Cells (Cnt, 2) ="バナナ" Then
Range(Cells(Cnt,1),Cells(Cnt,2)).Insert
End If
End If
End If
Next Cnt

74
デフォルトの名無しさん[]   投稿日:2017/01/09 22:32:55  ID:o7+xqhMd.net(4)
で、希望するフォーマットとしては

 果物
食物バナナ
食物みかん
食物その他(仮)



としたいわけです。ところが、自分の作ったシートだと

 果物
食物バナナ
 果物
食物みかん
食物


となってしまうわけです。これで分かりやすくなったでしょうか・・・
コメント4件

75
デフォルトの名無しさん[sage]   投稿日:2017/01/09 22:40:49  ID:LQfxW/qY.net(2)
馬鹿ばっかで頭が痛くなるスレだ

76
デフォルトの名無しさん[sage]   投稿日:2017/01/09 22:45:04  ID:O0/XMIqD.net(4)
>55 ありがとう。 結局いろいろ試しましたが、セルに関数貼りつけました・・・・。
手動でセルに関数貼りつけたほうが早かったです・・・。
コメント2件

77
デフォルトの名無しさん[sage]   投稿日:2017/01/09 23:29:23  ID:4/AW5Uyc.net(8)
>74
やりたい事こんな感じ?
※なお 区別する種類が多いとこの手法は結構大変なので
考え直さないとだけど

Sub 入力()
一番上 = 5
一番下 = Cells(Rows.Count, 1).End(xlUp).Row

'下から上に処理してく
For cnt = 一番下 To 一番上 Step -1

 'cnt行の品名
 品名1 = Cells(cnt, 2).Value
 'cnt行の一つ上の品名
 If cnt <> 一番上 Then
  品名2 = Cells(cnt - 1, 2).Value
  Else
  品名2 = ""
 End If

 '行挿入
 If 品名1 = "みかん" Or 品名1 = "バナナ" Then
 If 品名2 <> "みかん" And 品名2 <> "バナナ" Then
  Range(Cells(cnt, 1), Cells(cnt, 2)).Insert
  Cells(cnt, 2) = "果物"
 End If
 End If
Next
End Sub

78
デフォルトの名無しさん[sage]   投稿日:2017/01/09 23:32:51  ID:cjVtQucR.net(4)
>72
メニューにコンパイルってあるけど

79
デフォルトの名無しさん[sage]   投稿日:2017/01/09 23:43:50  ID:dVuv1+mu.net(2)
>76
んー
二万件あっても直接レンジでやり取りすればそんな時間かからんと思うけどな
まあいいや、解決したなら乙だ

80
デフォルトの名無しさん[sage]   投稿日:2017/01/09 23:47:23  ID:SFPxoHKZ.net(2)
>74
本当はVBA必要ないのに、
神エクセルを作ることによって、
VBAが必要になってしまっているのではないか?

果物・・・食べ物の種類
バナナ・・・果物
みかん・・・果物

項目以外で、違うものを同じ列に入れる?

81
デフォルトの名無しさん[sage]   投稿日:2017/01/10 00:09:16  ID:hjeg5IZ9.net(2)
食物が列にあって果物を見出しにする謎を解決しないと先に進まないんじゃないか

82
デフォルトの名無しさん[sage]   投稿日:2017/01/10 10:38:11  ID:yHxqwlUe.net(8)
>18
大変遅くなりました。
>「元の画像より少し小さいシェイプを作成して取得する」
はなかなかの妙案だと思いましたが、関数化してループさせた場合処理速度に問題があったので、
既存のプロパティを自力で補正するように書き換えてみました。
Excelは左上をセルの左上に合わせて配置しても、画像の右下のグリップで拡大した場合、
低確率で.Topと.Leftの値が微妙に変化する(たとえば C3に置いた写真の.Top=37.5が37.4999...に変わってしまう。)
ようなので、何パターンか検証した結果、小数点以下第三位を四捨五入で正確に出る事がわかりました。

手動配置している場合に余裕を持たせられるようデフォルト値付きの省略可能引数にしています。

Sub TestGetShapeToRange()
Dim SP As Shape
For Each SP In Selection.Parent.Shapes
If SP.Name = Selection.Name Then Exit For
Next
Range(GetTopLeftCell(SP), GetBottomRightCell(SP)).Select
End Sub

長すぎと怒られたので 次レスへ
コメント2件

83
デフォルトの名無しさん[sage]   投稿日:2017/01/10 10:38:44  ID:yHxqwlUe.net(8)
>82 の続き
'Shape.TopLeftCellの誤差補正後の左上セルを取得する関数
Public Function GetTopLeftCell(SP As Shape, Optional num_digits As Integer = 2) As Range
Set GetTopLeftCell = SP.TopLeftCell
If GetTopLeftCell.Offset(1).Top <= Round(SP.Top, num_digits) Then
Set GetTopLeftCell = GetTopLeftCell.Offset(1)
End If
If GetTopLeftCell.Offset(, 1).Left <= Round(SP.Left, num_digits) Then
Set GetTopLeftCell = GetTopLeftCell.Offset(, 1)
End If
End Function

'Shape.BottomRightCellの誤差補正後の右下セルを取得する関数
Public Function GetBottomRightCell(SP As Shape, Optional num_digits As Integer = 2) As Range
Set GetBottomRightCell = SP.BottomRightCell
If GetBottomRightCell.Top >= Round(SP.Top + SP.Height, num_digits) Then
Set GetBottomRightCell = GetBottomRightCell.Offset(-1)
End If
If GetBottomRightCell.Left >= Round(SP.Left + SP.Width, num_digits) Then
Set GetBottomRightCell = GetBottomRightCell.Offset(, -1)
End If
End Function

以上、ご報告まで。

84
デフォルトの名無しさん[sage]   投稿日:2017/01/10 12:02:57  ID:yHxqwlUe.net(8)
連投すいません。次の質問です。

以下のようなマクロがあります。
1.非モーダルのユーザーフォーム(fm)が常駐
2.ユーザーが任意で複数の画像を選択
3.fm上のボタンをユーザーがクリックして下記のような処理を実行
For each obj in Selection
obj.cut
ActiveSheet.PasteSpecial Format:="図 (JPEG)"
Next
すると、最後にPasteしたShapeを選択した状態でマクロが終了します。

ESCを押して選択を解除するような操作をVBAで再現するにはどうしたら良いのでしょうか。

・マクロの記録では、ESCでShapeの解除は記録されませんでした。
・Application.SendKeys "{ESC}"を試してみたのですが、反応がありませんでした。
・ユーザーフォームにフォーカスが取られているのかと思いActiveWorkbook.ActivateやActiveWindow.Activateを入れたのですが無反応でした。

強引な解決策を考えましたが、もっとスマートな方法が無いかと探しています。
・終了後に適当なRangeをSelectしてからScrollRow/ScrollColumnして元の位置に戻す。
・シートのSelectionイベントで直前までに選択されたRangeを保持する。

ご教示のほどよろしくお願い致します。
コメント2件

85
デフォルトの名無しさん[sage]   投稿日:2017/01/10 15:45:40  ID:8VGVrhFD.net(4)
>84
君の思う スマートな方法が どんなものだかは分らんが

どこかのセルを選択するのが一番簡単だと思う
適当なセルだとスクロールしてしまうのがイヤなら

・選択されてるShapeの右上のセルを選択
・画面上の左上のセルを選択
とかでいいんじゃね?
コメント2件

86
85[sage]   投稿日:2017/01/10 15:47:43  ID:8VGVrhFD.net(4)
間違った
× ・選択されてるShapeの右上のセルを選択
○ ・選択されてるShapeの左上のセルを選択

87
デフォルトの名無しさん[sage]   投稿日:2017/01/10 17:40:05  ID:yHxqwlUe.net(8)
>85
とりあえずは、表示画面の左上セルをSelectするようにしたいと思います。
>スマートな方法
いわゆるobj.Unselect()メソッドとか、obj.Select(false)のような選択解除専用の機能は無いか。という事です。
Excel VBAって思わぬオブジェクトに実装されていたりするので・・・
コメント2件

88
デフォルトの名無しさん[sage]   投稿日:2017/01/11 08:57:05  ID:J0hUcFsW.net(2)
マクロでなく操作で非選択って出来る?
結局は別のものを選択してるよね

89
デフォルトの名無しさん[sage]   投稿日:2017/01/11 09:00:21  ID:v+irSj+y.net(2)
>87
プロパティ的なもんはオブジェクトブラウザかなんかで調べれば出てくるんじゃないの

90
デフォルトの名無しさん[]   投稿日:2017/01/11 12:03:53  ID:tc1gJPs0.net(6)
自動で名前を付けて保存したくて、いろいろ調べて形にはなったのですが

A1に日付が2017/01/11と入ってる場合
そのセルを引用したらスラッシュも入ってしまい保存の時にいちいち消すのに困っています。
保存の時にだけスラッシュを消す方法有りませんか?
コメント4件

91
デフォルトの名無しさん[sage]   投稿日:2017/01/11 12:12:47  ID:p4WB0UzK.net(6)
>90
format

92
デフォルトの名無しさん[]   投稿日:2017/01/11 12:31:15  ID:tc1gJPs0.net(6)
InitialFilename:=Format(Range("A1"), "yyyymmdd")

このような形でいいのでしょうか?
コメント2件

93
デフォルトの名無しさん[]   投稿日:2017/01/11 12:34:16  ID:I7PY9KYr.net(8)
うちの会社ではほぼ全PCをシンクライアントにしてからというものの
ExcelVBAのマクロを保存してた「PERSONAL.XLSB」が使えなくなりました。
シンクライアントでは「PERSONAL.XLSB」に相当する機能を使用するにはどうしますか?

あとこれが本題なのですが
OutlookとWordも、それらのVBAをデフォルト的個人ファイルに保存して高頻度で使用していました。
特にOutlookのVBAでは便利なマクロを作っていました。
シンクライアントでもそれらの機能を使用するにはどうしますか?
コメント2件

94
デフォルトの名無しさん[sage]   投稿日:2017/01/11 12:35:59  ID:p4WB0UzK.net(6)
指定の位置に日付が入ってるのであればそれでよいはず
コメント2件

95
デフォルトの名無しさん[]   投稿日:2017/01/11 12:38:17  ID:tc1gJPs0.net(6)
>94
ご丁寧にありがとうございます!
コメント2件

96
デフォルトの名無しさん[sage]   投稿日:2017/01/11 12:48:03  ID:p4WB0UzK.net(6)
>93
単純に移行すれば使えると思う
以前使ってたpersonal.xlsbを所定の位置に配置すればできるはず
コメント2件

97
デフォルトの名無しさん[]   投稿日:2017/01/11 12:50:26  ID:I7PY9KYr.net(8)
>96
シンクライアントでは普通の方法ではCドライブが見えないんです。
別の方法で見つけてそこに入れても、次の日にPCを起動したときにそのファイルは消えてしまっているから
わざわざファイルを移動する方法では無駄になってしまうんです。毎日する必要になるから面倒で。
コメント2件

98
デフォルトの名無しさん[sage]   投稿日:2017/01/11 12:53:38  ID:xxQxfc5N.net(2)
>97
会社のシステム担当者に聞けばいいよ
コメント2件

99
デフォルトの名無しさん[sage]   投稿日:2017/01/11 13:08:46  ID:uU4tfKci.net(6)
シンクライアントは勝手なことをできないように導入する目的もあるので
自分なりのカスタマイズはあきらめるしかない場合がほとんど

100
デフォルトの名無しさん[]   投稿日:2017/01/11 13:08:59  ID:I7PY9KYr.net(8)
>98
どこにその部署があるかわからないし
勝手にツール作らないでくださいといわれてそれを禁止されるリスクもあるから
自分の力で解決したいのですが。

101
デフォルトの名無しさん[]   投稿日:2017/01/11 13:15:26  ID:I7PY9KYr.net(8)
Windowsのスタートアップもシンクライアントになって以来使えません(毎回PC起動時にはここは空になります)。
どうすればシンクライアントでもスタートアップ機能を使えるでしょうか?
コメント4件

102
デフォルトの名無しさん[sage]   投稿日:2017/01/11 13:37:35  ID:f6yusNGM.net(2)
>101
管理者側で許可設定してもらわない限り、シンクラでカスタマイズは無理
そして許可はまず下りない
あきらめろ

103
デフォルトの名無しさん[sage]   投稿日:2017/01/11 13:38:29  ID:uU4tfKci.net(6)
完全にVBA無関係じゃん
スレチ

104
デフォルトの名無しさん[sage]   投稿日:2017/01/11 13:38:35  ID:QIrTsKqr.net(4)
>101
板違い Windows板かパソコン一般板かPC初心者板へ

105
デフォルトの名無しさん[sage]   投稿日:2017/01/11 13:45:44  ID:1bci6XNy.net(2)
>92
聞く前にやりなよそのくらいって思うんだが
1から10まで聞かないとなにもできないの?

106
デフォルトの名無しさん[sage]   投稿日:2017/01/11 15:28:17  ID:qQgm92T6.net(2)
ここはthinクライアントでCドライブに何か入れたいみたいな馬鹿が来るようなところだから

107
デフォルトの名無しさん[]   投稿日:2017/01/11 18:57:51  ID:dcC69ZSQ.net(2)
エクセルのメニュー、アイコン、リボン、などを初期設定状態に戻す方法はありませんか。

すみません初心者的
コメント2件

108
デフォルトの名無しさん[sage]   投稿日:2017/01/11 19:28:32  ID:uU4tfKci.net(6)

109
デフォルトの名無しさん[sage]   投稿日:2017/01/11 20:14:53  ID:anvEc3zp.net(2)
レジストリの該当部を削除すれば(それかリネームすれば)元に戻るよ。
と思ったらリセットボタンあるのか。そちらの方がいいですね。
コメント2件

110
デフォルトの名無しさん[sage]   投稿日:2017/01/11 20:23:03  ID:1FwZUW9V.net(2)
VBAのスレなんだからこんなの教えんなよ…

111
デフォルトの名無しさん[sage]   投稿日:2017/01/11 22:54:27  ID:QIrTsKqr.net(4)
スレチ質問もスレチ回答も荒らし

112
デフォルトの名無しさん[sage]   投稿日:2017/01/11 23:23:15  ID:JMe0AUgT.net(2)
>90
まだこういう勘違いしている人がいるんだな・・
A1には2017/01/11と入ってるわけじゃない
42746という数字が入ってるだけ
コメント4件

113
デフォルトの名無しさん[sage]   投稿日:2017/01/12 05:41:59  ID:nMoQZoqt.net(2)
>109
なんだこのアホな回答

114
デフォルトの名無しさん[sage]   投稿日:2017/01/12 07:13:34  ID:0A4eRqXF.net(2)
>112
アスペ乙

115
デフォルトの名無しさん[sage]   投稿日:2017/01/12 08:41:15  ID:Lhyp+MOo.net(4)
>112
[A1].Valueが 2017/01/11 なのです。

116
デフォルトの名無しさん[sage]   投稿日:2017/01/12 09:48:23  ID:Rj8+4pg/.net(4)
[A1].Textじゃなくて?
コメント2件

117
デフォルトの名無しさん[sage]   投稿日:2017/01/12 11:56:09  ID:Cc5O9IhJ.net(2)
お前の会社のことはお前の会社でなんとかしろよ

118
デフォルトの名無しさん[sage]   投稿日:2017/01/12 12:29:26  ID:Lhyp+MOo.net(4)
>116
表示形式が yyyy/m/d だと Text は 2017/1/11

119
デフォルトの名無しさん[sage]   投稿日:2017/01/12 12:45:45  ID:6ppTquF5.net(2)
[A1].Value2と[A1].Formatが正常に定義されてるなら
あとはFormat関数で好きに取り出せるんじゃ無いかな

120
デフォルトの名無しさん[sage]   投稿日:2017/01/12 20:01:33  ID:6fAXJ0U3.net(2)
例え元のデータが何であっても「日付として解釈出来る形式」ならDate型に入れれば変換してくれるだろ。

121
デフォルトの名無しさん[]   投稿日:2017/01/12 20:07:33  ID:yR99XFwh.net(4)
で?っていう

122
デフォルトの名無しさん[sage]   投稿日:2017/01/12 20:39:27  ID:UE8PLb8+.net(2)
日付が数字で入ってるかどうかなんて質問に関係ないよな
コメント2件

123
デフォルトの名無しさん[sage]   投稿日:2017/01/12 20:42:03  ID:eBGwra53.net(4)
>122
型によって処理が変わると思うのだが
コメント2件

124
デフォルトの名無しさん[sage]   投稿日:2017/01/12 20:46:28  ID:UiBlAwbG.net(4)
>123
Date型の変数に入れれば日付になるじゃん
コメント2件

125
デフォルトの名無しさん[]   投稿日:2017/01/12 20:54:08  ID:yR99XFwh.net(4)
不勉強で申し訳ないが世に文字列以外のファイル名を採用したファイルシステムがあるのなら是非教えて頂きたい
コメント4件

126
デフォルトの名無しさん[sage]   投稿日:2017/01/12 21:08:16  ID:eBGwra53.net(4)
>124
例えば
2017/1/12
20170112
1/12/2017
シリアル値
全部同じになるっけ?
コメント2件

127
デフォルトの名無しさん[sage]   投稿日:2017/01/12 21:22:08  ID:UiBlAwbG.net(4)
>125
誰がそのまま使うって言ってんの
fileName = baseName & cStr(dte)
みたいな使い方するわけでしょ
>126
知らんけど表示形式が違うだけならなるんじゃねえの

128
デフォルトの名無しさん[sage]   投稿日:2017/01/12 22:11:57  ID:Mdtl8esZ.net(2)
じゃ無いかな くれるだろ 思う 知らんけど じゃねえの
もはや、妄想・空想・予想のスレッドに成り果てたか
盆、暮れ、正月ぐらいせめて少しは頭を休ませてろ

129
デフォルトの名無しさん[sage]   投稿日:2017/01/12 22:24:16  ID:URc2UNFw.net(4)
あいてるセルにファイル名を生成する関数つくって、そのセル参照させればいいだけじゃないのけ?

保存場所どこにするかによってはスペースは使えないが。

130
デフォルトの名無しさん[sage]   投稿日:2017/01/12 22:26:45  ID:VnxSw5mv.net(2)
>95で解決した話題がまだ続いてる
コメント2件

131
デフォルトの名無しさん[sage]   投稿日:2017/01/12 22:40:44  ID:URc2UNFw.net(4)
>130
そうなんだ・・・しつれいした

132
デフォルトの名無しさん[sage]   投稿日:2017/01/12 23:01:38  ID:Rj8+4pg/.net(4)
>125
大型機だとファイルには整数のID番号が付いてるだけでファイル名とは切り離されて管理されてるやつがあるな
だから同じ名前のファイルがいくつも作れてしまったりする

133
デフォルトの名無しさん[sage]   投稿日:2017/01/13 12:38:07  ID:XGAIFzZi.net(2)
Sheet1     Sheet2
A    B    A    B
東京  5    大阪   ○
大阪  4    福岡   ×
福岡  8    東京   ○

Sheet1
A    B   C
東京  5   ○
大阪  4   ○
福岡  8   ×

Sheet1のA列を軸にSheet2のB列の値を抽出する場合、
For〜 'Sheet1A列を順番に
 For〜 'Sheet2A列を順番に
  IF〜 'Sheet1C列に代入
 Next
Next
もしくは
For〜 'Sheet1A列を順番に
 Find.Row 'Sheet1A列の値を検索
 'Sheet1C列に代入
Next
どちらのほうが処理速度が向上しますか?
コメント6件

134
デフォルトの名無しさん[sage]   投稿日:2017/01/13 12:39:52  ID:xEiCBlzV.net(4)

135
デフォルトの名無しさん[sage]   投稿日:2017/01/13 12:43:08  ID:5NHpz1Ta.net(6)
>134
vlookup→配列に入れてif分岐→findの順番の早さ
findが遅いのは確か

136
デフォルトの名無しさん[sage]   投稿日:2017/01/13 12:58:05  ID:dokIsM4J.net(2)
>133
シートでsql

137
デフォルトの名無しさん[sage]   投稿日:2017/01/13 13:02:40  ID:5NHpz1Ta.net(6)
findが遅いって言ってもセルを直接参照して処理するよりは早い
コメント2件

138
デフォルトの名無しさん[sage]   投稿日:2017/01/13 13:15:44  ID:HxNmVQ/n.net(2)
>137
ってことは、後者のほうが速いということでしょうか?
コメント2件

139
デフォルトの名無しさん[sage]   投稿日:2017/01/13 13:24:35  ID:Pq7AWenX.net(2)
vlookup→配列に入れてif分岐→find→セルを直接参照してif分岐

140
デフォルトの名無しさん[sage]   投稿日:2017/01/13 13:32:41  ID:q4yhPByZ.net(4)
えっと、関数は使うつもりはありません
伝えてなくてすいません
コメント2件

141
デフォルトの名無しさん[sage]   投稿日:2017/01/13 13:33:30  ID:q4yhPByZ.net(4)
携帯回線のせいでIDがコロコロ変わる…
>133です

142
デフォルトの名無しさん[sage]   投稿日:2017/01/13 13:43:05  ID:xEiCBlzV.net(4)
>140
vbaにはWorksheetFunctionと言うクラスが用意されている
その中にvlookupと言うメソッドがあるのでそれを利用すればいかが?

これを使いたくないってことなら勘違いでごめんなさい

143
デフォルトの名無しさん[sage]   投稿日:2017/01/13 13:58:35  ID:5NHpz1Ta.net(6)
>138
OfficeTANAKA 高速化テクニックでググれば幸せになれるよ

144
デフォルトの名無しさん[sage]   投稿日:2017/01/13 17:01:55  ID:OhnPZwk7.net(2)
ジャパネット・・・

145
デフォルトの名無しさん[sage]   投稿日:2017/01/13 22:23:24  ID:N+jcCuX6.net(2)
ていうか何行あるんだよ。
少なければWorksheetFunction.Vlookupで十分。
多ければ、高速VlookupかSQL。
コメント2件

146
デフォルトの名無しさん[sage]   投稿日:2017/01/13 22:45:47  ID:IUqNU+pk.net(2)
Sub test()
Dim d, e
Set d = CreateObject("Scripting.Dictionary")
Set e = CreateObject("Scripting.Dictionary")

For Each x In Range(Sheet1.Cells(1, 1), Sheet1.Cells(Rows.Count, 1).End(xlUp))
If Not d.exists(x.Value) Then d.add x.Value, x.Offset(0, 1).Value
Next

For Each x In Range(Sheet2.Cells(1, 1), Sheet2.Cells(Rows.Count, 1).End(xlUp))
If Not e.exists(x.Value) Then e.add x.Value, x.Offset(0, 1).Value
Next

For Each x In d.keys
Debug.Print x & ":" & d(x) & ":" & e(x)
Next
End Sub

147
デフォルトの名無しさん[]   投稿日:2017/01/14 14:19:38  ID:eOx3RZdu.net(4)
以下を実現するexcel vbaの書き方を教えてください。
お願いします。

セルA1に aaa

148
デフォルトの名無しさん[]   投稿日:2017/01/14 14:20:50  ID:eOx3RZdu.net(4)
以下を実現するexcel vbaの書き方を教えてください。
お願いします。

セルA1に aaa"bbbb"cc
セルA2に a"dd"cccc
という文字列があるとき、
セルB1に bbbb
セルB2に dd
(それぞれ、" "で挟まれた文字列)を出力する。
コメント6件

149
デフォルトの名無しさん[sage]   投稿日:2017/01/14 14:28:13  ID:hMPeMSWC.net(2)
>148
split

150
デフォルトの名無しさん[sage]   投稿日:2017/01/14 14:36:22  ID:l+bXNSZh.net(2)
>148
Sub Macro1()
  [B1] = Split([A1], """")(1)
  [B2] = Split([A2], """")(1)
End Sub

151
デフォルトの名無しさん[sage]   投稿日:2017/01/14 14:59:32  ID:TCZ/fLWF.net(2)
>148
文字列関連の関数あらかた覚えなさい
難しくないから

152
デフォルトの名無しさん[sage]   投稿日:2017/01/15 11:53:32  ID:ncM8p+KA.net(2)
>145
高速vlookupって何?
コメント2件

153
デフォルトの名無しさん[sage]   投稿日:2017/01/15 12:46:48  ID:m2E/VbcR.net(4)
このスレのテンプレにOfficeTANAKA入れたら質問激減しそう
ってレベルの質問が来るとガクッと来る

154
デフォルトの名無しさん[sage]   投稿日:2017/01/15 14:21:19  ID:FqEOuXry.net(2)
ガクッと来るのも自由、回答したくないなら回答しないのも自由
レベルの制限をしてるわけじゃなし
コメント2件

155
デフォルトの名無しさん[sage]   投稿日:2017/01/15 14:36:53  ID:m2E/VbcR.net(4)
>154
まあそらそうなんだけども
ググった方が早くねって言うね

156
デフォルトの名無しさん[sage]   投稿日:2017/01/15 18:05:40  ID:trUVIHlw.net(2)
確かに「まずググれよ」と思う質問はたまにあるな。

検索の仕方も分からないような状態ならともかく、
このスレに書いてる単語を並べていけばたどり着くだろ的なのも多い。

ちゃんとしたサイトの方が図で説明してくれるから分かりやすいだろうし。

157
デフォルトの名無しさん[sage]   投稿日:2017/01/15 19:40:36  ID:1Rt+ERT2.net(2)
>152
検索対象を昇順ソート
      ↓
VLOOKUPで1列目の文字を近似値一致検索
(但しA:Aとかは駄目で、A1:A500とかにする)
      ↓
検索で引っかかった文字が、
検索値と完全一致なら、
再度VLOOKUPで近似値一致検索


正直、何でこれで速くなるのかわからんし、
普通のVLOOKUPの検索アルゴリズムも、
最初からそうしろよって思う。
コメント4件

158
デフォルトの名無しさん[sage]   投稿日:2017/01/15 21:24:21  ID:tflJaJ6v.net(2)
>157
とにかく完全一致検索が遅いから使いたくない、じゃどうするか
ってことなんででしょうね。

Office Tanakaの
http://officetanaka.net/excel/function/function/vlookup.htm
に「検索値が見つからないとき超えない最大値を返す仕様がとても助かる」とあるけど
検索値をはさむ[from, to]がわかるのが一番助かると思う。
(検索値が存在しない場合は、to < from)

159
デフォルトの名無しさん[sage]   投稿日:2017/01/16 02:21:21  ID:vCWbmiBt.net(2)
>157
完全一致だとデータがソートされてる保証が無いから全件検索必須
近似値指定だとデータがソートされてる前提だから効率的に探せる
そいう事だろ、たぶん

160
デフォルトの名無しさん[sage]   投稿日:2017/01/16 03:49:06  ID:L7GtxIZz.net(2)
二分検索木とか知らん馬鹿ばっか
コメント6件

161
デフォルトの名無しさん[sage]   投稿日:2017/01/16 05:39:23  ID:/FyYs0Da.net(2)
>160

馬鹿です。
Google先生に聞いたら「もしかして二分探索木?」と言われてしまいました。
これが高速Vlookupの原理?
WikiPediaで調べてみたのですがピンときません。
分かりやすい解説サイトでもあれば教えてください。
# 旧いMac(System7時代)のFileAllocationTableに B-Treeなんたら
というものがあったような、、関係あるのかな?

162
デフォルトの名無しさん[sage]   投稿日:2017/01/16 05:48:43  ID:K1gRWFXI.net(2)
ソート済のデータ検索なら バイナリサーチ(二分探索)じゃね?

163
デフォルトの名無しさん[sage]   投稿日:2017/01/16 07:22:24  ID:Zl2rcSDP.net(4)
>160
木構造にはなっていないのでは?
コメント2件

164
デフォルトの名無しさん[sage]   投稿日:2017/01/16 08:37:09  ID:6pMMhvrL.net(2)
>163
二分探索は別に木構造じゃなくても...
って書こうとしたら >160 は「二分検索木」って書いてたのか
まあ検索でも間違いじゃないだろうけどあまり使わないような気がするな

165
デフォルトの名無しさん[sage]   投稿日:2017/01/16 11:22:13  ID:q0YsoZyP.net(2)
ソート済の二分探索なら100個の時7回ループ、500個なら9回、100万個でも20回ループすれば終わるから

166
デフォルトの名無しさん[]   投稿日:2017/01/16 15:06:17  ID:CkU8X3ZM.net(2)
30もない俺のシートじゃ意味なさそうやな

167
デフォルトの名無しさん[sage]   投稿日:2017/01/16 23:26:54  ID:Py9dY2eU.net(2)
ソート済でも完全一致が遅いのは何故?
一致するのを見つけたら、それ以上探さないで次に行けば、
近似値でも同じことじゃないかと思うんだけど。
コメント2件

168
デフォルトの名無しさん[sage]   投稿日:2017/01/16 23:32:38  ID:Zl2rcSDP.net(4)
>167
ソート済かどうかなんてわからないから頭から舐めていく
コメント2件

169
デフォルトの名無しさん[sage]   投稿日:2017/01/17 00:13:17  ID:HvycQCZc.net(2)
>168
一致するのが複数あっても、
どうせ1番上の1個しか拾ってこないんだから、
見つかった時点でループ抜けりゃいいじゃんって事なんだけど。

近似値だと探し方が違うの?
コメント2件

170
デフォルトの名無しさん[sage]   投稿日:2017/01/17 00:17:50  ID:jzPK8o2C.net(6)
>169
いやだから頭から一つ一つ舐めていく必要があるかどうかの違い
コメント2件

171
デフォルトの名無しさん[sage]   投稿日:2017/01/17 00:26:02  ID:Upzxz6/t.net(6)
>170
近似値だと頭から見なくてよいのはなんで
具体的にどうやってると考えてるの
コメント2件

172
デフォルトの名無しさん[sage]   投稿日:2017/01/17 00:28:39  ID:jzPK8o2C.net(6)
>171
辞書で単語を引くときにやっているやり方さ
コメント2件

173
デフォルトの名無しさん[sage]   投稿日:2017/01/17 00:32:26  ID:Upzxz6/t.net(6)
>172
辞書を作るときは頭から見なくてよいの?
コメント2件

174
デフォルトの名無しさん[sage]   投稿日:2017/01/17 01:00:47  ID:035vzIzN.net(4)
>173
書籍としての辞書を利用するときをイメージするといいかも
まず視覚的に先頭文字の見出しの位置を開いて調べる
この感覚

近似値を利用する場合は「文末違うけどだいたいこんな感じだよね」って得るためより正確な情報を得るためにはソートする必要がある
完全一致だとそもそも一致していることが条件となるのでソートする必要がなくなる

正確に言うと異なると思うけどだいたいこんなイメージ
コメント2件

175
デフォルトの名無しさん[sage]   投稿日:2017/01/17 01:13:18  ID:mp4Rluyj.net(2)

176
デフォルトの名無しさん[sage]   投稿日:2017/01/17 06:36:26  ID:Upzxz6/t.net(6)
>174
完全一致でも昇順に並べられていることを前提とすれば辞書方式が使えると思うけどな
コメント2件

177
デフォルトの名無しさん[sage]   投稿日:2017/01/17 07:13:51  ID:jzPK8o2C.net(6)
>176
使えるが そういう仕様に なってない

178
デフォルトの名無しさん[sage]   投稿日:2017/01/17 09:11:54  ID:035vzIzN.net(4)
個人的には完全一致の場合ソート不要って仕様はありがたい

179
デフォルトの名無しさん[sage]   投稿日:2017/01/17 19:24:38  ID:gxb7F/t0.net(2)
>175

いろいろ勉強になりました。
十数年、vlookupは特殊な場合を除いて完全一致で使うものだと思っていました。
数十万のvlookupをかけて3時間ぐらい帰ってこないような処理をしたことがあり
いま考えると無謀だったなと、、

180
デフォルトの名無しさん[]   投稿日:2017/01/17 20:31:05  ID:EPmzwVho.net(6)
xml文を読み込んで階層、パラメータ名、設定値を求めるvbaの書き方がわかりません。
どなたか教えてくださいお願いします。

イメージ図:
http://www.dotup.org/uploda/www.dotup.org1127385.jpg
I1にXML文、A〜G列の1-2行目がある状態でVBAを実行すると、
A〜G列の3行目から下が出力されるイメージです。
XML文全体は約500行のものが複数、どれも階層は4以下です。

以上、よろしくお願いします。
コメント8件

181
デフォルトの名無しさん[sage]   投稿日:2017/01/17 21:21:06  ID:pDqJREhG.net(4)

182
デフォルトの名無しさん[sage]   投稿日:2017/01/17 21:22:53  ID:UOrZs7iT.net(2)
>180
ノード名もパラメーターとして出す(イメージ図で言う太字の箇所)
で良いのかい?

あと、階層の各列には同じ数値しか入らない
で良いのかい?

これを求めているのなら求めているで構わないけど得られる結果をまた精査することになると思う
コメント2件

183
デフォルトの名無しさん[sage]   投稿日:2017/01/17 21:47:24  ID:pDqJREhG.net(4)
>180
あと出力順が
1
 2
  3
  3
  3
のようになってるけど
1
 2
  3
  3
 2
  3
つまり Subject が2回出力されるんじゃダメ?
コメント2件

184
デフォルトの名無しさん[]   投稿日:2017/01/17 21:49:25  ID:EPmzwVho.net(6)
>181
ありがとう。
実はこのサイトとかを参考に試行錯誤したがうまくできくてここで尋ねたんだ。

>182
はい、おっしゃる通り
・ノード名もパラメータとして(太字で)出す。
・階層の各列には同じ数字しか入らない。B列は空白か1か、C列は空白か2、・・・。
です。

185
デフォルトの名無しさん[]   投稿日:2017/01/17 21:53:52  ID:EPmzwVho.net(6)
>183
1
 2
  3
  3
 2
  3
のようにSubjectを2回出力するのだとだめです、申し訳ない。
これも、1人でできない原因の一つです。
許されたらfor文で各行に対してsplitとか使えばなんとかなりそうだけど・・・
コメント2件

186
デフォルトの名無しさん[sage]   投稿日:2017/01/17 23:53:22  ID:HYIsieSI.net(4)
>185
その場合
&lt;xxx ...>
 <...>
 <...>
</xxx>
<yyy ...>
 <...>
 <...>
</yyy>
<xxx ...>
 <...>
 <...>
</xxx>
の場合はどのように出力するの?
タグ名毎に集約するの?

187
デフォルトの名無しさん[sage]   投稿日:2017/01/17 23:55:02  ID:HYIsieSI.net(4)
最初が化けた...
<xxx ...>
 <...>
 <...>
</xxx>
<yyy ...>
 <...>
 <...>
</yyy>
<xxx ...>
 <...>
 <...>
</xxx>
のケースね。
コメント2件

188
デフォルトの名無しさん[]   投稿日:2017/01/18 00:16:31  ID:P2ujaP/J.net(14)
>187
はい、そのケースではタグ名毎に集約します。つまり、
<xxx ...>
<...>←yの上の1行目
<...>←yの上の2行目
<...>←yの下の1行目
<...>←yの下の2行目
</xxx>
<yyy ...>
<...>
<...>
</yyy>
と同値とみなします。(Fの列にyyyが1つだけ出る)

ただし、
<xxx ...>
<yyy ...>
</yyy>
</xxx>
<zzz ...>
<yyy ...>
</yyy>
</zzz>
のように階層が異なったり、一つは<xxx>,もう一つは<zzz>の下にあるような場合は、
<xxx>の下の<yyy>と<zzz>の下の<zzz>は別のものとして扱います。(Fの列にyyyが複数出る)
コメント2件

189
デフォルトの名無しさん[sage]   投稿日:2017/01/18 07:02:26  ID:KfZHaLf7.net(2)
>188
<xxx ...>
<yyy ...> -- (1)
</yyy>
</xxx>
<zzz ...>
<yyy ...> -- (2)
</yyy>
</zzz>
<xxx ...>
<yyy ...> -- (3)
</yyy>
</xxx>
のケースで (1) と (3) も集約するの?
たぶん xml からの読み込みと集約処理を分けた方がいいと思う。
コメント2件

190
デフォルトの名無しさん[]   投稿日:2017/01/18 08:46:32  ID:dxlKDUod.net(2)
>189
携帯から失礼します。
はい、その場合も集約します。

具体的にはどんなコードで書いたらよろしいですかね。

191
デフォルトの名無しさん[]   投稿日:2017/01/18 10:08:50  ID:nvWV6Cl1.net(2)

192
デフォルトの名無しさん[sage]   投稿日:2017/01/18 10:46:36  ID:mepmwC6J.net(2)
Dictionaryの配列で書けるでしょ

193
デフォルトの名無しさん[sage]   投稿日:2017/01/18 12:19:13  ID:zXM8oXoh.net(10)
なんで、XMLParser を自分で作るの?

Groovy とかで、すぐに出来るだろ
コメント2件

194
デフォルトの名無しさん[sage]   投稿日:2017/01/18 12:35:52  ID:4FnlBNL6.net(2)
>193
すぐw
じゃあ書いてみろよ
コメント2件

195
デフォルトの名無しさん[sage]   投稿日:2017/01/18 12:38:39  ID:NBGHKSlQ.net(2)
さすがに MSHTML.HTMLDocument オブジェクトとかは使うんだろうと思っていたが違うのかな?

196
デフォルトの名無しさん[sage]   投稿日:2017/01/18 12:54:48  ID:Fv9px6Lv.net(4)
特定のセルが書式を設定されてるかどうかの判定ってどうすればいいでしょうか?
例えば文字が入ってなくても色や太さが設定されてるとか
コメント2件

197
デフォルトの名無しさん[sage]   投稿日:2017/01/18 13:04:49  ID:UZ6KtMVe.net(4)
>196
普通にセルのプロパティで取得すればいいんでない
コメント2件

198
デフォルトの名無しさん[sage]   投稿日:2017/01/18 13:07:57  ID:Fv9px6Lv.net(4)
>197
If Range("A1").Value="" Then
でいけますか?
コメント2件

199
デフォルトの名無しさん[sage]   投稿日:2017/01/18 13:25:21  ID:UZ6KtMVe.net(4)
>198
forecolorとかbackcolorとかだよ
オブジェクトブラウザでcells調べてみ?

200
デフォルトの名無しさん[sage]   投稿日:2017/01/18 15:02:26  ID:zXM8oXoh.net(10)
Groovyでは、
def root = new XmlParser().parse("ファイル名.xml")

root.タグ名.each{
println it.text()
ここで処理する
}

it は、イタレータから渡ってくる、暗黙の要素を指す

201
デフォルトの名無しさん[sage]   投稿日:2017/01/18 17:11:44  ID:XrR2JBi4.net(2)
>180
そもそも、なんでExcelに展開しようとしてるんだ?
それが最終目的か?

あと、自分でどこまでできたのか書いてくれ。
コメント2件

202
デフォルトの名無しさん[sage]   投稿日:2017/01/18 17:46:16  ID:WZOpQPDJ.net(4)
http://smilejapan.net/wiki/index.php?VBA%20XMLデータをDOMで扱う方法

XML関連

203
デフォルトの名無しさん[sage]   投稿日:2017/01/18 19:44:31  ID:zXM8oXoh.net(10)
<Subject japanese="kokugo">
<Subject math="sugaku">

1回目の<Subject>の際、japanese, math の、2つが取れているのは、Traverse の幅優先探索か?
普通は、深さ優先探索だけど

様々な言語を見たけど、日本語のサイトで、Traverse の処理を書いているサイトは、ほとんどない。
どないなっとんねん?

204
デフォルトの名無しさん[]   投稿日:2017/01/18 20:09:10  ID:P2ujaP/J.net(14)
>201
Excelに展開するのが最終目的であってます。
現在自分ではこのような状況・・・

DOMとかわからなくて挫折。xml文の各行をfor文で回してやっている。

【できたこと】
各行のXML文がどの階層についての話か調べる
階層 = (各行の<の前にある空白)×1のため、InStr("各行のXML文","<")-1で求めた。

【できないこと】
パラメータ名と設定値の抜出。
設定値に関してはsplit関数でできるかなと思ったが、
パラメータ名は「空白と=」や「<と空白」等で何で囲まれているかが異なっており、どうすればよいかわからない。

簡単に言うと、
I2:「 <examType first="zenki/shiken" second="koki/shiken" third="">」
とあるとき、
examTypeをF3、firstをF4、secondをF5、thirdをF6、
"zenki/shiken"をG4、"koki/shiken"をG5、""をG6に出す方法がわからない。
コメント4件

205
デフォルトの名無しさん[sage]   投稿日:2017/01/18 20:17:32  ID:WZOpQPDJ.net(4)
xmlファイルをhtmlとして読み込めばいいんじゃね
でgetelementsbytagname()とかつかう

206
デフォルトの名無しさん[sage]   投稿日:2017/01/18 20:26:10  ID:9qUMY5Wm.net(2)
>204
馬鹿過ぎて話しにならない。
馬鹿に無理。

207
デフォルトの名無しさん[sage]   投稿日:2017/01/18 20:47:34  ID:IDSE4GPa.net(2)
>194
ふぅ

208
デフォルトの名無しさん[sage]   投稿日:2017/01/18 21:15:38  ID:zXM8oXoh.net(10)
XML Parserは、jQuery, Groovy, Python, Ruby など、何にでもある

ただ、traverse の説明が、日本語のサイトでは見当たらない。
深さ優先ではなく、幅優先探索だろ?

209
デフォルトの名無しさん[sage]   投稿日:2017/01/18 21:22:46  ID:uheDDMMj.net(12)
>204
DOMじゃないと結構つらいかもよ 出来ん事はないけどね DOM勉強する気があるなら サンプル上げとくよ

DOM+再帰処理してるので詳細はググってねw
あと何階層でも良いのだけれど シートが4階層までしか用意されてないので 4階層に制限してます

'Microsoft XML v3.0 を参照設定
Sub main()
 Dim XMLDoc As MSXML2.DOMDocument
 Dim Row As Long
 Dim No As Long
 Row = 3 'シートに書き込む最初の行位置
 No = 1
 Set XMLDoc = New MSXML2.DOMDocument
 XMLDoc.Load "D:\XML.txt" 'XMLファイルを読み込む
 Call ListXml(XMLDoc.ChildNodes(1), Row, No, 1)
 Cells(Row, "G").Value = "FINISH"
End Sub

Sub ListXml(ByRef Node As IXMLDOMNode, ByRef Row, ByRef No, ByVal Level)
 Dim NodeList As IXMLDOMNodeList
 Dim Node1 As IXMLDOMNode
 Dim Node2 As IXMLDOMNode
 Dim NodeAttr As IXMLDOMAttribute
 'ノード名表示
 Cells(Row, "A").Value = No
 Cells(Row, "B").Offset(0, Level - 1).Value = Level
 Cells(Row, "F").Value = Node.nodeName
 Cells(Row, "G").Value = "-"
 Row = Row + 1
 No = No + 1

210
209[sage]   投稿日:2017/01/18 21:23:19  ID:uheDDMMj.net(12)
'続き
 'ノードパラメータ表示
 For Each NodeAttr In Node.Attributes
  Cells(Row, "A").Value = No
  Cells(Row, "F").Value = NodeAttr.Name
  Cells(Row, "G").Value = NodeAttr.Value
  Row = Row + 1
  No = No + 1
 Next
 '階層制限
 If Level = 4 Then Exit Sub

 '同じ名前の子ノードを 最初の一つに集約
 For Each Node1 In Node.ChildNodes
   Do
     Set NodeList = Node1.ParentNode.SelectNodes(Node1.nodeName)
     If NodeList.Length = 1 Then Exit Do
     For Each Node2 In NodeList(1).ChildNodes
       NodeList(0).appendChild Node2
     Next
     Node1.ParentNode.RemoveChild NodeList(1)
   Loop
 Next
 '子ノード処理(再帰)
 For Each Node1 In Node.ChildNodes
   Call ListXml(Node1, Row, No, Level + 1)
 Next
End Sub
コメント2件

211
デフォルトの名無しさん[sage]   投稿日:2017/01/18 21:25:28  ID:zXM8oXoh.net(10)
XML Parserは、jQuery, Groovy, Python, Ruby など、何にでもある

ただ、traverse の説明が、日本語のサイトでは見当たらない。
深さ優先ではなく、幅優先探索だろ?

Java
http://www.technotype.net/tutorial/tutorial.php?fileId=%7BDOM%7D&;sectionId=%7Btraversing-the-node-tree%7D

子ノードリストを取得
NodeList list = parentNode.getChildNodes();

要素に従属する属性リストを取得
NamedNodeMap map = elementNode.getAttributes();

最悪、traverse 関数内で、traverse・自分自身を呼ぶ、再帰的な処理を作る。
traverse 関数が最初からあれば、もっと簡単。
それに幅優先探索を指定する
コメント2件

212
デフォルトの名無しさん[]   投稿日:2017/01/18 21:56:11  ID:P2ujaP/J.net(14)
>210
ありがとう。
実際やってみたらA3とB3に1が出力されて、
オブジェクト変数またはWithブロック変数が設定されていません
と言われました。どうしてだろ。。。

>211
はい、幅優先探索です。
ありがとうございます。transverseについてちょっと調べてみます。
コメント4件

213
デフォルトの名無しさん[sage]   投稿日:2017/01/18 22:00:58  ID:uheDDMMj.net(12)
>212
XML規則に則ってる?
あと ノード名(タグ名?)は 大文字小文字 区別するぜ

どっか XMLファイルUP出来ない?
コメント2件

214
デフォルトの名無しさん[sage]   投稿日:2017/01/18 22:08:43  ID:uheDDMMj.net(12)
>212
もしかして↓このまま? 実際のXMLファイル名に修正してよね

XMLDoc.Load "D:\XML.txt" 'XMLファイルを読み込む

215
デフォルトの名無しさん[]   投稿日:2017/01/18 22:12:35  ID:P2ujaP/J.net(14)
>213
実際のXMLファイル名とそのパスにしています。
XML.txtの中身は以下の通りです。
<?xml version="1.0" encoding="UTF-8">
<examType first="zenki/shiken" second="koki/shiken" third="">
<Subject japanese="kokugo">
<Gendaibun min="50/100" max="85/100" />
<Kobun min="60/100" max="100/100" />
</Subject>
<Subject math="sugaku">
<IA min="30/100" max="80/100">
</IA>
</Subject>
</examType>
コメント2件

216
デフォルトの名無しさん[sage]   投稿日:2017/01/18 22:29:42  ID:uheDDMMj.net(12)
>215
XML読み込み失敗してるね

※XMLファイル修正(最後に?がない)
× <?xml version="1.0" encoding="UTF-8">
○ <?xml version="1.0" encoding="UTF-8"?>

※コード修正(読み込みエラーでたらMSGBOX)
XMLDoc.Load "D:\XML.txt" 'XMLファイルを読み込む
If XMLDoc.parseError.ErrorCode <> 0 Then
MsgBox XMLDoc.parseError.reason
Exit Sub
End If
コメント2件

217
デフォルトの名無しさん[sage]   投稿日:2017/01/18 22:30:45  ID:vXs3og/7.net(2)
アドインのデータはどこに保存するのが標準的なの?
シートだと階層構造のデータを保存しにくいからxmlファイルにして保存したい
コメント4件

218
デフォルトの名無しさん[]   投稿日:2017/01/18 22:41:40  ID:P2ujaP/J.net(14)
>216
ありがとうございます。エラーはなくなりました。
ただ1つ問題が・・・
math,sugakuを読み込んでいない。8行目と9行目の間に入れたいのですが。

実行画面結果は以下のようになりました
http://www.dotup.org/uploda/www.dotup.org1128435.jpg
コメント2件

219
デフォルトの名無しさん[sage]   投稿日:2017/01/18 22:50:58  ID:uheDDMMj.net(12)
>218
'同じ名前の子ノードを 最初の一つに集約
で集約してるからそうなるが(その下は移動してる)

前からの レスで集約するって言ってたんじゃない?

'同じ名前の子ノードを 最初の一つに集約
の(FOR〜NEXT)部分ざっくり削除してみ
コメント2件

220
デフォルトの名無しさん[]   投稿日:2017/01/18 23:09:44  ID:P2ujaP/J.net(14)
>219
あー、申し訳ない。
7行目のSubjectの下に、japaneseとmathをまとめて出力するという意味で使ってしまっていました。

221
デフォルトの名無しさん[]   投稿日:2017/01/18 23:20:05  ID:P2ujaP/J.net(14)
まとめて=8行目にjapanese,9行目にmath
という意味です
コメント2件

222
デフォルトの名無しさん[sage]   投稿日:2017/01/19 00:09:17  ID:wXKnExNu.net(2)
>221
こゆう事かな?(同じパラメータは 最後のに置き換えられるよ)
下をそっくり入れ替えて

 '同じ名前の子ノードを 最初の一つに集約
 For Each Node1 In Node.ChildNodes
  Do
     Set NodeList = Node1.ParentNode.SelectNodes(Node1.nodeName)
     If NodeList.Length = 1 Then Exit Do
     For Each Node2 In NodeList(1).ChildNodes
       NodeList(0).appendChild Node2
     Next
     'パラメータコピー
     For Each NodeAttr In NodeList(1).Attributes
      NodeList(0).Attributes.setNamedItem NodeAttr.CloneNode(True)
     Next
     Node1.ParentNode.RemoveChild NodeList(1)
  Loop
 Next
コメント2件

223
デフォルトの名無しさん[sage]   投稿日:2017/01/19 00:38:26  ID:qjpOvOJu.net(4)
ここまで来ると、もうわけがわからんな。
プログラムでプログラム文を自動生成します、みたいな話だろ?

224
デフォルトの名無しさん[sage]   投稿日:2017/01/19 05:02:36  ID:WDgxZeys.net(2)
何かの言語には、自動的に、traverse する関数があるはず。
または既に、外人が作って、Gitにあるはず。
日本のサイトで探しても、見つからない

それに、深さ優先探索か幅優先探索を指定する

Pythonのwalkは、あるディレクトリ以下の階層を渡り歩く。
つまり、それのXML版だろ

ディレクトリもXMLも、Tree だから、基本的には同じ

225
デフォルトの名無しさん[sage]   投稿日:2017/01/19 06:58:46  ID:JadLiFtg.net(2)
>217
> シートだと階層構造のデータを保存しにくいからxmlファイルにして保存したい
XML 文字列ををセルとかブックのプロパティとかに入れときゃいいだけじゃないの?

226
デフォルトの名無しさん[]   投稿日:2017/01/19 07:34:02  ID:R0f6tJX+.net(4)
>>222
できたああああああああああああ
ありがとうございます!
罫線やノード名の一部を太字にするなど微修正は自分でできました。

皆様ありがとうございました。

227
デフォルトの名無しさん[sage]   投稿日:2017/01/19 12:16:13  ID:SpG+j8gZ.net(2)
   A  B
1 山田 10:50
2 山田 11:50
3 山田 4:50

山田の時間(B列)を1行目から順番に変数(a)に代入して合計を計算して、
Application.Floor(a + TimeValue("0:30"), TimeValue("1:00"))で
30分繰り上げ(例えば1:30の場合2:00に繰り上げ)しているのですが、
総計が24時間を超えると"1900/1/1  28:00"と日付が入り、表示形式がおかしくなってしまいます。
繰り上げのコードが間違っているのでしょうか?
コメント2件

228
デフォルトの名無しさん[sage]   投稿日:2017/01/19 12:21:46  ID:4RX8xFF/.net(2)

229
デフォルトの名無しさん[sage]   投稿日:2017/01/19 12:47:27  ID:ZXvOrtNX.net(2)
>228
解決しました
ありがとうございます

230
デフォルトの名無しさん[]   投稿日:2017/01/19 15:08:53  ID:SN1gevnS.net(2)
初質問です!
エクセルにはブック共有状態で変更履歴記録機能があり、新しいシートに変更履歴一覧を作成できると思います。
そこで、VBAで変更期間「すべて」で「新しいシートに変更履歴一覧を作成」の操作をしたいのですが可能でしょうか?
大量のドキュメントの変更履歴を取りたいので、マクロ化したいのが目的です。
可能であればやり方を教えていただきたいです。よろしくお願い致します。
コメント2件

231
デフォルトの名無しさん[sage]   投稿日:2017/01/19 15:37:44  ID:irXhj7sG.net(4)
>230
とりあえずマクロの記録を試してみたら?

232
デフォルトの名無しさん[sage]   投稿日:2017/01/19 15:50:51  ID:9G0IwAcw.net(2)
>217
これは俺も知りたいc++だとxmlに書いてるのよく見るけどvbaはどうなんだ

233
デフォルトの名無しさん[sage]   投稿日:2017/01/19 18:24:05  ID:xZWyIIjd.net(2)
Cell Property の .Valueと.Textでは取得のパフォーマンスに
大きな差があるようですがこんなものですか。
7万レコードのセル値取得に使ったのですが、前者は0.3秒ほど
後者は130秒かかりました。
上のほうのレスで .Textを見つけて喜んで使ってみたのですが、、
コメント2件

234
デフォルトの名無しさん[sage]   投稿日:2017/01/19 20:17:42  ID:irXhj7sG.net(4)
>233
Textの方は書式を評価しないといけないからそんなものじゃね?
コメント2件

235
デフォルトの名無しさん[]   投稿日:2017/01/19 20:23:44  ID:R0f6tJX+.net(4)

236
デフォルトの名無しさん[sage]   投稿日:2017/01/19 21:13:36  ID:9zfnUwsN.net(2)
>234
なるほど
.Valueで取得してから書式あてた方が無難ですね

237
デフォルトの名無しさん[sage]   投稿日:2017/01/19 23:40:16  ID:qjpOvOJu.net(4)
マジか!!
Valueで取得しようとすると、
#N/Aでコケるから、ずっとText使ってたわ!

ん?
でも0.3秒と130秒って違い過ぎじゃないか?
0.3秒なんて、For Nextじゃ取れないと思うが。
a=Range("A1:A70000").Valueとかじゃないと。
コメント4件

238
デフォルトの名無しさん[sage]   投稿日:2017/01/20 04:41:52  ID:9/J9Uge2.net(4)
>237
そう言われると、、あらためて追試。
試したコードはこんな感じ。

Cells(1, 1).Resize(70000, 1).Select

  '------------------------------
st = Timer
For Each r In Selection
var = r.Value
Next
ed = Timer
Debug.Print "by .Value", ed - st; "[Sec]"

  '------------------------------
st = Timer
For Each r In Selection
var = r.Text
Next
ed = Timer
Debug.Print "by .Text", ed - st; "[Sec]"

セルには[1-70000]のシーケンシャルな数値を格納
これの書式なしと書式あり"[h]:mm"を試しました。
(続く)

239
デフォルトの名無しさん[sage]   投稿日:2017/01/20 04:43:33  ID:9/J9Uge2.net(4)
>237

(続き)

結果、、
---------------------------------------------
by .Value 0.1855469 [Sec]
by .Text 1.241211 [Sec]
by .Value (Formatted) 0.1806641 [Sec]
by .Text (Formatted) 1.569336 [Sec]
---------------------------------------------

結果、差はあるものの、日中にテストしたものほど
は差がでませんでした。
日中のデータで再度試した結果です。
---------------------------------------------
by .Value (Formatted) 0.2011719 [Sec]
by .Text (Formatted) 99.20215 [Sec]
---------------------------------------------

他の要因もあるかもしれません。
実際のデータはOracleからSQLで引っ張ってきた
テーブルを.Unlistしたもので、70000行x130列ほど
の大きさ。これのV列あたりにある "hh:mm"書式が
当たっているというものです。
自動再計算はOffです。

240
デフォルトの名無しさん[]   投稿日:2017/01/20 11:00:31  ID:32Bwzd9P.net(2)
VBA初歩的です。
シート1のA列で文字列の色を変えてその後A列に同じ文字列が書き込まれたら同じ色に変えたいんです。
そして出来たらシート2のA列の同じ文字列も同じ色にしたいんです。
誰かコード分かる方いますでしょうか?
コメント4件

241
デフォルトの名無しさん[sage]   投稿日:2017/01/20 13:04:58  ID:nnKMBoVD.net(2)
>240
スマホから書き込もうと思ったら案外大変で諦めた

A列の重複を排除したリストを作成(配列、コレクション等)
リストとA列を比較して色を指定
で行けるんだけど、何がわからんのか
文字列の種類は不定なのか固定なのか、色に指定はあるのかなど情報も少ない

242
デフォルトの名無しさん[sage]   投稿日:2017/01/20 13:05:01  ID:JXdqXSkU.net(2)
初歩的?
自分でマクロの記録で調べろよ

243
デフォルトの名無しさん[sage]   投稿日:2017/01/20 14:58:10  ID:Nvso2zBq.net(2)
質問じゃなくてタダで作ってくれって言ってるんやで

244
デフォルトの名無しさん[sage]   投稿日:2017/01/20 16:54:43  ID:bVBZQrA4.net(4)
失礼します
学校でgoogle financeのapiを利用したのを作成しているのですが
A列の証券コードの羅列を読み取りURLに追加しJSONのティックデータを取得するところまでは
行けたのですが、どうやって個々にパースすればいいかわかりません、生データを取得するまでのコードは以下
Dim W As Worksheet: Set W = ActiveSheet
Dim i As Integer
Dim Last As Integer
Last = W.Range(
コメント6件

245
デフォルトの名無しさん[sage]   投稿日:2017/01/20 16:59:50  ID:bVBZQrA4.net(4)
うまく書き込めなかったようです
取得したでーたは下のurlの通りです
https://finance.google.com/finance/info?client=ig&;q=TYO:1332,1515,1925,7203,8058,8766,8801,9501,1954,1973,2928,2172,7980,6656,9085,5998,4556,1381,1400,1382,1739,2173,2351,7464,1734,7958,1736,2425,6960,2121


とずっと続いています
これを個々にパースしてセルごとに振り分けたいのですが
個々にパースするにはどのようにすればいいかわかりません
誰か助けてください

246
デフォルトの名無しさん[sage]   投稿日:2017/01/20 17:12:18  ID:gQ8iElJX.net(2)
>244
"vba json パース"でググる

247
デフォルトの名無しさん[]   投稿日:2017/01/20 18:21:41  ID:FuK3VNeE.net(2)
>240
在日か?日本語不自由そうだな

248
デフォルトの名無しさん[]   投稿日:2017/01/20 18:33:30  ID:Zm/Pjw4E.net(2)
すいません楽天rss使ってるのですが
vbaからセルに10銘柄程コードを入れても頻繁にすべてN/Aと出てしまうのです
接続が切れてるわけではなく、例えばexcelの上書き保存をクリックするとN/Aが
消えてすべて表示されるのです

vbaでは画面の更新は切ってないのですが原因は考えられますか?

249
デフォルトの名無しさん[sage]   投稿日:2017/01/20 19:25:28  ID:gGEm4cbB.net(2)
VBAでWebAPI叩きたくなる気持ちが理解できない
PowerShellやC#やVB.NETじゃダメだったのか
コメント8件

250
デフォルトの名無しさん[sage]   投稿日:2017/01/20 20:22:24  ID:ymDflbNb.net(2)
>249
結果を Excel で処理したいんだろ
なら VBA が一番自然だわな
ただ言語としての機能がいまいちだから俺なら PowerShell で取得して Excel に書き込むかな

251
デフォルトの名無しさん[sage]   投稿日:2017/01/20 20:58:17  ID:mJKyjGCe.net(2)
>249
いや、いいんじゃないか?
ただスレチになるから
そういう話は.Netのスレでやればいいだけで

252
デフォルトの名無しさん[sage]   投稿日:2017/01/20 21:08:26  ID:MJq7L3EO.net(2)
https://www.google.com/finance/getprices?p=1d&;f=d,h,o,l,c,v&i=300&x=INDEXNIKKEI&q=NI225
これ?
DATA_SESSIONS はjsonの配列表記っぽいけど、データ部は単なるカンマ区切りのような(他も改行区切りだしjsonじゃないような)

.NETもjsonのパースにはNuGetが必要じゃなかったっけ(なんかDLLが増えるのが嫌で自力パースしたことある)
PowerShellはjsonのパースもできるのか

253
デフォルトの名無しさん[sage]   投稿日:2017/01/20 21:31:05  ID:z3TtdYe7.net(2)
>249
えくせるしかないなら仕方ない

254
デフォルトの名無しさん[sage]   投稿日:2017/01/20 22:33:30  ID:vub4eIsV.net(2)
>249
それは本職プログラマーの発想だろうな。
事務職プログラマーは、VBAが一番いいの。
普段からエクセル使ってるから。

255
デフォルトの名無しさん[sage]   投稿日:2017/01/20 22:47:39  ID:RRdjAoJX.net(2)
VBA使うなとは言わないけど
もうちょっとPSや.NETとの連携が楽になれば助かるね

256
デフォルトの名無しさん[]   投稿日:2017/01/20 23:00:24  ID:v0MXJAlx.net(2)
VBA自体更新か新たな言語にしてほしいな

257
デフォルトの名無しさん[sage]   投稿日:2017/01/20 23:58:46  ID:0ryOpRhF.net(2)
理想を言えば C# for Application にしてくれればとは思う
まあ VB.Net for Application でもいいけど

258
デフォルトの名無しさん[sage]   投稿日:2017/01/21 00:17:22  ID:O6MYDtgM.net(2)
vbaが.netと楽しくできないのはmacのせいじゃね?

259
デフォルトの名無しさん[]   投稿日:2017/01/21 00:37:57  ID:7WDSmlh4.net(8)
ExcelのVBAからOutlookのメール作成のツールを作っているのですが
送信先やCCやタイトルや本文は書くことができました。
しかし本文のある部分を好きな色にしたり好きなフォントにしたり好きなサイズにしたりハイパーリンクをつけたいんです。
そのためにはどうすればいいでしょうか?
コメント2件

260
デフォルトの名無しさん[sage]   投稿日:2017/01/21 08:04:31  ID:6NvQGvfC.net(2)
>244-245
2chのバグだろう

書き込み確認画面が出る際、" を使うと、そこで文字列の終了とみなされる。
" の代わりに、\" とエスケープすれば、どうだろう?

それか、書き込み確認画面が出たら、1度キャンセルすれば、確認画面は出ないようになった

261
デフォルトの名無しさん[sage]   投稿日:2017/01/21 09:24:23  ID:W/Qp5igc.net(2)
>244
↓のサイトを参考にして作ってみたら?
http://outofmem.tumblr.com/post/63355773212/vbavbaでjsonをパースする

ざっくり 作って見たけど なんとかなりそうよ
学校の課題らしいからこの辺で
では

262
デフォルトの名無しさん[sage]   投稿日:2017/01/21 10:17:45  ID:W/zpHkC+.net(2)
Jsonは構造がシンプルだからパーサー書くのも難しくない
学生なら勉強として書いてみる価値はある

263
デフォルトの名無しさん[sage]   投稿日:2017/01/21 11:18:37  ID:1cIKmUbZ.net(6)
>259
HTML でやるならここのサンプル
https://msdn.microsoft.com/ja-jp/library/office/ff869979.aspx

リッチテキストでやるならフォーマットを RTF に設定して RTFBody に設定すればいい
https://msdn.microsoft.com/ja-jp/library/office/ff867828.aspx
コメント2件

264
デフォルトの名無しさん[]   投稿日:2017/01/21 11:23:47  ID:7WDSmlh4.net(8)
>263
ありがとうザマス。
やってみるでガンス。

265
デフォルトの名無しさん[]   投稿日:2017/01/21 11:27:24  ID:7WDSmlh4.net(8)
あとこれも頻繁に使う予定ですが
Outlookのカレンダー(おそらく型はolAppointmentItemでしょう)の本文でも
本文のある部分を好きな色にしたり好きなフォントにしたり好きなサイズにしたりハイパーリンクをつけるにはどうすればいいでしょう?
ちょっと調べるとBodyFormatプロパティやHTMLBodyプロパティはなさそうですが。
コメント2件

266
デフォルトの名無しさん[sage]   投稿日:2017/01/21 11:44:27  ID:1cIKmUbZ.net(6)

267
デフォルトの名無しさん[]   投稿日:2017/01/21 12:01:08  ID:7WDSmlh4.net(8)
>266
わたしのOffice2007のバージョンのOutlookにはRTFBodyプロパティは無いようなのですが。
http://www.dotup.org/uploda/www.dotup.org1130546.png

でもOffice2007でもカレンダーの本文のある部分に手動で装飾ができるのでマクロでもできるはずだと思います。
どうすればいいのでしょうか?
コメント2件

268
デフォルトの名無しさん[sage]   投稿日:2017/01/21 13:22:18  ID:JwMYXArD.net(2)
どっちかというと.NETがおかしいんだけどね
全部用意してやるからActiveXやWin32APIを使うなと言わんばかりの不便さ
言語の内部にない機能を外から持ってくるからオープン系と言うんだと思ってたけど
コメント2件

269
デフォルトの名無しさん[sage]   投稿日:2017/01/21 13:57:11  ID:1cIKmUbZ.net(6)
>267
う〜ん、ないなら無理っぽいかと
> でもOffice2007でもカレンダーの本文のある部分に手動で装飾ができるのでマクロでもできるはずだと思います。
アプリの機能の全てをマクロでサポートしてるとは限らんし...

270
デフォルトの名無しさん[sage]   投稿日:2017/01/22 18:24:33  ID:dK0oU8+I.net(4)
初心者の質問ですみません。
仕事で各部署から大量に写真が来て、部署毎の名前のフォルダに連番ファイルで保存しているのですが、
フォルダの最後のファイルだけピックアップする必要ができてしまいどうにも困っています。
Excelのマクロを使えばどうにかなりそうだとは思うのですが、どなたかお知恵を貸していただけないでしょうか?

例)
c:\営業一課\営業一課00001.jpg 〜営業一課00060.jpg
c:\資材課\資材課00001.jpg 〜 資材課00020.jpg
c:\物流課\物流課00001.jpg 〜 物流課00120.jpg

等、ファイル名は[フォルダ名 + 5桁の数字]。5桁の数字は00001から始まって、終わりの数字(ファイル数)はフォルダ毎にバラバラの状態です。

この状態で、↑の例で言うなら営業一課00060.jpgと資材課00020.jpgと物流課00120.jpgを、
c:\最後\ のフォルダに切り取り貼り付けしたいのですが…

マクロ限定では無く、何かのソフトの組み合わせで実現できるというならそれでも構いません。
フォルダ数が10や100なら力任せにファイラーで移動するのですが、現在50000くらいフォルダ数があって、一日200-300くらいの勢いで増えてます…
コメント12件

271
デフォルトの名無しさん[sage]   投稿日:2017/01/22 18:45:46  ID:mco4N0ih.net(2)
ファイル操作や並び替えはPowershellの方が簡単だよ

272
デフォルトの名無しさん[sage]   投稿日:2017/01/22 18:56:47  ID:PXtZmaP4.net(4)
>270
切り取り貼り付けで馬鹿だとよくわかる
ロジック的にも間違いを引き起こすようなロジックしか考えられないし

馬鹿確定
コメント6件

273
デフォルトの名無しさん[sage]   投稿日:2017/01/22 19:13:35  ID:K9IWtO+t.net(4)
初心者と一々断らなくて良いよ、と言おうと思ったら、
>272みたいな上級者気取りが現れるから仕方ないか・・

これを参考にして
http://officetanaka.net/excel/vba/file/file07.htm
コメント2件

274
デフォルトの名無しさん[sage]   投稿日:2017/01/22 19:49:33  ID:YJLP3OgH.net(2)
>272
$work =

275
デフォルトの名無しさん[sage]   投稿日:2017/01/22 20:32:29  ID:b7Xc1TTL.net(2)
>270
vbaでもいいけど
普通にvbscriptみたいなものでも簡単にできるよ
vbs フォルダ 検索
でぐぐったらどうでしょう

276
デフォルトの名無しさん[]   投稿日:2017/01/22 20:54:41  ID:XKc56KzG.net(2)
>272
うるせえぞ馬鹿
真面目に質問してる人になんだそりゃ。

277
デフォルトの名無しさん[sage]   投稿日:2017/01/22 21:01:31  ID:xqqm72Ga.net(2)
>270
各フォルダには画像以外のファイルも入ってるかどうか
拡張子は小文字のjpgだけか、JPGやjpegも混ざってるかどうか

それだけ教えて
コメント4件

278
デフォルトの名無しさん[sage]   投稿日:2017/01/22 21:10:37  ID:PXtZmaP4.net(4)
馬鹿はファイルのコピーや移動の仕方でわかるんだよな。
馬鹿のくせに間違いを絶対にしない前提の方法で話しを進めるのが馬鹿たる所以。
コメント4件

279
デフォルトの名無しさん[sage]   投稿日:2017/01/22 21:26:21  ID:o6OZ0Umu.net(2)
( ´_ゝ`)フーン

280
デフォルトの名無しさん[sage]   投稿日:2017/01/22 21:41:22  ID:uPXBwAbd.net(2)
>277
拡張子がなんにしても全パターン網羅してリプレイスして番号で最大値とって取得やんな?

281
デフォルトの名無しさん[sage]   投稿日:2017/01/22 21:43:59  ID:fxkBMvoQ.net(2)
>278
あ、ごめん
即座に罵倒するようなヤツとは関わらないって決めてるので誰にも迷惑のかからないところで勝手に盛り上がっててください

282
デフォルトの名無しさん[sage]   投稿日:2017/01/22 22:05:16  ID:5pcXYXa+.net(2)
病気なんだよ

283
270[sage]   投稿日:2017/01/22 22:11:46  ID:dK0oU8+I.net(4)
>277
フォルダの中身は小文字の.jpgのみです。

>273
参照のページで、ファイル名一覧が取得できるまでは解るのですが、
それを取得してどうすれば良いのかが解りませぬ。
コメント2件

284
デフォルトの名無しさん[sage]   投稿日:2017/01/22 22:21:58  ID:K9IWtO+t.net(4)
>278
知らないから馬鹿じゃないだろ
>270を「馬鹿のくせに間違いを絶対にしない前提の方法で話しを進める」と決めつけるのが馬鹿

>283
一覧をソートすれば取得できる

というオレもVBA初心者ゆえ、正確に答える自信がないので、概念だけでスマンw

285
デフォルトの名無しさん[sage]   投稿日:2017/01/22 22:30:17  ID:l2Nz+a62.net(2)
>270
>c:\最後\ のフォルダに切り取り貼り付けしたいのですが

移動(元フォルダからは消える)するより
コピーするか ショートカット作成した方が良いんじゃないかと思うのだが
どうよ
後 実際の各フォルダは c:\ の直下なの?

286
デフォルトの名無しさん[sage]   投稿日:2017/01/22 23:05:08  ID:4Incfzmy.net(2)
>270
スレ違いだけどPowerShellで

$folder_from = "C:\"
$folder_to = "C:\最後\"

foreach($child_folder in ls -Path $folder_from | ?{ $_.Name -match '.+課$' })
{
$regex = '^' + $child_folder.Name + '\d+\.jpg$'
$last_item = ls -Path $child_folder | ?{ $_.Name -match $regex }| select -Last 1
mv $last_item.FullName $folder_to
}

287
デフォルトの名無しさん[sage]   投稿日:2017/01/22 23:12:38  ID:qK5fG7bF.net(2)
できた
ちゃんと動くかどうかテストしてないんでバックアップとってな

Sub CopyLastFile()
  TargetFolder = "C:\"  ' 処理するフォルダ
  If Right(TargetFolder, 1) <> "\" Then TargetFolder = TargetFolder & "\"
  Set Dirs = CreateObject("Scripting.FileSystemObject").GetFolder(TargetFolder).SubFolders
  For Each CurrentFolder In Dirs
    If CurrentFolder.Name <> "最後" And CurrentFolder.Name <> "System Volume Information" Then
      MaxName = ""
      FName = Dir(TargetFolder & CurrentFolder.Name & "\*.jpg")
      Do While FName <> ""
        If FName > MaxName Then MaxName = FName
        FName = Dir()
      Loop
      If MaxName <> "" Then  ' ファイルを移動
        Name TargetFolder & CurrentFolder.Name & "\" & MaxName As TargetFolder & "最後" & "\" & MaxName
      End If
    End If
  Next
End Sub
コメント6件

288
デフォルトの名無しさん[sage]   投稿日:2017/01/22 23:43:51  ID:Wwv6/pAu.net(2)
汚ねぇ言語だな
何がなんだかさっぱり

289
270[sage]   投稿日:2017/01/23 00:41:20  ID:U6yzB2m0.net(4)
>268
>287
お手数掛けてしまい申し訳ありませんが、どちらも動きませんでした…
「ファイルが見つかりません」とエラーメッセージが出てしまいます。

290
デフォルトの名無しさん[sage]   投稿日:2017/01/23 00:55:01  ID:ST2LRMx2.net(2)
しょせん馬鹿には無理なんだよ

291
デフォルトの名無しさん[sage]   投稿日:2017/01/23 01:08:05  ID:ayLfxszv.net(2)
フォルダの場所はあくまで例という事なので
適切に弄った上で見つからないのかな

292
デフォルトの名無しさん[]   投稿日:2017/01/23 01:55:52  ID:sOYRMmGw.net(4)
vbaのソースをハイライトしてくれて公開できるサイトってありますか?
コメント2件

293
デフォルトの名無しさん[sage]   投稿日:2017/01/23 04:46:02  ID:WP/2JyPJ.net(6)
>287を試したけど、ちゃんと動いたぜ
http://i.imgur.com/wCOzgx4.png

もちろん最初のフォルダ定義は書き換えたよな?
そこ以外はフォルダ名もファイル名もディスクから読み取ってるんだから、見つからないわけがないんだが
コメント2件

294
デフォルトの名無しさん[sage]   投稿日:2017/01/23 04:51:29  ID:WP/2JyPJ.net(6)
>292
VBAに対応したサイトは見たことないけど、
RangeとかCellsがハイライトされないと困る用途でなければVBを選択してみたら?
コメント2件

295
デフォルトの名無しさん[sage]   投稿日:2017/01/23 04:53:06  ID:WP/2JyPJ.net(6)
あ、あと「最後」フォルダも手動で作っとかないとだめだよ

296
270[Sage]   投稿日:2017/01/23 06:51:27  ID:U6yzB2m0.net(4)
>287
>293
別のサンプルで試したところ、きちんと動作いたしました。
最初に用意したサンプルの部署の名前にシステム外?の漢字が使われていた為に失敗していたようです。
(ひらがなの「が」が、「か+゛」になっていたという。Mac←→Winの文字コードの違いの問題?)

そちらはなんとかなるので、これで問題解決です。
皆様方、ありがとうございました。
コメント2件

297
デフォルトの名無しさん[]   投稿日:2017/01/23 08:12:32  ID:sOYRMmGw.net(4)
>294
なるほど! ありがとうございましたm(__)m

298
デフォルトの名無しさん[sage]   投稿日:2017/01/23 12:58:13  ID:Z+1qxvba.net(2)
>296
utf-8 は、濁点半濁点を分離しない

一方、utf-8-mac は、濁点半濁点を分離して、別の文字とする

299
デフォルトの名無しさん[sage]   投稿日:2017/01/23 15:48:10  ID:r+jEG7u3.net(2)
質問です

HTMLで要素を特定するのが難しい複雑なWEB GUIを自動操作したく、キーボード入力のみ(TAB、ENTER、文字入力の組み合わせ)で原始的に操作すればいいんじゃないかと考えました
このような方法は効果的ですか?
またIE画面の取得やSendKey、busy状態の判定などはurlさえあれば可能なのでしょうか?
コメント4件

300
デフォルトの名無しさん[sage]   投稿日:2017/01/23 16:25:14  ID:dyeHk94Y.net(2)
>299
> HTMLで要素を特定するのが難しい複雑なWEB GUIを自動操作したく、キーボード入力のみ(TAB、ENTER、文字入力の組み合わせ)で原始的に操作すればいいんじゃないかと考えました
> このような方法は効果的ですか?
「効果的」の意味が良くわからないが、確実性に欠けるので実装方法としては下策。
コメント2件

301
デフォルトの名無しさん[sage]   投稿日:2017/01/23 18:23:23  ID:iz5/M2l3.net(2)
>299
何故HTMLで要素を特定するのが難しいのか?
あとそれが難しいのにキーボード操作なら目的の操作を出来るのは何故か?
効果的かどうかどうやって判断するのか?
コメント2件

302
デフォルトの名無しさん[sage]   投稿日:2017/01/24 09:50:42  ID:Q9g90nxH.net(2)
>300
>301
回答ありがとうございます
効果的か、というのは他に楽ないい選択があるか、という意味です
初心者なので要素の取得に時間がかかり、単純なWEBページならなんとか操作できるのでが
ジャバの記述でソースコードがぐちゃぐちゃになっており要素の取得がしんどいです
実際のie操作を記録してコード組んでくれるソフトとか無いんですかね
コメント4件

303
デフォルトの名無しさん[sage]   投稿日:2017/01/24 11:44:50  ID:tZ08PDgQ.net(2)
>302
UWSC

304
デフォルトの名無しさん[sage]   投稿日:2017/01/24 12:51:19  ID:2vJhPAHl.net(2)
>302
ブラウザでF12キーとか押してみたら

305
デフォルトの名無しさん[sage]   投稿日:2017/01/25 01:50:28  ID:mqe1OJqx.net(4)
何かカッコイイ名前つけようぜ。
コスモ関数とか。
Subを廃止にして、Zamとかどうよ。
Ifも古くなってきたから、Izuとか。

306
デフォルトの名無しさん[sage]   投稿日:2017/01/25 04:02:53  ID:IbVYSEZD.net(4)
マクロじゃなくて馬鹿専用とかな

307
デフォルトの名無しさん[sage]   投稿日:2017/01/25 15:39:29  ID:Lt8lAI1l.net(2)
かなりの初心者です。
エクセルに画像挿入する際の質問です。
エクセルに大量の画像を挿入したいのですが、ファイルが重たくなりすぎるためリン
ク挿入を考えています。
ファイルをCDにやいて先方に渡したいので、絶対パスではなく相対パスでの画像挿入
がしたいです。
エクセルファイルと大量の画像データは同じフォルダ内にあります。
Insertで挿入してもaddpictureで挿入してもメディアにフォルダごと移動したとたん
リンク切れになるので困っています。
よろしくお願いします。
コメント8件

308
デフォルトの名無しさん[sage]   投稿日:2017/01/25 17:01:41  ID:IbVYSEZD.net(4)
>307
なぜhtmlにしないの?
コメント2件

309
デフォルトの名無しさん[]   投稿日:2017/01/25 17:35:49  ID:ekWp7cd2.net(2)
数値の変化する1つのセルの最大値を他のせルに記録したいのです。
例えば B5 セルの値が、15 10 23 5
と変化したら、隣のC5のセルに、 23 と表示させたいのです。

エクセルの関数になるのかもしれませんが、ググってもどう調べても分かりません。

皆さま何卒宜しくお願い致します。
コメント12件

310
デフォルトの名無しさん[sage]   投稿日:2017/01/25 17:53:01  ID:vlkVtG3b.net(2)
>309
その要件は >307 のどこにあたるの?
コメント2件

311
デフォルトの名無しさん[sage]   投稿日:2017/01/25 18:08:36  ID:ncsczmSY.net(2)
>307
htmlとして保存とかできなかったっけ
コメント2件

312
デフォルトの名無しさん[sage]   投稿日:2017/01/25 19:35:21  ID:mqe1OJqx.net(4)
>307
リンク切れになる理由はわからんけど、
ファイルを開いた時に、リンク解除→再リンクすればいいんじゃないの?
コメント2件

313
デフォルトの名無しさん[sage]   投稿日:2017/01/25 21:13:17  ID:CnexM6ZX.net(4)
>310
えっ?

314
デフォルトの名無しさん[sage]   投稿日:2017/01/25 21:38:36  ID:eyqKHvfT.net(6)
>309
対象のセルがひとつだったらグローバル変数を使って簡単にできる

Private max__ As Double

Function getMax(ByVal x As Double) As Double
If max__ < x Then max__ = x
getMax = max__
End Function

セルC5に
= getMax(B5)
と入れときゃいい
コメント6件

315
デフォルトの名無しさん[sage]   投稿日:2017/01/25 21:41:05  ID:eyqKHvfT.net(6)
初期値がゼロだから、

Sub resetMax()
 max__ = -1.79769313486231E308
End Sub

とかが必要かもしれない
コメント6件

316
デフォルトの名無しさん[sage]   投稿日:2017/01/25 22:18:36  ID:eU88gsvp.net(2)

板復帰(OK!:Gather .dat file OK:moving DAT 540 -> 537:Get subject.txt OK:Check subject.txt 540 -> 539:Overwrite OK)2.94, 2.24, 1.93
age subject:539 dat:537 rebuild OK!

317
デフォルトの名無しさん[sage]   投稿日:2017/01/25 22:49:29  ID:CnexM6ZX.net(4)
>315
要らないです
コメント2件

318
デフォルトの名無しさん[sage]   投稿日:2017/01/25 22:54:53  ID:eyqKHvfT.net(6)
>317
ほう、なぜ?
コメント2件

319
デフォルトの名無しさん[]   投稿日:2017/01/25 23:05:36  ID:AeM3WiQW.net(2)
ほうなぜ

320
デフォルトの名無しさん[sage]   投稿日:2017/01/26 01:27:18  ID:lerVaKyH.net(2)
ほぜなう、ななほなう、ほぜぜほ、ううう、うう、ななほ、ななほ、うほうほうほほ、ぜうほなーほ

321
デフォルトの名無しさん[sage]   投稿日:2017/01/26 08:19:49  ID:ZDwsAfth.net(16)
>318
一回目の値取り込めは必須だから。
この場合は15は必ず最大値。
コメント2件

322
デフォルトの名無しさん[sage]   投稿日:2017/01/26 08:27:33  ID:GoiJIG7T.net(4)
>321
B5が全部マイナスのケースは?
コメント2件

323
デフォルトの名無しさん[sage]   投稿日:2017/01/26 09:20:45  ID:ZDwsAfth.net(16)
>322
あーその場合があったか!
いやー失敬失敬






な訳ない。
一回目は絶対最大値なんです。
この場合正負は、なんの意味がない。
コメント6件

324
デフォルトの名無しさん[sage]   投稿日:2017/01/26 09:50:34  ID:8Qm9FYvM.net(2)
>323
君が想定してるコードは >314 なの それとも別のコード?
コメント2件

325
デフォルトの名無しさん[sage]   投稿日:2017/01/26 10:02:08  ID:mPWEbfd1.net(20)
>323
>314のグローバル変数はDouble型だから何もしないと初期値は0.0だ。
これが何を意味するかはわかるな?
コメント2件

326
デフォルトの名無しさん[sage]   投稿日:2017/01/26 10:09:43  ID:oMPl1Srs.net(14)
>323
これは恥ずかしい
コメント2件

327
デフォルトの名無しさん[sage]   投稿日:2017/01/26 11:12:41  ID:KR9GJXBK.net(4)
>324
>325
>326
314は考慮してない。
315のように型考慮とか手間。
コメント4件

328
デフォルトの名無しさん[sage]   投稿日:2017/01/26 11:17:55  ID:SSl970Br.net(4)
>327
そもそも会話に参加してなかったってことは理解した
コメント2件

329
デフォルトの名無しさん[sage]   投稿日:2017/01/26 11:28:23  ID:mPWEbfd1.net(20)
>327
型考慮が手間?
じゃあVariantにすればいい。Emptyであれば未初期化状態とわかるからそこで分岐できる。

そもそもなんのデータなんだ?
気温とかで最高気温をとりたいというならずっとマイナス値で推移することもあるし、
株価とかの最高値をみたいというなら正数だけ考えればいいし。
コメント6件

330
デフォルトの名無しさん[sage]   投稿日:2017/01/26 11:52:33  ID:KR9GJXBK.net(4)
>328
正しい
>329
観点そこじゃねーよ
イチイチ型の下限をハードコーディングかよ。

何にも思わないんだw
コメント2件

331
デフォルトの名無しさん[sage]   投稿日:2017/01/26 12:00:40  ID:mPWEbfd1.net(20)
>330
使い捨ての例示だろ?
それで十分さ
コメント2件

332
デフォルトの名無しさん[sage]   投稿日:2017/01/26 12:04:08  ID:mPWEbfd1.net(20)
意図明確なハードコーディングなどなんら問題ないという立場。
型ごとの下限値とか一日の秒数とか、文脈で明かでかつ誰でも知っている値は本番プログラムでもなきゃそのまま例示するさ。

333
デフォルトの名無しさん[sage]   投稿日:2017/01/26 12:07:50  ID:ZDwsAfth.net(16)
>331
そうかもね

ただ>309が不憫でよ。
いきなり>314だろ。
>315で結びが『かもしれない』

まじがんばれ>309
コメント2件

334
デフォルトの名無しさん[sage]   投稿日:2017/01/26 12:17:36  ID:mPWEbfd1.net(20)
>333
じゃあ別な方法を示せばいい

そもそも「正負がなんの意味もない」ってどういうことだ?説明しろ。
コメント2件

335
デフォルトの名無しさん[sage]   投稿日:2017/01/26 12:31:36  ID:SSl970Br.net(4)
この話題については
やりようによってはグローバル変数って不要じゃないかな?
って思う

336
デフォルトの名無しさん[sage]   投稿日:2017/01/26 12:39:56  ID:oMPl1Srs.net(14)
こういうの考えてたんじゃね?知らんけど
でも>315に関して「一回目は絶対最大値なんです。正負はなんの意味もない」ってのは意味不明

Private Sub Worksheet_Change(ByVal Target As Range)
  If Intersect(Target, Range("B5")) Is Nothing Then
    Exit Sub
  Else
    Range("C5") = WorksheetFunction.max(Range("B5", "C5"))
  End If
End Sub
コメント2件

337
デフォルトの名無しさん[sage]   投稿日:2017/01/26 12:47:28  ID:ZDwsAfth.net(16)
>334
提示コードとは切り離す。
片手落ちの提示コードなら
初期値を型下限にしないと負側は
動かないよ。

最大値の定石算法なら正負は意味ないよ。
だって正しく求まるから。
http://d.hatena.ne.jp/geek-it/touch/20120226/p1
コメント4件

338
デフォルトの名無しさん[sage]   投稿日:2017/01/26 12:55:45  ID:ZDwsAfth.net(16)
>336
c5は試行の開始では
どういう状態なんだろうね?

339
デフォルトの名無しさん[sage]   投稿日:2017/01/26 12:57:50  ID:mPWEbfd1.net(20)
>337
n[0]とは何で、どうやって取得するのか教えて
コメント2件

340
デフォルトの名無しさん[sage]   投稿日:2017/01/26 12:58:02  ID:oMPl1Srs.net(14)
>337
とりあえず馬鹿ってことはわかった
グローバルにカウンタつくってIf count = 1 Then ってやっときゃいいじゃんw
コメント2件

341
デフォルトの名無しさん[sage]   投稿日:2017/01/26 13:09:31  ID:ZDwsAfth.net(16)
>339
b5からとるんだよ。

ただ
ほんとに知りたいところそこなの?
これから何を本質的に疑問に思ってる?
コメント2件

342
デフォルトの名無しさん[sage]   投稿日:2017/01/26 13:11:07  ID:ZDwsAfth.net(16)
>340
その手段で
どういった目的を達成できるか
説明お願いします。

343
デフォルトの名無しさん[sage]   投稿日:2017/01/26 13:16:03  ID:mPWEbfd1.net(20)
>341
B5に初めて値が(たとえば3とする)が代入されたとき、C5にはもちろん3と表示されるべきだが、それをどうやってやるの?

344
デフォルトの名無しさん[sage]   投稿日:2017/01/26 13:19:12  ID:oMPl1Srs.net(14)
自分でコード書いて提示してみ?
たぶん根本的に意味をわかってない

345
デフォルトの名無しさん[sage]   投稿日:2017/01/26 13:22:44  ID:mPWEbfd1.net(20)
あっもしかして、初めてB5に値を入れたらそこで「人が」C5に何らかの計算式を入れるとかの運用を考えてる?

346
デフォルトの名無しさん[sage]   投稿日:2017/01/26 13:24:08  ID:oMPl1Srs.net(14)
なわけねーだろw
だから自分でコード書いてみろって
何を勘違いしてるか自分で気づくだろ

347
デフォルトの名無しさん[sage]   投稿日:2017/01/26 13:26:06  ID:oMPl1Srs.net(14)
ああ、ZDwsAfthのレスと勘違いしたわすまん
コメント4件

348
デフォルトの名無しさん[sage]   投稿日:2017/01/26 13:28:19  ID:mPWEbfd1.net(20)
>347
ドンマイ

349
デフォルトの名無しさん[sage]   投稿日:2017/01/26 13:30:55  ID:ZDwsAfth.net(16)
>347
ドンマイ
コメント2件

350
デフォルトの名無しさん[sage]   投稿日:2017/01/26 13:33:47  ID:oMPl1Srs.net(14)
>349
すまんな
コードの提示を頼むわ、飯くってくる

351
デフォルトの名無しさん[sage]   投稿日:2017/01/26 14:19:03  ID:5gl79ALu.net(2)
>309
Worksheet_Changeとかのイベントで
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim peak, x: peak = "C5": x = "B5"
If Not IsNumeric(Range(x)) Then Exit Sub
If Not IsNumeric(Range(peak)) Then Range(peak) = Range(x)
If Range(peak) < Range(x) Then Range(peak) = Range(x)
End Sub
セルが空でも動く

352
デフォルトの名無しさん[sage]   投稿日:2017/01/26 14:25:54  ID:MANz96Le.net(2)
>309
参照設定でMicrosoft Scripting Runtimeを追加して、標準モジュールに以下のコードを記述後、
C5に=showMaxValue(B5)と入力する。

'対象セルの最大値を保存する場所
Dim dic As New Dictionary

Public Function showMaxValue(cell As Range)
  If IsEmpty(cell) Then
    ' 対象セルをクリアしたときにどう振る舞うのかを
    ' 決定する必要があるが、取りあえず何もしない
    Exit Function
  End If
  
  If dic.Exists(cell.Address) Then
    If cell.Value > dic(cell.Address) Then
      dic(cell.Address) = cell.Value
    End If
  Else
    dic.Add cell.Address, cell.Value
  End If

  showMaxValue = dic(cell.Address)
End Function
コメント6件

353
デフォルトの名無しさん[sage]   投稿日:2017/01/26 14:57:52  ID:mPWEbfd1.net(20)
>352
なるほど

354
デフォルトの名無しさん[sage]   投稿日:2017/01/26 16:21:12  ID:U3KmvQxt.net(2)
>308
>311
>312
ご回答どうもありがとうございます。htmlでとは全く思いつかなかったので目から鱗でした。ただ、改ページプレビューでの印刷範囲などがhtmlだとうまくできないです。
また、絶対参照になってしまうのはexcel2013以降の仕様のようなことが書いてあるサイトを見つけました。
http://www.h3.dion.ne.jp/~sakatsu/Excel_Tips21.htm#S9
結局ファイルを分けて実ファイルを挿入する方法にします。
どうもありがとうございました。

355
デフォルトの名無しさん[]   投稿日:2017/01/26 18:30:34  ID:Cqc92u/s.net(2)
セガのテトリスをエクセルで作ってみた
https://www.youtube.com/watch?v=CTotYTOpR9E

356
デフォルトの名無しさん[sage]   投稿日:2017/01/26 19:37:07  ID:3eEczd4r.net(2)
excelの神経衰弱 https://youtu.be/TAzqqZgVEa4

357
デフォルトの名無しさん[sage]   投稿日:2017/01/26 19:56:43  ID:GoiJIG7T.net(4)
>352
それって複数のセルを扱えるようにしてるだけで初期値については >329 の Variant と本質的には一緒だよね
コメント2件

358
デフォルトの名無しさん[]   投稿日:2017/01/26 20:03:13  ID:3C+35NwQ.net(2)
showMaxValueてwwwww
なにをどうshowしてんだよw関数名で嘘つくとかサイテーだなw

359
デフォルトの名無しさん[sage]   投稿日:2017/01/26 20:10:27  ID:q3eaEqve.net(2)
>357
>329のまま複数のセルで関数を使うと想定外の結果になるんだから>352のは優れている
コメント2件

360
デフォルトの名無しさん[sage]   投稿日:2017/01/26 20:50:17  ID:5GTFMqAx.net(4)
実際に機能するプログラムはすぐに人に見せるべきだね

361
デフォルトの名無しさん[sage]   投稿日:2017/01/26 20:55:56  ID:uLxLwJKu.net(2)
>359
> 初期値については
って書いてますやん...
コメント2件

362
デフォルトの名無しさん[sage]   投稿日:2017/01/26 20:58:31  ID:5GTFMqAx.net(4)
>361
なるほど。
すマンこ

363
デフォルトの名無しさん[]   投稿日:2017/01/27 05:00:53  ID:wqjWN3QH.net(2)
初めまして。
セル(1,1)から始まって横に 3、12、−1、6、−2など数字が続き、
マイナスだけ抽出して合計したい場合はどうすればいいでしょうか。
↓では当たり前ですがうまくいきません…

Sub test()
x = 1
Do Until x > 5
If Cells(1, x) < 0 Then
Cells(1, 6) = Cells(1, x)

End If
x = x + 1
Loop
End Sub
コメント4件

364
デフォルトの名無しさん[sage]   投稿日:2017/01/27 05:25:43  ID:MGewCQt5.net(2)
>363
マイナスだけ合計
Sub test()
x = Application.WorksheetFunction.SumIf(Rows(1), "<0", Rows(1))
Debug.Print x
End Sub

365
デフォルトの名無しさん[sage]   投稿日:2017/01/27 05:30:31  ID:0Brpc+WL.net(2)
>363
Sub test()
  Cells(1, 6) = 0
  x = 1
  Do While x <= 5
    If Cells(1, x) < 0 Then
      Cells(1, 6) = Cells(1, 6) + Cells(1, x)
    End If
    x = x + 1
  Loop
End Sub

366
デフォルトの名無しさん[sage]   投稿日:2017/01/27 09:12:54  ID:xuyo3rho.net(2)
入門サイトなどに同じ事例が見当たらなかったのでお願い致します。

セルに"/"(スラッシュ半角)か"×"(バツ)を入力したら、
そのセルに右上がりの斜線を自動で引かれるようにしたいのですが、
コードを教えてください。

スラッシュを消したら斜線も消えるようにもしたいです。
対象はSheet1の全セルです。

よろしくおねがいします。
コメント10件

367
デフォルトの名無しさん[sage]   投稿日:2017/01/27 09:21:50  ID:E/4Vr26G.net(2)
sumif(r1,”<0”)

368
デフォルトの名無しさん[sage]   投稿日:2017/01/27 09:57:52  ID:Ne4o/N/h.net(2)
>366
そんなのより対象セルを選択した状態で {ctrl + なんとか} の方が便利だしコードも簡単になると思うけどな

369
デフォルトの名無しさん[sage]   投稿日:2017/01/27 12:55:33  ID:2/l+3kL4.net(2)

370
デフォルトの名無しさん[sage]   投稿日:2017/01/27 14:20:38  ID:pYLJsuuu.net(2)
>366
worksheetのchangeイベントかなんかでセルの値がかわったら罫線引くようにするしかないんじゃね
罫線の引き方はマクロの記録で調べなさいよ

371
デフォルトの名無しさん[sage]   投稿日:2017/01/27 19:39:13  ID:2UbAAj3q.net(4)
>366
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value = "/" Then
With Target
.Borders.Weight = xlThin
.Borders(xlDiagonalUp).LineStyle = xlContinuous
End With
End If
End Sub

消すのは逆をすればいいんでない?

372
デフォルトの名無しさん[sage]   投稿日:2017/01/27 20:32:43  ID:WmIjEyaD.net(2)
>366
条件付き書式でいいだろ
って思ったら条件付き書式って斜め罫線ダメなんだな
他の罫線はいいのにちょっと不思議

なので Sheet1 のシートモジュールにこれを書けばいい

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cell As Range
For Each Cell In Target
Cell.Borders(xlDiagonalUp).LineStyle = IIf(Cell.Value = "/" Or Cell.Value ="×" , xlContinuous, xlNone)
Next
End Sub

373
デフォルトの名無しさん[]   投稿日:2017/01/27 22:47:33  ID:Fb1FgEo2.net(2)
>366がやりたいのは本当にそれだけなんだろうか
コメント2件

374
デフォルトの名無しさん[sage]   投稿日:2017/01/27 22:49:12  ID:2UbAAj3q.net(4)
>373
コード書きながらそう思ったよw

375
デフォルトの名無しさん[]   投稿日:2017/01/28 12:01:46  ID:w/mx7yyO.net(8)
セルの値が一定の書式に合致しているかをVBAで調べるにはどうしますか?
下記は調べたい書式のほんの一例です。実際に調べたい書式はもっとありますし将来的にもどんどん出てきます。

・文字列に、数字+"/"の数字を含む (例)予定は2/3
・文字列が、"平成"ではじまる (例)平成元年
・文字列に、2文字以上の空白を含む (例)I have a pen.
などなど

つまり正規表現のようなものをVBAのコードで使うときの定番ってなんでしょうか?
コメント2件

376
デフォルトの名無しさん[]   投稿日:2017/01/28 12:03:39  ID:w/mx7yyO.net(8)
instr関数やleft, mid, right, len関数のようなものを駆使するのが正当かもしれませんが
もっと短く一般的にできる方法はないかと思って。

377
デフォルトの名無しさん[sage]   投稿日:2017/01/28 12:07:32  ID:BY939/WJ.net(2)
>375
簡単なものなら Like演算子
本格的にやりたいなら正規表現オブジェクトを使う

正規表現オブジェクトは
"Microsoft VBScript Regular Expressions"を参照設定するか
Set RegExp = CreateObject("VBScript.RegExp")
コメント2件

378
デフォルトの名無しさん[]   投稿日:2017/01/28 12:21:25  ID:w/mx7yyO.net(8)
>377
なるほどLikeがござったか。ありがとう。
コメント2件

379
デフォルトの名無しさん[sage]   投稿日:2017/01/28 12:25:02  ID:ktdFkm2m.net(2)
>378
侍かな

380
デフォルトの名無しさん[]   投稿日:2017/01/28 12:27:02  ID:w/mx7yyO.net(8)
このLikeの機能はWordの検索のワイルドカードと完全に互換性があるでござるか?

381
デフォルトの名無しさん[]   投稿日:2017/01/28 12:42:49  ID:9EkLNFiw.net(2)

382
デフォルトの名無しさん[sage]   投稿日:2017/01/28 21:50:14  ID:d5Th95j2.net(8)
今月VBAスタンダードに合格したんだけど、本格的な業務利用までの間には深い溝を感じる。

転職を考えているので、職場では自分だけが使うものしかマクロ化出来ない。

今のレベルの自分にオススメの書籍を教えて下さい。書店でじっくり探す時間が無いので。
今持ってるのは公式テキスト、「例題30問と演習70問でしっかり学ぶexcelVBA標準テキスト」です。

目標はぼんやりしているけど、こういうの作れない?と聞かれたら涼しい顔して作れるようになりたい。

383
デフォルトの名無しさん[sage]   投稿日:2017/01/28 22:22:23  ID:F0MmKngE.net(2)
言語の勉強なんてもういいからファウラーやガンマの本を読みなよ
ファウラーのリファクタリングあたりが脱初心者にオススメ
Javaで書かれてるけどVBAでも考え方は同じ
コメント2件

384
デフォルトの名無しさん[sage]   投稿日:2017/01/28 22:43:36  ID:XFsAlNLB.net(2)
業務で使えるようにするには、その業種の実務知識がないと難しいよ
順番が逆なんだよ(システム屋は別だけど)
特に下っ端レベルだと、業務覚える→自動化考える→実装に必要な知識覚える。
これを繰り返すしかない
コメント2件

385
デフォルトの名無しさん[]   投稿日:2017/01/28 22:44:58  ID:d5Th95j2.net(8)
>383
ありがとうございます。
どちらも初めて聞いたのでググりました。
ファウラーのリファクタリング、本当に脱初心者って感じですね。何か重厚そうで少しビビります。
コードの良し悪しも、あまりにもひどいもの以外はよくわからないレベルなので
読んでみようと思います。

386
デフォルトの名無しさん[sage]   投稿日:2017/01/28 22:56:38  ID:HZ4XiulJ.net(2)
データベースは知ってんの?(知ってるのレベルもまぁいろいろあるけど)
VBAで接続してそこからデータを持ってくるとかあるいはexcelのデータをテーブルに入れるとかさ。

知ってるんだったら良し、知らないんだったらフリーのRDBいっくらでもあるんだからそれ入れてADO勉強したら?
コメント2件

387
デフォルトの名無しさん[]   投稿日:2017/01/28 23:06:20  ID:d5Th95j2.net(8)
>384
業務覚える→自動化考える→知識覚える
これが一番なんですが、今の職場で人に影響が及ばない範囲で出来ることはやりきってしまったというか、大して出来ることが無いので。

経理の知識とVBAの知識両方で勝負したいとは思っているのですが
日商簿記2級とVBAスタンダード、どちらも中途半端過ぎて
今勉強するならどの方向かなと迷っているところです。
これ以上はスレ違いですが。

388
デフォルトの名無しさん[]   投稿日:2017/01/28 23:16:20  ID:d5Th95j2.net(8)
>386
よく知りません。
自分の今の状態、マクロの記録に毛が生えたくらいでこの数レスでもわからない単語が続出です。
ADO、フリーで使えるものが多いのは魅力です。ググってきます。

389
デフォルトの名無しさん[sage]   投稿日:2017/01/28 23:33:58  ID:uAPjBDjx.net(2)
馬鹿は死ねよ

390
デフォルトの名無しさん[sage]   投稿日:2017/01/29 00:15:01  ID:xYYwoQBZ.net(4)
業務って何の業務か知らんけど、
扱うデータが多いと、SQLの知識も必要になる。
(処理速度的な理由で)

391
デフォルトの名無しさん[sage]   投稿日:2017/01/29 00:31:34  ID:WKRhYkpm.net(2)
SQLってつなぐまでが壁で
あとはselectだけだろ?

392
デフォルトの名無しさん[sage]   投稿日:2017/01/29 00:34:44  ID:+blbXYZx.net(2)
業務の自動化ある程度問題なくこなせてるならあとはコードの品質だろうね
その手の洪は楽しいよね
一冊くらいしか読んだこと無いけど

393
デフォルトの名無しさん[sage]   投稿日:2017/01/29 00:34:52  ID:xgaFxxwc.net(10)
馬鹿は繋ぐまでに壁なんてあるんだな

394
デフォルトの名無しさん[]   投稿日:2017/01/29 01:19:55  ID:8UrWbtOI.net(4)
最近のエクセル業界のトレンドはSQLなんか?

395
デフォルトの名無しさん[sage]   投稿日:2017/01/29 14:59:17  ID:cSvePZMz.net(8)
エクセルでSQLは制約があるし、SQLの有無で差が出るような処理は本格的なデータベースソフト使いたいね。
コメント4件

396
デフォルトの名無しさん[sage]   投稿日:2017/01/29 15:22:05  ID:M0HgmB1M.net(10)
プログラミング入門ならVBAで満足していてもいいけど
普通は生産性の高い他の言語にシフトするよね

397
デフォルトの名無しさん[sage]   投稿日:2017/01/29 15:28:40  ID:Gj2SxjJF.net(2)
お前の普通ではそうなんだろうな

398
デフォルトの名無しさん[sage]   投稿日:2017/01/29 15:53:56  ID:M0HgmB1M.net(10)
俺の普通っていうかみんなそうだぞ
VBAに執着する連中って視野が狭いから周り見えてないんだろうけど

399
デフォルトの名無しさん[sage]   投稿日:2017/01/29 16:40:53  ID:WrrdSNFA.net(2)
根拠もなしに「みんな」って言われてもな

400
デフォルトの名無しさん[]   投稿日:2017/01/29 16:57:33  ID:cyG8RQu0.net(4)
ウチの会社で「SQL」なんて言葉を発しようものならボロクソに言われる。
「みんながみんなお前のようなマニアじゃねえんだよ」ってなもんで。去年、元SEでオラクル使いが
入社してきたがすぐに状況を察して「オレ、パソコン全然わかんない」とかトボケてやがるしw
コメント4件

401
デフォルトの名無しさん[sage]   投稿日:2017/01/29 16:59:25  ID:xgaFxxwc.net(10)
>395
え?制約ってどんな?
馬鹿ばっかな上にこういう知ったかが出て来るクソスレは面白いな。
コメント4件

402
デフォルトの名無しさん[sage]   投稿日:2017/01/29 17:19:22  ID:Urob8xZw.net(4)
>401
型を指定できないとかじゃね?
関数も全部使えるのか知らないし
自作関数を使えたりするのかも知らない

403
デフォルトの名無しさん[sage]   投稿日:2017/01/29 18:01:06  ID:cSvePZMz.net(8)
>401
INSERTが不確実だとか読み込める行数に制限があるとか、
空白行が捕まえられないとかDELETE文が使えないとか、割とあるんだけど知らない?

実際にやってみればすぐ分かる事なんだけど、
ほとんどSELECT文しか使えないから手間に対して益が少ないんだよね。
コメント6件

404
デフォルトの名無しさん[sage]   投稿日:2017/01/29 18:09:45  ID:JZZjSwEk.net(2)
>403
そうだよね。
俺も SELECT 以外はダメだと思ってやめた。
単一オフィス内の事務だったらSQL Server Express で十分だし移行も簡単だと思う。

405
デフォルトの名無しさん[sage]   投稿日:2017/01/29 18:14:00  ID:zuNgR2z5.net(4)
え?
delete文も他も普通に使えるけど。

406
デフォルトの名無しさん[sage]   投稿日:2017/01/29 18:15:13  ID:zuNgR2z5.net(4)
ごめん、データベースがエクセルの場合は知らないや。

407
デフォルトの名無しさん[sage]   投稿日:2017/01/29 18:39:53  ID:M0HgmB1M.net(10)
>400
ジャップにはよくある文化だね
頑張って追いつくより足引っ張って横並びになろうとする
コメント2件

408
デフォルトの名無しさん[sage]   投稿日:2017/01/29 18:50:33  ID:Nv+lqz67.net(2)
>403
馬鹿はこれだから。
全部できるだろうが。
お前の馬鹿頭ではできないだけ。
コメント2件

409
デフォルトの名無しさん[sage]   投稿日:2017/01/29 19:21:57  ID:xNqGWhsy.net(6)
>403
シートに対してのsqlなら
そうだけど。
言及対象あいまいすぎる。

410
デフォルトの名無しさん[sage]   投稿日:2017/01/29 19:32:30  ID:6wGEJq5M.net(4)
>408
引っ込みつかなくなる前にやめとけ
コメント2件

411
デフォルトの名無しさん[sage]   投稿日:2017/01/29 19:33:42  ID:3OHjeGHP.net(12)
もともとは>395が始まりだからシートデータに対するSQLに制約がある話をしているのよ

412
デフォルトの名無しさん[sage]   投稿日:2017/01/29 19:36:11  ID:xYYwoQBZ.net(4)
確かに制限あるけど、そこはExcelだからどうにかなる。

413
デフォルトの名無しさん[]   投稿日:2017/01/29 19:55:32  ID:8UrWbtOI.net(4)
エクセルのSQLをエクセルでSQLと言ったら誤解されるのも無理はない
というか、わざとやってるくさい
コメント2件

414
デフォルトの名無しさん[]   投稿日:2017/01/29 20:12:03  ID:cyG8RQu0.net(4)
>407
ウンコ臭いぞトンスラー、俺にすんじゃねえ

415
デフォルトの名無しさん[sage]   投稿日:2017/01/29 20:19:04  ID:cSvePZMz.net(8)
>413
外部のSQLを使えるソフトに繋ぐことが前提だったら、エクセルに依ったSQLの制限があると考える方がおかしいし、
そもそもADOがエクセルに対応しているのであってエクセルがSQLに対応してるわけじゃないんだから「エクセルのSQL」って言い回しにはならない。
コメント2件

416
デフォルトの名無しさん[sage]   投稿日:2017/01/29 20:36:29  ID:xgaFxxwc.net(10)
>410
ADOも知らない馬鹿頭は黙ってろ
コメント2件

417
デフォルトの名無しさん[sage]   投稿日:2017/01/29 20:37:42  ID:M0HgmB1M.net(10)
VBAオンリーユーザーってやっぱレベル低いね

418
デフォルトの名無しさん[sage]   投稿日:2017/01/29 20:39:15  ID:xgaFxxwc.net(10)
>415
ADOがExcelに対応してる?
馬鹿は死ねよ。
ADO使わずとも呼び出す方法もあるし、わからん奴が知ったかしてるんじゃねーよ。
お前の頭だからできないだけのことを製品のせいにすんな。
コメント2件

419
デフォルトの名無しさん[sage]   投稿日:2017/01/29 20:46:40  ID:3OHjeGHP.net(12)
どうでもいいけど
 Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}
等した時に制約が多いって話だよな?
コメント2件

420
デフォルトの名無しさん[sage]   投稿日:2017/01/29 20:55:06  ID:cSvePZMz.net(8)
あ、そうか。ODBCが対応してるって言わないと正確じゃないわな。
無自覚に「エクセルからDBソフトに繋ぐ時はADOを使う」って前提に立ってたわ。

421
デフォルトの名無しさん[sage]   投稿日:2017/01/29 21:02:39  ID:Urob8xZw.net(4)
RDBMSを別に立てなくてもエクセルだけでSQLを実行できる
この環境だと色々制約があるんじゃね?

RDBMSを別に立てたらSQLの結果を受け取るだけだし

422
デフォルトの名無しさん[sage]   投稿日:2017/01/29 21:03:02  ID:6wGEJq5M.net(4)
>416
めんどくせーなー
削除するコード書いてからほざけ
コメント2件

423
デフォルトの名無しさん[sage]   投稿日:2017/01/29 21:12:07  ID:xSN3m+WX.net(2)
>418
あ、ごめん
罵倒することでしかやりとりできないようなヤツとは関わらないって決めてるので誰にも迷惑のかからないところで勝手に盛り上がっててください

424
デフォルトの名無しさん[sage]   投稿日:2017/01/29 21:14:54  ID:xNqGWhsy.net(6)
>419
どうでも良いのに
答え求めてわらた
コメント2件

425
デフォルトの名無しさん[sage]   投稿日:2017/01/29 21:18:43  ID:3OHjeGHP.net(12)
>424
オッ

426
デフォルトの名無しさん[sage]   投稿日:2017/01/29 21:23:53  ID:xgaFxxwc.net(10)
馬鹿頭ばっかだな。ADO使ったdeleteすらできんのか。
コメント2件

427
デフォルトの名無しさん[sage]   投稿日:2017/01/29 21:42:14  ID:M0HgmB1M.net(10)
エクセル使うとどうしてもバカになるから仕方ないね

428
デフォルトの名無しさん[sage]   投稿日:2017/01/29 21:49:05  ID:3OHjeGHP.net(12)
>400
それで会社として生き残っていけるんならさぞ余裕があるんだろう

...それとも沈みゆく泥舟なのか?
コメント2件

429
デフォルトの名無しさん[sage]   投稿日:2017/01/29 21:58:25  ID:9pGSsNTY.net(2)
情報部門が存在しない小さい会社で、ちょっと詳しい程度の社員がデータ整理を片手間でやってるというか押しつけられてるだけだろ
零細企業の大半はそんなもん
しかも日本に限らん
コメント2件

430
デフォルトの名無しさん[sage]   投稿日:2017/01/29 22:09:31  ID:3OHjeGHP.net(12)
>429
そこに力を入れてもビジネスチャンスには結びつかん、という判断なのかな

それならOfficeレベルより上は不要かも

431
デフォルトの名無しさん[sage]   投稿日:2017/01/29 22:40:41  ID:h9OztPwg.net(2)
喋りん坊だけのスレで職人技がないね
コメント2件

432
デフォルトの名無しさん[sage]   投稿日:2017/01/29 22:43:44  ID:3OHjeGHP.net(12)
>431職人技はプロに求めろよw

433
デフォルトの名無しさん[sage]   投稿日:2017/01/29 22:58:56  ID:e2GiLXmE.net(4)
webBrowserコントロール追加したんだけどバージョンがIE7でした
ググって調べたらVBとかC#の情報だったけど、レジストリにWebBrowserControl.exeの名前で値追加する方法があったのでやってみたけど、
バージョン変わりませんでした。
VBAでは方法が違うんでしょうか?

434
デフォルトの名無しさん[sage]   投稿日:2017/01/29 23:05:16  ID:e2GiLXmE.net(4)
ただの勘違いで解決しました
ありがとうございました
コメント2件

435
デフォルトの名無しさん[sage]   投稿日:2017/01/29 23:12:11  ID:xNqGWhsy.net(6)
>434
礼を言われるほどのことじゃないよ!

436
デフォルトの名無しさん[sage]   投稿日:2017/01/30 00:49:56  ID:Evqo1D2G.net(2)
大企業で情報部門も存在していても、すべて任せるわけにもいかないからな。

437
デフォルトの名無しさん[sage]   投稿日:2017/01/30 05:04:33  ID:6lLneJEZ.net(2)

438
デフォルトの名無しさん[sage]   投稿日:2017/01/30 09:50:19  ID:DMFEN635.net(2)
アクセスアップとお小遣い稼ぎの裏技
トラフィックエクスチェンジ
http://tra-chan.jugem.jp/?eid=1

439
デフォルトの名無しさん[sage]   投稿日:2017/01/30 16:25:14  ID:F1tgy4u/.net(4)
like演算子使うとき“[”と“]”ってどうしてる?

440
デフォルトの名無しさん[sage]   投稿日:2017/01/30 18:29:00  ID:mknZdUVz.net(2)
[ ]で囲んでる
コメント2件

441
デフォルトの名無しさん[sage]   投稿日:2017/01/30 19:40:12  ID:EbqBYLP7.net(2)
囲わなきゃいけないのは [ だけで、 ] の方はどうでも良いんじゃなかったっけ?

442
デフォルトの名無しさん[]   投稿日:2017/01/30 20:12:58  ID:dKn8bdIS.net(2)
>428
まあ、一般企業じゃないから(なんちゃら組合ってやつ)潰れる事はないだろうが、今時経理も帳簿と電卓、ボールペンだし
財務会計ソフトを導入したもののソフトに入力しながら電卓で検算してるしw
「コンピューターは信用できない」とか総務のお局様が言ってるからどうにもならん。
オレは自分の業務に使うものは自分でマクロ書いて定時で帰れるようにしてるが、他の連中は「画像3000枚に一つずつ!連番を振って
徹夜した」とか差し込み印刷を教えても「そんなズボラなやり方はダメだ」と言ってテンプレートに入力→印刷→テンプレートを初期化を200件朝までやってたとか
それが50代とかじゃなく30代のバリバリ中堅どころなんだから笑うしかねえわ
コメント4件

443
デフォルトの名無しさん[sage]   投稿日:2017/01/30 20:16:47  ID:4xfdjQgw.net(2)
無職をこじらせるとこうなるのか。

444
デフォルトの名無しさん[sage]   投稿日:2017/01/30 21:03:40  ID:F1tgy4u/.net(4)
>440
なるほど
でもそれだと“[”を含む、しかできなくない?
まあ詳しく調べるならInStr使えばいいんだけどさw

445
デフォルトの名無しさん[sage]   投稿日:2017/01/30 21:14:54  ID:QDHU/4vl.net(2)
>442
私も定時で帰る手段としてのプログラミング同感
今時、できの悪い奴らの根性語り、、恥ずくないのか!w

446
デフォルトの名無しさん[sage]   投稿日:2017/01/30 21:19:02  ID:EeAzQJfr.net(2)
>442みたいな会社がまだこの日本にあるんだw
コメント2件

447
デフォルトの名無しさん[sage]   投稿日:2017/01/30 21:39:41  ID:dJWPhbF6.net(2)
>446
全体的な学力の低下の影響で応用の利かないバカはむしろ増えてる

448
デフォルトの名無しさん[sage]   投稿日:2017/01/30 21:42:30  ID:UfG8r5Q5.net(2)
言われたことを言われたままにやるやつが増えてるとは感じる
学歴高くても頭使わないやつが多すぎる

449
デフォルトの名無しさん[sage]   投稿日:2017/01/30 22:05:07  ID:gqMuGKk3.net(2)
学歴と学力

450
デフォルトの名無しさん[sage]   投稿日:2017/01/30 22:34:24  ID:DRq3TNDG.net(2)
年寄りくさい奴らだ

451
デフォルトの名無しさん[sage]   投稿日:2017/01/30 23:59:13  ID:pve8veDd.net(2)
能力あっても出世できるかわからん社会だからなぁ
能力ひけらかすより足並み揃えて今の仕事をやりすぎずサボりすぎずぐらいに維持する方が全体の利益になるんだよ
コメント2件

452
デフォルトの名無しさん[sage]   投稿日:2017/01/31 00:10:36  ID:W4oCxLcQ.net(2)
起業すればええ

453
デフォルトの名無しさん[sage]   投稿日:2017/01/31 04:45:25  ID:7lVbi0HF.net(2)
>451
全体の利益になるの全体ってどの範囲
自分?自チーム?自部門?自社?自事業界?
海外も含めて考慮すると?

454
デフォルトの名無しさん[sage]   投稿日:2017/01/31 14:09:13  ID:W2MQjnqi.net(2)
どうやっていても期日には間に合っているなら自部門くらいまでじゃないかな
その先はどっちでも不利益になるわけでなし

455
デフォルトの名無しさん[sage]   投稿日:2017/02/01 21:42:36  ID:UlFFF3K3.net(2)
久しぶりにこのスレ覗いたら
馬鹿馬鹿言ってる無教養者が踊っててワロタw

いやー、多分EXCELのシートやCSVファイルにSQL投げたことないんだろうね。

456
デフォルトの名無しさん[]   投稿日:2017/02/01 21:51:20  ID:PbjZqAWj.net(2)
SQL投げるって言いたい盛りですので

457
デフォルトの名無しさん[sage]   投稿日:2017/02/01 22:06:49  ID:TAfVniq5.net(2)
馬鹿は用語を正確に使えないからね

458
デフォルトの名無しさん[sage]   投稿日:2017/02/01 23:10:08  ID:YqrNMNH4.net(2)
ていうかわざと曖昧に言ってるだろ?

459
デフォルトの名無しさん[sage]   投稿日:2017/02/02 00:50:04  ID:26wow3Y8.net(8)
deleteができない無能君が煽って教えて貰おうとしてるんだろ

460
デフォルトの名無しさん[sage]   投稿日:2017/02/02 06:35:42  ID:oZoqJ5pi.net(4)
煽りじゃなく、SQLだけでエクセルシート上からDELETEする方法があるなら知りたい。
今のところ主要な数値を無効な値へUPDATEするくらいしか有効な手段がないんだよね。
コメント2件

461
デフォルトの名無しさん[sage]   投稿日:2017/02/02 07:39:32  ID:eC+H4ibC.net(2)
アクセス使えよ
コメント4件

462
デフォルトの名無しさん[sage]   投稿日:2017/02/02 08:08:18  ID:mHe9v9aT.net(2)
>461
この人バカじゃん
コメント2件

463
デフォルトの名無しさん[sage]   投稿日:2017/02/02 08:40:21  ID:6HuXGQiF.net(2)
ここExcel VBAスレだからなぁ

464
デフォルトの名無しさん[sage]   投稿日:2017/02/02 10:49:25  ID:/oce7NjA.net(6)
>460
どういう方法でやってダメだった?
自分は素のODBCでやってダメだったけどADOは知らず。

465
デフォルトの名無しさん[sage]   投稿日:2017/02/02 18:21:07  ID:qO0hDPsp.net(2)
delete できると言ってる奴はコード出せないから察してやってくれ

466
デフォルトの名無しさん[sage]   投稿日:2017/02/02 18:21:37  ID:ZUZ0NvC+.net(2)
せめてExcelからDB叩いて結果だけシートに貼ろうよ
シートに数万行って重いだけだし恐らく使い方間違ってるよ
コメント2件

467
デフォルトの名無しさん[sage]   投稿日:2017/02/02 18:31:42  ID:aDxFABtY.net(4)
>466
色々と制約があるんじゃね
コメント2件

468
デフォルトの名無しさん[sage]   投稿日:2017/02/02 18:39:17  ID:OxqW0VIp.net(2)
行削除は無理みたいね。
https://support.microsoft.com/ja-jp/help/316934/how-to-use-ado.net-to-retri...
> 削除操作を実行しようとすると、次のエラー メッセージが表示されます。
> ---
> この ISAM では、リンク テーブル内のデータを削除することはサポートされていません。
> ---
> この制限は、Excel ブックをデータベースとして扱う場合に固有です。
コメント2件

469
デフォルトの名無しさん[sage]   投稿日:2017/02/02 18:47:16  ID:26wow3Y8.net(8)
>467
制約なんかねーよ
コメント2件

470
デフォルトの名無しさん[sage]   投稿日:2017/02/02 18:51:25  ID:aDxFABtY.net(4)
>469
なんで他の職場環境の事を断言できるんだw
コメント2件

471
デフォルトの名無しさん[sage]   投稿日:2017/02/02 19:03:14  ID:26wow3Y8.net(8)
>470
ああ、ソフト的ではなく環境的にということね
コメント2件

472
デフォルトの名無しさん[sage]   投稿日:2017/02/02 19:37:44  ID:NSv6UvRa.net(2)
>471
わざわざエクセルをDBに使うなんてそういうことやろ
コメント2件

473
デフォルトの名無しさん[sage]   投稿日:2017/02/02 19:45:16  ID:26wow3Y8.net(8)
>472
daoを使えばできるのに使えない人じゃないか?

474
デフォルトの名無しさん[sage]   投稿日:2017/02/02 19:50:07  ID:/oce7NjA.net(6)
出来ると言ってるやつは
「いますぐマスターすべきExcelシートにDELETE文を発行する10の方法」
という記事をQIITAに書け。

475
デフォルトの名無しさん[sage]   投稿日:2017/02/02 20:02:10  ID:oZoqJ5pi.net(4)
「エクセルブックをデータベースとして利用する方法は知っているけど、
Accessその他のDBソフトに繋いで利用する方法は知らない」

ってどんな確率だよ。
コメント2件

476
デフォルトの名無しさん[sage]   投稿日:2017/02/02 20:07:41  ID:/oce7NjA.net(6)
>475
そうだなあ、、、

・エクセルしかない環境
とか、
・データ入力者は別にいて、そいつがエクセルしか使わない
とか?

477
デフォルトの名無しさん[sage]   投稿日:2017/02/02 20:15:04  ID:bpSSgRJM.net(2)
ADOもDAOもミドル層の話だからな
>468によれば、Microsoft.Jet.OLEDB.4.0では削除できないみたいだけど
出来るって言ってるやつも出来ないって言ってるやつも、ドライバ(プロパイダ)明示しろや

478
デフォルトの名無しさん[]   投稿日:2017/02/02 21:51:23  ID:TcNEtgX9.net(2)
君たちは本当にSQLを愛しているんだな

479
デフォルトの名無しさん[sage]   投稿日:2017/02/02 23:04:57  ID:JuktWcDi.net(2)
>462
完全にエクセルでDBの方がバカなんだけど
もしかしてExcel VBAでAccess使っちゃダメみたいなローカルルールがあんの?
コメント6件

480
デフォルトの名無しさん[sage]   投稿日:2017/02/02 23:41:12  ID:yoXwSHRo.net(2)
エクセルにクエリ投げてデータ取ってくるの便利といえば便利なんだけど
a1セルからデータ始まってない場合とかどうすんだ?
表形式ですらない場合のほうが多いし
コメント4件

481
デフォルトの名無しさん[sage]   投稿日:2017/02/03 04:47:43  ID:OWBaaXVb.net(2)
>479
DELETEさえ使えればエクセル単体でDB処理が完結するから便利なんだよ。
これ一つ使えないせいで仕方なく外部のDB使ってる場合が多いと思う。
発想が逆というか、話の前提条件というか。

まぁ、そもそも出来ない事を出来ると主張した奴が悪いんだけどね。

482
デフォルトの名無しさん[sage]   投稿日:2017/02/03 07:06:56  ID:XP7JqKvc.net(2)
>479
excelだけでやることに意味があることもおおいだろ
少しは頭使え

483
デフォルトの名無しさん[sage]   投稿日:2017/02/03 07:18:59  ID:2s9sq5BM.net(2)
SQL Server Express でいいじゃん。タダだし楽ちんだ。

484
デフォルトの名無しさん[sage]   投稿日:2017/02/03 08:15:27  ID:Ibd8YbHy.net(2)
>479
普通の会社なら Excel が入っていない PC は滅多にないけど Access が入ってないことはよくある
コメント2件

485
デフォルトの名無しさん[sage]   投稿日:2017/02/03 08:17:25  ID:6hF18qg4.net(2)
>461
>480
できるようにしろよ
お前は雛かw

486
デフォルトの名無しさん[sage]   投稿日:2017/02/03 08:18:24  ID:jCN45Z8M.net(2)
>484
だよね
うちも情シス課だけだ

487
デフォルトの名無しさん[sage]   投稿日:2017/02/03 10:15:04  ID:jamIg+V1.net(2)
Microsoft Access 2013 Runtime

488
デフォルトの名無しさん[sage]   投稿日:2017/02/03 22:34:23  ID:zw5JONDs.net(2)
>480
実は問題ない。
SELECT * FROMで全部拾うと、
勝手に列名書き足してくれるから。

こんな感じの、すげぇダッセェwwwシートになるけど。

F1 F2 F3 F4 F5 F6 F7 F8 F9 F10
                   2017/2/3
      ○○○一覧

No 商品名 単価 数量 合計 備考
1  ▲▲   100   2  200 □□
2  ◎◎   500   1  500 ▽▽
3  ××   320   2  640 ◆◆

後でRows("1:4").Deleteしてもいいし、
そもそも項目をF1 AS [No]とかにして、
WHEREで余計なところを消してもいい。

489
デフォルトの名無しさん[sage]   投稿日:2017/02/04 00:03:57  ID:L9lbN/6P.net(6)
1つプロパティをLet Getするだけで、6行も使っちゃうんだけど、
何とかならんだろうか。
10個あったら60行っすよ。
コメント8件

490
デフォルトの名無しさん[sage]   投稿日:2017/02/04 00:23:48  ID:IKUGnnqZ.net(2)
ユーザーフォームのトグルボタンをいくつか作成
IFで指定した列が表示が表示されてるならValueをTrue(押されてる状態)にするという処理を書いています
その後の処理のためにイベントプロージャーで、トグルボタンをクリックすると列の表示、非表示を指定できるようにしていますが、最初のIF文でもイベントプロージャーを実行してしまいます
何か回避策ありませんか?
コメント2件

491
デフォルトの名無しさん[sage]   投稿日:2017/02/04 01:50:33  ID:DTJgp/8V.net(4)
>489
Let Get合わせて最低2行だろjk
コメント2件

492
デフォルトの名無しさん[sage]   投稿日:2017/02/04 01:52:48  ID:keYK1J0l.net(2)
イベントの再入を防ぎたいんだよな
なんちゃらEnableみたいなのがあったけど思いだせん
自分でぐぐってくれ

493
デフォルトの名無しさん[sage]   投稿日:2017/02/04 03:27:18  ID:DTJgp/8V.net(4)
>490
イベントを禁止できないけど こうゆうのどう?

If ToggleButton1.Value = False Then
  ToggleButton1.Tag = 1
  ToggleButton1.Value = True
End If


Private Sub ToggleButton1_Click()
If ToggleButton1.Tag <> "" Then
  ToggleButton1.Tag = ""
  Exit Sub
End If

'処理

End Sub
コメント2件

494
デフォルトの名無しさん[sage]   投稿日:2017/02/04 05:14:57  ID:XGGN10p2.net(2)
質問です。
OracleDBのテーブルにあるCLOBフィールドに格納
されたExcelファイルにアクセスしてReadOnlyで開くか
ダウンロードするかしたいと考えています。
テーブル仕様書を見ると、CLOBにXMLTypeで格納され
ているとあります。
DBMS_LOB.SubStr()でVARCHAR2に変換して
先頭数文字取得しようとするのですがエラーでこけます。
GGって良い事例がないか捜しているのですがうまく見つけ
られません。VBAで可能でしょうか?
ODBC(Excel Driver)またはOraDynasetは利用できる
環境にあります。
コメント2件

495
デフォルトの名無しさん[sage]   投稿日:2017/02/04 11:23:15  ID:R/BCzGYY.net(8)
>489
アクセサ云々より先に継承だからなあ

496
デフォルトの名無しさん[sage]   投稿日:2017/02/04 11:37:21  ID:O5nNdZ1M.net(8)
>489
たくさんあったら使う側も面倒なんだからひとつのメソッドで同時に設定すればいいんじゃない?
相互依存のない独立したプロパティが10個あるクラスだとしたら設計がまずいか、相当なレアケースのどちらか。
コメント2件

497
デフォルトの名無しさん[sage]   投稿日:2017/02/04 12:40:09  ID:pgmrL8Re.net(2)
>489
改行しないで二行でかけ
コメント2件

498
デフォルトの名無しさん[sage]   投稿日:2017/02/04 13:20:38  ID:R/BCzGYY.net(8)
コロンで繋げば一行で書けるな、確かに
コメント2件

499
デフォルトの名無しさん[]   投稿日:2017/02/04 15:59:29  ID:4MwsZCTu.net(2)
質問します
一つ目の画像を縦横の短い長さでクロップしたいのですが
どこがまちがっているのでしょうか

Sub 画像をクロップして正方形にしたい()
Dim myPic As Shape
Set myPic = ActiveSheet.Shapes(1)
With myPic
TateYokoSa = Abs(.Height - .Width)
If .Height > .Width Then
.PictureFormat.CropBottom = .PictureFormat.CropBottom + TateYokoSa
Else
.PictureFormat.CropRight = .PictureFormat.CropRight + TateYokoSa
End If
End With
End Sub
コメント2件

500
デフォルトの名無しさん[sage]   投稿日:2017/02/04 17:00:11  ID:OKds5wOX.net(2)
>494
文字コードじゃなくて?

501
デフォルトの名無しさん[sage]   投稿日:2017/02/04 19:06:45  ID:L9lbN/6P.net(6)
>491
>497
>498
Property Let
 内容
End Property
Property Get
 内容
End Property

ググっても、こういう書き方しか見つからない・・・。

>496
クラス.名前
クラス.部署
クラス.年齢
クラス.性別
   ・
   ・
的な使い方をしたいんだけど、変?
コメント8件

502
デフォルトの名無しさん[sage]   投稿日:2017/02/04 19:11:21  ID:hnMbbMl2.net(2)
>501
Property Let : {...} : End Property

って書き方でしょ。
どっちにしろ単純なメンバー変数の読み書きをいちいちメソッド化してもなぁ。
コメント2件

503
デフォルトの名無しさん[sage]   投稿日:2017/02/04 19:35:42  ID:ypmLJyxS.net(2)
>501
C#使いなよ

504
デフォルトの名無しさん[sage]   投稿日:2017/02/04 19:55:29  ID:nIvSnu1n.net(2)
>501
letもgetもあるなら、クラスの中にpublic変数作った方が良い。
隠蔽的にはなんの役にも立たないけど。

505
デフォルトの名無しさん[sage]   投稿日:2017/02/04 20:04:50  ID:R/BCzGYY.net(8)
>501
変数の初期値設定とかでもよくやるけど
Dim c as class1:set c=new class1
とかね
コメント2件

506
デフォルトの名無しさん[sage]   投稿日:2017/02/04 20:17:51  ID:L9lbN/6P.net(6)
>502
目から鱗。
コロンは知ってたけど、まさか最初と最後にも使えるとは思わなかった。
ありがとう。

507
デフォルトの名無しさん[sage]   投稿日:2017/02/04 20:42:11  ID:pJMir97a.net(4)
>505
> Dim c as class1:set c=new class1
そのパターンは
Dim c As New class1
でよくね?
コメント4件

508
デフォルトの名無しさん[sage]   投稿日:2017/02/04 20:55:01  ID:O5nNdZ1M.net(8)
>507
いいと思うけどなぜか嫌う人もいる

509
デフォルトの名無しさん[sage]   投稿日:2017/02/04 20:57:38  ID:TSeQ29q+.net(2)
宣言と代入を分けたいタイプ
コメント2件

510
デフォルトの名無しさん[sage]   投稿日:2017/02/04 21:02:39  ID:O5nNdZ1M.net(8)

511
デフォルトの名無しさん[sage]   投稿日:2017/02/04 21:17:54  ID:O5nNdZ1M.net(8)
>509
宣言と同時に初期化(≠代入)したい、ってことでしょ

512
デフォルトの名無しさん[sage]   投稿日:2017/02/04 21:49:00  ID:pJMir97a.net(4)
>510
ほえー、これは知らんかったわ
なんでこんな凝ったことするかねぇ...

513
デフォルトの名無しさん[sage]   投稿日:2017/02/04 22:12:26  ID:R/BCzGYY.net(8)
>507
もう出てるけどコンストラクタが働かない

514
デフォルトの名無しさん[sage]   投稿日:2017/02/05 10:29:00  ID:7v2W1cWr.net(2)
>499
多分この仕様のせいかと
https://msdn.microsoft.com/ja-jp/library/office/ff838027.aspx
>トリミングは、元の図の大きさを基に計算されます。
>たとえば、元の図が高さ 100 ポイントの場合に、それを 200 ポイントに変更して、
>CropBottom プロパティに 50 を設定すると、
>図の下端からトリミングされるのは 50 ポイントではなく 100 ポイントとなります。

だから↓のような処理にすればよくね?
現在のサイズを保存 → オリジナルサイズに戻す → Crop → Cropしてない方のサイズに戻す
コメント2件

515
デフォルトの名無しさん[]   投稿日:2017/02/05 18:56:44  ID:qj78kXRn.net(2)
>514
ありがとうございます 一発で解決しました
変な仕様だとおもったけど拡大縮小を考えたら
こっちのほうが誤差がでなくて使いまわしがいいのかも

516
デフォルトの名無しさん[sage]   投稿日:2017/02/06 12:18:45  ID:Xnyr5yqp.net(2)
>493
ありがとうございます!
無事想定通りに動きました!

517
デフォルトの名無しさん[]   投稿日:2017/02/06 15:58:56  ID:6lEgfPNZ.net(2)
これできるとどんないいことあるん?

518
デフォルトの名無しさん[sage]   投稿日:2017/02/07 21:15:01  ID:0h02j8pV.net(4)
エクセルでお聞きしたいのですが
簡易CTIをエクセルで作りたいと思ってます
パソコンに繋いでいるfomaの着信を拾って相手の発信番号を取得するにはどうすれば良いでしょうか?

com3ポートに認識されていたのでterateamで接続しATコマンドでの発着信はできました

vbaでの操作ではCOMポートにATコマンドを入力して発信はできました

なんとか自力でココまで調べましたが、肝心の着信を拾う方法が一向に分かりません•••

何方か教えて頂けませんでしょうか
コメント2件

519
デフォルトの名無しさん[sage]   投稿日:2017/02/07 21:26:24  ID:obnTOw8Y.net(2)
PCで起こったイベントをVBAで受けとるの無理じゃね?
できるなら俺も教えてほしい
煽りとかじゃなくて

520
デフォルトの名無しさん[sage]   投稿日:2017/02/07 21:33:09  ID:71skcbUj.net(2)
仕様をオープンにしてる機器じゃないとデータ取れなかった記憶があるが
232Cアナライザーでどんな通信してるかバイパスして見るとかいう手もある
http://www.fullfree.jp/i/cti/%E6%90%BA%E5%B8%AF%E9%9B%BB%E8%A9%B1/
対象機器なら ↑ こういう手もあるかも
コメント2件

521
デフォルトの名無しさん[sage]   投稿日:2017/02/07 21:45:01  ID:K6SNK3fF.net(2)
また馬鹿が来た

522
デフォルトの名無しさん[sage]   投稿日:2017/02/07 22:41:07  ID:4GsqGq1T.net(8)
ファイルが関数で重いため、入力用のシートと関数用のシートに分けてます。計算したいときだけシートを計算するようにしてます。
しかし起動時に勝手に計算してしまうことがあります。(計算されないこともある)原因がわかる方がいたら教えてくださいm(__)m
マクロ勉強中なので変なこと描いてるかもしれませんが、お手柔らかにお願いします。


Private Sub Workbook_Open()
Worksheets(計算シート1).EnableCalculation = False
Worksheets(計算シート2).EnableCalculation = False
End Sub

Sub 再計算()
Worksheets(計算シート1).EnableCalculation = True
Worksheets(計算シート2).EnableCalculation = True
Calculate
Worksheets(計算シート1).EnableCalculation = False
Worksheets(計算シート2).EnableCalculation = False
End Sub
コメント4件

523
デフォルトの名無しさん[sage]   投稿日:2017/02/07 22:42:44  ID:4GsqGq1T.net(8)
>522
EXCEL2007 windows7です。

524
デフォルトの名無しさん[sage]   投稿日:2017/02/07 22:47:36  ID:vzZ8DTGh.net(2)
>522


数式再計算を止める
Application.Calculation = xlCalculationManual
Application.Calculation = xlCalculationAutomatic

「.Calculation」と「.EnableCalculation」のどちらが効果的か
http://stabucky.com/wp/archives/6840


.EnableCalculationってのは初めて知ったw
コメント2件

525
デフォルトの名無しさん[sage]   投稿日:2017/02/07 22:49:15  ID:0h02j8pV.net(4)
>520
fullfreeは試しに使って見ました
通知も上手く動くので大変良いのですが、本格的に使うには有料版を買わなきゃいけないのです•••
VB.netで似たようなものなら作れるのかな

526
デフォルトの名無しさん[sage]   投稿日:2017/02/07 22:56:00  ID:kg1BFKbj.net(2)
msの文章まんまだけれど

ファイル名 ドキュメントの種類 計算方法
------------------------------------------------------
Auto1.xls Workbook 自動
Manual1.xls Workbook 手動
Auto2.xls Workbook 自動

Excel の計算方法は、次の各条件を適用して決定されます。

最初に開かれるドキュメントでは、そのドキュメントで最後に保存された計算方法が使用されます。以降に開かれるドキュメントでは、同じ計算方法が使用されます。

たとえば、Auto1.xls を開いてから Manual1.xls を開く場合は、両方のドキュメントで自動の計算方法 (Auto1.xls で使用されていた計算方法) が使用されます。Manual1.xls を開いてから Auto1.xls を開く場合は、両方のドキュメントで手動の計算方法が使用されます。

事前に何かのブックを開いている…ってのはないのかな
コメント2件

527
デフォルトの名無しさん[sage]   投稿日:2017/02/07 22:57:33  ID:4GsqGq1T.net(8)
>524
回答ありがとうございます。
前はそっちでやってたんですけど、結果は同じでした。
それにexcel自体を全て手動計算にしている状態で別のexcelファイルを開くと、後から開いたEXCELファイルも手動になってしまうので、それは辞めました。
アクティブ状態のとき手動計算。非アクティブのとき自動計算にするっていう感じでごまかしていたんてすけど、それでも他のファイルがアクティブのときは重くなってしまうのでエクセル全体の手動計算化は諦めたんです。

528
デフォルトの名無しさん[sage]   投稿日:2017/02/07 23:13:44  ID:4GsqGq1T.net(8)
>526
それもあり得ると思ってそのファイル以外は開かないようにしていろいろ試しているんですけど、たまに起動時に自動計算してしまいます。

上記の再計算マクロを実行したときに、次回起動時に再計算されることが多い気がします。

あと変わったことといえば、保存時にバックアップファイルを作成すると、読み取り専用で開くを推奨するにチェックを入れてます。

529
デフォルトの名無しさん[sage]   投稿日:2017/02/07 23:22:48  ID:diTiDCUQ.net(2)
>518
どう繋いでるのか知らんけど
AT+CMR=3,0,0,1,0
で非請求リザルトコードを送出するようにして
AT+CLIP=1
で相手先の番号通知をするようにしておけば電話がかかってきたらリザルトコードと電話番号が送られてくるはず
https://www.nttdocomo.co.jp/binary/pdf/corporate/technology/document/foma...

530
デフォルトの名無しさん[sage]   投稿日:2017/02/08 00:37:33  ID:ZVPHpwbP.net(4)
どう考えても、セルよりソルかゾルの方がカッコいいよな。
Zolls(4,2).Value= "あ"
みたいな。

何でかというと、サム(SUM)も、ザム(ZAM)にしたほうがカッコイイからです。
なので、LEN→ZEN、LEFT→LEVT、IF→IVEに直ることを望みます。
コメント2件

531
デフォルトの名無しさん[sage]   投稿日:2017/02/08 00:44:56  ID:JHaqns+X.net(2)
どう考えても意味が通じなくなるよな

何でかというと、SUM(和)も、動きと意味を同じにしているからです。

532
デフォルトの名無しさん[sage]   投稿日:2017/02/08 01:23:44  ID:gxc/oAA1.net(2)
サムって書くとアメリカ人の名前みてーだなや

533
デフォルトの名無しさん[sage]   投稿日:2017/02/08 12:32:13  ID:YRaicT0y.net(4)
>530
前向きに善処します

534
デフォルトの名無しさん[sage]   投稿日:2017/02/08 15:05:50  ID:jpNr2q1t.net(4)
サムプロダクトって毎回?????
だからやめて欲しい
何度説明読んでも覚えられない
コメント4件

535
デフォルトの名無しさん[sage]   投稿日:2017/02/08 16:01:16  ID:GSna8Pfo.net(2)
>534
SUMPRODUCT っていう名前の事? 機能の事? どっちを言ってる?

機能の事なら覚えるしかないけど
名前の事なら
VBEのインテリジェンス や 数式オートコンプリートで候補表示されるがな
コメント4件

536
デフォルトの名無しさん[sage]   投稿日:2017/02/08 17:02:26  ID:jpNr2q1t.net(4)
サムプロダクトって名前からどういう機能だったかって連想ができない
コメント2件

537
デフォルトの名無しさん[sage]   投稿日:2017/02/08 17:26:17  ID:G5M1Oque.net(4)
積の和ってそのままじゃないかな?

538
デフォルトの名無しさん[sage]   投稿日:2017/02/08 20:23:45  ID:PsLw780Z.net(4)
>535
インテリセンスな
コメント2件

539
デフォルトの名無しさん[]   投稿日:2017/02/08 20:28:50  ID:xdFvHyj9.net(2)
>538
そういう英単語はないのですが。
コメント2件

540
デフォルトの名無しさん[]   投稿日:2017/02/08 20:31:43  ID:ahyxJIg+.net(2)
なかったら作ればいいじゃない
インゲマルセンス

541
デフォルトの名無しさん[sage]   投稿日:2017/02/08 20:35:58  ID:YRaicT0y.net(4)
>536
そんなに馬鹿をご披露しなくても。
見ててしんどすぎるw

542
デフォルトの名無しさん[sage]   投稿日:2017/02/08 20:36:09  ID:KwXJn1Y4.net(2)

543
デフォルトの名無しさん[sage]   投稿日:2017/02/08 21:17:52  ID:J3ugy/jR.net(4)
>535
そうだな。INNERPRODUCTって名前にすべきではあるな。

544
デフォルトの名無しさん[sage]   投稿日:2017/02/08 21:18:25  ID:J3ugy/jR.net(4)
間違えた
>534

545
デフォルトの名無しさん[sage]   投稿日:2017/02/08 22:10:27  ID:ycePkqqk.net(2)
関数も漢字表示にすれば良いんだよ
LEN→文字数
LEFT→左
SUM→和
SUMPRODUCT→積の和

546
デフォルトの名無しさん[sage]   投稿日:2017/02/08 22:42:52  ID:2zqqayOY.net(4)
秘密 関数 殺(参照 相手) 的 真偽値

547
デフォルトの名無しさん[sage]   投稿日:2017/02/08 22:47:04  ID:DZJYY/gu.net(4)
B列のセルの値の取り得るデータは
・空白
・日付    例:2017/01/0
・A701-01  英字&3桁数字&ハイフン&2桁数字

B列の複数行をピンポントで選択して、マクロを実行
・空白、日付の場合は、なにもしない
・A701-01 → A701-01+1 「+1」の部分を追加
「+1」部分についてはマクロボタンを区別して「+0」〜「+5」をそれぞれ選べるようにする

作ってみたのが↓

 Sub Plus1()
 '
 ' セルの文字列に”+1”を追加する
 '
 Dim cell As Range
 For Each cell In Selection
  cell.Formula = Left(cell, 7) & "+1"
 Next

これだと、選択したセルの値に強制的に「+1」を付加することができるけど
まずB列以外を誤って選択した場合、実行をキャンセルする
空白もしくは日付データのセルを誤って選択した場合スキップする
という条件が未設定なわけですが

初心者のため、やり方が解りません
何卒ご教授お願いします
コメント2件

548
デフォルトの名無しさん[sage]   投稿日:2017/02/08 22:55:24  ID:PsLw780Z.net(4)
>547
Sub test1()
  If Selection.Columns.Count = 1 And Selection.Column = 2 Then
    For Each cell In Selection
      If Len(cell.Text) = 7 Then
        cell.Value = cell.Text & "+1"
      End If
    Next
  End If
End Sub

549
デフォルトの名無しさん[sage]   投稿日:2017/02/08 23:32:27  ID:DZJYY/gu.net(4)
ヒントを頂き有り難うございました

日付チェックは難しそうなのでパスしました

列チェック、ブランクチェックはOK
コメント4件

550
デフォルトの名無しさん[sage]   投稿日:2017/02/08 23:43:38  ID:G5M1Oque.net(4)
>549
データ左端の文字が英文字の場合のみ処理すればよい

551
デフォルトの名無しさん[sage]   投稿日:2017/02/08 23:56:03  ID:ZVPHpwbP.net(4)
For 〜 Next の中に、
クラスモジュールでプロパティゲトォした値を入れると、遅くなりますか?
(1ループ毎にゲトォしやがりますか?)
普通の変数の方がいい?
コメント4件

552
デフォルトの名無しさん[sage]   投稿日:2017/02/08 23:57:41  ID:2zqqayOY.net(4)
>549
A1に 2017/2/8 (日付)
A2に '2017/2/8 (日付に似た文字列)
を入れた場合、

TypeName([A1].Value) は Date
TypeName([A2].Value) は String

VarType([A1].Value) は  7
VarType([A2].Value) は 8

IsDate([A1].Value) は True
IsDate([A2].Value) は True

目的に応じて。

553
デフォルトの名無しさん[sage]   投稿日:2017/02/09 08:11:20  ID:qBnVMklj.net(2)
>551
それぐらい自分で試せるでしょ

554
デフォルトの名無しさん[sage]   投稿日:2017/02/09 09:20:05  ID:kHCI6X3g.net(2)
>551
速いは遅いは
そりゃ偉い騒ぎよ

555
デフォルトの名無しさん[sage]   投稿日:2017/02/09 12:46:25  ID:vKLMa/HO.net(6)
タイトル行ともう一行を別シートに書き出していくマクロを作りたいのですが、タイトル行が書き出せなくて困ってます
ご教授願えませんでしょうか...

Sub Macro2()
Dim orgWs As Worksheet
Dim idx As Long
  Set orgWs = ActiveSheet
  Application.ScreenUpdating = False
  For idx = 1 To Range("A65536").End(xlUp).Row
    Worksheets.Add after:=Sheets(Worksheets.Count)
    orgWs.Rows(idx).Copy
    Range("A1").PasteSpecial Paste:=xlPasteAll, Transpose:=True
'    ActiveSheet.Name = orgWs.Cells(idx, "A").Value
  Next idx
  orgWs.Activate
  Application.CutCopyMode = False
  Application.ScreenUpdating = True
End Sub
コメント2件

556
デフォルトの名無しさん[sage]   投稿日:2017/02/09 12:48:49  ID:hH4J/ks8.net(2)
×ご教授
○ご教示

557
デフォルトの名無しさん[sage]   投稿日:2017/02/09 12:54:24  ID:f2wLu3Eu.net(2)
ご教授願いたいも日本語として間違いとまでは言えないがあまり使われない表現だしご教示願いたいを間違ってるんだなと丸わかり

558
デフォルトの名無しさん[sage]   投稿日:2017/02/09 12:54:36  ID:vKLMa/HO.net(6)
ご教示お願いいたします...!

559
デフォルトの名無しさん[sage]   投稿日:2017/02/09 13:03:15  ID:0S6dEfQx.net(4)
>555
本来のやりたい事がようわからんが ありがちな事として
Row(行) と Column(列)を 勘違いしてるとか

ActiveSheetの内容と欲しい結果を具体例で上げてみて

560
デフォルトの名無しさん[sage]   投稿日:2017/02/09 13:25:47  ID:WkR93Ch5.net(2)
>タイトル行ともう一行
なら2回コピペ

561
デフォルトの名無しさん[sage]   投稿日:2017/02/09 13:43:10  ID:vKLMa/HO.net(6)
一行一お客さんのリスト(一行目がタイトル行で二行目以降にお客さんの情報が載ったリスト)から、別シートにお客さん毎に情報を書き出したくて行数分だけシートを作りたい形です。出力先はタイトル列とお客さん列の2列だけにしたいのです

一件2回コピペで終わるんですが、数があるのと、元のリストを整備しておけば簡単に作り直せるようにしたいので。
コメント8件

562
デフォルトの名無しさん[sage]   投稿日:2017/02/09 14:01:19  ID:0S6dEfQx.net(4)
>561
これだと どうかな? (2回コピペでもいいけどUnionで一回でいいようにしてる)

Sub Macro2b()
Dim orgWs As Worksheet
Dim idx As Long
  Set orgWs = ActiveSheet
  Application.ScreenUpdating = False
  For idx = 2 To Cells(Rows.Count, "A").End(xlUp).Row
    Worksheets.Add after:=Sheets(Worksheets.Count)
    Union(orgWs.Rows(1), orgWs.Rows(idx)).Copy
    Range("A1").PasteSpecial Paste:=xlPasteAll, Transpose:=True
    ActiveSheet.Name = orgWs.Cells(idx, "A").Value
  Next idx
  orgWs.Activate
  Application.CutCopyMode = False
  Application.ScreenUpdating = True
End Sub

563
デフォルトの名無しさん[]   投稿日:2017/02/09 14:01:32  ID:e5heueGc.net(2)
>561
Sub Macro2()
Dim orgWs As Worksheet
Dim idx As Long
Set orgWs = ActiveSheet
Application.ScreenUpdating = False
For idx = 2 To Range("A65536").End(xlUp).Row
Worksheets.Add after:=Sheets(Worksheets.Count)
orgWs.Rows(1).Copy
Range("A1").PasteSpecial Paste:=xlPasteAll, Transpose:=True
orgWs.Rows(idx).Copy
Range("B1").PasteSpecial Paste:=xlPasteAll, Transpose:=True
'    ActiveSheet.Name = orgWs.Cells(idx, "A").Value
Next idx
orgWs.Activate
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

こんなんでいいの?

564
デフォルトの名無しさん[sage]   投稿日:2017/02/10 06:41:47  ID:C/dUqapt.net(6)
>561
書式必要じゃないなら
Dim v as variant
v = range(範囲)
貼り付け先 = v
ってした方が早いんじゃないかな
書式必要だとしても、形式が決まってるならあとから直接指定した方がコピペするより早いと思う
クリップボード経由する分コピペだと遅いはず

565
デフォルトの名無しさん[sage]   投稿日:2017/02/10 07:18:27  ID:C/dUqapt.net(6)
こんな感じね
細かいこと言うとActivesheetを変数に入れてるのに最大行求めるときに指定してなかったりとか個人的には気になる
あと、コピペするにしても行まるごとコピーするよりちゃんと範囲指定してあげたほうが速いんじゃね、試してないけど
後、増やした後のシートもちゃんと指定してあげないと
「アクティブになってる前提」でコード書くと怖いよ

Sub test()
Dim orgWs As Worksheet, dstWs As Worksheet
Dim idx As Long, maxRow As Long, maxCol As Long
Dim postValue As Variant
Set orgWs = ActiveSheet
maxRow = orgWs.Cells(Rows.Count, 1).End(xlUp).Row
maxCol = orgWs.Cells(1, Columns.Count).End(xlToLeft).Column
Application.ScreenUpdating = False
For idx = 1 To maxRow
postValue = orgWs.Range(orgWs.Cells(idx, 1), orgWs.Cells(idx, maxCol))
Set dstWs = Worksheets.Add(after:=Sheets(Worksheets.Count))
dstWs.Range(dstWs.Cells(1, 1), dstWs.Cells(maxCol, 1)) = WorksheetFunction.Transpose(postValue)
Next idx
orgWs.Activate
Application.ScreenUpdating = True
End Sub

566
デフォルトの名無しさん[sage]   投稿日:2017/02/10 07:23:40  ID:C/dUqapt.net(6)
あ、タイトル列やり忘れた
まあ、同じ要領で

567
560[sage]   投稿日:2017/02/10 08:45:56  ID:ykEk/iF/.net(2)
>561
もちろん手作業じゃないよ
元のコードは1回(1行)しかしてないでしょ

568
デフォルトの名無しさん[sage]   投稿日:2017/02/10 18:30:23  ID:n+qIsj3Q.net(2)
皆様ご教示ありがとうございました!
VBAの勉強がんばります・・・
コメント2件

569
デフォルトの名無しさん[sage]   投稿日:2017/02/10 18:45:27  ID:iQHACvfg.net(2)
>568
ちゃんと速度は計れよ

570
デフォルトの名無しさん[sage]   投稿日:2017/02/10 20:51:56  ID:FEKvr519.net(10)
2つエクセルブックがあって、仮にそれぞれを「BookA」「BookB」というブック名にする。
BookBに「仮シート」という名前のシートがあり、
そこにAのsheet1のA1〜B2のデータをコピーして、
仮シートのC1にコピーするにはどういうコードを書けば良いでしょうか?

Workbook("BookA").Activate
Worksheet("Sheet1").Activate
Range("A1:B2").copy(Workbooks("BookB").Range(C1))

これでは動かなかったです。
基本的なことですが、教えてくれると助かります。
コメント2件

571
デフォルトの名無しさん[sage]   投稿日:2017/02/10 20:57:35  ID:FEKvr519.net(10)
訂正

Workbook("BookA").Activate
Worksheet("Sheet1").Activate
Range("A1:B2").copy(Workbooks("BookB").Worksheets("仮シート").Range(C1))

これでは動かなかったです・・。

572
デフォルトの名無しさん[sage]   投稿日:2017/02/10 20:57:57  ID:uU6WR+pH.net(2)
>570
Windows("BookA.xlsx").Activate
Sheets("Sheet1").Select
Range("A1:B2").Select
Selection.Copy
Windows("BookB.xlsx").Activate
Sheets("仮シート").Select
Range("C1").Select
ActiveSheet.Paste
コメント4件

573
デフォルトの名無しさん[sage]   投稿日:2017/02/10 20:59:28  ID:FEKvr519.net(10)
>572
おぉ、こんな早いレスありがとうございます!
さっそく試してみます!

574
デフォルトの名無しさん[sage]   投稿日:2017/02/10 21:08:21  ID:FEKvr519.net(10)
>572
一行目のxlsxって入れると、インデックスが有効でありませんって出ます。
このxlsxを抜くと動くんですけど、これは抜いてもいいんですか?
コメント2件

575
デフォルトの名無しさん[sage]   投稿日:2017/02/10 21:30:28  ID:FEKvr519.net(10)
追記:最初にブックをアクティブにする時にです。
xlsxがなければアクティブになるのですが・。
コメント2件

576
デフォルトの名無しさん[sage]   投稿日:2017/02/10 21:59:49  ID:0WSFnPb1.net(2)
マクロの記録使え

577
デフォルトの名無しさん[sage]   投稿日:2017/02/10 22:33:27  ID:O1yyuw9v.net(6)
>575
ファイルが存在してない(bookAを保存してない)
xlsで保存してる
そもそも開いてない

どれか

578
デフォルトの名無しさん[]   投稿日:2017/02/10 22:43:44  ID:Tmi1uInj.net(6)
使ったら負けだと思ってる
コメント2件

579
デフォルトの名無しさん[sage]   投稿日:2017/02/10 22:52:11  ID:O1yyuw9v.net(6)
>578
今はおとなしく負けてろ
次に勝てばいい
コメント2件

580
デフォルトの名無しさん[]   投稿日:2017/02/10 22:55:49  ID:Tmi1uInj.net(6)
>579
ふ、いつでも次があると思うなよ
コメント2件

581
デフォルトの名無しさん[sage]   投稿日:2017/02/10 22:59:43  ID:O1yyuw9v.net(6)
>580
いつまでも、な

俺は常に次を作り出せるので気にしない
いつまでも誰かから機会をもらえると思うなよ
コメント2件

582
デフォルトの名無しさん[]   投稿日:2017/02/10 23:06:57  ID:Tmi1uInj.net(6)
>581
だから無いって言ってるだろ
ややこしい奴だなお前w

583
デフォルトの名無しさん[sage]   投稿日:2017/02/10 23:12:17  ID:XPfR8Ri8.net(4)
>574
駄目です❗

584
デフォルトの名無しさん[sage]   投稿日:2017/02/10 23:22:18  ID:eMOKhTfC.net(4)
Excelが本気を出すと、
どの辺までいけますか?
バーチャファイター2は作れる?
コメント6件

585
デフォルトの名無しさん[sage]   投稿日:2017/02/10 23:32:35  ID:X8zCTp9W.net(2)
>584
絵が描ける

586
デフォルトの名無しさん[sage]   投稿日:2017/02/10 23:40:27  ID:eMOKhTfC.net(4)
それはPowersPointでも出来ると思うんですよ。

587
デフォルトの名無しさん[sage]   投稿日:2017/02/10 23:41:38  ID:XPfR8Ri8.net(4)
>584
4まで行ける

588
デフォルトの名無しさん[sage]   投稿日:2017/02/10 23:45:26  ID:Y+gj7rLy.net(2)
計算できる

589
デフォルトの名無しさん[sage]   投稿日:2017/02/10 23:56:37  ID:6UihQBZT.net(2)
ExcelでDirectX使えばそこそこのバーチャファイターぶりにはなりそう

590
デフォルトの名無しさん[sage]   投稿日:2017/02/11 01:21:11  ID:DxY/TAwg.net(2)
WindowsAPIを使ったBad Appleは動画?

591
デフォルトの名無しさん[]   投稿日:2017/02/11 02:17:03  ID:WAY5pSrp.net(2)
「29歳既婚、2年前に会社を辞めた。ボードゲーム作りを始めて3700万円を
売り上げたけど何か聞きたいことはある?」回答いろいろ
http://labaq.com/archives/51880196.html
自作ゲーム即売会「ゲームマーケット」に1万人超
http://www.nikkansports.com/general/nikkan/news/1750500.html
ボードゲームの展示イベント「ゲームマーケット」の成長記録からこれからの
市場に必要なことを妄想してみた。6年間の来場者数推移(2016年4月時点調べ)
https://bodoge.hoobby.net/columns/00001
カードゲームを自作する1 【自宅でカード印刷】
http://tanishi.org/?p=801
100円ショップでボードゲームを自作しよう
https://sites.google.com/site/jun1sboardgames/blog/makeyourbg
ノーアイデアでボードゲームを作ろう第1回「100円ショップで物を買う」
http://boardgamelove.com/archives/boardgame-make-1/
ボードゲーム市場がクラウドファンディングの出現で急成長を遂げ市場規模を拡大中
http://gigazine.net/news/20150820-board-game-crowdfunding/
実際のところ、自作ボードゲームってどれぐらい売れるもんなの?
http://roy.hatenablog.com/entry/2016/12/20/220102
ゲームマーケット2016春にて初参加サークルさんに作成数アンケートをとってきました
http://hidarigray.blog35.fc2.com/blog-entry-614.html
カフェも急増 ボードゲームにアラサーがハマる理由
http://style.nikkei.com/article/DGXMZO10921930R21C16A2000000?channel=...
ボードゲームのオリジナルオーダー制作
http://www.logygames.com/logy/ordermade.html

592
デフォルトの名無しさん[sage]   投稿日:2017/02/11 08:56:45  ID:81NKiA7R.net(2)
>584
週刊誌に載ってるような程度の詰将棋が解ける

593
デフォルトの名無しさん[sage]   投稿日:2017/02/11 13:44:07  ID:WeBIHJYm.net(2)
>570
>572
ActivateとSelectを使うのはやめた方がいいんじゃね?
copyで実装する必要もあるんかい?

Windows("BookA").Worksheets("Sheet1").Range("A1:B2").Copy Windows("BookB").Worksheets("仮シート").Range("C1")

とか

Windows("BookB").Worksheets("仮シート").Range("C1:D2").Value=
Windows("BookA").Worksheets("Sheet1").Range("A1:B2").Value

xlsxについて言えば、実際のブック名(ファイル名)はどうなってるの?
タイトルに書かれてる奴は?
ファイルに保存したことが無ければ当然拡張子は付いてない。

594
デフォルトの名無しさん[sage]   投稿日:2017/02/11 17:37:07  ID:y7jIVWYW.net(2)
BookBがBooBsに見えた

595
デフォルトの名無しさん[sage]   投稿日:2017/02/11 17:51:11  ID:QMyG+xER.net(10)
任意の結合されたセルをコピーして、別のセルに貼り付け後
コピー元のセルの結合を解除し、データを削除できますか?
(要はカットペースト)

任意のセルをコピーをして
Sub paste()
Selection.PasteSpecial paste:=xlPasteValues
Selection.PasteSpecial paste:=xlPasteFormats
End Sub
で、別のセルに貼り付けまではできるのですが
コピー元のセルの削除ができません。
コメント2件

596
デフォルトの名無しさん[sage]   投稿日:2017/02/11 17:58:36  ID:2rQZT4wf.net(4)
貼り付け先はどこ?
コメント2件

597
595[sage]   投稿日:2017/02/11 18:06:37  ID:QMyG+xER.net(10)
>596

例えばA1からA3までが結合されていてそれをコピー
それをA5に貼り付けて
A1からA3は結合は解除されデータも削除したいのです。

598
デフォルトの名無しさん[sage]   投稿日:2017/02/11 18:21:40  ID:2rQZT4wf.net(4)
普通にマクロ記録でできません?
カットして、貼り付け先決めてペースト
コメント2件

599
595[sage]   投稿日:2017/02/11 18:28:54  ID:QMyG+xER.net(10)
>598検討していただいてありがとうございます。

カットだと数式崩れてしまったり弊害も多くて…
コメント2件

600
デフォルトの名無しさん[sage]   投稿日:2017/02/11 18:33:55  ID:DSeAMe3p.net(8)
>599
普通に
コピー元.MergeCells = False
コピー元.ClearContents
ではないの?
コメント2件

601
595[sage]   投稿日:2017/02/11 19:36:29  ID:QMyG+xER.net(10)
>600
コピー元はA1:A3だったりA5:A8だったりと想定していまして
コピー元をRange("A1:A3")と指定できないです。
コメント4件

602
デフォルトの名無しさん[sage]   投稿日:2017/02/11 19:38:42  ID:DVczqHH+.net(2)
この言語って文系でも理解できますか?
変数宣言とメッセージボックスはなんとなくわかったのですが、IF文とかFor文とかわけわかりません
コメント8件

603
デフォルトの名無しさん[sage]   投稿日:2017/02/11 19:44:43  ID:j9jl8H+0.net(2)
数学があまり得意でないバリバリの文系出ですが職業プログラマです

604
デフォルトの名無しさん[sage]   投稿日:2017/02/11 19:52:41  ID:P1k0UnFV.net(2)
>601
こうゆうのどう?
コピー元を選択してから

Sub XCopy()
Dim Source As Range
Dim Dest As Range
Set Source = Selection
On Error Resume Next
Set Dest = Application.InputBox(Type:=8, Prompt:="コピー先を選択してください。")
If Err.Number <> 0 Then Exit Sub
On Error GoTo 0

Source.Copy
Dest.PasteSpecial Paste:=xlPasteValues
Dest.PasteSpecial Paste:=xlPasteFormats
Source.MergeCells = False
Source.ClearContents
End Sub
コメント2件

605
デフォルトの名無しさん[sage]   投稿日:2017/02/11 19:59:15  ID:3aCh2hRF.net(2)
>602
文系のおっさんだけどやってますよ
VBA始めたのも仕事ってことはあるけどExcel2000の頃からだしww

606
デフォルトの名無しさん[sage]   投稿日:2017/02/11 20:10:03  ID:Yn1WOs8Z.net(2)
>602
じゃ無理です

607
デフォルトの名無しさん[sage]   投稿日:2017/02/11 20:12:18  ID:eIU/UKQL.net(4)
>601
VBAでやる場合Range(Cells(fromRow,fromCol),Cells(toRow,toColl))みたいに書く方が好き

608
595[sage]   投稿日:2017/02/11 20:30:29  ID:QMyG+xER.net(10)
>604
ありがとうございます。
コピー先にセルが結合していた場合のエラー回避を入れて
想定したものができました!!
コメント2件

609
デフォルトの名無しさん[sage]   投稿日:2017/02/11 21:01:37  ID:vSETvneW.net(2)
>602
IF文がわからない??

610
デフォルトの名無しさん[sage]   投稿日:2017/02/11 21:06:45  ID:eIU/UKQL.net(4)
>602
英語読めんだろ
VBAなんて中学生でも出来るよ

611
デフォルトの名無しさん[sage]   投稿日:2017/02/11 21:12:11  ID:77uNpaEc.net(2)
文法を5つぐらい丸暗記するだけだよ
単語の意味なんて別に知らなくても使える

612
デフォルトの名無しさん[sage]   投稿日:2017/02/11 21:34:52  ID:DSeAMe3p.net(8)
>608
セルの結合の解除やデータ削除の仕方がわからないんじゃなくて
コピー元範囲を変数にセットしといて後で参照する方法がわかなかった、ということか。

最初の質問の仕方がちょっとまずいよ。
コメント2件

613
デフォルトの名無しさん[]   投稿日:2017/02/11 22:19:45  ID:5OICUox8.net(6)
>612←もうこういうバカ本当に嫌だ
コメント2件

614
デフォルトの名無しさん[sage]   投稿日:2017/02/11 22:47:58  ID:DSeAMe3p.net(8)

615
デフォルトの名無しさん[]   投稿日:2017/02/11 23:33:24  ID:5OICUox8.net(6)
>614
ああすまん言葉が足りなかったな
自分の無能を質問した側のせいにする馬鹿にはうんざりしてる
これで通じるかな?
コメント4件

616
デフォルトの名無しさん[sage]   投稿日:2017/02/11 23:37:46  ID:DSeAMe3p.net(8)
>615

>595 はなんだったのか ?
コメント2件

617
デフォルトの名無しさん[]   投稿日:2017/02/11 23:50:57  ID:5OICUox8.net(6)
>616
知るかよ
俺が知ってる事と謂えば
俺が質問の意図を理解できないのは俺が無能だから
俺が答えられないのは俺が無能だから
悪いのは質問する側でなく俺自身の頭だということだけだ

618
デフォルトの名無しさん[sage]   投稿日:2017/02/11 23:54:08  ID:uIilAFVC.net(2)
>615
同意

619
デフォルトの名無しさん[sage]   投稿日:2017/02/12 00:18:43  ID:GCBuHwjB.net(6)
改善要望だろ
カッカすんなよ

620
デフォルトの名無しさん[sage]   投稿日:2017/02/12 01:27:22  ID:f71yA8WT.net(2)
無能を見てイライラするのは自分が無能だからに他ならない
有能な者は無能を見たら視線を逸らせてゆっくりと後ずさってゆく
自分が無能だと理解できたものは幸せである 望む高みを目指す機会を得られたのだから
自分を無能だと指摘してくれる他人がいるものは幸いである その意見に反駁する機会を得られたのだから
アーメン

621
デフォルトの名無しさん[sage]   投稿日:2017/02/12 07:21:34  ID:Fy2fTJRT.net(2)
キモ

622
デフォルトの名無しさん[sage]   投稿日:2017/02/12 07:26:15  ID:SthYlIVq.net(8)
田村淳

623
デフォルトの名無しさん[sage]   投稿日:2017/02/12 07:57:58  ID:lGLkKgIW.net(2)
無能な質問者はその質問に対する直接的な回答をしないと激怒するんだよなぁ
そもそもこうやった方が良いよって間接的な解決法を回答すると
自尊心を傷つけられるのか回答になってない!って必ず激怒するね

624
デフォルトの名無しさん[sage]   投稿日:2017/02/12 10:05:43  ID:SthYlIVq.net(8)
本当に自分が知らなければならないことを把握するのも言葉にするのも難しい

625
デフォルトの名無しさん[sage]   投稿日:2017/02/12 11:11:19  ID:LExlgtgk.net(6)
疑問点をうまく説明できる人は、そのまま検索すれば答えが出てくるから
質問スレは利用しないという大前提が、みんなわかってませんね

言葉のキャッチボールをしながら疑問の核心を引き出すのが良い回答者ですよ
コメント6件

626
デフォルトの名無しさん[sage]   投稿日:2017/02/12 11:16:08  ID:v4isfS8N.net(6)
>625
良い回答者は金もらえないのにメリットあるの?

627
デフォルトの名無しさん[sage]   投稿日:2017/02/12 11:25:53  ID:tcfS8y3+.net(2)
悪い回答者はお金もらってるの?
コメント2件

628
デフォルトの名無しさん[sage]   投稿日:2017/02/12 11:29:40  ID:v4isfS8N.net(6)
>627
悪い回答者は自分の価値観で回答してるから回答する事が目的なんじゃね

良い回答者と言うのは質問者の価値観での良いという評価に過ぎない
自分の価値観と違う回答をするのは自分の目的とは違うんじゃね
金もらわないとバランス取れない

629
デフォルトの名無しさん[sage]   投稿日:2017/02/12 11:31:37  ID:+/9Wo75i.net(2)
>625
もっと核心的な大前提忘れてるぜ

どのスレでもそうだけど 回答者のボランティアで自己満足だけよ メリットは
だから良い回答者になってもいいし ならなくてもいい

ようは 質問者の問題が解決しようがしまいが 自己満足できりゃいいのよ

630
デフォルトの名無しさん[sage]   投稿日:2017/02/12 11:38:27  ID:oqB84mjV.net(2)
悪い回答者しかいないところには質問者も来ないから結局誰も満足しないというジレンマ
コメント2件

631
デフォルトの名無しさん[sage]   投稿日:2017/02/12 11:57:11  ID:uMNKLmCG.net(14)
悪い質問者は結果みんなに迷惑をかける。
それが分かってるから回答者は直接的な回答をしない。

1.ピタゴラスイッチ的に動くかもしれんが絶対後で問題になるだろってのに頑張って回答しても、結局問題になって後々全然別の回答をしなければならなくなり、最初の回答が無駄になる。

2.直接的な回答を希望する奴はそれがどういう仕組みで動いてるかを自分のものにしないからしばらくするとまた同じ質問をしてくる。
結果、何度も同じ回答をしなければならなくなる。

回答ってのは質問者は自動で出てくると思ってるかもしれんが実際は回答者にも労力が必要なんだ。
コメント4件

632
デフォルトの名無しさん[sage]   投稿日:2017/02/12 12:05:54  ID:SthYlIVq.net(8)
ピタゴラスイッチ的に動く

633
デフォルトの名無しさん[sage]   投稿日:2017/02/12 12:23:25  ID:6V2BuQIU.net(2)
>631
馬鹿過ぎる質問者は最初に追い払うのがいいんだよ

634
デフォルトの名無しさん[sage]   投稿日:2017/02/12 12:40:25  ID:SthYlIVq.net(8)
教えて!goo とか、どうにもこうにも解釈に苦しむ日本語の質問が散見されるし、
ここはまだマシだと感じるな

635
デフォルトの名無しさん[sage]   投稿日:2017/02/12 12:50:07  ID:LExlgtgk.net(6)
gooとかyahooは間違ったまま終わってるのがけっこうあるから、検索してて微妙な気持ちになる

636
デフォルトの名無しさん[sage]   投稿日:2017/02/12 13:08:38  ID:FS+b1cKU.net(6)
はてブやQiitaも微妙だからどこも大差ないのかなあ

637
デフォルトの名無しさん[sage]   投稿日:2017/02/12 13:21:05  ID:nEtYr4+H.net(2)
以前も書いたけど環境も問題も分かっている隣の同僚に聞く分には前提からなにからすっ飛ばして聞いてもある程度は
向うも判ってくれる。
けどこういう掲示板では相談者にとっては当たり前の事でも全然違う。まぁそれも訓練せんとなかなか判り易い質問ってのは
書けないw
自分も最近はあまり質問してないけど、以前は他のスレで叩かれまくったよwww
コメント2件

638
デフォルトの名無しさん[sage]   投稿日:2017/02/12 13:49:23  ID:CC9/6sU1.net(4)
>625
だから俺は大抵嫌がらせのように考え方の指針だけ答えるようにしてるけど、大体教えたがりが答えだしちゃうよね

639
デフォルトの名無しさん[sage]   投稿日:2017/02/12 13:50:29  ID:CC9/6sU1.net(4)
>630
別にこのスレが廃れるのはいいよ
このスレで答えられることなんて大抵オフィス田中にのってる

640
デフォルトの名無しさん[]   投稿日:2017/02/12 14:03:28  ID:amMPaDhL.net(8)
>631
どんな質問されても迷惑したことなんてないけど
それお前だけと違うか?
質問が理解できなくて悩んであげく質問した人にキレて
結果皆に迷惑かけてんのお前の方じゃね?
コメント2件

641
デフォルトの名無しさん[sage]   投稿日:2017/02/12 14:10:12  ID:FS+b1cKU.net(6)
キレるのとそれじゃダメだと指摘するのはだいぶ違うから区別できる

642
デフォルトの名無しさん[sage]   投稿日:2017/02/12 14:10:23  ID:uMNKLmCG.net(14)
>640
悪いがそれは無い。
それに俺もそういうアホな質問に回答しない方だから俺自身が被害に合うことも少ない。

でも掲示板のやり取りなんか見てるとトラブルになってるのはそういうのが多い。
コメント2件

643
デフォルトの名無しさん[]   投稿日:2017/02/12 14:13:15  ID:amMPaDhL.net(8)
>642
そういうのってキレた教えたがりだよ

644
デフォルトの名無しさん[]   投稿日:2017/02/12 14:27:08  ID:TQOoi023.net(4)
>637
>環境も問題も分かっている隣の同僚に聞く分には前提からなにからすっ飛ばして聞いてもある程度は
>向うも判ってくれる。
あなたは人間が出来てるね。俺は隣の同僚に聞かれるとムカッとくる。インデントもしてねえ汚ったねえ呪文みてえなコードを
見せられて「どこが悪いんだろ?」と言われても全部だろ全部、書き直してやるから三万払えコノヤローと叫びたくなる。

実際には、笑顔で書き直してやってるけどw
コメント4件

645
デフォルトの名無しさん[sage]   投稿日:2017/02/12 15:44:19  ID:uMNKLmCG.net(14)
>644
それは無いわ。
だって直接やり取りできるなら何でも聞けるだろ。
問題はやり取りしまくって、結局元々の設計がダメで元に戻る時とかだから詳細をいくらでも聴ける時は頭には来ない。

ダメコードなのは最初から織り込み済みだし。
相手のレベルも分かってるでしょ。

646
デフォルトの名無しさん[sage]   投稿日:2017/02/12 15:48:38  ID:LExlgtgk.net(6)
会社の事情でデータが出せないとかコードが出せないとかで再現できないのが一番困る
それなら隣に座ってる同僚に聞いたほう が早いだろうに
コメント2件

647
デフォルトの名無しさん[]   投稿日:2017/02/12 16:12:35  ID:amMPaDhL.net(8)
>646
いや別にお前が困る必要はないよw
分からなければ黙ってスルーしておけばいいだけ

648
デフォルトの名無しさん[sage]   投稿日:2017/02/12 17:17:33  ID:FS+b1cKU.net(6)
ここはVBAスレだぜ?
会社で隣のやつとプログラムの話って想像しにくいんだけど、どういう状況だ?
同じプログラムを共有でもしてるのか?
コメント2件

649
デフォルトの名無しさん[sage]   投稿日:2017/02/12 17:23:48  ID:uMNKLmCG.net(14)
状況だけ説明されて、詳細を聞こうとしたら出せないと。
で、それじゃあ回答のしようも無いわなって終わるような場合にこちらのスキル不足認定されると頭に来るかもね。

状況だけで回答できる場合もあればそうじゃない場合もあるわけで、回答しようもない場合もあるわけだからさ、その場合は回答者の問題じゃないのに理解出来ない質問者ってのがまれにいる。

650
デフォルトの名無しさん[sage]   投稿日:2017/02/12 17:27:40  ID:uMNKLmCG.net(14)
>648
それぞれ全然別作業してても、結局分かる奴に質問が集中するもんでしょ。

分からない時は彼に聞けばみたいなの。
人づてに全然知らない人から教えて欲しいってこともあるし。

651
デフォルトの名無しさん[sage]   投稿日:2017/02/12 17:28:45  ID:VkacFT0c.net(2)
ここで質問するようなやつって基本的に怠け者の屑なんだよね
ステップ踏まずに答えだけ聞いて手抜きしようとするバカが多い
なぜそうなるか、を理解しないからなんも成長しなくて同じことを繰り返す
そういうバカだから質問も的を射ないで抽象的
そりゃ、君の脳みそじゃわからんよねとは思うよ

652
デフォルトの名無しさん[sage]   投稿日:2017/02/12 17:40:24  ID:UUbs1MWi.net(2)
プログラミングを免許制にするべきなんだろうな
バカが多すぎて辟易する
コメント4件

653
デフォルトの名無しさん[sage]   投稿日:2017/02/12 18:04:26  ID:v4isfS8N.net(6)
>652
国家試験あるじゃない
免許じゃないけど企業側がその結果を利用すればいい

654
デフォルトの名無しさん[sage]   投稿日:2017/02/12 18:27:17  ID:yxF5W3i1.net(8)
>644
> 実際には、笑顔で書き直してやってるけどw
俺も人間できてるだろ、どや
って言いたいのかよ w
コメント2件

655
デフォルトの名無しさん[sage]   投稿日:2017/02/12 18:32:30  ID:yxF5W3i1.net(8)
>652
一時社内でマジで検討したことがある
結局適当な資格を決められずに頓挫したけど
コメント2件

656
デフォルトの名無しさん[]   投稿日:2017/02/12 18:40:30  ID:TQOoi023.net(4)
>654
>俺も人間できてるだろ、どや
>って言いたいのかよ w
そうw

657
デフォルトの名無しさん[sage]   投稿日:2017/02/12 18:48:13  ID:GCBuHwjB.net(6)
>655
不合格者はどうする案だったの?
コメント2件

658
デフォルトの名無しさん[sage]   投稿日:2017/02/12 18:58:47  ID:uMNKLmCG.net(14)
自分の経験上では資格持ってる奴の方がレベルが低いことが多いから同意出来ないな。
どうも、勝負出来るスキルが無いから資格でなんとかしようって奴が多い。

面接での決定権握ってる奴ができる技術者ならすぐにレベルなんて分かる筈なんだけどなあ。
実際はそうじゃ無いことが多いよなあ。
コメント2件

659
デフォルトの名無しさん[sage]   投稿日:2017/02/12 19:15:20  ID:GCBuHwjB.net(6)
FizzBuzz書けないって都市伝説なのか事実なのか
コメント2件

660
デフォルトの名無しさん[]   投稿日:2017/02/12 19:20:38  ID:amMPaDhL.net(8)
お前程度に出来る事が他人に出来ない訳ないだろw

661
デフォルトの名無しさん[sage]   投稿日:2017/02/12 19:34:39  ID:uMNKLmCG.net(14)
人がどんなコード書いてるのか知らないのにお前程度とか言っちゃうのはどうなんだ?

俺は俺よりできる奴がたくさんいるからそんなこと言えないな。

662
デフォルトの名無しさん[sage]   投稿日:2017/02/12 20:22:16  ID:yxF5W3i1.net(8)
>657
テスト要員とかドキュメント管理とか

663
デフォルトの名無しさん[sage]   投稿日:2017/02/12 20:39:44  ID:MzCVzIkj.net(4)
>659
ここで質問してるやつらの半分くらいはそんな感じじゃね
まともに勉強してるとは思えない質問が多いし

664
デフォルトの名無しさん[sage]   投稿日:2017/02/12 20:42:14  ID:zIkO4GAA.net(2)
VBAスタンダードの勉強をしているのですが、
GetとEOFってどう違うんですか?
なんか両方「全部」ってのが共通みたいですが?
コメント2件

665
デフォルトの名無しさん[sage]   投稿日:2017/02/12 20:53:22  ID:MzCVzIkj.net(4)
>664
釣りにしてもひどない?
コメント2件

666
デフォルトの名無しさん[sage]   投稿日:2017/02/12 22:37:48  ID:UPBLh8xx.net(2)
>658
英語もそうだけど実践的に使用する技術は「知識として知っていればいい」というもんじゃないからな。
まぁSEとかPG名乗りながら論理回路って何ですかみたいなのは切っていいと思うけど。
コメント2件

667
デフォルトの名無しさん[]   投稿日:2017/02/12 22:48:43  ID:SolFmjsL.net(4)
>666
そうですよね。
ところで論理回路って何ですか?

668
デフォルトの名無しさん[sage]   投稿日:2017/02/12 22:57:44  ID:yxF5W3i1.net(8)
>665
そう思ったならなぜスルーしないんだよ...
コメント2件

669
デフォルトの名無しさん[sage]   投稿日:2017/02/12 23:38:53  ID:l0D/TqVE.net(2)
大丈夫。
俺PG歴長いけど、「引数」の読み方知らないぞ。

670
デフォルトの名無しさん[sage]   投稿日:2017/02/12 23:50:47  ID:hrcImG9t.net(2)
あれって、もともと「ひきすう」って読むの?
それとも因数とややこしいから、敢えて違う読み方してるのかな?
抜糸(抜歯とややこしいからバツイト)、首長(クビチョウ)みたいに。

671
デフォルトの名無しさん[]   投稿日:2017/02/12 23:54:27  ID:SolFmjsL.net(4)
オブジェクト指向の「指向」ってどう読むの?
さしむき?

あとVisualStudioの「Studio」は?
わたしは英語圏の生活長いからいつもステューディオウだけど合ってるかな?
コメント2件

672
デフォルトの名無しさん[sage]   投稿日:2017/02/12 23:58:50  ID:7cAel6qO.net(2)

673
デフォルトの名無しさん[sage]   投稿日:2017/02/12 23:59:46  ID:XHYJ/nHJ.net(2)
どうでもよすぎ…ググレカスで終わる

674
デフォルトの名無しさん[]   投稿日:2017/02/13 00:50:43  ID:TuS8jPy4.net(4)
わたしは英語圏の生活長いからVBA関連の語のアクセントが英語風なのよね。
これ無意識だから絶対に日本人のようなあの不気味な平坦なアクセントができない。
日本人のあの平坦な発音の仕方って気持ち悪いから意識しても真似ようという気が起こりすらしないけど。

[例]
プ[ロ]パティ
[メ]ソッド
[シ]グネチャ
プロ[シ]ージャ
などで、[□]で印したところにアクセントおいてるけど日本人は不気味で全部平坦で発音してて単語の最後が微妙に伸ばしてるるよね。
コメント6件

675
デフォルトの名無しさん[sage]   投稿日:2017/02/13 00:59:14  ID:S035yfE+.net(2)
>674
これって学習能力や適応力のなさを自慢する大会ですよね
そういう自虐的な思考は完全に日本人の物だから安心していいですよ

676
デフォルトの名無しさん[]   投稿日:2017/02/13 01:20:23  ID:TuS8jPy4.net(4)
いやわたしの国際性、意識高い系の人であること、偉大さを証明するものだ
コメント2件

677
デフォルトの名無しさん[sage]   投稿日:2017/02/13 01:26:42  ID:C+gt+Ln2.net(2)
お薬出しておきますねー
次の質問どうぞー

678
デフォルトの名無しさん[sage]   投稿日:2017/02/13 01:27:44  ID:0xlsTvjn.net(2)
>676
承認します

679
デフォルトの名無しさん[sage]   投稿日:2017/02/13 02:35:42  ID:d9vpZ2GC.net(4)
昔の仕事で1と0のみでできてるバカでかいテキストファイル読み込んで論理演算(ANDやOR)してるのを見たことあるけど両者から1文字ずつ取ってきて1と1だったら1、0と1だったら0、1と0だったら0、0と0だったら0とIf文とかSelect Caseでやってるの見た時はびっくりしたな。

ASCIIコード見れば分かると思うが、文字の1と0はそのままANDもORも出来るから。

"0"->110000
"1"->110001

一番最後の桁以外はANDもORも変わらん。

知識よりも目的に向かっての創意工夫の方が大きいんじゃない?
コメント4件

680
デフォルトの名無しさん[sage]   投稿日:2017/02/13 08:05:56  ID:+cwVmN7p.net(4)
>668
触ったら面白いかな?って思って

681
デフォルトの名無しさん[sage]   投稿日:2017/02/13 08:20:45  ID:3tq7pNhG.net(2)
>674
俺は仕事の場合は相手によって使い分けるようにしてるよ
相手に伝わってナンボ

682
デフォルトの名無しさん[sage]   投稿日:2017/02/13 09:05:12  ID:VG69ZfS4.net(2)
>674
真似すればいいじゃん?

683
デフォルトの名無しさん[sage]   投稿日:2017/02/13 12:47:15  ID:Ah1ijx/J.net(2)
>679
まずその1や0を文字列として扱うのが正当なのか疑問なんだが
コメント2件

684
デフォルトの名無しさん[sage]   投稿日:2017/02/13 12:48:50  ID:+cwVmN7p.net(4)
>679
まずこの文で要件を汲み取ることが難しいわ
コメント2件

685
デフォルトの名無しさん[sage]   投稿日:2017/02/13 13:04:24  ID:FQScQiCC.net(4)
サヨクからしてみれば
今回は効きすぎだろ ww
コメント2件

686
デフォルトの名無しさん[]   投稿日:2017/02/13 13:07:44  ID:FQScQiCC.net(4)
>685
ごめんなさい
投下場所間違えました

687
デフォルトの名無しさん[sage]   投稿日:2017/02/13 13:26:07  ID:d9vpZ2GC.net(4)
>683
その通りだが、既に与えられてるデータがそうなってて他社とやり取りされてたから仕方ない。
まあ、そこの会社もそれは分かってたみたいでその後普通のバイナリに移行してたな。

688
デフォルトの名無しさん[sage]   投稿日:2017/02/13 20:00:37  ID:d/USi4s0.net(2)
>684
"0" ⇒ &H30, "1" ⇒ &H31 だから Asc( ) でコードにしてそのまま And/Or できるって言いたいんだろ
もとのコードがどんなもんか知らんけど俺は文字のまま処理するって言うのも別におかしくないと思う
コメント2件

689
デフォルトの名無しさん[sage]   投稿日:2017/02/13 20:18:34  ID:1gaAmlEB.net(2)
たぶんVBAの内部処理は
Val("0") Or Val("1")
みたいな状態になってるからすごく効率悪い

690
デフォルトの名無しさん[sage]   投稿日:2017/02/13 21:49:13  ID:s/tywzZZ.net(2)
どこから Val( ) が出てくるんだろう...

691
デフォルトの名無しさん[sage]   投稿日:2017/02/13 22:24:31  ID:01I2Ha4W.net(2)
たいていのことはRelaxTools Addinのソースを見れば書いてある

692
デフォルトの名無しさん[sage]   投稿日:2017/02/14 00:40:54  ID:ClQJHzh+.net(2)
>688
スピードで100倍以上違うよ。

693
デフォルトの名無しさん[sage]   投稿日:2017/02/14 01:22:00  ID:DOjYefWL.net(2)
100倍程度じゃ可読性犠牲にできんわ

694
デフォルトの名無しさん[]   投稿日:2017/02/14 09:29:24  ID:1O/6AsKp.net(6)
和暦問題どーしてます?

レジストとか外に制御テーブル持っててくれれば良いけど、エクセルは内部で抱えてるみたいだし。

日本だけの独自文化だし、ある意味買い替えの特需だからマイクロソフトも対応するとも思えない。

マイクロソフトを信じて待つのが正しい?
コメント6件

695
デフォルトの名無しさん[sage]   投稿日:2017/02/14 09:36:36  ID:ES7A40w+.net(2)
可読性?
この程度で可読性無くなってると思うんじゃ話にならない。
100倍程度とか簡単に言うのもどうなんだろね。

この論理演算を1回とか2回とか実施して終わるとか思ってるんだろうな。
実際のこの関数を呼び出す大元のマクロでそれまで6時間とかかかってたんだがね。
0、1のテキストファイルのサイズにもよるんだろうけど300Mbyteのファイルの時はそんなだったな。

696
デフォルトの名無しさん[sage]   投稿日:2017/02/14 09:47:37  ID:he6YB8dM.net(2)
>694
待つのが正しい
ただし対応しました!といってから2ヶ月くらい待つのが正しい
コメント2件

697
デフォルトの名無しさん[]   投稿日:2017/02/14 09:59:06  ID:1O/6AsKp.net(6)
>696
デイリーで処理してるから
速攻でバレるんよ。
もしマイクロソフトが対応してくれないと。

698
デフォルトの名無しさん[sage]   投稿日:2017/02/14 10:18:16  ID:XQOX6frc.net(2)
>694
和暦なんて最終的な表示部分だけでしょ?
アドホックな対応でごまかしながら待つしかないんじゃないかなあ。

699
デフォルトの名無しさん[]   投稿日:2017/02/14 10:20:17  ID:1O/6AsKp.net(6)
やはりそれかな?
処理が終わったところでイベント発生禁止にして上書き、んでイベント復活しかない?

700
デフォルトの名無しさん[sage]   投稿日:2017/02/14 21:19:12  ID:zSFmfMPu.net(2)
平成のときは人海戦術でフィールディング以外の部門まで狩り出して一週間ぐらいでやっつけたな
昭和のときは三ヶ月掛かったけど

消費税もそうだけど、日付と名称(消費税なら率)が判明したらそこだけだもの、今回は瞬殺だろ

701
デフォルトの名無しさん[sage]   投稿日:2017/02/14 23:14:00  ID:erEJytj9.net(2)
今回というか次の元号については
平成31年1月1日に生前退位が行われ新元号になるってのが決まってるんだから
その時まで不測の事態が起こらない限り事前の準備時間はある…?のかな
コメント4件

702
デフォルトの名無しさん[sage]   投稿日:2017/02/14 23:24:09  ID:ev1pSY1G.net(2)
>672
俺ならオブジェクト指原ってボケる。

>701
既に次の年号が組み込まれていたら笑う。

703
デフォルトの名無しさん[sage]   投稿日:2017/02/14 23:27:43  ID:UB3JXf9t.net(2)
不測の事態が起こりうるならいつか必ず起きるので生前退位は無いよ

704
デフォルトの名無しさん[sage]   投稿日:2017/02/14 23:52:21  ID:fgjpd/Zj.net(2)
使用を取りやめる、という選択

705
デフォルトの名無しさん[sage]   投稿日:2017/02/15 00:12:27  ID:urFAvqLF.net(2)
不測の事態なら、時間がなかったんですぅ〜という言い訳ができるけど
そうでない場合は漏れが許されないんだぞ

706
デフォルトの名無しさん[]   投稿日:2017/02/15 03:50:35  ID:vC8DQIA4.net(2)
>701
1月1日では他の宮中行事とカブってワチャワチャするからズラすとか言ってなかった?
まぁ事前にわかる事に変わりはないか。

707
デフォルトの名無しさん[sage]   投稿日:2017/02/15 08:20:59  ID:uIQboeV9.net(2)
>694
まじか…OSが持ってると思ってたよ…
会社のOfficeはそろそろ新しいのに買い換えないとな

708
デフォルトの名無しさん[sage]   投稿日:2017/02/15 12:27:48  ID:wBM76KMm.net(2)
うちの会社最近MSからライセンス買えって言われてoffice365を何台か入れたんだけど他にも2013、2010、2007、2003があるんだよなぁ…
VBAとかで作ってる社内資料は殆ど和暦表示だから、今から考えると恐ろしいわ…

709
デフォルトの名無しさん[sage]   投稿日:2017/02/15 13:37:00  ID:HgaCZlv6.net(2)
むしろ西暦に統一するチャンスと

710
デフォルトの名無しさん[sage]   投稿日:2017/02/15 13:47:11  ID:6F4521pz.net(2)
MSはよく言われるようにOSじゃなくてOfficeで金儲けしてるから

711
デフォルトの名無しさん[sage]   投稿日:2017/02/15 14:58:51  ID:5igOyxsI.net(2)
シートのA列に日付、B列に時刻、C列はアイテム名称、D〜L列は属性データで、1行目は項目名を入れた表を作りました

日付、時刻は上から下へと、時系列に並んでいます
日付・時刻・アイテム名の同時重複ありです

やりたいこと=「表示したい”行数を入力”して、その行数をシートの左上にして表示する」

Sub Lookup_Row()

' 使用済みの最終セルの選択
 Dim MaxRow As Integer
 With Range("A1").SpecialCells(xlLastCell)
  MaxRow = .Row  '最終セルの行
 End With

' 表示したい行数を入力
 Dim NumRow As Integer
 NumRow = InputBox("表示したい行数を入力", Title:="行数入力", Default:=buf)
  If NumRow > 0 And NumRow <= MaxRow Then
   ActiveWindow.ScrollRow = NumRow
  Else
   MsgBox "行数が許容範囲を超えています =" & NumRow
  End If

End Sub

入力ミスがあった場合
入力で-100 → If文でチェック → MsgBox "行数が許容範囲を超えています =" & NumRow
入力で1000000 → 実行時エラー オーバーフローしました。
入力でAAA → 実行時エラー オーバーフローしました。
となります、入力が整数型で1〜MaxRowなら実行、それ以外はMsgBoxでエラー表示させたいのですが
コメント3件

712
デフォルトの名無しさん[sage]   投稿日:2017/02/15 15:37:06  ID:xVeThrOd.net(3)
>>
On Error使うか
Dim NumRow As Variant にして後で数値か? 許容範囲か? チェックしる

713
デフォルトの名無しさん[sage]   投稿日:2017/02/15 15:41:53  ID:6lReDbAz.net(2)
>711
そうなんですか。
ご苦労が多そうですが
養生なさってください。

714
デフォルトの名無しさん[sage]   投稿日:2017/02/15 17:50:36  ID:uggMbaXG.net(2)
変数の型とかわかってない奴はVBAなんか使うなよ
コメント3件

715
デフォルトの名無しさん[sage]   投稿日:2017/02/15 18:10:31  ID:khJPh7n1.net(16)
inputboxじゃなくてフォームでっち上げた方が入力チェックは楽じゃねえか

716
デフォルトの名無しさん[]   投稿日:2017/02/15 18:19:40  ID:LgUU6dFz.net(2)
>714
面倒なので迷ったらVariantですごめんなさい

717
デフォルトの名無しさん[sage]   投稿日:2017/02/15 18:58:10  ID:MestFhjv.net(3)
使い方を限定するのはプロジェクト単位でいいと思う
この場ではどんな使い方だとしても目的を果たせればいい
メンテナンス性を考えるならできあがってから考えても遅くないし

718
デフォルトの名無しさん[sage]   投稿日:2017/01/03 02:51:16  ID:9Y8iTik6.net(2)
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

※前スレ
Excel VBA 質問スレ Part44


※関連スレ
VBAなんでも質問スレ Part2
Access VBA 質問スレ Part1
Excel総合相談所 125 /ビジネスsoft板

719
デフォルトの名無しさん[sage]   投稿日:2017/01/04 23:43:25  ID:T2t87YWx.net(2)
スレ生きてるかな?
コメント1件

720
デフォルトの名無しさん[sage]   投稿日:2017/01/05 01:36:19  ID:3zitFiAl.net(2)
エクセルVBAのオススメ参考書とか教えて下さいませ
コメント1件

721
デフォルトの名無しさん[sage]   投稿日:2017/01/05 16:31:19  ID:rordfoes.net(2)
おちるぞー
コメント1件

722
デフォルトの名無しさん[sage]   投稿日:2017/01/05 17:49:33  ID:3kVSXnTB.net(2)
>3
Office TANAKA

723
デフォルトの名無しさん[sage]   投稿日:2017/01/05 19:15:59  ID:YlAAgZIP.net(2)
落ちたら落ちたでまた立てればいいのよ

724
デフォルトの名無しさん[sage]   投稿日:2017/01/05 21:50:17  ID:PrUsv/Jo.net(2)
excel関数のoffsetやsumifを多用してたせいでマクロ遅くなるなんて知らんかった
マクロ実行中も再計算してるのか

725
デフォルトの名無しさん[sage]   投稿日:2017/01/05 21:53:00  ID:EGC2o4Lu.net(2)
>7
計算止めてマクロ実行し終わるときに再計算させるんじゃダメなの?
コメント4件

726
デフォルトの名無しさん[sage]   投稿日:2017/01/05 22:36:04  ID:fbqYOVIL.net(4)
>3
Me.Thread

727
デフォルトの名無しさん[sage]   投稿日:2017/01/05 22:50:47  ID:olwzS93J.net(2)
どんな言語でもそうだけど、それ単体で覚えるって無理だよな。
コメント1件

728
デフォルトの名無しさん[sage]   投稿日:2017/01/05 23:06:24  ID:fbqYOVIL.net(4)
ていうかVBAって、
半分くらいは、神エクセルを作るクソ上司対策の為にあるようなもんだけどな。
コメント2件

729
デフォルトの名無しさん[sage]   投稿日:2017/01/06 00:22:50  ID:m+Jpe1FL.net(2)
>7
作り終わったら描画と計算止めるのは速度上げたいならマストだぞ

730
デフォルトの名無しさん[sage]   投稿日:2017/01/06 00:32:13  ID:yTw61UwJ.net(2)
>3
レベルによると思います。
マクロ少しはつかえるのか、全くダメだけどExcelは得意(関数、機能など)だとか、関数もよく分からんとか。
IF関数もよく分からないレベルだと、まずはExcelの関数(ワークシート関数)と、機能(条件付き書式とか、テーブルとか)をある程度勉強した方がいい。

731
デフォルトの名無しさん[sage]   投稿日:2017/01/06 19:20:32  ID:Eygm90s9.net(2)
新年早々質問いきます!
選択している写真の存在するセル領域Rangeを取得したいと思っています。
ところが、セルピッタリの位置に写真を配置(Alt+写真ドラッグ・Alt+拡大縮小)した場合に、特定のサイズの時に1セル余分に取得してしまう事が分かりました。
正確にRangeを取得できるように直したいのですが、何か良いアイディアを頂けないでしょうか。

'現在選択している写真の領域Rangeを選択状態にするテスト
Sub SelectShapeRangeTest()
Dim SP As Shape
For Each SP In Selection.Parent.Shapes
If SP.Name = Selection.Name Then Exit For
Next
Range(SP.TopLeftCell, SP.BottomRightCell).Select
End Sub

732
デフォルトの名無しさん[sage]   投稿日:2017/01/06 19:32:50  ID:5HA7V59p.net(4)
>14
Rangeを選択してその大きさにShapeのサイズを変える
コメント1件

733
デフォルトの名無しさん[sage]   投稿日:2017/01/06 19:50:55  ID:5HA7V59p.net(4)
>14
Rangeが大きくなった事を判定してRangeを小さくするとか
大きくなったRangeに合うようにShapeを移動する
例えばRangeの中心とShapeの中心が重なるようにとか


全てのShapeを同じ大きさにするとか

シートにシェイプは1つだけにしてシートの左上とシェイプの左上を合わせるとか
コメント2件

734
デフォルトの名無しさん[sage]   投稿日:2017/01/06 19:54:21  ID:ylhkczHt.net(2)
>15
スマホから、主です。
回答ありがとうございます。

たしかにこれから写真を貼るのであれば、その方法で解決すると思いますが、あくまで既に配置済みの写真から読み取る必要が有るんです。

上記はテストコードなのでセレクトしていますが、これを関数化して膨大な配置済みの写真からそれぞれのrangeを取り出すのが最終目標なので。

735
デフォルトの名無しさん[sage]   投稿日:2017/01/06 21:04:04  ID:S2R5Pk4v.net(2)
>17
どうせギリギリのところで次のセルに被ってるんだろ
対象のシェイプより少しだけ小さいシェイプおいて取得すりゃいいんじゃね?
コメント1件

736
デフォルトの名無しさん[sage]   投稿日:2017/01/06 21:54:38  ID:Q5cZMFD3.net(2)
>14
vbaでオラが画像を貼る時は
デフォのセルの左上を基準にするだけで
セルをはみ出そうが、画と画が被ろうが、複数枚貼っていく

その時、画像のセル位置はセーブしてるし
shapes.nameを一意に付けておくので
後でサイズ変更したり削除したり、、操作は自在なのだが

737
デフォルトの名無しさん[]   投稿日:2017/01/06 23:58:00  ID:8yYsxO6K.net(2)
初めてお伺いさせていただくんですが、

マクロでvlookupを使いたいと思っているのですがエラーしか返ってこず途方にくれています。。
=VLOOKUP(D8,データ欄!$C$9:$D$28,2,FALSE)
D8にはユーザーフォームで入力した品目名が出力されており、それに呼応するIDがデータ欄!C9:D28に記載されており、
E8にIDを出力したいと考えています。

ヒントでも頂ければ幸甚に存じます。
コメント1件

738
デフォルトの名無しさん[sage]   投稿日:2017/01/07 00:25:21  ID:LrFag0bm.net(4)
それ、マクロの問題なんですかね??
vlookup関数でエラーが出てるの?
コメント1件

739
デフォルトの名無しさん[sage]   投稿日:2017/01/07 00:30:28  ID:2J+LIFNT.net(4)
>12
途中でエラーが出て、アレっ?となる罠付きだけどな。
コメント2件

740
デフォルトの名無しさん[sage]   投稿日:2017/01/07 00:37:52  ID:2J+LIFNT.net(4)
>20
Cells(1,1).Value="=VLOOKUP(D8,データ欄!$C$9:$D$28,2,FALSE)"なのか?
WorksheetFunction.VLookupなのか?
実行時エラーなのか?
#N/Aなのか?

何となく、余計な改行コードが入っているとか、
数字の123と文字の123を比較してるとか、
そんな罠のような気がするけど。
コメント2件

741
デフォルトの名無しさん[sage]   投稿日:2017/01/07 00:48:37  ID:CI9p857v.net(4)

742
デフォルトの名無しさん[sage]   投稿日:2017/01/07 00:49:41  ID:TOrGuStJ.net(2)
自分の解釈をできるだけ排除して
事実だけを伝えた方がいい時もある

エラーと言っているが画面に表示される文字列やダイアログは何なのか
どんなタイミングで表示されるのか
自分が書いたコードはどんなものか

743
デフォルトの名無しさん[sage]   投稿日:2017/01/07 00:51:23  ID:LrFag0bm.net(4)
ファイル上げてくれると、分かりやすいんだけどね。
コメント1件

744
デフォルトの名無しさん[sage]   投稿日:2017/01/07 00:55:21  ID:CI9p857v.net(4)
まさかエクセルの関数をそのまま書いてるとかじゃないやろな

745
デフォルトの名無しさん[sage]   投稿日:2017/01/07 09:02:21  ID:Xo1hV6SK.net(2)
>22
作り終わるってのはテストも込みでだぞ

746
デフォルトの名無しさん[sage]   投稿日:2017/01/07 23:07:08  ID:so7B4l6a.net(2)
>20は解決したのかな?

747
デフォルトの名無しさん[]   投稿日:2017/01/07 23:55:04  ID:5WVocSaL.net(2)
すいません
とあるセルに入力するとvbaが実行するようにしてるのですが
コードに間違いがあるとエラーがでて終了を押すとまたセルに入力してもvbaが実行されなくなります (MsgBoxで確認してます)
実行メニューのリセットを押しても同じです
ファイルを開き直してもダメでexcelを再起動するとまた動くのですが再起動せずにする方法ってありますか?

excel 2016 win7です
コメント4件

748
30[]   投稿日:2017/01/08 00:49:37  ID:r1ASQ1zZ.net(4)
追記で動かなくなるのはそのWorkbook_SheetChange だけで
ボタンからsubの実行は動くようです

749
デフォルトの名無しさん[sage]   投稿日:2017/01/08 00:52:16  ID:mMTwBd0e.net(2)
>30
もしかして
Application.EnableEvents = False
とかしてて その後 実行時エラーが出て Trueに戻せてないとかじゃね?
On Error
でエラートラップして Trueに戻すようにしないと

750
デフォルトの名無しさん[sage]   投稿日:2017/01/08 12:37:54  ID:C9GVPqMv.net(2)
てかコードの間違いを直せよ...

751
デフォルトの名無しさん[sage]   投稿日:2017/01/08 14:23:39  ID:aANViJyG.net(2)
>33
まさにこれだが
デバッグモードにして止めてみろって
コメント1件

752
30[]   投稿日:2017/01/08 14:39:47  ID:r1ASQ1zZ.net(4)
>32
それが原因だったようです
ありがとうございますm(__)m

>33-34
デバックモードよく分かってません
勉強してみます
コメント1件

753
デフォルトの名無しさん[sage]   投稿日:2017/01/08 21:58:52  ID:LSCp0tLP.net(6)
超初心者の質問です。

A行(A5〜Aずっと下まで)に「食物」が入力されていると仮定して、
B行が一行上の値と違う場合、
一行上に行を挿入して、その行に「果物」と入れたいです。

B行に入る値
・みかん
・バナナ

Sub 入力
一番上 = 5
一番下 = Cells(Row.Count,1).End(xlup).Row
For Cnt = 一番上 To 一番下
If Cells(Cnt,1)="りんご"
If Cells(Cnt-1,2)<> cells(Cnt,2) then
If cells(Cnt,2)="みかん" or Cells (Cnt, 2) ="バナナ" Then
Range(Cells(Cnt,1),Cells(Cnt,2)).Insert
End If
End If
End If
Next Cnt

本来は「みかん」と「バナナ」をまとめて、その上に「果物」の見出しをつけたいのに、
このコードだと「みかん」と「バナナ」のそれぞれ一行上に行が入ってしまいます。
どうしたら、まとめて一行だけ挿入することが出来るでしょうか?

754
デフォルトの名無しさん[sage]   投稿日:2017/01/08 22:25:17  ID:KINgQhrq.net(4)
>36
俺が困るので先に言っとく
『行』とは横のことを指す(左の数字)
縦を指すときは『列』と呼ぶ(上の英字)

そこをふまえて
>B列が1行上の値と違う場合、1行上に行を挿入して、その行に「果物」と入れたい
と言う条件と
>「みかん」と「バナナ」のそれぞれ1行上に行が入ってしまいます。
と言う結果は整合性のある状態なので問題はないと思う

もしも望む結果ではないのであればまず

 >B列が1行上の値と違う場合、

を見直すことが必要
やりたい内容を鑑みれば

 B列に入力があり、1行上の値が空白である場合、

と変えればいいと思う

755
デフォルトの名無しさん[sage]   投稿日:2017/01/08 22:42:31  ID:LSCp0tLP.net(6)
>37
そうですね、表現の仕方が間違っておりました。

フォーマットがもう決まってしまっているので、これで何とかしたいんですよね・・・。
どうしても、「みかん」「バナナ」をまとめて、一行上に行を挿入したいのですが。
今、思いついたのは、「みかん」「バナナ」にそれぞれ行が入ってしまうことは承知で、
「果物_01」「果物_02」と連番になるように設定して(やり方は分かっていないです)
それで_02の行は削除するというifを組んで、
さらに「果物_01」の行は「01」の部分を省くコードを書けばいいかな、と思ったりもしますが、
効率が悪いでしょうか?(やり方は分かっていないです、ただ思いつき)
コメント2件

756
デフォルトの名無しさん[sage]   投稿日:2017/01/08 22:49:26  ID:KINgQhrq.net(4)
>38
条件を変えればいいと思う

A列(A5〜Aずっと下まで)に「食物」が入力されていると仮定して、
B列が1行上の値と違う場合、
1行上に行を挿入して、その行に「果物」と入れたい

A行(A5〜Aずっと下まで)に「食物」が入力されていると仮定して、
B列に入力があり、1行上の値が空白である場合、
1行上に行を挿入して、その行に「果物」と入れたい

757
デフォルトの名無しさん[sage]   投稿日:2017/01/08 23:15:02  ID:LSCp0tLP.net(6)
>39
なるほど、そういう発想もありますね。
でもそうなると、どういうコードになるのでしょうか??(・・?)
コメント1件

758
デフォルトの名無しさん[sage]   投稿日:2017/01/09 00:15:41  ID:t+szxcoe.net(2)
すごい、エスパーがいるな
ちょっと日本語が意味わからないからアドバイス出来ないわ…
コメント1件

759
デフォルトの名無しさん[sage]   投稿日:2017/01/09 00:55:08  ID:4/AW5Uyc.net(8)
>36
A列は全て 「食物」が入力されているのよね

B列にどのように入ってるの?

>B行に入る値
>・みかん
>・バナナ

これ以外は無い(すなわち空セル)って事?
コード見ると「りんご」 ってあるみたいだけど???

んで どのような結果を お望み?
コメント2件

760
デフォルトの名無しさん[sage]   投稿日:2017/01/09 00:58:47  ID:5IQR8Haa.net(4)
それって、

分類1
商品1
商品2
分類2
商品3
商品4

みたいなフォーマットなの?
もしそうなら、それは神エクセルだから、

>フォーマットがもう決まってしまっているので

そこをどうにかして、こう直したほうがいいと思うけど。

分類名 商品名
分類1  商品1
分類2  商品2
コメント1件

761
デフォルトの名無しさん[sage]   投稿日:2017/01/09 01:00:35  ID:5IQR8Haa.net(4)
違う、こうか。

分類名 商品名
分類1  商品1
分類1  商品2
分類2  商品3
分類2  商品4

762
デフォルトの名無しさん[]   投稿日:2017/01/09 02:56:04  ID:JlqgPD3/.net(6)
すみません、割り込みなのですが簡単な質問なので失礼します((+_+))


コマンドボタンを1回クリックするごとにラベルに100ごと加算される物を
作りたいのですが、↓だと、あたりまえですが1度クリックしかできません。


Private Sub CommandButton1_Click()
x = 100
Label1.Caption = x

End Sub
コメント3件

763
デフォルトの名無しさん[sage]   投稿日:2017/01/09 03:13:17  ID:4/AW5Uyc.net(8)
>45
コマンドボタンとラベルは ユーザフォーム上なの? シート上なの?

どちらでも良い方法として

ラベルのプロパティ開いて Captionを 0 にしておく
その上で
Private Sub CommandButton1_Click()
 Label1.Caption = Label1.Caption + 100
End Sub

764
デフォルトの名無しさん[]   投稿日:2017/01/09 03:24:27  ID:JlqgPD3/.net(6)
>46
ユーザーフォーム上です!ありがとうございました、無事できました!

765
デフォルトの名無しさん[]   投稿日:2017/01/09 04:07:15  ID:JlqgPD3/.net(6)
何度もすみません、45の者です。
45の続きで、ラベル1の値ーラベル2の値=差の値をラベル3に表示する
計算機をユーザーフォーム上に作りたいと思っています。
しかし以下ではエラー「一致する型がありません」とでます。
なぜなのでしょうか(T_T)


Private Sub CommandButton3_Click()
Label1.Caption = x '投入した金額
Label2.Caption = y '選択した金額

k = x - y

Label3.Caption = k

End Sub
-----------------
Private Sub CommandButton1_Click()
 Label1.Caption = Label1.Caption + 100 ←ここにエラ―がでる
End Sub
------------------
Private Sub CommandButton2_Click()
 Label2.Caption = Label2.Caption + 50
End Sub

766
デフォルトの名無しさん[sage]   投稿日:2017/01/09 04:23:14  ID:4/AW5Uyc.net(8)
>48

>46 を良く嫁
以上

767
デフォルトの名無しさん[sage]   投稿日:2017/01/09 10:17:57  ID:EPA1tS/m.net(8)
>48
引き算するとこのx,yの代入逆だろ
x=ラベルキャプションってしないとなんも価入らんぞ
あとちゃんと変数は宣言してる?

768
デフォルトの名無しさん[sage]   投稿日:2017/01/09 10:41:01  ID:HU0Vv46x.net(2)
>46
>ラベルのプロパティ開いて Captionを 0 にしておく

は前提として、プロパティを直接の演算の対象にするとダメなことはまれに経験したことがある
理由はわからないけど
そういう時は、変数をかまして回避した。たとえば、

Private Sub CommandButton1_Click()
Dim label1_c As Integer
label1_c = Label1.Caption
label1_c = label1_c + 100
 Label1.Caption = label1_c
End Sub
コメント1件

769
デフォルトの名無しさん[sage]   投稿日:2017/01/09 13:48:59  ID:O0/XMIqD.net(4)
シート1の表(2次元領域)をシート2やシート3に一行に横一列にコピーしたいのですが、
一旦シート1の表の値を変数ATAI(i)に入れて、シート2や3にコピーしてます。
また別の方法で直でシート1.COPY シート2でもコピーしてみました。

両方ともコピーするのが2万個ぐらいあるのですが、処理に3分ぐらいかかります。
もっと早くする方法はありますか?

770
デフォルトの名無しさん[sage]   投稿日:2017/01/09 13:50:27  ID:JSUf7hDg.net(2)
>12
エラーで中断したら再計算しないけどな
コメント2件

771
デフォルトの名無しさん[]   投稿日:2017/01/09 14:36:04  ID:SVvcq0Ni.net(8)
下記のコードでObjectにするとSheet1のaを呼び出せるのですが
WSだとメソッドまたはデータメンバーが見つかりませんになってしまいます
wsの方か厳密のような気がするのですがObjectで正解なんでしょうか?

ThisWorkbook
Dim ws As Worksheet ' Objectにすると成功
Set ws = Sheets("Sheet1")

Call ws.a() ' エラー


Sheet1
Sub a()
End Sub

772
デフォルトの名無しさん[sage]   投稿日:2017/01/09 14:36:23  ID:EPA1tS/m.net(8)
>52
Dim rng as Range
set rng = Range(元データ開始セル,元データ終了セル)
Range(貼り付け先開始セル,貼り付け先終了セル) = rng
って感じでやると早くない?
もしかしたらvariant型の変数にした方が早いかもしれんけど
OfficeTANAKAに高速化テクニックって感じで載ってるよ
コメント1件

773
デフォルトの名無しさん[sage]   投稿日:2017/01/09 14:37:11  ID:EPA1tS/m.net(8)
>53
あのな?「作り終わったら」ってどういう意味かわかるか?
コメント1件

774
デフォルトの名無しさん[sage]   投稿日:2017/01/09 14:51:56  ID:4FVlGxEy.net(2)
>54
目的に合致してれば
問題ないです
コメント1件

775
デフォルトの名無しさん[sage]   投稿日:2017/01/09 15:00:52  ID:cjVtQucR.net(4)
>54
Sheet1.NameがSheet1じゃないのかも
コメント1件

776
54[]   投稿日:2017/01/09 15:30:22  ID:SVvcq0Ni.net(8)
もう一個謎が

Workbook_SheetChange(ByVal ws As Object, ...

Call ws.a() ' エラー
Call Sheets(ws.Name).a() ' 成功

となり訳が分かりません...

>57
理解できてないとなにか気持ち悪いです
>58
同じにしてあります;;

セルやらシートがあるのでvbaってjsやpyより難しい気がします
basicの構文も癖があるし・・
コメント1件

777
デフォルトの名無しさん[sage]   投稿日:2017/01/09 16:49:38  ID:dWF3ZE3B.net(2)
>basicの構文も癖があるし・・
www
コメント2件

778
デフォルトの名無しさん[sage]   投稿日:2017/01/09 16:53:01  ID:6xa3UP1L.net(6)
プロシージャをcallで呼び出すのと何も付けないで呼び出すのとでは何が違うのでしょうか?
後者だと参照渡しになりませんでしたが。

779
デフォルトの名無しさん[sage]   投稿日:2017/01/09 16:53:39  ID:I9s0ZByk.net(2)
>59
他の人が追試出来るように端折らないコード乗せて。

780
デフォルトの名無しさん[sage]   投稿日:2017/01/09 16:57:16  ID:6xa3UP1L.net(6)
もうわかったのでいいですすいません
コメント1件

781
デフォルトの名無しさん[sage]   投稿日:2017/01/09 17:21:48  ID:EPA1tS/m.net(8)
>63
解決したならそれをのせろや

782
デフォルトの名無しさん[]   投稿日:2017/01/09 17:22:57  ID:SVvcq0Ni.net(8)
>62
新規の空ファイルで

ThisWorkbook
Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
Call sh.test
'Call Sheets(sh.Name).test
End Sub

Sheet1
Sub test()
MsgBox "テスト"
End Sub

783
デフォルトの名無しさん[sage]   投稿日:2017/01/09 18:15:14  ID:Z/GXP5pv.net(6)
>65
sh.Name="Sheet1"
を確認しないとダメな気がする

784
デフォルトの名無しさん[sage]   投稿日:2017/01/09 18:21:35  ID:Z/GXP5pv.net(6)
>66
動的にイベントが発生するまでシートを確定できないからコンパイルでエラーになるみたいだよ

785
デフォルトの名無しさん[sage]   投稿日:2017/01/09 18:23:08  ID:Z/GXP5pv.net(6)
オブジェクト名でSheet1.testとすればコンパイルも通るし実行時エラーも出ない

786
デフォルトの名無しさん[]   投稿日:2017/01/09 18:39:16  ID:SVvcq0Ni.net(8)
>66-68
ありがとうございますm(__)m
VBAはコンパイラだったのですね
納得しました

787
デフォルトの名無しさん[sage]   投稿日:2017/01/09 18:56:01  ID:jLw81RF+.net(2)
>61
厳密にいうと参照渡しになっている。
変数aをカッコで囲んで(a)とすると、aのコピーが一時オブジェクトとして作られ、それがプロシージャに渡されるので、
元の変数aそのものはプロシージャに渡らない。

プロシージャ a

Call プロシージャ(a)
が等価で、

プロシージャ (a)

Call プロシージャ((a))
と等価になる

788
デフォルトの名無しさん[sage]   投稿日:2017/01/09 19:32:58  ID:6xa3UP1L.net(6)
>70
カッコにそういう意味があったとは・・・!
わかりやすかったです、ありがとうございました。

789
デフォルトの名無しさん[sage]   投稿日:2017/01/09 22:18:09  ID:vYvrwg8z.net(2)
>VBAはコンパイラだったのですね

えっ

790
デフォルトの名無しさん[]   投稿日:2017/01/09 22:32:30  ID:o7+xqhMd.net(4)
>42-44
分かりづらく失礼しました。
途中のりんごは不要です。
また、B列には他の食べ物が入りますが、ここでは果物に分類されないので、省略しました。

Sub 入力
一番上 = 5
一番下 = Cells(Row.Count,1).End(xlup).Row
For Cnt = 一番上 To 一番下
If Cells(Cnt,1)="食物"
If Cells(Cnt-1,2)<> cells(Cnt,2) then
If cells(Cnt,2)="みかん" or Cells (Cnt, 2) ="バナナ" Then
Range(Cells(Cnt,1),Cells(Cnt,2)).Insert
End If
End If
End If
Next Cnt
コメント2件

791
デフォルトの名無しさん[]   投稿日:2017/01/09 22:32:55  ID:o7+xqhMd.net(4)
で、希望するフォーマットとしては

 果物
食物バナナ
食物みかん
食物その他(仮)



としたいわけです。ところが、自分の作ったシートだと

 果物
食物バナナ
 果物
食物みかん
食物


となってしまうわけです。これで分かりやすくなったでしょうか・・・
コメント2件

792
デフォルトの名無しさん[sage]   投稿日:2017/01/09 22:40:49  ID:LQfxW/qY.net(2)
馬鹿ばっかで頭が痛くなるスレだ
コメント2件

793
デフォルトの名無しさん[sage]   投稿日:2017/01/09 22:45:04  ID:O0/XMIqD.net(4)
>55 ありがとう。 結局いろいろ試しましたが、セルに関数貼りつけました・・・・。
手動でセルに関数貼りつけたほうが早かったです・・・。
コメント1件

794
デフォルトの名無しさん[sage]   投稿日:2017/01/09 23:29:23  ID:4/AW5Uyc.net(8)
>74
やりたい事こんな感じ?
※なお 区別する種類が多いとこの手法は結構大変なので
考え直さないとだけど

Sub 入力()
一番上 = 5
一番下 = Cells(Rows.Count, 1).End(xlUp).Row

'下から上に処理してく
For cnt = 一番下 To 一番上 Step -1

 'cnt行の品名
 品名1 = Cells(cnt, 2).Value
 'cnt行の一つ上の品名
 If cnt <> 一番上 Then
  品名2 = Cells(cnt - 1, 2).Value
  Else
  品名2 = ""
 End If

 '行挿入
 If 品名1 = "みかん" Or 品名1 = "バナナ" Then
 If 品名2 <> "みかん" And 品名2 <> "バナナ" Then
  Range(Cells(cnt, 1), Cells(cnt, 2)).Insert
  Cells(cnt, 2) = "果物"
 End If
 End If
Next
End Sub
コメント1件

795
デフォルトの名無しさん[sage]   投稿日:2017/01/09 23:32:51  ID:cjVtQucR.net(4)
>72
メニューにコンパイルってあるけど
コメント1件

796
デフォルトの名無しさん[sage]   投稿日:2017/01/09 23:43:50  ID:dVuv1+mu.net(2)
>76
んー
二万件あっても直接レンジでやり取りすればそんな時間かからんと思うけどな
まあいいや、解決したなら乙だ

797
デフォルトの名無しさん[sage]   投稿日:2017/01/09 23:47:23  ID:SFPxoHKZ.net(2)
>74
本当はVBA必要ないのに、
神エクセルを作ることによって、
VBAが必要になってしまっているのではないか?

果物・・・食べ物の種類
バナナ・・・果物
みかん・・・果物

項目以外で、違うものを同じ列に入れる?
コメント1件

798
デフォルトの名無しさん[sage]   投稿日:2017/01/10 00:09:16  ID:hjeg5IZ9.net(2)
食物が列にあって果物を見出しにする謎を解決しないと先に進まないんじゃないか
コメント1件

799
デフォルトの名無しさん[sage]   投稿日:2017/01/10 10:38:11  ID:yHxqwlUe.net(8)
>18
大変遅くなりました。
>「元の画像より少し小さいシェイプを作成して取得する」
はなかなかの妙案だと思いましたが、関数化してループさせた場合処理速度に問題があったので、
既存のプロパティを自力で補正するように書き換えてみました。
Excelは左上をセルの左上に合わせて配置しても、画像の右下のグリップで拡大した場合、
低確率で.Topと.Leftの値が微妙に変化する(たとえば C3に置いた写真の.Top=37.5が37.4999...に変わってしまう。)
ようなので、何パターンか検証した結果、小数点以下第三位を四捨五入で正確に出る事がわかりました。

手動配置している場合に余裕を持たせられるようデフォルト値付きの省略可能引数にしています。

Sub TestGetShapeToRange()
Dim SP As Shape
For Each SP In Selection.Parent.Shapes
If SP.Name = Selection.Name Then Exit For
Next
Range(GetTopLeftCell(SP), GetBottomRightCell(SP)).Select
End Sub

長すぎと怒られたので 次レスへ
コメント1件

800
デフォルトの名無しさん[sage]   投稿日:2017/01/10 10:38:44  ID:yHxqwlUe.net(8)
>82 の続き
'Shape.TopLeftCellの誤差補正後の左上セルを取得する関数
Public Function GetTopLeftCell(SP As Shape, Optional num_digits As Integer = 2) As Range
Set GetTopLeftCell = SP.TopLeftCell
If GetTopLeftCell.Offset(1).Top <= Round(SP.Top, num_digits) Then
Set GetTopLeftCell = GetTopLeftCell.Offset(1)
End If
If GetTopLeftCell.Offset(, 1).Left <= Round(SP.Left, num_digits) Then
Set GetTopLeftCell = GetTopLeftCell.Offset(, 1)
End If
End Function

'Shape.BottomRightCellの誤差補正後の右下セルを取得する関数
Public Function GetBottomRightCell(SP As Shape, Optional num_digits As Integer = 2) As Range
Set GetBottomRightCell = SP.BottomRightCell
If GetBottomRightCell.Top >= Round(SP.Top + SP.Height, num_digits) Then
Set GetBottomRightCell = GetBottomRightCell.Offset(-1)
End If
If GetBottomRightCell.Left >= Round(SP.Left + SP.Width, num_digits) Then
Set GetBottomRightCell = GetBottomRightCell.Offset(, -1)
End If
End Function

以上、ご報告まで。

801
デフォルトの名無しさん[sage]   投稿日:2017/01/10 12:02:57  ID:yHxqwlUe.net(8)
連投すいません。次の質問です。

以下のようなマクロがあります。
1.非モーダルのユーザーフォーム(fm)が常駐
2.ユーザーが任意で複数の画像を選択
3.fm上のボタンをユーザーがクリックして下記のような処理を実行
For each obj in Selection
obj.cut
ActiveSheet.PasteSpecial Format:="図 (JPEG)"
Next
すると、最後にPasteしたShapeを選択した状態でマクロが終了します。

ESCを押して選択を解除するような操作をVBAで再現するにはどうしたら良いのでしょうか。

・マクロの記録では、ESCでShapeの解除は記録されませんでした。
・Application.SendKeys "{ESC}"を試してみたのですが、反応がありませんでした。
・ユーザーフォームにフォーカスが取られているのかと思いActiveWorkbook.ActivateやActiveWindow.Activateを入れたのですが無反応でした。

強引な解決策を考えましたが、もっとスマートな方法が無いかと探しています。
・終了後に適当なRangeをSelectしてからScrollRow/ScrollColumnして元の位置に戻す。
・シートのSelectionイベントで直前までに選択されたRangeを保持する。

ご教示のほどよろしくお願い致します。

802
デフォルトの名無しさん[sage]   投稿日:2017/01/10 15:45:40  ID:8VGVrhFD.net(4)
>84
君の思う スマートな方法が どんなものだかは分らんが

どこかのセルを選択するのが一番簡単だと思う
適当なセルだとスクロールしてしまうのがイヤなら

・選択されてるShapeの右上のセルを選択
・画面上の左上のセルを選択
とかでいいんじゃね?
コメント2件

803
85[sage]   投稿日:2017/01/10 15:47:43  ID:8VGVrhFD.net(4)
間違った
× ・選択されてるShapeの右上のセルを選択
○ ・選択されてるShapeの左上のセルを選択
コメント1件

804
デフォルトの名無しさん[sage]   投稿日:2017/01/10 17:40:05  ID:yHxqwlUe.net(8)
>85
とりあえずは、表示画面の左上セルをSelectするようにしたいと思います。
>スマートな方法
いわゆるobj.Unselect()メソッドとか、obj.Select(false)のような選択解除専用の機能は無いか。という事です。
Excel VBAって思わぬオブジェクトに実装されていたりするので・・・

805
デフォルトの名無しさん[sage]   投稿日:2017/01/11 08:57:05  ID:J0hUcFsW.net(2)
マクロでなく操作で非選択って出来る?
結局は別のものを選択してるよね
コメント1件

806
デフォルトの名無しさん[sage]   投稿日:2017/01/11 09:00:21  ID:v+irSj+y.net(2)
>87
プロパティ的なもんはオブジェクトブラウザかなんかで調べれば出てくるんじゃないの

807
デフォルトの名無しさん[]   投稿日:2017/01/11 12:03:53  ID:tc1gJPs0.net(6)
自動で名前を付けて保存したくて、いろいろ調べて形にはなったのですが

A1に日付が2017/01/11と入ってる場合
そのセルを引用したらスラッシュも入ってしまい保存の時にいちいち消すのに困っています。
保存の時にだけスラッシュを消す方法有りませんか?

808
デフォルトの名無しさん[sage]   投稿日:2017/01/11 12:12:47  ID:p4WB0UzK.net(6)

809
デフォルトの名無しさん[]   投稿日:2017/01/11 12:31:15  ID:tc1gJPs0.net(6)
InitialFilename:=Format(Range("A1"), "yyyymmdd")

このような形でいいのでしょうか?
コメント1件

810
デフォルトの名無しさん[]   投稿日:2017/01/11 12:34:16  ID:I7PY9KYr.net(8)
うちの会社ではほぼ全PCをシンクライアントにしてからというものの
ExcelVBAのマクロを保存してた「PERSONAL.XLSB」が使えなくなりました。
シンクライアントでは「PERSONAL.XLSB」に相当する機能を使用するにはどうしますか?

あとこれが本題なのですが
OutlookとWordも、それらのVBAをデフォルト的個人ファイルに保存して高頻度で使用していました。
特にOutlookのVBAでは便利なマクロを作っていました。
シンクライアントでもそれらの機能を使用するにはどうしますか?
コメント1件

811
デフォルトの名無しさん[sage]   投稿日:2017/01/11 12:35:59  ID:p4WB0UzK.net(6)
指定の位置に日付が入ってるのであればそれでよいはず
コメント2件

812
デフォルトの名無しさん[]   投稿日:2017/01/11 12:38:17  ID:tc1gJPs0.net(6)
>94
ご丁寧にありがとうございます!
コメント1件

813
デフォルトの名無しさん[sage]   投稿日:2017/01/11 12:48:03  ID:p4WB0UzK.net(6)
>93
単純に移行すれば使えると思う
以前使ってたpersonal.xlsbを所定の位置に配置すればできるはず
コメント2件

814
デフォルトの名無しさん[]   投稿日:2017/01/11 12:50:26  ID:I7PY9KYr.net(8)
>96
シンクライアントでは普通の方法ではCドライブが見えないんです。
別の方法で見つけてそこに入れても、次の日にPCを起動したときにそのファイルは消えてしまっているから
わざわざファイルを移動する方法では無駄になってしまうんです。毎日する必要になるから面倒で。

815
デフォルトの名無しさん[sage]   投稿日:2017/01/11 12:53:38  ID:xxQxfc5N.net(2)
>97
会社のシステム担当者に聞けばいいよ

816
デフォルトの名無しさん[sage]   投稿日:2017/01/11 13:08:46  ID:uU4tfKci.net(6)
シンクライアントは勝手なことをできないように導入する目的もあるので
自分なりのカスタマイズはあきらめるしかない場合がほとんど

817
デフォルトの名無しさん[]   投稿日:2017/01/11 13:08:59  ID:I7PY9KYr.net(8)
>98
どこにその部署があるかわからないし
勝手にツール作らないでくださいといわれてそれを禁止されるリスクもあるから
自分の力で解決したいのですが。
コメント1件

818
デフォルトの名無しさん[]   投稿日:2017/01/11 13:15:26  ID:I7PY9KYr.net(8)
Windowsのスタートアップもシンクライアントになって以来使えません(毎回PC起動時にはここは空になります)。
どうすればシンクライアントでもスタートアップ機能を使えるでしょうか?
コメント1件

819
デフォルトの名無しさん[sage]   投稿日:2017/01/11 13:37:35  ID:f6yusNGM.net(2)
>101
管理者側で許可設定してもらわない限り、シンクラでカスタマイズは無理
そして許可はまず下りない
あきらめろ
コメント1件

820
デフォルトの名無しさん[sage]   投稿日:2017/01/11 13:38:29  ID:uU4tfKci.net(6)
完全にVBA無関係じゃん
スレチ
コメント1件

821
デフォルトの名無しさん[sage]   投稿日:2017/01/11 13:38:35  ID:QIrTsKqr.net(4)
>101
板違い Windows板かパソコン一般板かPC初心者板へ

822
デフォルトの名無しさん[sage]   投稿日:2017/01/11 13:45:44  ID:1bci6XNy.net(2)
>92
聞く前にやりなよそのくらいって思うんだが
1から10まで聞かないとなにもできないの?
コメント1件

823
デフォルトの名無しさん[sage]   投稿日:2017/01/11 15:28:17  ID:qQgm92T6.net(2)
ここはthinクライアントでCドライブに何か入れたいみたいな馬鹿が来るようなところだから

824
デフォルトの名無しさん[]   投稿日:2017/01/11 18:57:51  ID:dcC69ZSQ.net(2)
エクセルのメニュー、アイコン、リボン、などを初期設定状態に戻す方法はありませんか。

すみません初心者的
コメント1件

825
デフォルトの名無しさん[sage]   投稿日:2017/01/11 19:28:32  ID:uU4tfKci.net(6)

826
デフォルトの名無しさん[sage]   投稿日:2017/01/11 20:14:53  ID:anvEc3zp.net(2)
レジストリの該当部を削除すれば(それかリネームすれば)元に戻るよ。
と思ったらリセットボタンあるのか。そちらの方がいいですね。
コメント4件

827
デフォルトの名無しさん[sage]   投稿日:2017/01/11 20:23:03  ID:1FwZUW9V.net(2)
VBAのスレなんだからこんなの教えんなよ…
コメント1件

828
デフォルトの名無しさん[sage]   投稿日:2017/01/11 22:54:27  ID:QIrTsKqr.net(4)
スレチ質問もスレチ回答も荒らし
コメント1件

829
デフォルトの名無しさん[sage]   投稿日:2017/01/11 23:23:15  ID:JMe0AUgT.net(2)
>90
まだこういう勘違いしている人がいるんだな・・
A1には2017/01/11と入ってるわけじゃない
42746という数字が入ってるだけ

830
デフォルトの名無しさん[sage]   投稿日:2017/01/12 05:41:59  ID:nMoQZoqt.net(2)
>109
なんだこのアホな回答

831
デフォルトの名無しさん[sage]   投稿日:2017/01/12 07:13:34  ID:0A4eRqXF.net(2)
>112
アスペ乙
コメント1件

832
デフォルトの名無しさん[sage]   投稿日:2017/01/12 08:41:15  ID:Lhyp+MOo.net(4)
>112
[A1].Valueが 2017/01/11 なのです。
コメント1件

833
デフォルトの名無しさん[sage]   投稿日:2017/01/12 09:48:23  ID:Rj8+4pg/.net(4)
[A1].Textじゃなくて?
コメント1件

834
デフォルトの名無しさん[sage]   投稿日:2017/01/12 11:56:09  ID:Cc5O9IhJ.net(2)
お前の会社のことはお前の会社でなんとかしろよ

835
デフォルトの名無しさん[sage]   投稿日:2017/01/12 12:29:26  ID:Lhyp+MOo.net(4)
>116
表示形式が yyyy/m/d だと Text は 2017/1/11
コメント1件

836
デフォルトの名無しさん[sage]   投稿日:2017/01/12 12:45:45  ID:6ppTquF5.net(2)
[A1].Value2と[A1].Formatが正常に定義されてるなら
あとはFormat関数で好きに取り出せるんじゃ無いかな
コメント1件

837
デフォルトの名無しさん[sage]   投稿日:2017/01/12 20:01:33  ID:6fAXJ0U3.net(2)
例え元のデータが何であっても「日付として解釈出来る形式」ならDate型に入れれば変換してくれるだろ。
コメント1件

838
デフォルトの名無しさん[]   投稿日:2017/01/12 20:07:33  ID:yR99XFwh.net(4)
で?っていう
コメント1件

839
デフォルトの名無しさん[sage]   投稿日:2017/01/12 20:39:27  ID:UE8PLb8+.net(2)
日付が数字で入ってるかどうかなんて質問に関係ないよな
コメント2件

840
デフォルトの名無しさん[sage]   投稿日:2017/01/12 20:42:03  ID:eBGwra53.net(4)
>122
型によって処理が変わると思うのだが

841
デフォルトの名無しさん[sage]   投稿日:2017/01/12 20:46:28  ID:UiBlAwbG.net(4)
>123
Date型の変数に入れれば日付になるじゃん
コメント1件

842
デフォルトの名無しさん[]   投稿日:2017/01/12 20:54:08  ID:yR99XFwh.net(4)
不勉強で申し訳ないが世に文字列以外のファイル名を採用したファイルシステムがあるのなら是非教えて頂きたい
コメント1件

843
デフォルトの名無しさん[sage]   投稿日:2017/01/12 21:08:16  ID:eBGwra53.net(4)
>124
例えば
2017/1/12
20170112
1/12/2017
シリアル値
全部同じになるっけ?

844
デフォルトの名無しさん[sage]   投稿日:2017/01/12 21:22:08  ID:UiBlAwbG.net(4)
>125
誰がそのまま使うって言ってんの
fileName = baseName & cStr(dte)
みたいな使い方するわけでしょ
>126
知らんけど表示形式が違うだけならなるんじゃねえの

845
デフォルトの名無しさん[sage]   投稿日:2017/01/12 22:11:57  ID:Mdtl8esZ.net(2)
じゃ無いかな くれるだろ 思う 知らんけど じゃねえの
もはや、妄想・空想・予想のスレッドに成り果てたか
盆、暮れ、正月ぐらいせめて少しは頭を休ませてろ

846
デフォルトの名無しさん[sage]   投稿日:2017/01/12 22:24:16  ID:URc2UNFw.net(4)
あいてるセルにファイル名を生成する関数つくって、そのセル参照させればいいだけじゃないのけ?

保存場所どこにするかによってはスペースは使えないが。
コメント2件

847
デフォルトの名無しさん[sage]   投稿日:2017/01/12 22:26:45  ID:VnxSw5mv.net(2)
>95で解決した話題がまだ続いてる
コメント1件

848
デフォルトの名無しさん[sage]   投稿日:2017/01/12 22:40:44  ID:URc2UNFw.net(4)
>130
そうなんだ・・・しつれいした
コメント1件

849
デフォルトの名無しさん[sage]   投稿日:2017/01/12 23:01:38  ID:Rj8+4pg/.net(4)
>125
大型機だとファイルには整数のID番号が付いてるだけでファイル名とは切り離されて管理されてるやつがあるな
だから同じ名前のファイルがいくつも作れてしまったりする
コメント1件

850
デフォルトの名無しさん[sage]   投稿日:2017/01/13 12:38:07  ID:XGAIFzZi.net(2)
Sheet1     Sheet2
A    B    A    B
東京  5    大阪   ○
大阪  4    福岡   ×
福岡  8    東京   ○

Sheet1
A    B   C
東京  5   ○
大阪  4   ○
福岡  8   ×

Sheet1のA列を軸にSheet2のB列の値を抽出する場合、
For〜 'Sheet1A列を順番に
 For〜 'Sheet2A列を順番に
  IF〜 'Sheet1C列に代入
 Next
Next
もしくは
For〜 'Sheet1A列を順番に
 Find.Row 'Sheet1A列の値を検索
 'Sheet1C列に代入
Next
どちらのほうが処理速度が向上しますか?

851
デフォルトの名無しさん[sage]   投稿日:2017/01/13 12:39:52  ID:xEiCBlzV.net(4)

852
デフォルトの名無しさん[sage]   投稿日:2017/01/13 12:43:08  ID:5NHpz1Ta.net(6)
>134
vlookup→配列に入れてif分岐→findの順番の早さ
findが遅いのは確か
コメント1件

853
デフォルトの名無しさん[sage]   投稿日:2017/01/13 12:58:05  ID:dokIsM4J.net(2)
>133
シートでsql
コメント1件

854
デフォルトの名無しさん[sage]   投稿日:2017/01/13 13:02:40  ID:5NHpz1Ta.net(6)
findが遅いって言ってもセルを直接参照して処理するよりは早い
コメント3件

855
デフォルトの名無しさん[sage]   投稿日:2017/01/13 13:15:44  ID:HxNmVQ/n.net(2)
>137
ってことは、後者のほうが速いということでしょうか?
コメント2件

856
デフォルトの名無しさん[sage]   投稿日:2017/01/13 13:24:35  ID:Pq7AWenX.net(2)
vlookup→配列に入れてif分岐→find→セルを直接参照してif分岐
コメント1件

857
デフォルトの名無しさん[sage]   投稿日:2017/01/13 13:32:41  ID:q4yhPByZ.net(4)
えっと、関数は使うつもりはありません
伝えてなくてすいません
コメント1件

858
デフォルトの名無しさん[sage]   投稿日:2017/01/13 13:33:30  ID:q4yhPByZ.net(4)
携帯回線のせいでIDがコロコロ変わる…
>133です
コメント1件

859
デフォルトの名無しさん[sage]   投稿日:2017/01/13 13:43:05  ID:xEiCBlzV.net(4)
>140
vbaにはWorksheetFunctionと言うクラスが用意されている
その中にvlookupと言うメソッドがあるのでそれを利用すればいかが?

これを使いたくないってことなら勘違いでごめんなさい
コメント1件

860
デフォルトの名無しさん[sage]   投稿日:2017/01/13 13:58:35  ID:5NHpz1Ta.net(6)
>138
OfficeTANAKA 高速化テクニックでググれば幸せになれるよ
コメント2件

861
デフォルトの名無しさん[sage]   投稿日:2017/01/13 17:01:55  ID:OhnPZwk7.net(2)
ジャパネット・・・

862
デフォルトの名無しさん[sage]   投稿日:2017/01/13 22:23:24  ID:N+jcCuX6.net(2)
ていうか何行あるんだよ。
少なければWorksheetFunction.Vlookupで十分。
多ければ、高速VlookupかSQL。

863
デフォルトの名無しさん[sage]   投稿日:2017/01/13 22:45:47  ID:IUqNU+pk.net(2)
Sub test()
Dim d, e
Set d = CreateObject("Scripting.Dictionary")
Set e = CreateObject("Scripting.Dictionary")

For Each x In Range(Sheet1.Cells(1, 1), Sheet1.Cells(Rows.Count, 1).End(xlUp))
If Not d.exists(x.Value) Then d.add x.Value, x.Offset(0, 1).Value
Next

For Each x In Range(Sheet2.Cells(1, 1), Sheet2.Cells(Rows.Count, 1).End(xlUp))
If Not e.exists(x.Value) Then e.add x.Value, x.Offset(0, 1).Value
Next

For Each x In d.keys
Debug.Print x & ":" & d(x) & ":" & e(x)
Next
End Sub

864
デフォルトの名無しさん[]   投稿日:2017/01/14 14:19:38  ID:eOx3RZdu.net(4)
以下を実現するexcel vbaの書き方を教えてください。
お願いします。

セルA1に aaa

865
デフォルトの名無しさん[]   投稿日:2017/01/14 14:20:50  ID:eOx3RZdu.net(4)
以下を実現するexcel vbaの書き方を教えてください。
お願いします。

セルA1に aaa"bbbb"cc
セルA2に a"dd"cccc
という文字列があるとき、
セルB1に bbbb
セルB2に dd
(それぞれ、" "で挟まれた文字列)を出力する。
コメント1件

866
デフォルトの名無しさん[sage]   投稿日:2017/01/14 14:28:13  ID:hMPeMSWC.net(2)
>148
split

867
デフォルトの名無しさん[sage]   投稿日:2017/01/14 14:36:22  ID:l+bXNSZh.net(2)
>148
Sub Macro1()
  [B1] = Split([A1], """")(1)
  [B2] = Split([A2], """")(1)
End Sub
コメント1件

868
デフォルトの名無しさん[sage]   投稿日:2017/01/14 14:59:32  ID:TCZ/fLWF.net(2)
>148
文字列関連の関数あらかた覚えなさい
難しくないから
コメント2件

869
デフォルトの名無しさん[sage]   投稿日:2017/01/15 11:53:32  ID:ncM8p+KA.net(2)
>145
高速vlookupって何?

870
デフォルトの名無しさん[sage]   投稿日:2017/01/15 12:46:48  ID:m2E/VbcR.net(4)
このスレのテンプレにOfficeTANAKA入れたら質問激減しそう
ってレベルの質問が来るとガクッと来る
コメント1件

871
デフォルトの名無しさん[sage]   投稿日:2017/01/15 14:21:19  ID:FqEOuXry.net(2)
ガクッと来るのも自由、回答したくないなら回答しないのも自由
レベルの制限をしてるわけじゃなし

872
デフォルトの名無しさん[sage]   投稿日:2017/01/15 14:36:53  ID:m2E/VbcR.net(4)
>154
まあそらそうなんだけども
ググった方が早くねって言うね
コメント1件

873
デフォルトの名無しさん[sage]   投稿日:2017/01/15 18:05:40  ID:trUVIHlw.net(2)
確かに「まずググれよ」と思う質問はたまにあるな。

検索の仕方も分からないような状態ならともかく、
このスレに書いてる単語を並べていけばたどり着くだろ的なのも多い。

ちゃんとしたサイトの方が図で説明してくれるから分かりやすいだろうし。
コメント1件

874
デフォルトの名無しさん[sage]   投稿日:2017/01/15 19:40:36  ID:1Rt+ERT2.net(2)
>152
検索対象を昇順ソート
      ↓
VLOOKUPで1列目の文字を近似値一致検索
(但しA:Aとかは駄目で、A1:A500とかにする)
      ↓
検索で引っかかった文字が、
検索値と完全一致なら、
再度VLOOKUPで近似値一致検索


正直、何でこれで速くなるのかわからんし、
普通のVLOOKUPの検索アルゴリズムも、
最初からそうしろよって思う。
コメント1件

875
デフォルトの名無しさん[sage]   投稿日:2017/01/15 21:24:21  ID:tflJaJ6v.net(2)
>157
とにかく完全一致検索が遅いから使いたくない、じゃどうするか
ってことなんででしょうね。

Office Tanakaの
http://officetanaka.net/excel/function/function/vlookup.htm
に「検索値が見つからないとき超えない最大値を返す仕様がとても助かる」とあるけど
検索値をはさむ[from, to]がわかるのが一番助かると思う。
(検索値が存在しない場合は、to < from)

876
デフォルトの名無しさん[sage]   投稿日:2017/01/16 02:21:21  ID:vCWbmiBt.net(2)
>157
完全一致だとデータがソートされてる保証が無いから全件検索必須
近似値指定だとデータがソートされてる前提だから効率的に探せる
そいう事だろ、たぶん
コメント3件

877
デフォルトの名無しさん[sage]   投稿日:2017/01/16 03:49:06  ID:L7GtxIZz.net(2)
二分検索木とか知らん馬鹿ばっか

878
デフォルトの名無しさん[sage]   投稿日:2017/01/16 05:39:23  ID:/FyYs0Da.net(2)
>160

馬鹿です。
Google先生に聞いたら「もしかして二分探索木?」と言われてしまいました。
これが高速Vlookupの原理?
WikiPediaで調べてみたのですがピンときません。
分かりやすい解説サイトでもあれば教えてください。
# 旧いMac(System7時代)のFileAllocationTableに B-Treeなんたら
というものがあったような、、関係あるのかな?

879
デフォルトの名無しさん[sage]   投稿日:2017/01/16 05:48:43  ID:K1gRWFXI.net(2)
ソート済のデータ検索なら バイナリサーチ(二分探索)じゃね?
コメント1件

880
デフォルトの名無しさん[sage]   投稿日:2017/01/16 07:22:24  ID:Zl2rcSDP.net(4)
>160
木構造にはなっていないのでは?
コメント1件

881
デフォルトの名無しさん[sage]   投稿日:2017/01/16 08:37:09  ID:6pMMhvrL.net(2)
>163
二分探索は別に木構造じゃなくても...
って書こうとしたら >160 は「二分検索木」って書いてたのか
まあ検索でも間違いじゃないだろうけどあまり使わないような気がするな
コメント2件

882
デフォルトの名無しさん[sage]   投稿日:2017/01/16 11:22:13  ID:q0YsoZyP.net(2)
ソート済の二分探索なら100個の時7回ループ、500個なら9回、100万個でも20回ループすれば終わるから
コメント1件

883
デフォルトの名無しさん[]   投稿日:2017/01/16 15:06:17  ID:CkU8X3ZM.net(2)
30もない俺のシートじゃ意味なさそうやな
コメント1件

884
デフォルトの名無しさん[sage]   投稿日:2017/01/16 23:26:54  ID:Py9dY2eU.net(2)
ソート済でも完全一致が遅いのは何故?
一致するのを見つけたら、それ以上探さないで次に行けば、
近似値でも同じことじゃないかと思うんだけど。

885
デフォルトの名無しさん[sage]   投稿日:2017/01/16 23:32:38  ID:Zl2rcSDP.net(4)
>167
ソート済かどうかなんてわからないから頭から舐めていく
コメント2件

886
デフォルトの名無しさん[sage]   投稿日:2017/01/17 00:13:17  ID:HvycQCZc.net(2)
>168
一致するのが複数あっても、
どうせ1番上の1個しか拾ってこないんだから、
見つかった時点でループ抜けりゃいいじゃんって事なんだけど。

近似値だと探し方が違うの?

887
デフォルトの名無しさん[sage]   投稿日:2017/01/17 00:17:50  ID:jzPK8o2C.net(6)
>169
いやだから頭から一つ一つ舐めていく必要があるかどうかの違い

888
デフォルトの名無しさん[sage]   投稿日:2017/01/17 00:26:02  ID:Upzxz6/t.net(6)
>170
近似値だと頭から見なくてよいのはなんで
具体的にどうやってると考えてるの
コメント1件

889
デフォルトの名無しさん[sage]   投稿日:2017/01/17 00:28:39  ID:jzPK8o2C.net(6)
>171
辞書で単語を引くときにやっているやり方さ
コメント1件

890
デフォルトの名無しさん[sage]   投稿日:2017/01/17 00:32:26  ID:Upzxz6/t.net(6)
>172
辞書を作るときは頭から見なくてよいの?
コメント1件

891
デフォルトの名無しさん[sage]   投稿日:2017/01/17 01:00:47  ID:035vzIzN.net(4)
>173
書籍としての辞書を利用するときをイメージするといいかも
まず視覚的に先頭文字の見出しの位置を開いて調べる
この感覚

近似値を利用する場合は「文末違うけどだいたいこんな感じだよね」って得るためより正確な情報を得るためにはソートする必要がある
完全一致だとそもそも一致していることが条件となるのでソートする必要がなくなる

正確に言うと異なると思うけどだいたいこんなイメージ

892
デフォルトの名無しさん[sage]   投稿日:2017/01/17 01:13:18  ID:mp4Rluyj.net(2)

893
デフォルトの名無しさん[sage]   投稿日:2017/01/17 06:36:26  ID:Upzxz6/t.net(6)
>174
完全一致でも昇順に並べられていることを前提とすれば辞書方式が使えると思うけどな
コメント1件

894
デフォルトの名無しさん[sage]   投稿日:2017/01/17 07:13:51  ID:jzPK8o2C.net(6)
>176
使えるが そういう仕様に なってない
コメント1件

895
デフォルトの名無しさん[sage]   投稿日:2017/01/17 09:11:54  ID:035vzIzN.net(4)
個人的には完全一致の場合ソート不要って仕様はありがたい

896
デフォルトの名無しさん[sage]   投稿日:2017/01/17 19:24:38  ID:gxb7F/t0.net(2)
>175

いろいろ勉強になりました。
十数年、vlookupは特殊な場合を除いて完全一致で使うものだと思っていました。
数十万のvlookupをかけて3時間ぐらい帰ってこないような処理をしたことがあり
いま考えると無謀だったなと、、

897
デフォルトの名無しさん[]   投稿日:2017/01/17 20:31:05  ID:EPmzwVho.net(6)
xml文を読み込んで階層、パラメータ名、設定値を求めるvbaの書き方がわかりません。
どなたか教えてくださいお願いします。

イメージ図:
http://www.dotup.org/uploda/www.dotup.org1127385.jpg
I1にXML文、A〜G列の1-2行目がある状態でVBAを実行すると、
A〜G列の3行目から下が出力されるイメージです。
XML文全体は約500行のものが複数、どれも階層は4以下です。

以上、よろしくお願いします。

898
デフォルトの名無しさん[sage]   投稿日:2017/01/17 21:21:06  ID:pDqJREhG.net(4)

899
デフォルトの名無しさん[sage]   投稿日:2017/01/17 21:22:53  ID:UOrZs7iT.net(2)
>180
ノード名もパラメーターとして出す(イメージ図で言う太字の箇所)
で良いのかい?

あと、階層の各列には同じ数値しか入らない
で良いのかい?

これを求めているのなら求めているで構わないけど得られる結果をまた精査することになると思う
コメント2件

900
デフォルトの名無しさん[sage]   投稿日:2017/01/17 21:47:24  ID:pDqJREhG.net(4)
>180
あと出力順が
1
 2
  3
  3
  3
のようになってるけど
1
 2
  3
  3
 2
  3
つまり Subject が2回出力されるんじゃダメ?
コメント1件

901
デフォルトの名無しさん[]   投稿日:2017/01/17 21:49:25  ID:EPmzwVho.net(6)
>181
ありがとう。
実はこのサイトとかを参考に試行錯誤したがうまくできくてここで尋ねたんだ。

>182
はい、おっしゃる通り
・ノード名もパラメータとして(太字で)出す。
・階層の各列には同じ数字しか入らない。B列は空白か1か、C列は空白か2、・・・。
です。

902
デフォルトの名無しさん[]   投稿日:2017/01/17 21:53:52  ID:EPmzwVho.net(6)
>183
1
 2
  3
  3
 2
  3
のようにSubjectを2回出力するのだとだめです、申し訳ない。
これも、1人でできない原因の一つです。
許されたらfor文で各行に対してsplitとか使えばなんとかなりそうだけど・・・
コメント1件

903
デフォルトの名無しさん[sage]   投稿日:2017/01/17 23:53:22  ID:HYIsieSI.net(4)
>185
その場合
&lt;xxx ...>
 <...>
 <...>
</xxx>
<yyy ...>
 <...>
 <...>
</yyy>
<xxx ...>
 <...>
 <...>
</xxx>
の場合はどのように出力するの?
タグ名毎に集約するの?
コメント1件

904
デフォルトの名無しさん[sage]   投稿日:2017/01/17 23:55:02  ID:HYIsieSI.net(4)
最初が化けた...
<xxx ...>
 <...>
 <...>
</xxx>
<yyy ...>
 <...>
 <...>
</yyy>
<xxx ...>
 <...>
 <...>
</xxx>
のケースね。
コメント1件

905
デフォルトの名無しさん[]   投稿日:2017/01/18 00:16:31  ID:P2ujaP/J.net(14)
>187
はい、そのケースではタグ名毎に集約します。つまり、
<xxx ...>
<...>←yの上の1行目
<...>←yの上の2行目
<...>←yの下の1行目
<...>←yの下の2行目
</xxx>
<yyy ...>
<...>
<...>
</yyy>
と同値とみなします。(Fの列にyyyが1つだけ出る)

ただし、
<xxx ...>
<yyy ...>
</yyy>
</xxx>
<zzz ...>
<yyy ...>
</yyy>
</zzz>
のように階層が異なったり、一つは<xxx>,もう一つは<zzz>の下にあるような場合は、
<xxx>の下の<yyy>と<zzz>の下の<zzz>は別のものとして扱います。(Fの列にyyyが複数出る)
コメント1件

906
デフォルトの名無しさん[sage]   投稿日:2017/01/18 07:02:26  ID:KfZHaLf7.net(2)
>188
<xxx ...>
<yyy ...> -- (1)
</yyy>
</xxx>
<zzz ...>
<yyy ...> -- (2)
</yyy>
</zzz>
<xxx ...>
<yyy ...> -- (3)
</yyy>
</xxx>
のケースで (1) と (3) も集約するの?
たぶん xml からの読み込みと集約処理を分けた方がいいと思う。

907
デフォルトの名無しさん[]   投稿日:2017/01/18 08:46:32  ID:dxlKDUod.net(2)
>189
携帯から失礼します。
はい、その場合も集約します。

具体的にはどんなコードで書いたらよろしいですかね。

908
デフォルトの名無しさん[]   投稿日:2017/01/18 10:08:50  ID:nvWV6Cl1.net(2)

909
デフォルトの名無しさん[sage]   投稿日:2017/01/18 10:46:36  ID:mepmwC6J.net(2)
Dictionaryの配列で書けるでしょ
コメント1件

910
デフォルトの名無しさん[sage]   投稿日:2017/01/18 12:19:13  ID:zXM8oXoh.net(10)
なんで、XMLParser を自分で作るの?

Groovy とかで、すぐに出来るだろ
コメント1件

911
デフォルトの名無しさん[sage]   投稿日:2017/01/18 12:35:52  ID:4FnlBNL6.net(2)
>193
すぐw
じゃあ書いてみろよ
コメント1件

912
デフォルトの名無しさん[sage]   投稿日:2017/01/18 12:38:39  ID:NBGHKSlQ.net(2)
さすがに MSHTML.HTMLDocument オブジェクトとかは使うんだろうと思っていたが違うのかな?

913
デフォルトの名無しさん[sage]   投稿日:2017/01/18 12:54:48  ID:Fv9px6Lv.net(4)
特定のセルが書式を設定されてるかどうかの判定ってどうすればいいでしょうか?
例えば文字が入ってなくても色や太さが設定されてるとか
コメント1件

914
デフォルトの名無しさん[sage]   投稿日:2017/01/18 13:04:49  ID:UZ6KtMVe.net(4)
>196
普通にセルのプロパティで取得すればいいんでない

915
デフォルトの名無しさん[sage]   投稿日:2017/01/18 13:07:57  ID:Fv9px6Lv.net(4)
>197
If Range("A1").Value="" Then
でいけますか?
コメント1件

916
デフォルトの名無しさん[sage]   投稿日:2017/01/18 13:25:21  ID:UZ6KtMVe.net(4)
>198
forecolorとかbackcolorとかだよ
オブジェクトブラウザでcells調べてみ?
コメント1件

917
デフォルトの名無しさん[sage]   投稿日:2017/01/18 15:02:26  ID:zXM8oXoh.net(10)
Groovyでは、
def root = new XmlParser().parse("ファイル名.xml")

root.タグ名.each{
println it.text()
ここで処理する
}

it は、イタレータから渡ってくる、暗黙の要素を指す
コメント1件

918
デフォルトの名無しさん[sage]   投稿日:2017/01/18 17:11:44  ID:XrR2JBi4.net(2)
>180
そもそも、なんでExcelに展開しようとしてるんだ?
それが最終目的か?

あと、自分でどこまでできたのか書いてくれ。

919
デフォルトの名無しさん[sage]   投稿日:2017/01/18 17:46:16  ID:WZOpQPDJ.net(4)
http://smilejapan.net/wiki/index.php?VBA%20XMLデータをDOMで扱う方法

XML関連

920
デフォルトの名無しさん[sage]   投稿日:2017/01/18 19:44:31  ID:zXM8oXoh.net(10)
<Subject japanese="kokugo">
<Subject math="sugaku">

1回目の<Subject>の際、japanese, math の、2つが取れているのは、Traverse の幅優先探索か?
普通は、深さ優先探索だけど

様々な言語を見たけど、日本語のサイトで、Traverse の処理を書いているサイトは、ほとんどない。
どないなっとんねん?

921
デフォルトの名無しさん[]   投稿日:2017/01/18 20:09:10  ID:P2ujaP/J.net(14)
>201
Excelに展開するのが最終目的であってます。
現在自分ではこのような状況・・・

DOMとかわからなくて挫折。xml文の各行をfor文で回してやっている。

【できたこと】
各行のXML文がどの階層についての話か調べる
階層 = (各行の<の前にある空白)×1のため、InStr("各行のXML文","<")-1で求めた。

【できないこと】
パラメータ名と設定値の抜出。
設定値に関してはsplit関数でできるかなと思ったが、
パラメータ名は「空白と=」や「<と空白」等で何で囲まれているかが異なっており、どうすればよいかわからない。

簡単に言うと、
I2:「 <examType first="zenki/shiken" second="koki/shiken" third="">」
とあるとき、
examTypeをF3、firstをF4、secondをF5、thirdをF6、
"zenki/shiken"をG4、"koki/shiken"をG5、""をG6に出す方法がわからない。

922
デフォルトの名無しさん[sage]   投稿日:2017/01/18 20:17:32  ID:WZOpQPDJ.net(4)
xmlファイルをhtmlとして読み込めばいいんじゃね
でgetelementsbytagname()とかつかう
コメント1件

923
デフォルトの名無しさん[sage]   投稿日:2017/01/18 20:26:10  ID:9qUMY5Wm.net(2)
>204
馬鹿過ぎて話しにならない。
馬鹿に無理。
コメント1件

924
デフォルトの名無しさん[sage]   投稿日:2017/01/18 20:47:34  ID:IDSE4GPa.net(2)

925
デフォルトの名無しさん[sage]   投稿日:2017/01/18 21:15:38  ID:zXM8oXoh.net(10)
XML Parserは、jQuery, Groovy, Python, Ruby など、何にでもある

ただ、traverse の説明が、日本語のサイトでは見当たらない。
深さ優先ではなく、幅優先探索だろ?
コメント2件

926
デフォルトの名無しさん[sage]   投稿日:2017/01/18 21:22:46  ID:uheDDMMj.net(12)
>204
DOMじゃないと結構つらいかもよ 出来ん事はないけどね DOM勉強する気があるなら サンプル上げとくよ

DOM+再帰処理してるので詳細はググってねw
あと何階層でも良いのだけれど シートが4階層までしか用意されてないので 4階層に制限してます

'Microsoft XML v3.0 を参照設定
Sub main()
 Dim XMLDoc As MSXML2.DOMDocument
 Dim Row As Long
 Dim No As Long
 Row = 3 'シートに書き込む最初の行位置
 No = 1
 Set XMLDoc = New MSXML2.DOMDocument
 XMLDoc.Load "D:\XML.txt" 'XMLファイルを読み込む
 Call ListXml(XMLDoc.ChildNodes(1), Row, No, 1)
 Cells(Row, "G").Value = "FINISH"
End Sub

Sub ListXml(ByRef Node As IXMLDOMNode, ByRef Row, ByRef No, ByVal Level)
 Dim NodeList As IXMLDOMNodeList
 Dim Node1 As IXMLDOMNode
 Dim Node2 As IXMLDOMNode
 Dim NodeAttr As IXMLDOMAttribute
 'ノード名表示
 Cells(Row, "A").Value = No
 Cells(Row, "B").Offset(0, Level - 1).Value = Level
 Cells(Row, "F").Value = Node.nodeName
 Cells(Row, "G").Value = "-"
 Row = Row + 1
 No = No + 1

927
209[sage]   投稿日:2017/01/18 21:23:19  ID:uheDDMMj.net(12)
'続き
 'ノードパラメータ表示
 For Each NodeAttr In Node.Attributes
  Cells(Row, "A").Value = No
  Cells(Row, "F").Value = NodeAttr.Name
  Cells(Row, "G").Value = NodeAttr.Value
  Row = Row + 1
  No = No + 1
 Next
 '階層制限
 If Level = 4 Then Exit Sub

 '同じ名前の子ノードを 最初の一つに集約
 For Each Node1 In Node.ChildNodes
   Do
     Set NodeList = Node1.ParentNode.SelectNodes(Node1.nodeName)
     If NodeList.Length = 1 Then Exit Do
     For Each Node2 In NodeList(1).ChildNodes
       NodeList(0).appendChild Node2
     Next
     Node1.ParentNode.RemoveChild NodeList(1)
   Loop
 Next
 '子ノード処理(再帰)
 For Each Node1 In Node.ChildNodes
   Call ListXml(Node1, Row, No, Level + 1)
 Next
End Sub
コメント1件

928
デフォルトの名無しさん[sage]   投稿日:2017/01/18 21:25:28  ID:zXM8oXoh.net(10)
XML Parserは、jQuery, Groovy, Python, Ruby など、何にでもある

ただ、traverse の説明が、日本語のサイトでは見当たらない。
深さ優先ではなく、幅優先探索だろ?

Java
http://www.technotype.net/tutorial/tutorial.php?fileId=%7BDOM%7D&;sectionId=%7Btraversing-the-node-tree%7D

子ノードリストを取得
NodeList list = parentNode.getChildNodes();

要素に従属する属性リストを取得
NamedNodeMap map = elementNode.getAttributes();

最悪、traverse 関数内で、traverse・自分自身を呼ぶ、再帰的な処理を作る。
traverse 関数が最初からあれば、もっと簡単。
それに幅優先探索を指定する

929
デフォルトの名無しさん[]   投稿日:2017/01/18 21:56:11  ID:P2ujaP/J.net(14)
>210
ありがとう。
実際やってみたらA3とB3に1が出力されて、
オブジェクト変数またはWithブロック変数が設定されていません
と言われました。どうしてだろ。。。

>211
はい、幅優先探索です。
ありがとうございます。transverseについてちょっと調べてみます。
コメント2件

930
デフォルトの名無しさん[sage]   投稿日:2017/01/18 22:00:58  ID:uheDDMMj.net(12)
>212
XML規則に則ってる?
あと ノード名(タグ名?)は 大文字小文字 区別するぜ

どっか XMLファイルUP出来ない?
コメント3件

931
デフォルトの名無しさん[sage]   投稿日:2017/01/18 22:08:43  ID:uheDDMMj.net(12)
>212
もしかして↓このまま? 実際のXMLファイル名に修正してよね

XMLDoc.Load "D:\XML.txt" 'XMLファイルを読み込む

932
デフォルトの名無しさん[]   投稿日:2017/01/18 22:12:35  ID:P2ujaP/J.net(14)
>213
実際のXMLファイル名とそのパスにしています。
XML.txtの中身は以下の通りです。
<?xml version="1.0" encoding="UTF-8">
<examType first="zenki/shiken" second="koki/shiken" third="">
<Subject japanese="kokugo">
<Gendaibun min="50/100" max="85/100" />
<Kobun min="60/100" max="100/100" />
</Subject>
<Subject math="sugaku">
<IA min="30/100" max="80/100">
</IA>
</Subject>
</examType>

933
デフォルトの名無しさん[sage]   投稿日:2017/01/18 22:29:42  ID:uheDDMMj.net(12)
>215
XML読み込み失敗してるね

※XMLファイル修正(最後に?がない)
× <?xml version="1.0" encoding="UTF-8">
○ <?xml version="1.0" encoding="UTF-8"?>

※コード修正(読み込みエラーでたらMSGBOX)
XMLDoc.Load "D:\XML.txt" 'XMLファイルを読み込む
If XMLDoc.parseError.ErrorCode <> 0 Then
MsgBox XMLDoc.parseError.reason
Exit Sub
End If
コメント1件

934
デフォルトの名無しさん[sage]   投稿日:2017/01/18 22:30:45  ID:vXs3og/7.net(2)
アドインのデータはどこに保存するのが標準的なの?
シートだと階層構造のデータを保存しにくいからxmlファイルにして保存したい
コメント1件

935
デフォルトの名無しさん[]   投稿日:2017/01/18 22:41:40  ID:P2ujaP/J.net(14)
>216
ありがとうございます。エラーはなくなりました。
ただ1つ問題が・・・
math,sugakuを読み込んでいない。8行目と9行目の間に入れたいのですが。

実行画面結果は以下のようになりました
http://www.dotup.org/uploda/www.dotup.org1128435.jpg
コメント1件

936
デフォルトの名無しさん[sage]   投稿日:2017/01/18 22:50:58  ID:uheDDMMj.net(12)
>218
'同じ名前の子ノードを 最初の一つに集約
で集約してるからそうなるが(その下は移動してる)

前からの レスで集約するって言ってたんじゃない?

'同じ名前の子ノードを 最初の一つに集約
の(FOR〜NEXT)部分ざっくり削除してみ
コメント1件

937
デフォルトの名無しさん[]   投稿日:2017/01/18 23:09:44  ID:P2ujaP/J.net(14)
>219
あー、申し訳ない。
7行目のSubjectの下に、japaneseとmathをまとめて出力するという意味で使ってしまっていました。

938
デフォルトの名無しさん[]   投稿日:2017/01/18 23:20:05  ID:P2ujaP/J.net(14)
まとめて=8行目にjapanese,9行目にmath
という意味です
コメント1件

939
デフォルトの名無しさん[sage]   投稿日:2017/01/19 00:09:17  ID:wXKnExNu.net(2)
>221
こゆう事かな?(同じパラメータは 最後のに置き換えられるよ)
下をそっくり入れ替えて

 '同じ名前の子ノードを 最初の一つに集約
 For Each Node1 In Node.ChildNodes
  Do
     Set NodeList = Node1.ParentNode.SelectNodes(Node1.nodeName)
     If NodeList.Length = 1 Then Exit Do
     For Each Node2 In NodeList(1).ChildNodes
       NodeList(0).appendChild Node2
     Next
     'パラメータコピー
     For Each NodeAttr In NodeList(1).Attributes
      NodeList(0).Attributes.setNamedItem NodeAttr.CloneNode(True)
     Next
     Node1.ParentNode.RemoveChild NodeList(1)
  Loop
 Next
コメント1件

940
デフォルトの名無しさん[sage]   投稿日:2017/01/19 00:38:26  ID:qjpOvOJu.net(4)
ここまで来ると、もうわけがわからんな。
プログラムでプログラム文を自動生成します、みたいな話だろ?

941
デフォルトの名無しさん[sage]   投稿日:2017/01/19 05:02:36  ID:WDgxZeys.net(2)
何かの言語には、自動的に、traverse する関数があるはず。
または既に、外人が作って、Gitにあるはず。
日本のサイトで探しても、見つからない

それに、深さ優先探索か幅優先探索を指定する

Pythonのwalkは、あるディレクトリ以下の階層を渡り歩く。
つまり、それのXML版だろ

ディレクトリもXMLも、Tree だから、基本的には同じ
コメント3件

942
デフォルトの名無しさん[sage]   投稿日:2017/01/19 06:58:46  ID:JadLiFtg.net(2)
>217
> シートだと階層構造のデータを保存しにくいからxmlファイルにして保存したい
XML 文字列ををセルとかブックのプロパティとかに入れときゃいいだけじゃないの?

943
デフォルトの名無しさん[]   投稿日:2017/01/19 07:34:02  ID:R0f6tJX+.net(4)
>>222
できたああああああああああああ
ありがとうございます!
罫線やノード名の一部を太字にするなど微修正は自分でできました。

皆様ありがとうございました。
コメント1件

944
デフォルトの名無しさん[sage]   投稿日:2017/01/19 12:16:13  ID:SpG+j8gZ.net(2)
   A  B
1 山田 10:50
2 山田 11:50
3 山田 4:50

山田の時間(B列)を1行目から順番に変数(a)に代入して合計を計算して、
Application.Floor(a + TimeValue("0:30"), TimeValue("1:00"))で
30分繰り上げ(例えば1:30の場合2:00に繰り上げ)しているのですが、
総計が24時間を超えると"1900/1/1  28:00"と日付が入り、表示形式がおかしくなってしまいます。
繰り上げのコードが間違っているのでしょうか?

945
デフォルトの名無しさん[sage]   投稿日:2017/01/19 12:21:46  ID:4RX8xFF/.net(2)

946
デフォルトの名無しさん[sage]   投稿日:2017/01/19 12:47:27  ID:ZXvOrtNX.net(2)
>228
解決しました
ありがとうございます
コメント2件

947
デフォルトの名無しさん[]   投稿日:2017/01/19 15:08:53  ID:SN1gevnS.net(2)
初質問です!
エクセルにはブック共有状態で変更履歴記録機能があり、新しいシートに変更履歴一覧を作成できると思います。
そこで、VBAで変更期間「すべて」で「新しいシートに変更履歴一覧を作成」の操作をしたいのですが可能でしょうか?
大量のドキュメントの変更履歴を取りたいので、マクロ化したいのが目的です。
可能であればやり方を教えていただきたいです。よろしくお願い致します。

948
デフォルトの名無しさん[sage]   投稿日:2017/01/19 15:37:44  ID:irXhj7sG.net(4)
>230
とりあえずマクロの記録を試してみたら?
コメント1件

949
デフォルトの名無しさん[sage]   投稿日:2017/01/19 15:50:51  ID:9G0IwAcw.net(2)
>217
これは俺も知りたいc++だとxmlに書いてるのよく見るけどvbaはどうなんだ
コメント1件

950
デフォルトの名無しさん[sage]   投稿日:2017/01/19 18:24:05  ID:xZWyIIjd.net(2)
Cell Property の .Valueと.Textでは取得のパフォーマンスに
大きな差があるようですがこんなものですか。
7万レコードのセル値取得に使ったのですが、前者は0.3秒ほど
後者は130秒かかりました。
上のほうのレスで .Textを見つけて喜んで使ってみたのですが、、

951
デフォルトの名無しさん[sage]   投稿日:2017/01/19 20:17:42  ID:irXhj7sG.net(4)
>233
Textの方は書式を評価しないといけないからそんなものじゃね?

952
デフォルトの名無しさん[]   投稿日:2017/01/19 20:23:44  ID:R0f6tJX+.net(4)

953
デフォルトの名無しさん[sage]   投稿日:2017/01/19 21:13:36  ID:9zfnUwsN.net(2)
>234
なるほど
.Valueで取得してから書式あてた方が無難ですね

954
デフォルトの名無しさん[sage]   投稿日:2017/01/19 23:40:16  ID:qjpOvOJu.net(4)
マジか!!
Valueで取得しようとすると、
#N/Aでコケるから、ずっとText使ってたわ!

ん?
でも0.3秒と130秒って違い過ぎじゃないか?
0.3秒なんて、For Nextじゃ取れないと思うが。
a=Range("A1:A70000").Valueとかじゃないと。
コメント3件

955
デフォルトの名無しさん[sage]   投稿日:2017/01/20 04:41:52  ID:9/J9Uge2.net(4)
>237
そう言われると、、あらためて追試。
試したコードはこんな感じ。

Cells(1, 1).Resize(70000, 1).Select

  '------------------------------
st = Timer
For Each r In Selection
var = r.Value
Next
ed = Timer
Debug.Print "by .Value", ed - st; "[Sec]"

  '------------------------------
st = Timer
For Each r In Selection
var = r.Text
Next
ed = Timer
Debug.Print "by .Text", ed - st; "[Sec]"

セルには[1-70000]のシーケンシャルな数値を格納
これの書式なしと書式あり"[h]:mm"を試しました。
(続く)

956
デフォルトの名無しさん[sage]   投稿日:2017/01/20 04:43:33  ID:9/J9Uge2.net(4)
>237

(続き)

結果、、
---------------------------------------------
by .Value 0.1855469 [Sec]
by .Text 1.241211 [Sec]
by .Value (Formatted) 0.1806641 [Sec]
by .Text (Formatted) 1.569336 [Sec]
---------------------------------------------

結果、差はあるものの、日中にテストしたものほど
は差がでませんでした。
日中のデータで再度試した結果です。
---------------------------------------------
by .Value (Formatted) 0.2011719 [Sec]
by .Text (Formatted) 99.20215 [Sec]
---------------------------------------------

他の要因もあるかもしれません。
実際のデータはOracleからSQLで引っ張ってきた
テーブルを.Unlistしたもので、70000行x130列ほど
の大きさ。これのV列あたりにある "hh:mm"書式が
当たっているというものです。
自動再計算はOffです。

957
デフォルトの名無しさん[]   投稿日:2017/01/20 11:00:31  ID:32Bwzd9P.net(2)
VBA初歩的です。
シート1のA列で文字列の色を変えてその後A列に同じ文字列が書き込まれたら同じ色に変えたいんです。
そして出来たらシート2のA列の同じ文字列も同じ色にしたいんです。
誰かコード分かる方いますでしょうか?

958
デフォルトの名無しさん[sage]   投稿日:2017/01/20 13:04:58  ID:nnKMBoVD.net(2)
>240
スマホから書き込もうと思ったら案外大変で諦めた

A列の重複を排除したリストを作成(配列、コレクション等)
リストとA列を比較して色を指定
で行けるんだけど、何がわからんのか
文字列の種類は不定なのか固定なのか、色に指定はあるのかなど情報も少ない
コメント1件

959
デフォルトの名無しさん[sage]   投稿日:2017/01/20 13:05:01  ID:JXdqXSkU.net(2)
初歩的?
自分でマクロの記録で調べろよ

960
デフォルトの名無しさん[sage]   投稿日:2017/01/20 14:58:10  ID:Nvso2zBq.net(2)
質問じゃなくてタダで作ってくれって言ってるんやで

961
デフォルトの名無しさん[sage]   投稿日:2017/01/20 16:54:43  ID:bVBZQrA4.net(4)
失礼します
学校でgoogle financeのapiを利用したのを作成しているのですが
A列の証券コードの羅列を読み取りURLに追加しJSONのティックデータを取得するところまでは
行けたのですが、どうやって個々にパースすればいいかわかりません、生データを取得するまでのコードは以下
Dim W As Worksheet: Set W = ActiveSheet
Dim i As Integer
Dim Last As Integer
Last = W.Range(
コメント1件

962
デフォルトの名無しさん[sage]   投稿日:2017/01/20 16:59:50  ID:bVBZQrA4.net(4)
うまく書き込めなかったようです
取得したでーたは下のurlの通りです
https://finance.google.com/finance/info?client=ig&;q=TYO:1332,1515,1925,7203,8058,8766,8801,9501,1954,1973,2928,2172,7980,6656,9085,5998,4556,1381,1400,1382,1739,2173,2351,7464,1734,7958,1736,2425,6960,2121


とずっと続いています
これを個々にパースしてセルごとに振り分けたいのですが
個々にパースするにはどのようにすればいいかわかりません
誰か助けてください

963
デフォルトの名無しさん[sage]   投稿日:2017/01/20 17:12:18  ID:gQ8iElJX.net(2)
>244
"vba json パース"でググる

964
デフォルトの名無しさん[]   投稿日:2017/01/20 18:21:41  ID:FuK3VNeE.net(2)
>240
在日か?日本語不自由そうだな

965
デフォルトの名無しさん[]   投稿日:2017/01/20 18:33:30  ID:Zm/Pjw4E.net(2)
すいません楽天rss使ってるのですが
vbaからセルに10銘柄程コードを入れても頻繁にすべてN/Aと出てしまうのです
接続が切れてるわけではなく、例えばexcelの上書き保存をクリックするとN/Aが
消えてすべて表示されるのです

vbaでは画面の更新は切ってないのですが原因は考えられますか?
コメント1件

966
デフォルトの名無しさん[sage]   投稿日:2017/01/20 19:25:28  ID:gGEm4cbB.net(2)
VBAでWebAPI叩きたくなる気持ちが理解できない
PowerShellやC#やVB.NETじゃダメだったのか

967
デフォルトの名無しさん[sage]   投稿日:2017/01/20 20:22:24  ID:ymDflbNb.net(2)
>249
結果を Excel で処理したいんだろ
なら VBA が一番自然だわな
ただ言語としての機能がいまいちだから俺なら PowerShell で取得して Excel に書き込むかな
コメント1件

968
デフォルトの名無しさん[sage]   投稿日:2017/01/20 20:58:17  ID:mJKyjGCe.net(2)
>249
いや、いいんじゃないか?
ただスレチになるから
そういう話は.Netのスレでやればいいだけで

969
デフォルトの名無しさん[sage]   投稿日:2017/01/20 21:08:26  ID:MJq7L3EO.net(2)
https://www.google.com/finance/getprices?p=1d&;f=d,h,o,l,c,v&i=300&x=INDEXNIKKEI&q=NI225
これ?
DATA_SESSIONS はjsonの配列表記っぽいけど、データ部は単なるカンマ区切りのような(他も改行区切りだしjsonじゃないような)

.NETもjsonのパースにはNuGetが必要じゃなかったっけ(なんかDLLが増えるのが嫌で自力パースしたことある)
PowerShellはjsonのパースもできるのか
コメント1件

970
デフォルトの名無しさん[sage]   投稿日:2017/01/20 21:31:05  ID:z3TtdYe7.net(2)
>249
えくせるしかないなら仕方ない

971
デフォルトの名無しさん[sage]   投稿日:2017/01/20 22:33:30  ID:vub4eIsV.net(2)
>249
それは本職プログラマーの発想だろうな。
事務職プログラマーは、VBAが一番いいの。
普段からエクセル使ってるから。

972
デフォルトの名無しさん[sage]   投稿日:2017/01/20 22:47:39  ID:RRdjAoJX.net(2)
VBA使うなとは言わないけど
もうちょっとPSや.NETとの連携が楽になれば助かるね
コメント4件

973
デフォルトの名無しさん[]   投稿日:2017/01/20 23:00:24  ID:v0MXJAlx.net(2)
VBA自体更新か新たな言語にしてほしいな
コメント1件

974
デフォルトの名無しさん[sage]   投稿日:2017/01/20 23:58:46  ID:0ryOpRhF.net(2)
理想を言えば C# for Application にしてくれればとは思う
まあ VB.Net for Application でもいいけど

975
デフォルトの名無しさん[sage]   投稿日:2017/01/21 00:17:22  ID:O6MYDtgM.net(2)
vbaが.netと楽しくできないのはmacのせいじゃね?

976
デフォルトの名無しさん[]   投稿日:2017/01/21 00:37:57  ID:7WDSmlh4.net(8)
ExcelのVBAからOutlookのメール作成のツールを作っているのですが
送信先やCCやタイトルや本文は書くことができました。
しかし本文のある部分を好きな色にしたり好きなフォントにしたり好きなサイズにしたりハイパーリンクをつけたいんです。
そのためにはどうすればいいでしょうか?

977
デフォルトの名無しさん[sage]   投稿日:2017/01/21 08:04:31  ID:6NvQGvfC.net(2)
>244-245
2chのバグだろう

書き込み確認画面が出る際、" を使うと、そこで文字列の終了とみなされる。
" の代わりに、\" とエスケープすれば、どうだろう?

それか、書き込み確認画面が出たら、1度キャンセルすれば、確認画面は出ないようになった
コメント3件

978
デフォルトの名無しさん[sage]   投稿日:2017/01/21 09:24:23  ID:W/Qp5igc.net(2)
>244
↓のサイトを参考にして作ってみたら?
http://outofmem.tumblr.com/post/63355773212/vbavbaでjsonをパースする

ざっくり 作って見たけど なんとかなりそうよ
学校の課題らしいからこの辺で
では

979
デフォルトの名無しさん[sage]   投稿日:2017/01/21 10:17:45  ID:W/zpHkC+.net(2)
Jsonは構造がシンプルだからパーサー書くのも難しくない
学生なら勉強として書いてみる価値はある

980
デフォルトの名無しさん[sage]   投稿日:2017/01/21 11:18:37  ID:1cIKmUbZ.net(6)
>259
HTML でやるならここのサンプル
https://msdn.microsoft.com/ja-jp/library/office/ff869979.aspx

リッチテキストでやるならフォーマットを RTF に設定して RTFBody に設定すればいい
https://msdn.microsoft.com/ja-jp/library/office/ff867828.aspx

981
デフォルトの名無しさん[]   投稿日:2017/01/21 11:23:47  ID:7WDSmlh4.net(8)
>263
ありがとうザマス。
やってみるでガンス。
コメント1件

982
デフォルトの名無しさん[]   投稿日:2017/01/21 11:27:24  ID:7WDSmlh4.net(8)
あとこれも頻繁に使う予定ですが
Outlookのカレンダー(おそらく型はolAppointmentItemでしょう)の本文でも
本文のある部分を好きな色にしたり好きなフォントにしたり好きなサイズにしたりハイパーリンクをつけるにはどうすればいいでしょう?
ちょっと調べるとBodyFormatプロパティやHTMLBodyプロパティはなさそうですが。
コメント1件

983
デフォルトの名無しさん[sage]   投稿日:2017/01/21 11:44:27  ID:1cIKmUbZ.net(6)

984
デフォルトの名無しさん[]   投稿日:2017/01/21 12:01:08  ID:7WDSmlh4.net(8)
>266
わたしのOffice2007のバージョンのOutlookにはRTFBodyプロパティは無いようなのですが。
http://www.dotup.org/uploda/www.dotup.org1130546.png

でもOffice2007でもカレンダーの本文のある部分に手動で装飾ができるのでマクロでもできるはずだと思います。
どうすればいいのでしょうか?

985
デフォルトの名無しさん[sage]   投稿日:2017/01/21 13:22:18  ID:JwMYXArD.net(2)
どっちかというと.NETがおかしいんだけどね
全部用意してやるからActiveXやWin32APIを使うなと言わんばかりの不便さ
言語の内部にない機能を外から持ってくるからオープン系と言うんだと思ってたけど
コメント1件

986
デフォルトの名無しさん[sage]   投稿日:2017/01/21 13:57:11  ID:1cIKmUbZ.net(6)
>267
う〜ん、ないなら無理っぽいかと
> でもOffice2007でもカレンダーの本文のある部分に手動で装飾ができるのでマクロでもできるはずだと思います。
アプリの機能の全てをマクロでサポートしてるとは限らんし...

987
デフォルトの名無しさん[sage]   投稿日:2017/01/22 18:24:33  ID:dK0oU8+I.net(4)
初心者の質問ですみません。
仕事で各部署から大量に写真が来て、部署毎の名前のフォルダに連番ファイルで保存しているのですが、
フォルダの最後のファイルだけピックアップする必要ができてしまいどうにも困っています。
Excelのマクロを使えばどうにかなりそうだとは思うのですが、どなたかお知恵を貸していただけないでしょうか?

例)
c:\営業一課\営業一課00001.jpg 〜営業一課00060.jpg
c:\資材課\資材課00001.jpg 〜 資材課00020.jpg
c:\物流課\物流課00001.jpg 〜 物流課00120.jpg

等、ファイル名は[フォルダ名 + 5桁の数字]。5桁の数字は00001から始まって、終わりの数字(ファイル数)はフォルダ毎にバラバラの状態です。

この状態で、↑の例で言うなら営業一課00060.jpgと資材課00020.jpgと物流課00120.jpgを、
c:\最後\ のフォルダに切り取り貼り付けしたいのですが…

マクロ限定では無く、何かのソフトの組み合わせで実現できるというならそれでも構いません。
フォルダ数が10や100なら力任せにファイラーで移動するのですが、現在50000くらいフォルダ数があって、一日200-300くらいの勢いで増えてます…
コメント2件

988
デフォルトの名無しさん[sage]   投稿日:2017/01/22 18:45:46  ID:mco4N0ih.net(2)
ファイル操作や並び替えはPowershellの方が簡単だよ

989
デフォルトの名無しさん[sage]   投稿日:2017/01/22 18:56:47  ID:PXtZmaP4.net(4)
>270
切り取り貼り付けで馬鹿だとよくわかる
ロジック的にも間違いを引き起こすようなロジックしか考えられないし

馬鹿確定

990
デフォルトの名無しさん[sage]   投稿日:2017/01/22 19:13:35  ID:K9IWtO+t.net(4)
初心者と一々断らなくて良いよ、と言おうと思ったら、
>272みたいな上級者気取りが現れるから仕方ないか・・

これを参考にして
http://officetanaka.net/excel/vba/file/file07.htm
コメント1件

991
デフォルトの名無しさん[sage]   投稿日:2017/01/22 19:49:33  ID:YJLP3OgH.net(2)
>272
$work =

992
デフォルトの名無しさん[sage]   投稿日:2017/01/22 20:32:29  ID:b7Xc1TTL.net(2)
>270
vbaでもいいけど
普通にvbscriptみたいなものでも簡単にできるよ
vbs フォルダ 検索
でぐぐったらどうでしょう

993
デフォルトの名無しさん[]   投稿日:2017/01/22 20:54:41  ID:XKc56KzG.net(2)
>272
うるせえぞ馬鹿
真面目に質問してる人になんだそりゃ。
コメント2件

994
デフォルトの名無しさん[sage]   投稿日:2017/01/22 21:01:31  ID:xqqm72Ga.net(2)
>270
各フォルダには画像以外のファイルも入ってるかどうか
拡張子は小文字のjpgだけか、JPGやjpegも混ざってるかどうか

それだけ教えて
コメント1件

995
デフォルトの名無しさん[sage]   投稿日:2017/01/22 21:10:37  ID:PXtZmaP4.net(4)
馬鹿はファイルのコピーや移動の仕方でわかるんだよな。
馬鹿のくせに間違いを絶対にしない前提の方法で話しを進めるのが馬鹿たる所以。
コメント1件

996
デフォルトの名無しさん[sage]   投稿日:2017/01/22 21:26:21  ID:o6OZ0Umu.net(2)
( ´_ゝ`)フーン
コメント1件

997
デフォルトの名無しさん[sage]   投稿日:2017/01/22 21:41:22  ID:uPXBwAbd.net(2)
>277
拡張子がなんにしても全パターン網羅してリプレイスして番号で最大値とって取得やんな?

998
デフォルトの名無しさん[sage]   投稿日:2017/01/22 21:43:59  ID:fxkBMvoQ.net(2)
>278
あ、ごめん
即座に罵倒するようなヤツとは関わらないって決めてるので誰にも迷惑のかからないところで勝手に盛り上がっててください

999
デフォルトの名無しさん[sage]   投稿日:2017/01/22 22:05:16  ID:5pcXYXa+.net(2)
病気なんだよ

1000
270[sage]   投稿日:2017/01/22 22:11:46  ID:dK0oU8+I.net(4)
>277
フォルダの中身は小文字の.jpgのみです。

>273
参照のページで、ファイル名一覧が取得できるまでは解るのですが、
それを取得してどうすれば良いのかが解りませぬ。

1001
デフォルトの名無しさん[sage]   投稿日:2017/01/22 22:21:58  ID:K9IWtO+t.net(4)
>278
知らないから馬鹿じゃないだろ
>270を「馬鹿のくせに間違いを絶対にしない前提の方法で話しを進める」と決めつけるのが馬鹿

>283
一覧をソートすれば取得できる

というオレもVBA初心者ゆえ、正確に答える自信がないので、概念だけでスマンw

1002
デフォルトの名無しさん[sage]   投稿日:2017/01/22 22:30:17  ID:l2Nz+a62.net(2)
>270
>c:\最後\ のフォルダに切り取り貼り付けしたいのですが

移動(元フォルダからは消える)するより
コピーするか ショートカット作成した方が良いんじゃないかと思うのだが
どうよ
後 実際の各フォルダは c:\ の直下なの?

1003
デフォルトの名無しさん[sage]   投稿日:2017/01/22 23:05:08  ID:4Incfzmy.net(2)
>270
スレ違いだけどPowerShellで

$folder_from = "C:\"
$folder_to = "C:\最後\"

foreach($child_folder in ls -Path $folder_from | ?{ $_.Name -match '.+課$' })
{
$regex = '^' + $child_folder.Name + '\d+\.jpg$'
$last_item = ls -Path $child_folder | ?{ $_.Name -match $regex }| select -Last 1
mv $last_item.FullName $folder_to
}

1004
デフォルトの名無しさん[sage]   投稿日:2017/01/22 23:12:38  ID:qK5fG7bF.net(2)
できた
ちゃんと動くかどうかテストしてないんでバックアップとってな

Sub CopyLastFile()
  TargetFolder = "C:\"  ' 処理するフォルダ
  If Right(TargetFolder, 1) <> "\" Then TargetFolder = TargetFolder & "\"
  Set Dirs = CreateObject("Scripting.FileSystemObject").GetFolder(TargetFolder).SubFolders
  For Each CurrentFolder In Dirs
    If CurrentFolder.Name <> "最後" And CurrentFolder.Name <> "System Volume Information" Then
      MaxName = ""
      FName = Dir(TargetFolder & CurrentFolder.Name & "\*.jpg")
      Do While FName <> ""
        If FName > MaxName Then MaxName = FName
        FName = Dir()
      Loop
      If MaxName <> "" Then  ' ファイルを移動
        Name TargetFolder & CurrentFolder.Name & "\" & MaxName As TargetFolder & "最後" & "\" & MaxName
      End If
    End If
  Next
End Sub

1005
デフォルトの名無しさん[sage]   投稿日:2017/01/22 23:43:51  ID:Wwv6/pAu.net(2)
汚ねぇ言語だな
何がなんだかさっぱり

1006
270[sage]   投稿日:2017/01/23 00:41:20  ID:U6yzB2m0.net(4)
>268
>287
お手数掛けてしまい申し訳ありませんが、どちらも動きませんでした…
「ファイルが見つかりません」とエラーメッセージが出てしまいます。

1007
デフォルトの名無しさん[sage]   投稿日:2017/01/23 00:55:01  ID:ST2LRMx2.net(2)
しょせん馬鹿には無理なんだよ

1008
デフォルトの名無しさん[sage]   投稿日:2017/01/23 01:08:05  ID:ayLfxszv.net(2)
フォルダの場所はあくまで例という事なので
適切に弄った上で見つからないのかな

1009
デフォルトの名無しさん[]   投稿日:2017/01/23 01:55:52  ID:sOYRMmGw.net(4)
vbaのソースをハイライトしてくれて公開できるサイトってありますか?

1010
デフォルトの名無しさん[sage]   投稿日:2017/01/23 04:46:02  ID:WP/2JyPJ.net(6)
>287を試したけど、ちゃんと動いたぜ
http://i.imgur.com/wCOzgx4.png

もちろん最初のフォルダ定義は書き換えたよな?
そこ以外はフォルダ名もファイル名もディスクから読み取ってるんだから、見つからないわけがないんだが

1011
デフォルトの名無しさん[sage]   投稿日:2017/01/23 04:51:29  ID:WP/2JyPJ.net(6)
>292
VBAに対応したサイトは見たことないけど、
RangeとかCellsがハイライトされないと困る用途でなければVBを選択してみたら?

1012
デフォルトの名無しさん[sage]   投稿日:2017/01/23 04:53:06  ID:WP/2JyPJ.net(6)
あ、あと「最後」フォルダも手動で作っとかないとだめだよ

1013
270[Sage]   投稿日:2017/01/23 06:51:27  ID:U6yzB2m0.net(4)
>287
>293
別のサンプルで試したところ、きちんと動作いたしました。
最初に用意したサンプルの部署の名前にシステム外?の漢字が使われていた為に失敗していたようです。
(ひらがなの「が」が、「か+゛」になっていたという。Mac←→Winの文字コードの違いの問題?)

そちらはなんとかなるので、これで問題解決です。
皆様方、ありがとうございました。

1014
デフォルトの名無しさん[]   投稿日:2017/01/23 08:12:32  ID:sOYRMmGw.net(4)
>294
なるほど! ありがとうございましたm(__)m

1015
デフォルトの名無しさん[sage]   投稿日:2017/01/23 12:58:13  ID:Z+1qxvba.net(2)
>296
utf-8 は、濁点半濁点を分離しない

一方、utf-8-mac は、濁点半濁点を分離して、別の文字とする

1016
デフォルトの名無しさん[sage]   投稿日:2017/01/23 15:48:10  ID:r+jEG7u3.net(2)
質問です

HTMLで要素を特定するのが難しい複雑なWEB GUIを自動操作したく、キーボード入力のみ(TAB、ENTER、文字入力の組み合わせ)で原始的に操作すればいいんじゃないかと考えました
このような方法は効果的ですか?
またIE画面の取得やSendKey、busy状態の判定などはurlさえあれば可能なのでしょうか?

1017
デフォルトの名無しさん[sage]   投稿日:2017/01/23 16:25:14  ID:dyeHk94Y.net(2)
>299
> HTMLで要素を特定するのが難しい複雑なWEB GUIを自動操作したく、キーボード入力のみ(TAB、ENTER、文字入力の組み合わせ)で原始的に操作すればいいんじゃないかと考えました
> このような方法は効果的ですか?
「効果的」の意味が良くわからないが、確実性に欠けるので実装方法としては下策。

1018
デフォルトの名無しさん[sage]   投稿日:2017/01/23 18:23:23  ID:iz5/M2l3.net(2)
>299
何故HTMLで要素を特定するのが難しいのか?
あとそれが難しいのにキーボード操作なら目的の操作を出来るのは何故か?
効果的かどうかどうやって判断するのか?

1019
デフォルトの名無しさん[sage]   投稿日:2017/01/24 09:50:42  ID:Q9g90nxH.net(2)
>300
>301
回答ありがとうございます
効果的か、というのは他に楽ないい選択があるか、という意味です
初心者なので要素の取得に時間がかかり、単純なWEBページならなんとか操作できるのでが
ジャバの記述でソースコードがぐちゃぐちゃになっており要素の取得がしんどいです
実際のie操作を記録してコード組んでくれるソフトとか無いんですかね

1020
デフォルトの名無しさん[sage]   投稿日:2017/01/24 11:44:50  ID:tZ08PDgQ.net(2)
>302
UWSC

1021
デフォルトの名無しさん[sage]   投稿日:2017/01/24 12:51:19  ID:2vJhPAHl.net(2)
>302
ブラウザでF12キーとか押してみたら

1022
デフォルトの名無しさん[sage]   投稿日:2017/01/25 01:50:28  ID:mqe1OJqx.net(4)
何かカッコイイ名前つけようぜ。
コスモ関数とか。
Subを廃止にして、Zamとかどうよ。
Ifも古くなってきたから、Izuとか。

1023
デフォルトの名無しさん[sage]   投稿日:2017/01/25 04:02:53  ID:IbVYSEZD.net(4)
マクロじゃなくて馬鹿専用とかな

1024
デフォルトの名無しさん[sage]   投稿日:2017/01/25 15:39:29  ID:Lt8lAI1l.net(2)
かなりの初心者です。
エクセルに画像挿入する際の質問です。
エクセルに大量の画像を挿入したいのですが、ファイルが重たくなりすぎるためリン
ク挿入を考えています。
ファイルをCDにやいて先方に渡したいので、絶対パスではなく相対パスでの画像挿入
がしたいです。
エクセルファイルと大量の画像データは同じフォルダ内にあります。
Insertで挿入してもaddpictureで挿入してもメディアにフォルダごと移動したとたん
リンク切れになるので困っています。
よろしくお願いします。

1025
デフォルトの名無しさん[sage]   投稿日:2017/01/25 17:01:41  ID:IbVYSEZD.net(4)
>307
なぜhtmlにしないの?

1026
デフォルトの名無しさん[]   投稿日:2017/01/25 17:35:49  ID:ekWp7cd2.net(2)
数値の変化する1つのセルの最大値を他のせルに記録したいのです。
例えば B5 セルの値が、15 10 23 5
と変化したら、隣のC5のセルに、 23 と表示させたいのです。

エクセルの関数になるのかもしれませんが、ググってもどう調べても分かりません。

皆さま何卒宜しくお願い致します。

1027
デフォルトの名無しさん[sage]   投稿日:2017/01/25 17:53:01  ID:vlkVtG3b.net(2)
>309
その要件は >307 のどこにあたるの?

1028
デフォルトの名無しさん[sage]   投稿日:2017/01/25 18:08:36  ID:ncsczmSY.net(2)
>307
htmlとして保存とかできなかったっけ

1029
デフォルトの名無しさん[sage]   投稿日:2017/01/25 19:35:21  ID:mqe1OJqx.net(4)
>307
リンク切れになる理由はわからんけど、
ファイルを開いた時に、リンク解除→再リンクすればいいんじゃないの?

1030
デフォルトの名無しさん[sage]   投稿日:2017/01/25 21:13:17  ID:CnexM6ZX.net(4)
>310
えっ?

1031
デフォルトの名無しさん[sage]   投稿日:2017/01/25 21:38:36  ID:eyqKHvfT.net(6)
>309
対象のセルがひとつだったらグローバル変数を使って簡単にできる

Private max__ As Double

Function getMax(ByVal x As Double) As Double
If max__ < x Then max__ = x
getMax = max__
End Function

セルC5に
= getMax(B5)
と入れときゃいい

1032
デフォルトの名無しさん[sage]   投稿日:2017/01/25 21:41:05  ID:eyqKHvfT.net(6)
初期値がゼロだから、

Sub resetMax()
 max__ = -1.79769313486231E308
End Sub

とかが必要かもしれない

1033
デフォルトの名無しさん[sage]   投稿日:2017/01/25 22:18:36  ID:eU88gsvp.net(2)

板復帰(OK!:Gather .dat file OK:moving DAT 540 -> 537:Get subject.txt OK:Check subject.txt 540 -> 539:Overwrite OK)2.94, 2.24, 1.93
age subject:539 dat:537 rebuild OK!

1034
デフォルトの名無しさん[sage]   投稿日:2017/01/25 22:49:29  ID:CnexM6ZX.net(4)
>315
要らないです

1035
デフォルトの名無しさん[sage]   投稿日:2017/01/25 22:54:53  ID:eyqKHvfT.net(6)
>317
ほう、なぜ?

1036
デフォルトの名無しさん[]   投稿日:2017/01/25 23:05:36  ID:AeM3WiQW.net(2)
ほうなぜ

1037
デフォルトの名無しさん[sage]   投稿日:2017/01/26 01:27:18  ID:lerVaKyH.net(2)
ほぜなう、ななほなう、ほぜぜほ、ううう、うう、ななほ、ななほ、うほうほうほほ、ぜうほなーほ

1038
デフォルトの名無しさん[sage]   投稿日:2017/01/26 08:19:49  ID:ZDwsAfth.net(16)
>318
一回目の値取り込めは必須だから。
この場合は15は必ず最大値。

1039
デフォルトの名無しさん[sage]   投稿日:2017/01/26 08:27:33  ID:GoiJIG7T.net(4)
>321
B5が全部マイナスのケースは?

1040
デフォルトの名無しさん[sage]   投稿日:2017/01/26 09:20:45  ID:ZDwsAfth.net(16)
>322
あーその場合があったか!
いやー失敬失敬






な訳ない。
一回目は絶対最大値なんです。
この場合正負は、なんの意味がない。

1041
デフォルトの名無しさん[sage]   投稿日:2017/01/26 09:50:34  ID:8Qm9FYvM.net(2)
>323
君が想定してるコードは >314 なの それとも別のコード?

1042
デフォルトの名無しさん[sage]   投稿日:2017/01/26 10:02:08  ID:mPWEbfd1.net(20)
>323
>314のグローバル変数はDouble型だから何もしないと初期値は0.0だ。
これが何を意味するかはわかるな?

1043
デフォルトの名無しさん[sage]   投稿日:2017/01/26 10:09:43  ID:oMPl1Srs.net(14)
>323
これは恥ずかしい

1044
デフォルトの名無しさん[sage]   投稿日:2017/01/26 11:12:41  ID:KR9GJXBK.net(4)
>324
>325
>326
314は考慮してない。
315のように型考慮とか手間。

1045
デフォルトの名無しさん[sage]   投稿日:2017/01/26 11:17:55  ID:SSl970Br.net(4)
>327
そもそも会話に参加してなかったってことは理解した

1046
デフォルトの名無しさん[sage]   投稿日:2017/01/26 11:28:23  ID:mPWEbfd1.net(20)
>327
型考慮が手間?
じゃあVariantにすればいい。Emptyであれば未初期化状態とわかるからそこで分岐できる。

そもそもなんのデータなんだ?
気温とかで最高気温をとりたいというならずっとマイナス値で推移することもあるし、
株価とかの最高値をみたいというなら正数だけ考えればいいし。

1047
デフォルトの名無しさん[sage]   投稿日:2017/01/26 11:52:33  ID:KR9GJXBK.net(4)
>328
正しい
>329
観点そこじゃねーよ
イチイチ型の下限をハードコーディングかよ。

何にも思わないんだw

1048
デフォルトの名無しさん[sage]   投稿日:2017/01/26 12:00:40  ID:mPWEbfd1.net(20)
>330
使い捨ての例示だろ?
それで十分さ

1049
デフォルトの名無しさん[sage]   投稿日:2017/01/26 12:04:08  ID:mPWEbfd1.net(20)
意図明確なハードコーディングなどなんら問題ないという立場。
型ごとの下限値とか一日の秒数とか、文脈で明かでかつ誰でも知っている値は本番プログラムでもなきゃそのまま例示するさ。

1050
デフォルトの名無しさん[sage]   投稿日:2017/01/26 12:07:50  ID:ZDwsAfth.net(16)
>331
そうかもね

ただ>309が不憫でよ。
いきなり>314だろ。
>315で結びが『かもしれない』

まじがんばれ>309

1051
デフォルトの名無しさん[sage]   投稿日:2017/01/26 12:17:36  ID:mPWEbfd1.net(20)
>333
じゃあ別な方法を示せばいい

そもそも「正負がなんの意味もない」ってどういうことだ?説明しろ。

1052
デフォルトの名無しさん[sage]   投稿日:2017/01/26 12:31:36  ID:SSl970Br.net(4)
この話題については
やりようによってはグローバル変数って不要じゃないかな?
って思う

1053
デフォルトの名無しさん[sage]   投稿日:2017/01/26 12:39:56  ID:oMPl1Srs.net(14)
こういうの考えてたんじゃね?知らんけど
でも>315に関して「一回目は絶対最大値なんです。正負はなんの意味もない」ってのは意味不明

Private Sub Worksheet_Change(ByVal Target As Range)
  If Intersect(Target, Range("B5")) Is Nothing Then
    Exit Sub
  Else
    Range("C5") = WorksheetFunction.max(Range("B5", "C5"))
  End If
End Sub

1054
デフォルトの名無しさん[sage]   投稿日:2017/01/26 12:47:28  ID:ZDwsAfth.net(16)
>334
提示コードとは切り離す。
片手落ちの提示コードなら
初期値を型下限にしないと負側は
動かないよ。

最大値の定石算法なら正負は意味ないよ。
だって正しく求まるから。
http://d.hatena.ne.jp/geek-it/touch/20120226/p1

1055
デフォルトの名無しさん[sage]   投稿日:2017/01/26 12:55:45  ID:ZDwsAfth.net(16)
>336
c5は試行の開始では
どういう状態なんだろうね?

1056
デフォルトの名無しさん[sage]   投稿日:2017/01/26 12:57:50  ID:mPWEbfd1.net(20)
>337
n[0]とは何で、どうやって取得するのか教えて

1057
デフォルトの名無しさん[sage]   投稿日:2017/01/26 12:58:02  ID:oMPl1Srs.net(14)
>337
とりあえず馬鹿ってことはわかった
グローバルにカウンタつくってIf count = 1 Then ってやっときゃいいじゃんw

1058
デフォルトの名無しさん[sage]   投稿日:2017/01/26 13:09:31  ID:ZDwsAfth.net(16)
>339
b5からとるんだよ。

ただ
ほんとに知りたいところそこなの?
これから何を本質的に疑問に思ってる?

1059
デフォルトの名無しさん[sage]   投稿日:2017/01/26 13:11:07  ID:ZDwsAfth.net(16)
>340
その手段で
どういった目的を達成できるか
説明お願いします。

1060
デフォルトの名無しさん[sage]   投稿日:2017/01/26 13:16:03  ID:mPWEbfd1.net(20)
>341
B5に初めて値が(たとえば3とする)が代入されたとき、C5にはもちろん3と表示されるべきだが、それをどうやってやるの?

1061
デフォルトの名無しさん[sage]   投稿日:2017/01/26 13:19:12  ID:oMPl1Srs.net(14)
自分でコード書いて提示してみ?
たぶん根本的に意味をわかってない

1062
デフォルトの名無しさん[sage]   投稿日:2017/01/26 13:22:44  ID:mPWEbfd1.net(20)
あっもしかして、初めてB5に値を入れたらそこで「人が」C5に何らかの計算式を入れるとかの運用を考えてる?

1063
デフォルトの名無しさん[sage]   投稿日:2017/01/26 13:24:08  ID:oMPl1Srs.net(14)
なわけねーだろw
だから自分でコード書いてみろって
何を勘違いしてるか自分で気づくだろ

1064
デフォルトの名無しさん[sage]   投稿日:2017/01/26 13:26:06  ID:oMPl1Srs.net(14)
ああ、ZDwsAfthのレスと勘違いしたわすまん

1065
デフォルトの名無しさん[sage]   投稿日:2017/01/26 13:28:19  ID:mPWEbfd1.net(20)
>347
ドンマイ

1066
デフォルトの名無しさん[sage]   投稿日:2017/01/26 13:30:55  ID:ZDwsAfth.net(16)
>347
ドンマイ

1067
デフォルトの名無しさん[sage]   投稿日:2017/01/26 13:33:47  ID:oMPl1Srs.net(14)
>349
すまんな
コードの提示を頼むわ、飯くってくる

1068
デフォルトの名無しさん[sage]   投稿日:2017/01/26 14:19:03  ID:5gl79ALu.net(2)
>309
Worksheet_Changeとかのイベントで
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim peak, x: peak = "C5": x = "B5"
If Not IsNumeric(Range(x)) Then Exit Sub
If Not IsNumeric(Range(peak)) Then Range(peak) = Range(x)
If Range(peak) < Range(x) Then Range(peak) = Range(x)
End Sub
セルが空でも動く

1069
デフォルトの名無しさん[sage]   投稿日:2017/01/26 14:25:54  ID:MANz96Le.net(2)
>309
参照設定でMicrosoft Scripting Runtimeを追加して、標準モジュールに以下のコードを記述後、
C5に=showMaxValue(B5)と入力する。

'対象セルの最大値を保存する場所
Dim dic As New Dictionary

Public Function showMaxValue(cell As Range)
  If IsEmpty(cell) Then
    ' 対象セルをクリアしたときにどう振る舞うのかを
    ' 決定する必要があるが、取りあえず何もしない
    Exit Function
  End If
  
  If dic.Exists(cell.Address) Then
    If cell.Value > dic(cell.Address) Then
      dic(cell.Address) = cell.Value
    End If
  Else
    dic.Add cell.Address, cell.Value
  End If

  showMaxValue = dic(cell.Address)
End Function

1070
デフォルトの名無しさん[sage]   投稿日:2017/01/26 14:57:52  ID:mPWEbfd1.net(20)
>352
なるほど

1071
デフォルトの名無しさん[sage]   投稿日:2017/01/26 16:21:12  ID:U3KmvQxt.net(2)
>308
>311
>312
ご回答どうもありがとうございます。htmlでとは全く思いつかなかったので目から鱗でした。ただ、改ページプレビューでの印刷範囲などがhtmlだとうまくできないです。
また、絶対参照になってしまうのはexcel2013以降の仕様のようなことが書いてあるサイトを見つけました。
http://www.h3.dion.ne.jp/~sakatsu/Excel_Tips21.htm#S9
結局ファイルを分けて実ファイルを挿入する方法にします。
どうもありがとうございました。

1072
デフォルトの名無しさん[]   投稿日:2017/01/26 18:30:34  ID:Cqc92u/s.net(2)
セガのテトリスをエクセルで作ってみた
https://www.youtube.com/watch?v=CTotYTOpR9E

1073
デフォルトの名無しさん[sage]   投稿日:2017/01/26 19:37:07  ID:3eEczd4r.net(2)
excelの神経衰弱 https://youtu.be/TAzqqZgVEa4

1074
デフォルトの名無しさん[sage]   投稿日:2017/01/26 19:56:43  ID:GoiJIG7T.net(4)
>352
それって複数のセルを扱えるようにしてるだけで初期値については >329 の Variant と本質的には一緒だよね

1075
デフォルトの名無しさん[]   投稿日:2017/01/26 20:03:13  ID:3C+35NwQ.net(2)
showMaxValueてwwwww
なにをどうshowしてんだよw関数名で嘘つくとかサイテーだなw

1076
デフォルトの名無しさん[sage]   投稿日:2017/01/26 20:10:27  ID:q3eaEqve.net(2)
>357
>329のまま複数のセルで関数を使うと想定外の結果になるんだから>352のは優れている

1077
デフォルトの名無しさん[sage]   投稿日:2017/01/26 20:50:17  ID:5GTFMqAx.net(4)
実際に機能するプログラムはすぐに人に見せるべきだね

1078
デフォルトの名無しさん[sage]   投稿日:2017/01/26 20:55:56  ID:uLxLwJKu.net(2)
>359
> 初期値については
って書いてますやん...

1079
デフォルトの名無しさん[sage]   投稿日:2017/01/26 20:58:31  ID:5GTFMqAx.net(4)
>361
なるほど。
すマンこ

1080
デフォルトの名無しさん[]   投稿日:2017/01/27 05:00:53  ID:wqjWN3QH.net(2)
初めまして。
セル(1,1)から始まって横に 3、12、−1、6、−2など数字が続き、
マイナスだけ抽出して合計したい場合はどうすればいいでしょうか。
↓では当たり前ですがうまくいきません…

Sub test()
x = 1
Do Until x > 5
If Cells(1, x) < 0 Then
Cells(1, 6) = Cells(1, x)

End If
x = x + 1
Loop
End Sub

1081
デフォルトの名無しさん[sage]   投稿日:2017/01/27 05:25:43  ID:MGewCQt5.net(2)
>363
マイナスだけ合計
Sub test()
x = Application.WorksheetFunction.SumIf(Rows(1), "<0", Rows(1))
Debug.Print x
End Sub

1082
デフォルトの名無しさん[sage]   投稿日:2017/01/27 05:30:31  ID:0Brpc+WL.net(2)
>363
Sub test()
  Cells(1, 6) = 0
  x = 1
  Do While x <= 5
    If Cells(1, x) < 0 Then
      Cells(1, 6) = Cells(1, 6) + Cells(1, x)
    End If
    x = x + 1
  Loop
End Sub

1083
デフォルトの名無しさん[sage]   投稿日:2017/01/27 09:12:54  ID:xuyo3rho.net(2)
入門サイトなどに同じ事例が見当たらなかったのでお願い致します。

セルに"/"(スラッシュ半角)か"×"(バツ)を入力したら、
そのセルに右上がりの斜線を自動で引かれるようにしたいのですが、
コードを教えてください。

スラッシュを消したら斜線も消えるようにもしたいです。
対象はSheet1の全セルです。

よろしくおねがいします。

1084
デフォルトの名無しさん[sage]   投稿日:2017/01/27 09:21:50  ID:E/4Vr26G.net(2)
sumif(r1,”<0”)

1085
デフォルトの名無しさん[sage]   投稿日:2017/01/27 09:57:52  ID:Ne4o/N/h.net(2)
>366
そんなのより対象セルを選択した状態で {ctrl + なんとか} の方が便利だしコードも簡単になると思うけどな

1086
デフォルトの名無しさん[sage]   投稿日:2017/01/27 12:55:33  ID:2/l+3kL4.net(2)

1087
デフォルトの名無しさん[sage]   投稿日:2017/01/27 14:20:38  ID:pYLJsuuu.net(2)
>366
worksheetのchangeイベントかなんかでセルの値がかわったら罫線引くようにするしかないんじゃね
罫線の引き方はマクロの記録で調べなさいよ

1088
デフォルトの名無しさん[sage]   投稿日:2017/01/27 19:39:13  ID:2UbAAj3q.net(4)
>366
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value = "/" Then
With Target
.Borders.Weight = xlThin
.Borders(xlDiagonalUp).LineStyle = xlContinuous
End With
End If
End Sub

消すのは逆をすればいいんでない?

1089
デフォルトの名無しさん[sage]   投稿日:2017/01/27 20:32:43  ID:WmIjEyaD.net(2)
>366
条件付き書式でいいだろ
って思ったら条件付き書式って斜め罫線ダメなんだな
他の罫線はいいのにちょっと不思議

なので Sheet1 のシートモジュールにこれを書けばいい

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cell As Range
For Each Cell In Target
Cell.Borders(xlDiagonalUp).LineStyle = IIf(Cell.Value = "/" Or Cell.Value ="×" , xlContinuous, xlNone)
Next
End Sub

1090
デフォルトの名無しさん[]   投稿日:2017/01/27 22:47:33  ID:Fb1FgEo2.net(2)
>366がやりたいのは本当にそれだけなんだろうか

1091
デフォルトの名無しさん[sage]   投稿日:2017/01/27 22:49:12  ID:2UbAAj3q.net(4)
>373
コード書きながらそう思ったよw

1092
デフォルトの名無しさん[]   投稿日:2017/01/28 12:01:46  ID:w/mx7yyO.net(8)
セルの値が一定の書式に合致しているかをVBAで調べるにはどうしますか?
下記は調べたい書式のほんの一例です。実際に調べたい書式はもっとありますし将来的にもどんどん出てきます。

・文字列に、数字+"/"の数字を含む (例)予定は2/3
・文字列が、"平成"ではじまる (例)平成元年
・文字列に、2文字以上の空白を含む (例)I have a pen.
などなど

つまり正規表現のようなものをVBAのコードで使うときの定番ってなんでしょうか?

1093
デフォルトの名無しさん[]   投稿日:2017/01/28 12:03:39  ID:w/mx7yyO.net(8)
instr関数やleft, mid, right, len関数のようなものを駆使するのが正当かもしれませんが
もっと短く一般的にできる方法はないかと思って。

1094
デフォルトの名無しさん[sage]   投稿日:2017/01/28 12:07:32  ID:BY939/WJ.net(2)
>375
簡単なものなら Like演算子
本格的にやりたいなら正規表現オブジェクトを使う

正規表現オブジェクトは
"Microsoft VBScript Regular Expressions"を参照設定するか
Set RegExp = CreateObject("VBScript.RegExp")

1095
デフォルトの名無しさん[]   投稿日:2017/01/28 12:21:25  ID:w/mx7yyO.net(8)
>377
なるほどLikeがござったか。ありがとう。

1096
デフォルトの名無しさん[sage]   投稿日:2017/01/28 12:25:02  ID:ktdFkm2m.net(2)
>378
侍かな

1097
デフォルトの名無しさん[]   投稿日:2017/01/28 12:27:02  ID:w/mx7yyO.net(8)
このLikeの機能はWordの検索のワイルドカードと完全に互換性があるでござるか?

1098
デフォルトの名無しさん[]   投稿日:2017/01/28 12:42:49  ID:9EkLNFiw.net(2)

1099
デフォルトの名無しさん[sage]   投稿日:2017/01/28 21:50:14  ID:d5Th95j2.net(8)
今月VBAスタンダードに合格したんだけど、本格的な業務利用までの間には深い溝を感じる。

転職を考えているので、職場では自分だけが使うものしかマクロ化出来ない。

今のレベルの自分にオススメの書籍を教えて下さい。書店でじっくり探す時間が無いので。
今持ってるのは公式テキスト、「例題30問と演習70問でしっかり学ぶexcelVBA標準テキスト」です。

目標はぼんやりしているけど、こういうの作れない?と聞かれたら涼しい顔して作れるようになりたい。

1100
デフォルトの名無しさん[sage]   投稿日:2017/01/28 22:22:23  ID:F0MmKngE.net(2)
言語の勉強なんてもういいからファウラーやガンマの本を読みなよ
ファウラーのリファクタリングあたりが脱初心者にオススメ
Javaで書かれてるけどVBAでも考え方は同じ

1101
デフォルトの名無しさん[sage]   投稿日:2017/01/28 22:43:36  ID:XFsAlNLB.net(2)
業務で使えるようにするには、その業種の実務知識がないと難しいよ
順番が逆なんだよ(システム屋は別だけど)
特に下っ端レベルだと、業務覚える→自動化考える→実装に必要な知識覚える。
これを繰り返すしかない

1102
デフォルトの名無しさん[]   投稿日:2017/01/28 22:44:58  ID:d5Th95j2.net(8)
>383
ありがとうございます。
どちらも初めて聞いたのでググりました。
ファウラーのリファクタリング、本当に脱初心者って感じですね。何か重厚そうで少しビビります。
コードの良し悪しも、あまりにもひどいもの以外はよくわからないレベルなので
読んでみようと思います。

1103
デフォルトの名無しさん[sage]   投稿日:2017/01/28 22:56:38  ID:HZ4XiulJ.net(2)
データベースは知ってんの?(知ってるのレベルもまぁいろいろあるけど)
VBAで接続してそこからデータを持ってくるとかあるいはexcelのデータをテーブルに入れるとかさ。

知ってるんだったら良し、知らないんだったらフリーのRDBいっくらでもあるんだからそれ入れてADO勉強したら?

1104
デフォルトの名無しさん[]   投稿日:2017/01/28 23:06:20  ID:d5Th95j2.net(8)
>384
業務覚える→自動化考える→知識覚える
これが一番なんですが、今の職場で人に影響が及ばない範囲で出来ることはやりきってしまったというか、大して出来ることが無いので。

経理の知識とVBAの知識両方で勝負したいとは思っているのですが
日商簿記2級とVBAスタンダード、どちらも中途半端過ぎて
今勉強するならどの方向かなと迷っているところです。
これ以上はスレ違いですが。

1105
デフォルトの名無しさん[]   投稿日:2017/01/28 23:16:20  ID:d5Th95j2.net(8)
>386
よく知りません。
自分の今の状態、マクロの記録に毛が生えたくらいでこの数レスでもわからない単語が続出です。
ADO、フリーで使えるものが多いのは魅力です。ググってきます。

1106
デフォルトの名無しさん[sage]   投稿日:2017/01/28 23:33:58  ID:uAPjBDjx.net(2)
馬鹿は死ねよ

1107
デフォルトの名無しさん[sage]   投稿日:2017/01/29 00:15:01  ID:xYYwoQBZ.net(4)
業務って何の業務か知らんけど、
扱うデータが多いと、SQLの知識も必要になる。
(処理速度的な理由で)

1108
デフォルトの名無しさん[sage]   投稿日:2017/01/29 00:31:34  ID:WKRhYkpm.net(2)
SQLってつなぐまでが壁で
あとはselectだけだろ?

1109
デフォルトの名無しさん[sage]   投稿日:2017/01/29 00:34:44  ID:+blbXYZx.net(2)
業務の自動化ある程度問題なくこなせてるならあとはコードの品質だろうね
その手の洪は楽しいよね
一冊くらいしか読んだこと無いけど

1110
デフォルトの名無しさん[sage]   投稿日:2017/01/29 00:34:52  ID:xgaFxxwc.net(10)
馬鹿は繋ぐまでに壁なんてあるんだな

1111
デフォルトの名無しさん[]   投稿日:2017/01/29 01:19:55  ID:8UrWbtOI.net(4)
最近のエクセル業界のトレンドはSQLなんか?

1112
デフォルトの名無しさん[sage]   投稿日:2017/01/29 14:59:17  ID:cSvePZMz.net(8)
エクセルでSQLは制約があるし、SQLの有無で差が出るような処理は本格的なデータベースソフト使いたいね。

1113
デフォルトの名無しさん[sage]   投稿日:2017/01/29 15:22:05  ID:M0HgmB1M.net(10)
プログラミング入門ならVBAで満足していてもいいけど
普通は生産性の高い他の言語にシフトするよね

1114
デフォルトの名無しさん[sage]   投稿日:2017/01/29 15:28:40  ID:Gj2SxjJF.net(2)
お前の普通ではそうなんだろうな

1115
デフォルトの名無しさん[sage]   投稿日:2017/01/29 15:53:56  ID:M0HgmB1M.net(10)
俺の普通っていうかみんなそうだぞ
VBAに執着する連中って視野が狭いから周り見えてないんだろうけど

1116
デフォルトの名無しさん[sage]   投稿日:2017/01/29 16:40:53  ID:WrrdSNFA.net(2)
根拠もなしに「みんな」って言われてもな

1117
デフォルトの名無しさん[]   投稿日:2017/01/29 16:57:33  ID:cyG8RQu0.net(4)
ウチの会社で「SQL」なんて言葉を発しようものならボロクソに言われる。
「みんながみんなお前のようなマニアじゃねえんだよ」ってなもんで。去年、元SEでオラクル使いが
入社してきたがすぐに状況を察して「オレ、パソコン全然わかんない」とかトボケてやがるしw

1118
デフォルトの名無しさん[sage]   投稿日:2017/01/29 16:59:25  ID:xgaFxxwc.net(10)
>395
え?制約ってどんな?
馬鹿ばっかな上にこういう知ったかが出て来るクソスレは面白いな。

1119
デフォルトの名無しさん[sage]   投稿日:2017/01/29 17:19:22  ID:Urob8xZw.net(4)
>401
型を指定できないとかじゃね?
関数も全部使えるのか知らないし
自作関数を使えたりするのかも知らない

1120
デフォルトの名無しさん[sage]   投稿日:2017/01/29 18:01:06  ID:cSvePZMz.net(8)
>401
INSERTが不確実だとか読み込める行数に制限があるとか、
空白行が捕まえられないとかDELETE文が使えないとか、割とあるんだけど知らない?

実際にやってみればすぐ分かる事なんだけど、
ほとんどSELECT文しか使えないから手間に対して益が少ないんだよね。

1121
デフォルトの名無しさん[sage]   投稿日:2017/01/29 18:09:45  ID:JZZjSwEk.net(2)
>403
そうだよね。
俺も SELECT 以外はダメだと思ってやめた。
単一オフィス内の事務だったらSQL Server Express で十分だし移行も簡単だと思う。

1122
デフォルトの名無しさん[sage]   投稿日:2017/01/29 18:14:00  ID:zuNgR2z5.net(4)
え?
delete文も他も普通に使えるけど。

1123
デフォルトの名無しさん[sage]   投稿日:2017/01/29 18:15:13  ID:zuNgR2z5.net(4)
ごめん、データベースがエクセルの場合は知らないや。

1124
デフォルトの名無しさん[sage]   投稿日:2017/01/29 18:39:53  ID:M0HgmB1M.net(10)
>400
ジャップにはよくある文化だね
頑張って追いつくより足引っ張って横並びになろうとする

1125
デフォルトの名無しさん[sage]   投稿日:2017/01/29 18:50:33  ID:Nv+lqz67.net(2)
>403
馬鹿はこれだから。
全部できるだろうが。
お前の馬鹿頭ではできないだけ。

1126
デフォルトの名無しさん[sage]   投稿日:2017/01/29 19:21:57  ID:xNqGWhsy.net(6)
>403
シートに対してのsqlなら
そうだけど。
言及対象あいまいすぎる。

1127
デフォルトの名無しさん[sage]   投稿日:2017/01/29 19:32:30  ID:6wGEJq5M.net(4)
>408
引っ込みつかなくなる前にやめとけ

1128
デフォルトの名無しさん[sage]   投稿日:2017/01/29 19:33:42  ID:3OHjeGHP.net(12)
もともとは>395が始まりだからシートデータに対するSQLに制約がある話をしているのよ

1129
デフォルトの名無しさん[sage]   投稿日:2017/01/29 19:36:11  ID:xYYwoQBZ.net(4)
確かに制限あるけど、そこはExcelだからどうにかなる。

1130
デフォルトの名無しさん[]   投稿日:2017/01/29 19:55:32  ID:8UrWbtOI.net(4)
エクセルのSQLをエクセルでSQLと言ったら誤解されるのも無理はない
というか、わざとやってるくさい

1131
デフォルトの名無しさん[]   投稿日:2017/01/29 20:12:03  ID:cyG8RQu0.net(4)
>407
ウンコ臭いぞトンスラー、俺にすんじゃねえ

1132
デフォルトの名無しさん[sage]   投稿日:2017/01/29 20:19:04  ID:cSvePZMz.net(8)
>413
外部のSQLを使えるソフトに繋ぐことが前提だったら、エクセルに依ったSQLの制限があると考える方がおかしいし、
そもそもADOがエクセルに対応しているのであってエクセルがSQLに対応してるわけじゃないんだから「エクセルのSQL」って言い回しにはならない。

1133
デフォルトの名無しさん[sage]   投稿日:2017/01/29 20:36:29  ID:xgaFxxwc.net(10)
>410
ADOも知らない馬鹿頭は黙ってろ

1134
デフォルトの名無しさん[sage]   投稿日:2017/01/29 20:37:42  ID:M0HgmB1M.net(10)
VBAオンリーユーザーってやっぱレベル低いね

1135
デフォルトの名無しさん[sage]   投稿日:2017/01/29 20:39:15  ID:xgaFxxwc.net(10)
>415
ADOがExcelに対応してる?
馬鹿は死ねよ。
ADO使わずとも呼び出す方法もあるし、わからん奴が知ったかしてるんじゃねーよ。
お前の頭だからできないだけのことを製品のせいにすんな。

1136
デフォルトの名無しさん[sage]   投稿日:2017/01/29 20:46:40  ID:3OHjeGHP.net(12)
どうでもいいけど
 Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}
等した時に制約が多いって話だよな?

1137
デフォルトの名無しさん[sage]   投稿日:2017/01/29 20:55:06  ID:cSvePZMz.net(8)
あ、そうか。ODBCが対応してるって言わないと正確じゃないわな。
無自覚に「エクセルからDBソフトに繋ぐ時はADOを使う」って前提に立ってたわ。

1138
デフォルトの名無しさん[sage]   投稿日:2017/01/29 21:02:39  ID:Urob8xZw.net(4)
RDBMSを別に立てなくてもエクセルだけでSQLを実行できる
この環境だと色々制約があるんじゃね?

RDBMSを別に立てたらSQLの結果を受け取るだけだし

1139
デフォルトの名無しさん[sage]   投稿日:2017/01/29 21:03:02  ID:6wGEJq5M.net(4)
>416
めんどくせーなー
削除するコード書いてからほざけ

1140
デフォルトの名無しさん[sage]   投稿日:2017/01/29 21:12:07  ID:xSN3m+WX.net(2)
>418
あ、ごめん
罵倒することでしかやりとりできないようなヤツとは関わらないって決めてるので誰にも迷惑のかからないところで勝手に盛り上がっててください

1141
デフォルトの名無しさん[sage]   投稿日:2017/01/29 21:14:54  ID:xNqGWhsy.net(6)
>419
どうでも良いのに
答え求めてわらた

1142
デフォルトの名無しさん[sage]   投稿日:2017/01/29 21:18:43  ID:3OHjeGHP.net(12)
>424
オッ

1143
デフォルトの名無しさん[sage]   投稿日:2017/01/29 21:23:53  ID:xgaFxxwc.net(10)
馬鹿頭ばっかだな。ADO使ったdeleteすらできんのか。

1144
デフォルトの名無しさん[sage]   投稿日:2017/01/29 21:42:14  ID:M0HgmB1M.net(10)
エクセル使うとどうしてもバカになるから仕方ないね

1145
デフォルトの名無しさん[sage]   投稿日:2017/01/29 21:49:05  ID:3OHjeGHP.net(12)
>400
それで会社として生き残っていけるんならさぞ余裕があるんだろう

...それとも沈みゆく泥舟なのか?

1146
デフォルトの名無しさん[sage]   投稿日:2017/01/29 21:58:25  ID:9pGSsNTY.net(2)
情報部門が存在しない小さい会社で、ちょっと詳しい程度の社員がデータ整理を片手間でやってるというか押しつけられてるだけだろ
零細企業の大半はそんなもん
しかも日本に限らん

1147
デフォルトの名無しさん[sage]   投稿日:2017/01/29 22:09:31  ID:3OHjeGHP.net(12)
>429
そこに力を入れてもビジネスチャンスには結びつかん、という判断なのかな

それならOfficeレベルより上は不要かも

1148
デフォルトの名無しさん[sage]   投稿日:2017/01/29 22:40:41  ID:h9OztPwg.net(2)
喋りん坊だけのスレで職人技がないね

1149
デフォルトの名無しさん[sage]   投稿日:2017/01/29 22:43:44  ID:3OHjeGHP.net(12)
>431職人技はプロに求めろよw

1150
デフォルトの名無しさん[sage]   投稿日:2017/01/29 22:58:56  ID:e2GiLXmE.net(4)
webBrowserコントロール追加したんだけどバージョンがIE7でした
ググって調べたらVBとかC#の情報だったけど、レジストリにWebBrowserControl.exeの名前で値追加する方法があったのでやってみたけど、
バージョン変わりませんでした。
VBAでは方法が違うんでしょうか?

1151
デフォルトの名無しさん[sage]   投稿日:2017/01/29 23:05:16  ID:e2GiLXmE.net(4)
ただの勘違いで解決しました
ありがとうございました

1152
デフォルトの名無しさん[sage]   投稿日:2017/01/29 23:12:11  ID:xNqGWhsy.net(6)
>434
礼を言われるほどのことじゃないよ!

1153
デフォルトの名無しさん[sage]   投稿日:2017/01/30 00:49:56  ID:Evqo1D2G.net(2)
大企業で情報部門も存在していても、すべて任せるわけにもいかないからな。

1154
デフォルトの名無しさん[sage]   投稿日:2017/01/30 05:04:33  ID:6lLneJEZ.net(2)

1155
デフォルトの名無しさん[sage]   投稿日:2017/01/30 09:50:19  ID:DMFEN635.net(2)
アクセスアップとお小遣い稼ぎの裏技
トラフィックエクスチェンジ
http://tra-chan.jugem.jp/?eid=1

1156
デフォルトの名無しさん[sage]   投稿日:2017/01/30 16:25:14  ID:F1tgy4u/.net(4)
like演算子使うとき“[”と“]”ってどうしてる?

1157
デフォルトの名無しさん[sage]   投稿日:2017/01/30 18:29:00  ID:mknZdUVz.net(2)
[ ]で囲んでる

1158
デフォルトの名無しさん[sage]   投稿日:2017/01/30 19:40:12  ID:EbqBYLP7.net(2)
囲わなきゃいけないのは [ だけで、 ] の方はどうでも良いんじゃなかったっけ?

1159
デフォルトの名無しさん[]   投稿日:2017/01/30 20:12:58  ID:dKn8bdIS.net(2)
>428
まあ、一般企業じゃないから(なんちゃら組合ってやつ)潰れる事はないだろうが、今時経理も帳簿と電卓、ボールペンだし
財務会計ソフトを導入したもののソフトに入力しながら電卓で検算してるしw
「コンピューターは信用できない」とか総務のお局様が言ってるからどうにもならん。
オレは自分の業務に使うものは自分でマクロ書いて定時で帰れるようにしてるが、他の連中は「画像3000枚に一つずつ!連番を振って
徹夜した」とか差し込み印刷を教えても「そんなズボラなやり方はダメだ」と言ってテンプレートに入力→印刷→テンプレートを初期化を200件朝までやってたとか
それが50代とかじゃなく30代のバリバリ中堅どころなんだから笑うしかねえわ

1160
デフォルトの名無しさん[sage]   投稿日:2017/01/30 20:16:47  ID:4xfdjQgw.net(2)
無職をこじらせるとこうなるのか。

1161
デフォルトの名無しさん[sage]   投稿日:2017/01/30 21:03:40  ID:F1tgy4u/.net(4)
>440
なるほど
でもそれだと“[”を含む、しかできなくない?
まあ詳しく調べるならInStr使えばいいんだけどさw

1162
デフォルトの名無しさん[sage]   投稿日:2017/01/30 21:14:54  ID:QDHU/4vl.net(2)
>442
私も定時で帰る手段としてのプログラミング同感
今時、できの悪い奴らの根性語り、、恥ずくないのか!w

1163
デフォルトの名無しさん[sage]   投稿日:2017/01/30 21:19:02  ID:EeAzQJfr.net(2)
>442みたいな会社がまだこの日本にあるんだw

1164
デフォルトの名無しさん[sage]   投稿日:2017/01/30 21:39:41  ID:dJWPhbF6.net(2)
>446
全体的な学力の低下の影響で応用の利かないバカはむしろ増えてる

1165
デフォルトの名無しさん[sage]   投稿日:2017/01/30 21:42:30  ID:UfG8r5Q5.net(2)
言われたことを言われたままにやるやつが増えてるとは感じる
学歴高くても頭使わないやつが多すぎる

1166
デフォルトの名無しさん[sage]   投稿日:2017/01/30 22:05:07  ID:gqMuGKk3.net(2)
学歴と学力

1167
デフォルトの名無しさん[sage]   投稿日:2017/01/30 22:34:24  ID:DRq3TNDG.net(2)
年寄りくさい奴らだ

1168
デフォルトの名無しさん[sage]   投稿日:2017/01/30 23:59:13  ID:pve8veDd.net(2)
能力あっても出世できるかわからん社会だからなぁ
能力ひけらかすより足並み揃えて今の仕事をやりすぎずサボりすぎずぐらいに維持する方が全体の利益になるんだよ

1169
デフォルトの名無しさん[sage]   投稿日:2017/01/31 00:10:36  ID:W4oCxLcQ.net(2)
起業すればええ

1170
デフォルトの名無しさん[sage]   投稿日:2017/01/31 04:45:25  ID:7lVbi0HF.net(2)
>451
全体の利益になるの全体ってどの範囲
自分?自チーム?自部門?自社?自事業界?
海外も含めて考慮すると?

1171
デフォルトの名無しさん[sage]   投稿日:2017/01/31 14:09:13  ID:W2MQjnqi.net(2)
どうやっていても期日には間に合っているなら自部門くらいまでじゃないかな
その先はどっちでも不利益になるわけでなし

1172
デフォルトの名無しさん[sage]   投稿日:2017/02/01 21:42:36  ID:UlFFF3K3.net(2)
久しぶりにこのスレ覗いたら
馬鹿馬鹿言ってる無教養者が踊っててワロタw

いやー、多分EXCELのシートやCSVファイルにSQL投げたことないんだろうね。

1173
デフォルトの名無しさん[]   投稿日:2017/02/01 21:51:20  ID:PbjZqAWj.net(2)
SQL投げるって言いたい盛りですので

1174
デフォルトの名無しさん[sage]   投稿日:2017/02/01 22:06:49  ID:TAfVniq5.net(2)
馬鹿は用語を正確に使えないからね

1175
デフォルトの名無しさん[sage]   投稿日:2017/02/01 23:10:08  ID:YqrNMNH4.net(2)
ていうかわざと曖昧に言ってるだろ?

1176
デフォルトの名無しさん[sage]   投稿日:2017/02/02 00:50:04  ID:26wow3Y8.net(8)
deleteができない無能君が煽って教えて貰おうとしてるんだろ

1177
デフォルトの名無しさん[sage]   投稿日:2017/02/02 06:35:42  ID:oZoqJ5pi.net(4)
煽りじゃなく、SQLだけでエクセルシート上からDELETEする方法があるなら知りたい。
今のところ主要な数値を無効な値へUPDATEするくらいしか有効な手段がないんだよね。

1178
デフォルトの名無しさん[sage]   投稿日:2017/02/02 07:39:32  ID:eC+H4ibC.net(2)
アクセス使えよ

1179
デフォルトの名無しさん[sage]   投稿日:2017/02/02 08:08:18  ID:mHe9v9aT.net(2)
>461
この人バカじゃん

1180
デフォルトの名無しさん[sage]   投稿日:2017/02/02 08:40:21  ID:6HuXGQiF.net(2)
ここExcel VBAスレだからなぁ

1181
デフォルトの名無しさん[sage]   投稿日:2017/02/02 10:49:25  ID:/oce7NjA.net(6)
>460
どういう方法でやってダメだった?
自分は素のODBCでやってダメだったけどADOは知らず。

1182
デフォルトの名無しさん[sage]   投稿日:2017/02/02 18:21:07  ID:qO0hDPsp.net(2)
delete できると言ってる奴はコード出せないから察してやってくれ

1183
デフォルトの名無しさん[sage]   投稿日:2017/02/02 18:21:37  ID:ZUZ0NvC+.net(2)
せめてExcelからDB叩いて結果だけシートに貼ろうよ
シートに数万行って重いだけだし恐らく使い方間違ってるよ

1184
デフォルトの名無しさん[sage]   投稿日:2017/02/02 18:31:42  ID:aDxFABtY.net(4)
>466
色々と制約があるんじゃね

1185
デフォルトの名無しさん[sage]   投稿日:2017/02/02 18:39:17  ID:OxqW0VIp.net(2)
行削除は無理みたいね。
https://support.microsoft.com/ja-jp/help/316934/how-to-use-ado.net-to-retri...
> 削除操作を実行しようとすると、次のエラー メッセージが表示されます。
> ---
> この ISAM では、リンク テーブル内のデータを削除することはサポートされていません。
> ---
> この制限は、Excel ブックをデータベースとして扱う場合に固有です。

1186
デフォルトの名無しさん[sage]   投稿日:2017/02/02 18:47:16  ID:26wow3Y8.net(8)
>467
制約なんかねーよ

1187
デフォルトの名無しさん[sage]   投稿日:2017/02/02 18:51:25  ID:aDxFABtY.net(4)
>469
なんで他の職場環境の事を断言できるんだw

1188
デフォルトの名無しさん[sage]   投稿日:2017/02/02 19:03:14  ID:26wow3Y8.net(8)
>470
ああ、ソフト的ではなく環境的にということね

1189
デフォルトの名無しさん[sage]   投稿日:2017/02/02 19:37:44  ID:NSv6UvRa.net(2)
>471
わざわざエクセルをDBに使うなんてそういうことやろ

1190
デフォルトの名無しさん[sage]   投稿日:2017/02/02 19:45:16  ID:26wow3Y8.net(8)
>472
daoを使えばできるのに使えない人じゃないか?

1191
デフォルトの名無しさん[sage]   投稿日:2017/02/02 19:50:07  ID:/oce7NjA.net(6)
出来ると言ってるやつは
「いますぐマスターすべきExcelシートにDELETE文を発行する10の方法」
という記事をQIITAに書け。

1192
デフォルトの名無しさん[sage]   投稿日:2017/02/02 20:02:10  ID:oZoqJ5pi.net(4)
「エクセルブックをデータベースとして利用する方法は知っているけど、
Accessその他のDBソフトに繋いで利用する方法は知らない」

ってどんな確率だよ。

1193
デフォルトの名無しさん[sage]   投稿日:2017/02/02 20:07:41  ID:/oce7NjA.net(6)
>475
そうだなあ、、、

・エクセルしかない環境
とか、
・データ入力者は別にいて、そいつがエクセルしか使わない
とか?

1194
デフォルトの名無しさん[sage]   投稿日:2017/02/02 20:15:04  ID:bpSSgRJM.net(2)
ADOもDAOもミドル層の話だからな
>468によれば、Microsoft.Jet.OLEDB.4.0では削除できないみたいだけど
出来るって言ってるやつも出来ないって言ってるやつも、ドライバ(プロパイダ)明示しろや

1195
デフォルトの名無しさん[]   投稿日:2017/02/02 21:51:23  ID:TcNEtgX9.net(2)
君たちは本当にSQLを愛しているんだな

1196
デフォルトの名無しさん[sage]   投稿日:2017/02/02 23:04:57  ID:JuktWcDi.net(2)
>462
完全にエクセルでDBの方がバカなんだけど
もしかしてExcel VBAでAccess使っちゃダメみたいなローカルルールがあんの?

1197
デフォルトの名無しさん[sage]   投稿日:2017/02/02 23:41:12  ID:yoXwSHRo.net(2)
エクセルにクエリ投げてデータ取ってくるの便利といえば便利なんだけど
a1セルからデータ始まってない場合とかどうすんだ?
表形式ですらない場合のほうが多いし

1198
デフォルトの名無しさん[sage]   投稿日:2017/02/03 04:47:43  ID:OWBaaXVb.net(2)
>479
DELETEさえ使えればエクセル単体でDB処理が完結するから便利なんだよ。
これ一つ使えないせいで仕方なく外部のDB使ってる場合が多いと思う。
発想が逆というか、話の前提条件というか。

まぁ、そもそも出来ない事を出来ると主張した奴が悪いんだけどね。

1199
デフォルトの名無しさん[sage]   投稿日:2017/02/03 07:06:56  ID:XP7JqKvc.net(2)
>479
excelだけでやることに意味があることもおおいだろ
少しは頭使え

1200
デフォルトの名無しさん[sage]   投稿日:2017/02/03 07:18:59  ID:2s9sq5BM.net(2)
SQL Server Express でいいじゃん。タダだし楽ちんだ。

1201
デフォルトの名無しさん[sage]   投稿日:2017/02/03 08:15:27  ID:Ibd8YbHy.net(2)
>479
普通の会社なら Excel が入っていない PC は滅多にないけど Access が入ってないことはよくある

1202
デフォルトの名無しさん[sage]   投稿日:2017/02/03 08:17:25  ID:6hF18qg4.net(2)
>461
>480
できるようにしろよ
お前は雛かw

1203
デフォルトの名無しさん[sage]   投稿日:2017/02/03 08:18:24  ID:jCN45Z8M.net(2)
>484
だよね
うちも情シス課だけだ

1204
デフォルトの名無しさん[sage]   投稿日:2017/02/03 10:15:04  ID:jamIg+V1.net(2)
Microsoft Access 2013 Runtime

1205
デフォルトの名無しさん[sage]   投稿日:2017/02/03 22:34:23  ID:zw5JONDs.net(2)
>480
実は問題ない。
SELECT * FROMで全部拾うと、
勝手に列名書き足してくれるから。

こんな感じの、すげぇダッセェwwwシートになるけど。

F1 F2 F3 F4 F5 F6 F7 F8 F9 F10
                   2017/2/3
      ○○○一覧

No 商品名 単価 数量 合計 備考
1  ▲▲   100   2  200 □□
2  ◎◎   500   1  500 ▽▽
3  ××   320   2  640 ◆◆

後でRows("1:4").Deleteしてもいいし、
そもそも項目をF1 AS [No]とかにして、
WHEREで余計なところを消してもいい。

1206
デフォルトの名無しさん[sage]   投稿日:2017/02/04 00:03:57  ID:L9lbN/6P.net(6)
1つプロパティをLet Getするだけで、6行も使っちゃうんだけど、
何とかならんだろうか。
10個あったら60行っすよ。

1207
デフォルトの名無しさん[sage]   投稿日:2017/02/04 00:23:48  ID:IKUGnnqZ.net(2)
ユーザーフォームのトグルボタンをいくつか作成
IFで指定した列が表示が表示されてるならValueをTrue(押されてる状態)にするという処理を書いています
その後の処理のためにイベントプロージャーで、トグルボタンをクリックすると列の表示、非表示を指定できるようにしていますが、最初のIF文でもイベントプロージャーを実行してしまいます
何か回避策ありませんか?

1208
デフォルトの名無しさん[sage]   投稿日:2017/02/04 01:50:33  ID:DTJgp/8V.net(4)
>489
Let Get合わせて最低2行だろjk

1209
デフォルトの名無しさん[sage]   投稿日:2017/02/04 01:52:48  ID:keYK1J0l.net(2)
イベントの再入を防ぎたいんだよな
なんちゃらEnableみたいなのがあったけど思いだせん
自分でぐぐってくれ

1210
デフォルトの名無しさん[sage]   投稿日:2017/02/04 03:27:18  ID:DTJgp/8V.net(4)
>490
イベントを禁止できないけど こうゆうのどう?

If ToggleButton1.Value = False Then
  ToggleButton1.Tag = 1
  ToggleButton1.Value = True
End If


Private Sub ToggleButton1_Click()
If ToggleButton1.Tag <> "" Then
  ToggleButton1.Tag = ""
  Exit Sub
End If

'処理

End Sub

1211
デフォルトの名無しさん[sage]   投稿日:2017/02/04 05:14:57  ID:XGGN10p2.net(2)
質問です。
OracleDBのテーブルにあるCLOBフィールドに格納
されたExcelファイルにアクセスしてReadOnlyで開くか
ダウンロードするかしたいと考えています。
テーブル仕様書を見ると、CLOBにXMLTypeで格納され
ているとあります。
DBMS_LOB.SubStr()でVARCHAR2に変換して
先頭数文字取得しようとするのですがエラーでこけます。
GGって良い事例がないか捜しているのですがうまく見つけ
られません。VBAで可能でしょうか?
ODBC(Excel Driver)またはOraDynasetは利用できる
環境にあります。

1212
デフォルトの名無しさん[sage]   投稿日:2017/02/04 11:23:15  ID:R/BCzGYY.net(8)
>489
アクセサ云々より先に継承だからなあ

1213
デフォルトの名無しさん[sage]   投稿日:2017/02/04 11:37:21  ID:O5nNdZ1M.net(8)
>489
たくさんあったら使う側も面倒なんだからひとつのメソッドで同時に設定すればいいんじゃない?
相互依存のない独立したプロパティが10個あるクラスだとしたら設計がまずいか、相当なレアケースのどちらか。

1214
デフォルトの名無しさん[sage]   投稿日:2017/02/04 12:40:09  ID:pgmrL8Re.net(2)
>489
改行しないで二行でかけ

1215
デフォルトの名無しさん[sage]   投稿日:2017/02/04 13:20:38  ID:R/BCzGYY.net(8)
コロンで繋げば一行で書けるな、確かに

1216
デフォルトの名無しさん[]   投稿日:2017/02/04 15:59:29  ID:4MwsZCTu.net(2)
質問します
一つ目の画像を縦横の短い長さでクロップしたいのですが
どこがまちがっているのでしょうか

Sub 画像をクロップして正方形にしたい()
Dim myPic As Shape
Set myPic = ActiveSheet.Shapes(1)
With myPic
TateYokoSa = Abs(.Height - .Width)
If .Height > .Width Then
.PictureFormat.CropBottom = .PictureFormat.CropBottom + TateYokoSa
Else
.PictureFormat.CropRight = .PictureFormat.CropRight + TateYokoSa
End If
End With
End Sub

1217
デフォルトの名無しさん[sage]   投稿日:2017/02/04 17:00:11  ID:OKds5wOX.net(2)
>494
文字コードじゃなくて?

1218
デフォルトの名無しさん[sage]   投稿日:2017/02/04 19:06:45  ID:L9lbN/6P.net(6)
>491
>497
>498
Property Let
 内容
End Property
Property Get
 内容
End Property

ググっても、こういう書き方しか見つからない・・・。

>496
クラス.名前
クラス.部署
クラス.年齢
クラス.性別
   ・
   ・
的な使い方をしたいんだけど、変?

1219
デフォルトの名無しさん[sage]   投稿日:2017/02/04 19:11:21  ID:hnMbbMl2.net(2)
>501
Property Let : {...} : End Property

って書き方でしょ。
どっちにしろ単純なメンバー変数の読み書きをいちいちメソッド化してもなぁ。

1220
デフォルトの名無しさん[sage]   投稿日:2017/02/04 19:35:42  ID:ypmLJyxS.net(2)
>501
C#使いなよ

1221
デフォルトの名無しさん[sage]   投稿日:2017/02/04 19:55:29  ID:nIvSnu1n.net(2)
>501
letもgetもあるなら、クラスの中にpublic変数作った方が良い。
隠蔽的にはなんの役にも立たないけど。

1222
デフォルトの名無しさん[sage]   投稿日:2017/02/04 20:04:50  ID:R/BCzGYY.net(8)
>501
変数の初期値設定とかでもよくやるけど
Dim c as class1:set c=new class1
とかね

1223
デフォルトの名無しさん[sage]   投稿日:2017/02/04 20:17:51  ID:L9lbN/6P.net(6)
>502
目から鱗。
コロンは知ってたけど、まさか最初と最後にも使えるとは思わなかった。
ありがとう。

1224
デフォルトの名無しさん[sage]   投稿日:2017/02/04 20:42:11  ID:pJMir97a.net(4)
>505
> Dim c as class1:set c=new class1
そのパターンは
Dim c As New class1
でよくね?

1225
デフォルトの名無しさん[sage]   投稿日:2017/02/04 20:55:01  ID:O5nNdZ1M.net(8)
>507
いいと思うけどなぜか嫌う人もいる

1226
デフォルトの名無しさん[sage]   投稿日:2017/02/04 20:57:38  ID:TSeQ29q+.net(2)
宣言と代入を分けたいタイプ

1227
デフォルトの名無しさん[sage]   投稿日:2017/02/04 21:02:39  ID:O5nNdZ1M.net(8)

1228
デフォルトの名無しさん[sage]   投稿日:2017/02/04 21:17:54  ID:O5nNdZ1M.net(8)
>509
宣言と同時に初期化(≠代入)したい、ってことでしょ

1229
デフォルトの名無しさん[sage]   投稿日:2017/02/04 21:49:00  ID:pJMir97a.net(4)
>510
ほえー、これは知らんかったわ
なんでこんな凝ったことするかねぇ...

1230
デフォルトの名無しさん[sage]   投稿日:2017/02/04 22:12:26  ID:R/BCzGYY.net(8)
>507
もう出てるけどコンストラクタが働かない

1231
デフォルトの名無しさん[sage]   投稿日:2017/02/05 10:29:00  ID:7v2W1cWr.net(2)
>499
多分この仕様のせいかと
https://msdn.microsoft.com/ja-jp/library/office/ff838027.aspx
>トリミングは、元の図の大きさを基に計算されます。
>たとえば、元の図が高さ 100 ポイントの場合に、それを 200 ポイントに変更して、
>CropBottom プロパティに 50 を設定すると、
>図の下端からトリミングされるのは 50 ポイントではなく 100 ポイントとなります。

だから↓のような処理にすればよくね?
現在のサイズを保存 → オリジナルサイズに戻す → Crop → Cropしてない方のサイズに戻す

1232
デフォルトの名無しさん[]   投稿日:2017/02/05 18:56:44  ID:qj78kXRn.net(2)
>514
ありがとうございます 一発で解決しました
変な仕様だとおもったけど拡大縮小を考えたら
こっちのほうが誤差がでなくて使いまわしがいいのかも

1233
デフォルトの名無しさん[sage]   投稿日:2017/02/06 12:18:45  ID:Xnyr5yqp.net(2)
>493
ありがとうございます!
無事想定通りに動きました!

1234
デフォルトの名無しさん[]   投稿日:2017/02/06 15:58:56  ID:6lEgfPNZ.net(2)
これできるとどんないいことあるん?

1235
デフォルトの名無しさん[sage]   投稿日:2017/02/07 21:15:01  ID:0h02j8pV.net(4)
エクセルでお聞きしたいのですが
簡易CTIをエクセルで作りたいと思ってます
パソコンに繋いでいるfomaの着信を拾って相手の発信番号を取得するにはどうすれば良いでしょうか?

com3ポートに認識されていたのでterateamで接続しATコマンドでの発着信はできました

vbaでの操作ではCOMポートにATコマンドを入力して発信はできました

なんとか自力でココまで調べましたが、肝心の着信を拾う方法が一向に分かりません•••

何方か教えて頂けませんでしょうか

1236
デフォルトの名無しさん[sage]   投稿日:2017/02/07 21:26:24  ID:obnTOw8Y.net(2)
PCで起こったイベントをVBAで受けとるの無理じゃね?
できるなら俺も教えてほしい
煽りとかじゃなくて

1237
デフォルトの名無しさん[sage]   投稿日:2017/02/07 21:33:09  ID:71skcbUj.net(2)
仕様をオープンにしてる機器じゃないとデータ取れなかった記憶があるが
232Cアナライザーでどんな通信してるかバイパスして見るとかいう手もある
http://www.fullfree.jp/i/cti/%E6%90%BA%E5%B8%AF%E9%9B%BB%E8%A9%B1/
対象機器なら ↑ こういう手もあるかも

1238
デフォルトの名無しさん[sage]   投稿日:2017/02/07 21:45:01  ID:K6SNK3fF.net(2)
また馬鹿が来た

1239
デフォルトの名無しさん[sage]   投稿日:2017/02/07 22:41:07  ID:4GsqGq1T.net(8)
ファイルが関数で重いため、入力用のシートと関数用のシートに分けてます。計算したいときだけシートを計算するようにしてます。
しかし起動時に勝手に計算してしまうことがあります。(計算されないこともある)原因がわかる方がいたら教えてくださいm(__)m
マクロ勉強中なので変なこと描いてるかもしれませんが、お手柔らかにお願いします。


Private Sub Workbook_Open()
Worksheets(計算シート1).EnableCalculation = False
Worksheets(計算シート2).EnableCalculation = False
End Sub

Sub 再計算()
Worksheets(計算シート1).EnableCalculation = True
Worksheets(計算シート2).EnableCalculation = True
Calculate
Worksheets(計算シート1).EnableCalculation = False
Worksheets(計算シート2).EnableCalculation = False
End Sub

1240
デフォルトの名無しさん[sage]   投稿日:2017/02/07 22:42:44  ID:4GsqGq1T.net(8)
>522
EXCEL2007 windows7です。

1241
デフォルトの名無しさん[sage]   投稿日:2017/02/07 22:47:36  ID:vzZ8DTGh.net(2)
>522


数式再計算を止める
Application.Calculation = xlCalculationManual
Application.Calculation = xlCalculationAutomatic

「.Calculation」と「.EnableCalculation」のどちらが効果的か
http://stabucky.com/wp/archives/6840


.EnableCalculationってのは初めて知ったw

1242
デフォルトの名無しさん[sage]   投稿日:2017/02/07 22:49:15  ID:0h02j8pV.net(4)
>520
fullfreeは試しに使って見ました
通知も上手く動くので大変良いのですが、本格的に使うには有料版を買わなきゃいけないのです•••
VB.netで似たようなものなら作れるのかな

1243
デフォルトの名無しさん[sage]   投稿日:2017/02/07 22:56:00  ID:kg1BFKbj.net(2)
msの文章まんまだけれど

ファイル名 ドキュメントの種類 計算方法
------------------------------------------------------
Auto1.xls Workbook 自動
Manual1.xls Workbook 手動
Auto2.xls Workbook 自動

Excel の計算方法は、次の各条件を適用して決定されます。

最初に開かれるドキュメントでは、そのドキュメントで最後に保存された計算方法が使用されます。以降に開かれるドキュメントでは、同じ計算方法が使用されます。

たとえば、Auto1.xls を開いてから Manual1.xls を開く場合は、両方のドキュメントで自動の計算方法 (Auto1.xls で使用されていた計算方法) が使用されます。Manual1.xls を開いてから Auto1.xls を開く場合は、両方のドキュメントで手動の計算方法が使用されます。

事前に何かのブックを開いている…ってのはないのかな

1244
デフォルトの名無しさん[sage]   投稿日:2017/02/07 22:57:33  ID:4GsqGq1T.net(8)
>524
回答ありがとうございます。
前はそっちでやってたんですけど、結果は同じでした。
それにexcel自体を全て手動計算にしている状態で別のexcelファイルを開くと、後から開いたEXCELファイルも手動になってしまうので、それは辞めました。
アクティブ状態のとき手動計算。非アクティブのとき自動計算にするっていう感じでごまかしていたんてすけど、それでも他のファイルがアクティブのときは重くなってしまうのでエクセル全体の手動計算化は諦めたんです。

1245
デフォルトの名無しさん[sage]   投稿日:2017/02/07 23:13:44  ID:4GsqGq1T.net(8)
>526
それもあり得ると思ってそのファイル以外は開かないようにしていろいろ試しているんですけど、たまに起動時に自動計算してしまいます。

上記の再計算マクロを実行したときに、次回起動時に再計算されることが多い気がします。

あと変わったことといえば、保存時にバックアップファイルを作成すると、読み取り専用で開くを推奨するにチェックを入れてます。

1246
デフォルトの名無しさん[sage]   投稿日:2017/02/07 23:22:48  ID:diTiDCUQ.net(2)
>518
どう繋いでるのか知らんけど
AT+CMR=3,0,0,1,0
で非請求リザルトコードを送出するようにして
AT+CLIP=1
で相手先の番号通知をするようにしておけば電話がかかってきたらリザルトコードと電話番号が送られてくるはず
https://www.nttdocomo.co.jp/binary/pdf/corporate/technology/document/foma...

1247
デフォルトの名無しさん[sage]   投稿日:2017/02/08 00:37:33  ID:ZVPHpwbP.net(4)
どう考えても、セルよりソルかゾルの方がカッコいいよな。
Zolls(4,2).Value= "あ"
みたいな。

何でかというと、サム(SUM)も、ザム(ZAM)にしたほうがカッコイイからです。
なので、LEN→ZEN、LEFT→LEVT、IF→IVEに直ることを望みます。

1248
デフォルトの名無しさん[sage]   投稿日:2017/02/08 00:44:56  ID:JHaqns+X.net(2)
どう考えても意味が通じなくなるよな

何でかというと、SUM(和)も、動きと意味を同じにしているからです。

1249
デフォルトの名無しさん[sage]   投稿日:2017/02/08 01:23:44  ID:gxc/oAA1.net(2)
サムって書くとアメリカ人の名前みてーだなや

1250
デフォルトの名無しさん[sage]   投稿日:2017/02/08 12:32:13  ID:YRaicT0y.net(4)
>530
前向きに善処します

1251
デフォルトの名無しさん[sage]   投稿日:2017/02/08 15:05:50  ID:jpNr2q1t.net(4)
サムプロダクトって毎回?????
だからやめて欲しい
何度説明読んでも覚えられない

1252
デフォルトの名無しさん[sage]   投稿日:2017/02/08 16:01:16  ID: