[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 01/29 07:34 / Filesize : 283 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part22



1 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 22:36:18.78 ]
01 pc11.2ch.net/test/read.cgi/tech/1054356121/
02 pc11.2ch.net/test/read.cgi/tech/1168308855/
03 pc11.2ch.net/test/read.cgi/tech/1180192018/
04 pc11.2ch.net/test/read.cgi/tech/1189814602/
05 pc11.2ch.net/test/read.cgi/tech/1197448064/
06 pc11.2ch.net/test/read.cgi/tech/1205231499/
07 pc11.2ch.net/test/read.cgi/tech/1212587819/
08 pc11.2ch.net/test/read.cgi/tech/1219673793/
09 pc11.2ch.net/test/read.cgi/tech/1228372971/
10 pc12.2ch.net/test/read.cgi/tech/1235332603/
11 pc12.2ch.net/test/read.cgi/tech/1241885130/
12 pc12.2ch.net/test/read.cgi/tech/1247566074/
13 pc12.2ch.net/test/read.cgi/tech/1254281104/
14 pc12.2ch.net/test/read.cgi/tech/1262748898/
15 pc12.2ch.net/test/read.cgi/tech/1271261239/
16 hibari.2ch.net/test/read.cgi/tech/1280045912/
17 hibari.2ch.net/test/read.cgi/tech/1289182437/
18 hibari.2ch.net/test/read.cgi/tech/1298240666/
19 hibari.2ch.net/test/read.cgi/tech/1305754555/
20 hibari.2ch.net/test/read.cgi/tech/1312435844/

前スレ:
Excel VBA 質問スレ Part21
hibari.2ch.net/test/read.cgi/tech/1316931607/

2 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 22:37:24.79 ]
ExcelのVBAに関する質問スレです

★1 質問テンプレ(雛形)は用意しませんが、OSとExcelのバージョンは必ず書きましょう。

★2 ExcelのVBA以外の部分に関する質問はNGです。
   但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。

★3 ExcelのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。

 VBAとは、『Visual Basic for Application』の略で
  Application
  ├Workbooks
  |└Workbook
  |  ├Worksheets
  |  |└Worksheet
 というApplication以下のオブジェクトを、VB言語で操作するものを指します。
 例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、
 セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。

★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。

★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み、
   コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
   ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。

★6 わからなければとりあえず「マクロの記録」(Alt, T, M, R)


3 名前:前スレ980 mailto:sage [2011/11/27(日) 22:40:56.31 ]
初めてスレたてた。
URLとかテンプレとか間違ってたらごめん。
あと、話を遮って質問したけども、関係ない話はやめたほうがいい。
だって、俺がスレたてなきゃいけなくなtt(ry

4 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 23:19:04.69 ]
>>1

5 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 23:22:10.17 ]
>>1
前スレの最後はうんこくんが荒らして大変だったねw
ILの直腸注入だったっけ


6 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 23:27:38.33 ]
まだ、粘着してるよ。

スルー推奨 >> 各位

7 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 23:28:32.99 ]
愛の直腸注入に付いては俺も聞きたいが
また荒れるからやめとけ

8 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 23:55:43.05 ]
名前って値が増えても自動で拡張できないけどこれVBA使えばできるよね
やり方教えてくれ

  A
1 100
2 200
3 300

ここで、A1〜A3に「表1」という名前をつける
つぎにA4に、400という数値を入力すると
A1〜A3の範囲だった「名前:表1」が自動的に「A4」まで拡張される

みたいなことやりたいんだけどどうやればいい?

9 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 00:20:00.95 ]
セルの入力イベントで
名前の範囲をカレントリージョンのものに付け直せば?

10 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 00:31:53.27 ]
>>8
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
Set r = ActiveWorkbook.Names("表1").RefersToRange
If r.Column = Target.Column And r.Row + r.Rows.Count = Target.Row Then
ActiveWorkbook.Names("表1").RefersTo = "=" & Target.Worksheet.Name & "!" & r.Resize(r.Rows.Count + 1).Address
End If
End Sub

とりあえず適当に書いてみた
下に一つ増えるだけ。複数貼り付けとかどうなるかしらん
Worksheet_Changeイベントで、てきとうに範囲決めて、Names().RefersToで設定するだけ
すきな用に直してくれ



11 名前:デフォルトの名無しさん [2011/11/28(月) 04:51:18.01 ]
前スレで以下の質問をしたものなのですが

> 変数 X に例えばA1〜A20の数値の和、合計を入れたいのですが。
という質問をして

> X = WorksheetFunction.Sum(Worksheets("Sheet1").Range("A1:A20"))
というアドバイスをいただいたのですが、この一文を経過したあとで、

ファンクションプロシージャで定義された語句を使うとエラーか、上手く作動しなく
なってしまうのですが、なにかそのようなルールがあるのでしょうか?

12 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 07:25:32.21 ]
質問です。
Offset(,1)とOffset(0,1)ではどちらが一般的でしょうか?

13 名前:デフォルトの名無しさん [2011/11/28(月) 07:30:48.54 ]
>>11
うーん。
状況が見えないから何とも言えないけど、
@何か別に理由がある。
A合計対象セル範囲に足せない文字列とかが含まれている。
B合計対象セル範囲がシート枠を超えている。
CILとの直交性
あたりが原因なんじゃないかな。


14 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 07:39:44.44 ]
>>12
そこを省略しちゃうと、Offset知らない人に
NullやVbNullString辺りが入ることが許されるのか、
勝手に0が入るのかコードから見て取れないから、
前者は余り一般的とは呼べないと思う。
一般的、可読性が高いのは後者じゃない?

15 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 11:15:08.97 ]
>>12
俺は0は書かないな。
こんな簡単なものに可読性もへったくれもないと思うし。
ところで省略を嫌う人ってResizeで
With Range("A1").Currentregion
  .Resize( ,2)
End With
これを下のように略さずに書くのかな?
With Range("A1").Currentregion
  .Resize(.Rows.Count ,2)
End With

16 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 11:30:47.07 ]
>>8
Excelのバージョンは?
2007以降ならテーブル(構造化参照)使えばいいんじゃないの?

17 名前:デフォルトの名無しさん [2011/11/28(月) 12:16:00.19 ]
「仕事に役立つ ExcelVBA実用サンプルコレクション」の本は大人気。
amazonの中古で売れに売れて、もう高額の出品者からしか買えなくなりました。
すでにレアものです。


18 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 13:15:28.02 ]
>>12,14,15
一般的って意味が、どう書く人が多いかって話なら
Offset(,1)やResize( ,2) って書く人が多いと思う
可読性に関して言えば、省略しない方が高いのはたしかではあるが
どっちにしろOffsetやResizeが何をするか、引数は何かが解らないと使えないので
大差がないと言えばまあその通り
だがたとえばこの例だと、Offsetは省略した値は0だけど、Resizeは省略した値はゼロではない
俺ならOffsetは0であることを明示的に示しときたいので省略しない
Resizeは変更しないことを明示的に示しときたいので、あえて書かない

19 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 17:53:47.27 ]
>>17
新装版あるけど

20 名前:17 [2011/11/28(月) 19:39:03.82 ]
>>19
新装版のことを言っておるにょだ



21 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 21:54:24.65 ]
Dim s(0) as String
s(0) = "aaa"
Debug.Print s(0)
これがなぜ通るのか理解できません。

22 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 22:08:26.22 ]
>>21
どこがどう問題だと思うの?

23 名前:デフォルトの名無しさん [2011/11/28(月) 22:15:17.18 ]
>>22
どこがどう問題と思ってると思う?

24 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 23:29:09.18 ]
>>23
C言語に置き換えたらなんとなくわかるんじゃないか?

25 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 23:32:05.60 ]
C言語の配列は個数を指定する
VBAの配列はインデックスの最大値を書く

Dim s(1)だとs(0)とs(1)の2個になる

26 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 23:32:32.36 ]
>>17

つい、今確認したけど、普通に、Amazonで定価で買えるよ。
Amazonでは、常に人気書籍を定価以上の価格で出品している業者が張り付いている。

普段は売れないけど、たまたまAmazonの在庫が切れたときにアクセスして、、
「まずい、もうレアものになってしまったんだ」って勘違いして買う人が居るからだって。

27 名前:デフォルトの名無しさん [2011/11/29(火) 00:42:34.48 ]
>>26
そうでしたか。
それはすばらしいです。

ところでVBAじゃなくExcelの関数のほうも
こういうサンプルがた〜くさん載ってる実用的な本は
ないものでしょうか?

28 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 07:58:26.67 ]
>>25
ありがと、やっぱそうなのか。ググっても"要素数を指定"って書いてるのが多くて悩んだ。
久しぶりにVBA触ると色々謎仕様に直面して驚く。

29 名前:デフォルトの名無しさん [2011/11/29(火) 17:54:00.68 ]
一つのボタンで、画像と曲を変えていくものを作りたいです。
画像の部分はできたけれども、曲がだめぽ。
Dim cnt As Integer
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Private Const FILE_NAME As String = "C:\menu.mp3"
Private Sub UserForm_Initialize()
cnt = 1
ImageChange
musicChange
End Sub
Private Sub CommandButton1_Click()
ImageChange
musicChange
End Sub
Private Sub ImageChange()
On Error Resume Next
With Worksheets(1)
If cnt > .OLEObjects.Count Then cnt = 1
Image1.Picture = .OLEObjects("Image" & cnt).Object.Picture
cnt = cnt + 1
End With
End Sub
Private Sub musicChange()
If cnt = 1 Then
Call mciSendString("play """ & FILE_NAME & """", "", 0, 0)
Else
Call mciSendString("close """ & FILE_NAME & """", "", 0, 0)
End If
End Sub
曲はここから入れ子にしたいのだけど、最初の曲が流れない・・・

30 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 19:15:51.93 ]
cntが初期値1でImageChangeで+1されてからmusicChangeを呼び出してる
つまりcnt=1でmusicChangeを呼び出すことはないわけだが




31 名前:デフォルトの名無しさん [2011/11/29(火) 21:31:14.11 ]
Private Sub musicChange()
If cnt = 2 Then
Call mciSendString("play """ & "C:\アンパンマン.mp3" & """", "", 0, 0)
Else
Call mciSendString("close """ & "C:\アンパンマン.mp3" & """", "", 0, 0)
End If
If cnt = 3 Then
Call mciSendString("play """ & "C:\カレーパンマン.mp3" & """", "", 0, 0)
Else
Call mciSendString("close """ & "C:\カレーパンマン.mp3" & """", "", 0, 0)
End If
・・・以下 cnt=7 まで
End Sub

>>30 ありがとー。ちゃんと見直したらうっかりだった。
   で、このif文。うーん、確実にmp3をクリックで消すのでこの処理だけど
   もっとスマートにならんかのー。

32 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 21:39:18.52 ]
ファイル名を配列に突っ込んでおけばいいじゃない。
んで、ループで回してcntに一致している奴だけplayで後は全部close。

33 名前:デフォルトの名無しさん [2011/11/29(火) 21:42:18.96 ]
初心者です。
実行時エラー1004が出ます。
どこを直せばいいのか教えてください。
windows7/excel2010

Sub SetRows()
With Worksheets("Sheet2")
.Activate
.Range(Cells(2, 2), Cells(5, 5)).EntireRow.Value = "hoge"
End With
End Sub

34 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 21:45:14.47 ]
Cellsの出所が怪しいな。

35 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 22:53:27.13 ]
>>33
標準モジュールに書いてれば糞コードだけど一応それで動くはず。
Sheet2以外のシートモジュールに書いてあればRangeとCellsの親(シート)が違うので動かない。
正しくは
Sub SetRows()
With Worksheets("Sheet2")
  .Range(.Cells(2, 2), .Cells(5, 5)).EntireRow.Value = "hoge"
End With
End Sub
とCellsにもシートの修飾をつける。

36 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 23:39:35.49 ]
>>35
なるほど、なるほど
ありがとうございます!!

Sheet2以外のシートモジュールに書いてます。

インターネットのサイトを見て勉強し始めた段階なので
糞コードなのは申し訳ないです。

勉強になりました!

37 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 22:44:11.50 ]
VBAの入力補完機能だっけ?(Ctrl+Spaceのヤツ)

自分で定義したConstなどなどが
入力補完されることに今更気がついた。

しかも標準モジュールにつけた名前なんかも
入力補完の対象なのね。

処理時間は落ちるかもしれないけど、
標準モジュール名.モジュール名〜などで
明確に定義付けすると意味が通ってメンテが楽になりそう。


38 名前:デフォルトの名無しさん [2011/12/01(木) 10:32:45.43 ]
VBAからデスクトップ上などになるtxtファイルの中身を操作(文字列の追加・書き換え・削除)することは可能ですか?

39 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 13:45:12.97 ]
可能

40 名前:38 [2011/12/01(木) 15:48:27.73 ]
どうするのかを聞いておるのだ、アホ



41 名前:デフォルトの名無しさん [2011/12/01(木) 15:53:42.14 ]
>>40
VBAでそういうコードを書けば良い
OK?

42 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 16:48:51.03 ]
>>38 は可能かどうかを聞いてるだけだが? アホ?


43 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 22:06:18.25 ]
ここはあえてOPENステートメントを推してみる。
How meny files? な世界も偶には良いよね。

44 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 22:28:00.06 ]
Windows Script Host Object Modelへ参照設定して
Dim DesktopPath As String
Dim ShellObject As IWshRuntimeLibrary.WshShell

Set ShellObject = New IWshRuntimeLibrary.WshShell
DesktopPath = ShellObject.SpecialFolders("Desktop")

これでデスクトップのパスは得られるから、後は好きなようにやればよろし


45 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 00:53:27.34 ]
FileSystemObject使ってファイルパスとってきてそれを開いてあなた色に染めてから閉じる


46 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 12:00:59.07 ]
テキストファイルに色を付ける方法kwsk

47 名前:デフォルトの名無しさん [2011/12/03(土) 11:02:53.92 ]
そういうのスレ違いって>>2に書いてあるよ

48 名前:46 mailto:sage [2011/12/03(土) 11:15:11.77 ]
そんなこと言わずに教えれ

49 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 15:46:49.14 ]
>>48
これお勧めだよ。

ec2.images-amazon.com/images/I/413NNoUiCoL._SL500_AA300_.jpg

50 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 00:43:59.63 ]
 ̄ ̄ ̄ ̄ ̄ ̄ ̄l/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ∧_∧
    ( ´・ω・`)     ∧_∧
    /     \   (    )何言ってんだこいつ
.__| |    .| |_ /      ヽ
||\  ̄ ̄ ̄ ̄   / .|   | |
||\..∧_∧    (⌒\|__./ ./
||.  (    )     ~\_____ノ|   ∧_∧
  /   ヽ 空気読めよ   \|   (    )
  |     ヽ           \/     ヽ. オマエ馬鹿だろ
  |    |ヽ、二⌒)        / .|   | |
  .|    ヽ \∧_∧    (⌒\|__./ /




51 名前:デフォルトの名無しさん [2011/12/04(日) 03:36:25.49 ]
VBAで日付のシリアルの変数はIntegerで保管しておいて良い?
あるいはLongにしないとだめ?
あらまDate型もあるのね。絶対にDateにしないとだめ?

52 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 08:00:58.14 ]
>>51
用途による
IntegerでもByteでもお好きな型をどうぞ
2011/12/4はシリアル値だと40881だけど、必要な範囲はプログラムの作者にしかわからないから

53 名前:デフォルトの名無しさん [2011/12/04(日) 09:46:54.70 ]
>>52
Integerだと32000位までじゃなかったか?

54 名前:デフォルトの名無しさん [2011/12/04(日) 10:45:24.69 ]
NumberFormatとNumberFormatLocalの違いは
なんですか?

55 名前:デフォルトの名無しさん [2011/12/04(日) 11:08:24.36 ]
activecell.offset(1,0).select
activecell=10

activecell.offset(1,0).activate
activecell=10

これ結果は同じですよね?どちらがどういう理由で好ましいですか?

56 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 11:23:59.67 ]
>>54
NumberFormatLocalプロパティ
使用中のWindowsの国別情報に従った言語の書式記号が表示される
NumberFormatプロパティ
Exel既定の言語(英語)に従った言語の書式記号が表示される

基本、NumberFormatLocalを使っておけばOK

57 名前:デフォルトの名無しさん [2011/12/04(日) 11:26:58.13 ]
>>56
なるほどよくわかりました。
Localは地球の地域という意味でのlocalだったんですね。
Thank you.

58 名前:デフォルトの名無しさん [2011/12/04(日) 14:20:50.44 ]
時間を変数にするときも型はdateでOK?
あと、date型に日付だけを代入して使ってるときって時間の情報もたとえば0:00:00みたいなのがダミーで入ってるの?
逆の場合も疑問。(時間を代入したときは日付も入ってる?もしそうならそのときの日時は?)

59 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 14:25:25.95 ]
やりたいようにやれよ
いちいち他人に聞いてたら
出来るもんも出来んよ

60 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 17:33:23.31 ]
>>58
> あと、date型に日付だけを代入して使ってるときって時間の情報もたとえば0:00:00みたいなのがダミーで入ってるの?
> 逆の場合も疑問。(時間を代入したときは日付も入ってる?もしそうならそのときの日時は?)

なぜ試さん?



61 名前:58 [2011/12/04(日) 17:38:50.35 ]
みんなのVBA力と回答力を試しているんですが

62 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 17:45:44.12 ]
>>61
VBA力とか言ってる時点でみんなより自分が格下なのに気付けよ

63 名前:58 [2011/12/04(日) 18:27:48.04 ]
わからないなら無理にレスしてくれなくていいよ?

64 名前:58 [2011/12/04(日) 19:36:00.70 ]
>>63
こら、それはオレのセリフだ
ニセモノめが

65 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 21:03:36.56 ]
ここまでおれのじえん

66 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 21:15:48.15 ]
ツマンネ

67 名前:デフォルトの名無しさん [2011/12/05(月) 15:49:51.74 ]
セルに色が塗ってて、
その色をRGB(x,y,z)で表すときのx,y,zの値を取得するにはどうすればいい?

68 名前:デフォルトの名無しさん mailto:sage [2011/12/05(月) 15:59:54.97 ]
>>67
C = Range("A1").Interior.Color
R = C And &HFF
G = (C \ &H100) And &HFF
B = (C \ &H10000) And &HFF

69 名前:デフォルトの名無しさん mailto:sage [2011/12/05(月) 23:11:21.16 ]
スレ違いでしたらごめんなさい

Excelを用いてオークションのシミュレーションをしたいのですが、そのためには何について学ぶべきですか?
参考となる書籍やサイトをご存知でしたら教えていただきたいです

現在、どうやらExcelでオークションのシミュレーションができそうだ、ということを知ったレベルです

よろしくお願いします。

70 名前:デフォルトの名無しさん [2011/12/05(月) 23:46:22.60 ]
>>69
Sub オークションシミューション()
Dim a As Integer
a = Int(Rnd * 100 + 1)
If a <= 20 Then
ActiveCell = "あなたは入札に性交しました"
Else
ActiveCell = "あなたは入札に失敗しました"
End If
End Sub




71 名前:デフォルトの名無しさん mailto:sage [2011/12/05(月) 23:54:05.05 ]
>>69
> Excelでオークションのシミュレーションができそうだ、ということを知った

どこで知ったのか知らんけど、そこで聞けよ。

72 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 00:19:38.14 ]
>>71
それはExcelでシミュレーションをできるということを知って、自分のやろうとしてることも恐らくできるだろうと判断しました

どこかの掲示板で聞いた、というわけではないんです

73 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 00:25:40.24 ]
>>72
> Excelでシミュレーションをできるということを知って

だから、どこで知ったんだよ。
て言うか、他人と会話したことないのか?

74 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 01:00:52.64 ]
>>69
まずオクのシミュレーションはどんな作りにしたいのかをフローにして、
その後VBAでどう言ったコードにすればいいかを
考えればいいんじゃないかな

75 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 01:21:45.52 ]
>>74
何から手を付ければいいかわからなかったので、とても参考になりました

ありがとうございます

76 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 12:27:07.14 ]
ネットワーク上の共有フォルダにアクセスしたいんですが
VBAからネットワーク認証を行うにはどうすればよいのですか?

77 名前:67 [2011/12/06(火) 13:35:25.49 ]
>>68
あなた頭いいですな
脳ミソ詰まってる
わたしにも分けてくれ

78 名前:デフォルトの名無しさん [2011/12/06(火) 21:38:46.64 ]
別シートを操作するとき、そのシートをactivateしないとできないんだっけ?
でもできることもあるみたいだし。
でもそれを忘れてるか気にしないでいるとエラーが出ることもある。

どなたかこのしくみはどうなってるか教えてくれませんか?
非常に困っております。

79 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 21:55:14.09 ]
Excelで実際に操作するのと同じ様に使えばほぼ問題は無い。
でも、同じ操作で無くてもある程度は融通が利くよ。
って感じじゃね?
うまく動かなくて困ったら実際の操作を真似させる、で十分かと。
深く悩んだところで、MSの中の人すら完全に理解しているかどうか怪しいし。

80 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 22:39:11.97 ]
>>78
特定のシートオブジェクトを明示的に取得して、activate せずに、そのシートに対して操作することは可能
activate しないと使えない機能もあるが、どちらかというとレアじゃないかと思う

問題はマクロの記録とかで記録したコードについては activate前提のコードの書き方になっているということで、
記録したコードをそのまま使い回したいなら、アクティベートしたほうが無難だとは思う



81 名前:デフォルトの名無しさん [2011/12/06(火) 23:47:01.44 ]
個人用マクロブックを作ったら
Excelを[X]で閉じようとしたときに
2回ボタンを押さないといけなくなりやがった。

これを防ぐ方法ある?

82 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 06:47:38.01 ]
最近vbaの勉強始めた
大村あつしさんの参考書使ってる
4月までには使えるようになりたい
プロ野球の選手成績を管理したいんだ
野球ゲームの成績まとめでも使いたいし

83 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 08:39:20.32 ]
>>81
なんてメッセージ出てんの?

84 名前:デフォルトの名無しさん [2011/12/07(水) 19:26:41.10 ]
>>83
メッセージはなにも出ないんだ。
みんなも個人用マクロブックを作ってたらそうなってるんでしょ?

85 名前:デフォルトの名無しさん [2011/12/07(水) 19:27:27.27 ]
>>82
yuzuru.2ch.net/test/read.cgi/gamespo/1323059897/14-
あなたはこの人ですか?

86 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 20:52:36.60 ]
>>78
activateしないとできないのは、copyメソッドとかpastespecialメソッドとかでしょ
他にもあったっけ
なぜできないのか、この辺の理屈がどうも分からないんだよな〜

87 名前:デフォルトの名無しさん [2011/12/07(水) 21:12:04.89 ]
Pasteメソッドが、シートに対して行うというのも理解できない。
なぜそういう仕様になってるかおわかりのかたいらっしゃいますか?

88 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 23:17:29.91 ]
お知恵を拝借させてください。
下のように右クリックメニューから選択範囲のセルを塗りつぶす、みたいなことがしたいのですが、
「引数は省略できません。」のエラーになります。
どうすれば引数(例:34)を渡せますでしょうか?

Sub addMenu()
 Dim CB
 Set CB = Application.CommandBars("Cell").Controls.Add()
 With CB
  .Caption = "塗りつぶし"
  .OnAction = "setColor(34)"
 End With
End Sub

Sub setColor(col As Long)
 With Selection.Interior
  .ColorIndex = col
 End With
End Sub


89 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 00:05:42.28 ]
>>88
パージョンいくつ?

.OnAction = "'setColor(34)'"
又は
.OnAction = "'setColor 34'"
じゃないかな?(シングルクウォートで括る。)

ちなみに複数の引数を渡したい時は、自分の知ってる限りでは
.OnAction = "'setColor 34,4'"
とかでうまくいくハズ

90 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 02:25:45.46 ]
>>87
仕様の理由はわからんけど、動作見る限りエクセルVBAって
人が操作する動作をトレースしてるだけだから
手動で出来ないことはVBAでも出来ないってコトでいいんじゃね?

だからコピーもペーストもシートをアクティブにしないと出来ないと。



91 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 09:27:07.74 ]
>>90
VBの機能も使えるから出来ることは同じじゃない

92 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 12:48:05.58 ]
>>86,90
Sub test()
    Sheet2.Activate
    With Worksheets("Sheet1")
        .Range("C1:C5").Copy
        .Range("D1:D5").PasteSpecial _
            Operation:=xlPasteSpecialOperationAdd
        .Paste (.Range("E1:E5"))
    End With
End Sub

別にシートがアクティブじゃなくても使えますが?

>>87
(この場合の)Pasteメソッドがシートのメソッドなんだから対象がシートなのはまあ当然
RangeにPasteメソッドが無い理由なら解らん。PasteSpecialはあるのにな

どうせ操作対象をちゃんと指定してないから、アクティブシートが対象になってるだけだろ
アクティブじゃないとできない操作の実例教えてくれ


93 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 14:00:27.28 ]
Activateが必要だと思ってる奴はド素人

94 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 19:50:51.44 ]
どうせExcelのバージョンで挙動が違うとかいうオチだろ。
実際に使われる環境で正しく動けば、それで良いじゃん。

95 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 22:05:52.74 ]
>>89
できました!ありがとうございました。
バージョンは2003と2007です。

96 名前:デフォルトの名無しさん [2011/12/08(木) 22:14:25.21 ]
さまざまな処理を各プロシージャが担当させるようにし
本体プロシージャはシンプルそのもの、
そしてプロシージャから他のプロシージャを呼び出しまくるような
かっこいいプログラミングがしたいです。
そんなスキル (=プロシージャを呼び出しまくるスキル) を学ぶに特化した学習用の本があれば紹介していただけますか?


97 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 06:29:49.64 ]
最近学習を始めたばかりの初心者です
わからないことがあったので質問させてください

VBAを使って
1、2500、5000、7500
の4つの数字をランダムで選ぶ
そしてこの動作を繰り返す

というプログラムはどうやって書けば良いのでしょうか
よろしくお願いします

98 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 06:43:25.56 ]
丸投げいくない

99 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 06:54:05.47 ]
>>98
すいません
できるか出来ないかだけでも教えていただけますか?
この4つをMT乱数を用いて選び出したいんです
そしてこの試行を繰り返す、という動作です

100 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 07:12:39.98 ]
数字を配列変数に代入
乱数を取得
乱数の3の余剰を求める
前記余剰を配列番号に与えてアタイを撮る



101 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 07:17:25.61 ]
数字を配列変数に代入
乱数を取得
乱数の3の余剰を求める
前記余剰を配列番号に与えてアタイを撮る
アタイをLogに出力

の上記をひたすら気が済むまでLoopする

102 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 07:46:34.64 ]
>>97
0〜3もしくは1〜4の整数の乱数の出し方知ってる?
配列(0)に1
配列(1)に2500
配列(2)に5000
配列(3)に7500
に入れておいて0〜3の乱数で3が出たら配列(3)の値を取得すればいい。
配列が分からなければCellsを使ってもいいだろう。
そんときゃA1〜A4に希望する数値を入れて1〜4の乱数を求め4が出たらCells(4,1)の値を取得すればいい。
最近は配列に入れないでCollectionに入れるDQNがいるけど。

103 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 07:52:19.50 ]
>>99
もちろん「できる」

ところでVBAの乱数って内部アルゴリズムは公開されてたっけ?
MT乱数の使用が必須条件なら自分で乱数発生プログラムも書く必要があるかも

104 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 08:03:45.92 ]
MT乱数 VBA

ヤホーでググればたくさん落ちてる

ちなみにワシは100-101だが
ボケてた。


3の余剰じゃなくって4の余剰だ

105 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 08:06:06.37 ]
みなさんありがとうございます
C言語の基本的なことはわかるので、配列で出来そうです

乱数は自分でプログラム書かなくても大丈夫だったような……

わからないことだらけなのでまた質問することもあるかとは思いますが、その時はよろしくお願いします

今回は皆さんのおかげで解決出来ました
ありがとうございます

106 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 09:09:25.31 ]
>>105
C言語の基本なことがわかってる奴が >>97 みたいな質問するのか?




と、思った奴は俺だけじゃないと思う。

107 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 10:43:42.62 ]
>>103
正式には公開されてないけど、どこかで解析されてたぞ。
MT乱数ならExcelで使えるdllがある。
なんか64bitのWindowsでは使えないみたいだが。
PtrSafeかましてもうまくいかん。

108 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 10:46:17.93 ]
うまくいかんのは64bitのExcelだった。

109 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 20:35:25.18 ]
VBA上だと変数のビット数が足りなくて完全なMTは実装できないとかなんとか

110 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 21:43:02.26 ]
'This is the Visual Basic for Applications (VBA) version of the MT19937ar,
'or "MERSENNE TWISTER" algorithm for pseudo random number generation,
'with initialization improved, by MAKOTO MATSUMOTO and TAKUJI NISHIMURA,
'of 2002/1/26.
'This translation to VBA was made and tested by Pablo Mariano Ronchi (2005-Sep-12)

www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/VERSIONS/BASIC/mt19937arVBcode.txt



111 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 01:13:56.71 ]
>>106
すいません
実はVBA触るのは今回が初めてでなにが出来てなにが出来ないのかがまるでわかってないんです

基本Cと同じく考えて良いんですかね

112 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 01:31:07.91 ]
>>111
まじめにCが普通に使える奴なら、VBA はマージン見ても一週間もあれば
それなりに使えるようになると思う。

ポインタは使えない (異論ある人もいるだろうけど、あえて言い切る) けど、
構造体もあるし、似たようなもんだと思っていい。

113 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 01:48:34.83 ]
>>112
Cが使えるか?と言われると中々自信が無いですけどね
基本は学んだことがあるので、コードを見てなにが書いてあるか位なら何となくはわかるかと

おかげで少しやる気がでました
とりあえずやりたいことに関する参考書でも探してみようと思います

114 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 10:31:40.78 ]
>>113
> コードを見てなにが書いてあるか位なら何となくはわかるかと

自分で書いたことはないってこと?
読めるのと書けるのの間はそれなりにある (例えば小説考えればわかるでしょ) ので、
一週間じゃ難しいかも。

幸いなことに VBA はネットにも本屋にも山ほど情報はあるから、じっくりがんばれ。

115 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 12:09:19.41 ]
>>109
そんなわけあるか
「多倍長」でぐぐれ

116 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 12:10:05.05 ]
文章と違ってコードは書くより読む方が難しいと思うんだけどなあ

117 名前:デフォルトの名無しさん [2011/12/10(土) 12:35:07.22 ]
大は小を兼ねるから
変数の型は
integerやlongやは使わず
すべてdoubleにしていいですか?

118 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 12:54:57.60 ]
整数使いたいの?小数使いたいの?どっち?

119 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 12:58:11.55 ]
>>117
プログラムが複雑になってくると、最小限に切り詰めた方が計算は速くなるんだけど
そういう質問をするレベルなら大したプログラムは作らんだろうから、たぶん大丈夫

120 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 13:03:28.16 ]
すべてVariant使えばいいじゃん



121 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 14:11:46.85 ]
>>116
>文章と違ってコードは書くより読む方が難しいと思うんだけどなあ

読むと言う意味が違うんじゃない?

俺は、例えば I = I + 1 がどういう動作かわかるのを読むと言ってて、
貴方はプログラム全体がどういう動作するかをl理解することを読むと
言ってるんじゃない?

122 名前:デフォルトの名無しさん [2011/12/10(土) 15:52:32.15 ]
そういえば変数じゃなくて定数は型宣言しなくていいんだっけ?
いま手元にあるVBAの本には定数のことについての説明が1ページもない。

変数は
Dim a as Integer
だけど、

定数は
Const a=3.14
みたいな感じ?
それとも
Const a as Double = 3.14
みたいに書くんだっけ?

123 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 16:43:38.17 ]
↓自分で作って動かしてるもの w

Public Const shisuu As Integer = 0
Public Const sakimono As Integer = 4


124 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 16:48:13.30 ]
Sendkeysステートメント(メソッド)を使って、他アプリケーションへの入力作業を行っています。
日本語入力の文字化け現象についてはVBAではどうにもならないと聞きました。
クリップボードを経由してもダメでした。

何か良い方法は無いでしょうか?

125 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 17:16:54.06 ]
ファイルから読み込みしたら?

126 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 17:23:31.69 ]
SendMessageすれば*

127 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 20:02:53.99 ]
>>126
ありがとうございます。
SendMessageについて色々調べてみましたが、今一理解できません。
失礼は重々承知ですが、使い方を教えて下さいませんか?

とりあえず、Yahooトップページの検索ボックス(既にフォーカスされているものとして)に
下記の文字列を送信するコードを教えて下さい。

"日本語で入力します。"


よろしくお願いします。

128 名前:デフォルトの名無しさん [2011/12/10(土) 20:36:01.01 ]
定数はどうやって型宣言するんだっけ?
 Const a=3.14
みたいな感じ?
それともこう?
 Const a as Double = 3.14

129 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 20:41:52.19 ]
>>0x80
>>0x7B

130 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 20:57:48.09 ]
このスレ的には、

>>&H80
>>&H7B

じゃね?



131 名前:0x81 mailto:sage [2011/12/10(土) 21:30:56.65 ]
すまぬのう

ExcelVBAで組み込みCの色々なテーブルとかマクロ作って生活の足しに
しているんでな。

つーかワークシートの位置指すのにヘキサで書く理由がわからないですが
そういう仕事の人はいますか?(居たら事例を聞きたい)

132 名前:0x81 mailto:sage [2011/12/10(土) 22:16:12.22 ]
すまん、自分でも何言っているのかわからない。


まぁ、ワシのティンコは言うこときかないんですけどね。元気すぎて

133 名前:デフォルトの名無しさん mailto:sage [2011/12/10(土) 22:36:49.98 ]
>>127
Sub yahoo_search()
  Dim objIE As Object
  Set objIE = CreateObject("InternetExplorer.application")
  objIE.Visible = True
  objIE.navigate ("yahoo.co.jp")

  Do While objIE.ReadyState <> 4
    DoEvents
  Loop

  SendKeys "日本語で入力します。"
  SendKeys "{ENTER}"
End Sub

134 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 00:00:06.36 ]
VBAのSendKeysは普通に日本語送れるけど
>>124はどういう状況なんだろう

135 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 00:13:24.16 ]
2バイト文字入力で化けるソフトがあって、その入力支援が出来ません
ってことかな

表示がバグるだけで内部データは問題ないんじゃね

136 名前:0x81 mailto:sage [2011/12/11(日) 00:20:33.70 ]
ADOと使って変換すればいけるの?

137 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 00:30:15.04 ]
>>133
>>134
すみません!完全に私の記述ミス&勘違いです!!
エクセルファイルの各内容を変数に取得して、
社内システムにフォーカスを移して入力を試みています。

半角文字列や数字は問題なく入力できるのですが、
全角文字列(日本語)をSendkeysで送っても文字化けしてしまうのです…

文字化けしないようにするにはSendMessageを使う必要があるって聞きましたが、
使い方がよく分かりません。お手数掛けてすみませんが、ご教授お願いします。

138 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 00:31:36.91 ]
>>135
え、そうなんですか?
月曜日に確認してみます!
ありがとうございます!!

139 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 00:46:38.45 ]
>>137
全角文字とSendKyesの組み合わせだと、
入力したい全角文字列をクリップボートにコピーしてから、SendKeys で Ctro+V のみを送るって方法がある


140 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 00:54:48.00 ]
>>139
ありがとうございます。
でも、 ^V って何故だか動作しませんでした…



141 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 00:56:06.62 ]
>>139
なるほど

みんな苦労してるんだなあ
うちもツギハギのWEBアプリで四苦八苦してるよ
十何年もかけて機能の拡張やバージョンアップを繰り返してるから画面のデザインとか操作体系がめちゃくちゃになってる
支店が全国に一万店以上あるからうっかり大幅に変更すると再教育のコストもかかるしどうにもならなくなってきてる

142 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 01:15:47.91 ]
うーん、確かにメモ帳だと SendKeys "^v" で貼り付けできるのにIEだとできないね
何度も試してるとできることもあるけど、再現条件がわからん
Sleepで待ち時間を入れてもDoEventsをはさんでも同じ
半角だと貼れるのに全角は貼れない
わけがわからん

143 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 01:19:34.66 ]
VBAでDOSコマンド書いてそこから介入

144 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 01:45:06.76 ]
できた
VBAのSendKeysではうまくいかないけど、VBSのSendKeysならうまくいくことがわかった
以下のサンプルはクリップボードにデータを設定する部分で警告が出るけど、そこは問題の本質じゃないので無視してくれ

Sub yahoo_search()
  Set IE = CreateObject("InternetExplorer.application")
  IE.Visible = True
  IE.navigate ("yahoo.co.jp")
  Do While IE.ReadyState <> 4  '表示終了まで待つ
    DoEvents
  Loop

  Set ws = CreateObject("Wscript.Shell")

  IE.Document.ParentWindow.ClipboardData.SetData "text", "英語を貼り付ける。"
  ws.SendKeys "^v"
End Sub

145 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 07:23:03.30 ]
っていうか相手がIEだったら(>>124
SendKeysなんか使わずにDOM操作した方がよくない?
例えば>>133のコードを拝借すると、SendKeysの2行をこんな風にする

objIE.Document.getElementById("srchtxt").Value = "日本語で入力します。"
objIE.Document.getElementById("srchbtn").Click

対象がすでに表示中のIEだと捕まえるのがちょっと面倒だけどね

146 名前:145 mailto:sage [2011/12/11(日) 07:25:19.85 ]
うわ編集中に送ってしまった
1行目
っていうか相手がIEだったら(>>124

っていうか相手がIEだったら(>>124は「社内システム」としか書いてないからわからんけど)

147 名前:デフォルトの名無しさん [2011/12/11(日) 09:07:00.03 ]
環境 XP、Office2003

[Sheet1]
Private Sub Worksheet_Calculate()
Worksheets("Sheet1").操作()
End Sub
という事を実現したいが、シート名は可変です。
で、
Private Sub Worksheet_Calculate()
ActiveSheet.操作()
End Sub
という例を見かけますが、この場合 ActiveSheet が Sheet1 という保証はあるのでしょうか。

(手元にExcelがないのでコードは不正確かもしれません)

148 名前:124 mailto:sage [2011/12/11(日) 09:16:05.26 ]
>>142-146
お返事が遅くなりすみません。
社内システムはIEではありません。
.exeファイルです。

…VBSのSendkeysとか想像もしてませんでした。
DataObjectでクリップボードに格納して、VBSのSendkeysを試してみます。
いずれにせよ、月曜日じゃないと確認できませんが。。。

何度もアドバイス下さり、本当にありがとうございます!
また、結果などをご報告いたします。

149 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 10:35:28.06 ]
>>147

ブックの"Sheet1"という名前のシートに操作をするなら

For i = 1 To ActiveWorkbook.Sheets.Count
If ActiveWorkbook.Sheets(i).Name = "Sheet1" Then
操作
End If
Next

にしたらいかがでせうか

150 名前:149 [2011/12/11(日) 10:36:30.35 ]
レスを良く見てなかったんで
取り消してくらはい



151 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 11:31:08.05 ]
>>147
>という例を見かけますが、この場合 ActiveSheet が Sheet1 という保証はあるのでしょうか。

当然そんな保証はない。

「シート名は可変です。」と書いてあるが、ではソノシート名はいつどこで指定するのか?

あらかじめ指定しておくと言うなら、

Dim SheetName As String

Private Sub Setup( )
 SheetName = "Sheet1"
End Sub

Private Sub Worksheet_Calculate( )
 Worksheeets(SheetName).操作( )
End Sub

でいい。
Sheet1 がないケースなどがあるなら、適切なエラー処理が必要。

152 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 11:34:28.91 ]
あと、本来名前でいろいろ参照するのはお勧めしない。
>>151 の例なら、

Dim TargetSheet As Worksheet

Private Sub Setup( )
 Set TargetSheet = Worksheets("Sheet1")
End Sub

Private Sub Worksheet_Calculate( )
 TargetSeet.操作( )
End Sub

の方が (個人的には) よりいいと思う。

153 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 11:40:53.64 ]
>>147
Worksheet_Calculateイベントはアクティブシートがどこにあっても発生する可能性があります
シートモジュールの中で自分自身に対して何か処理をしたい場合はシート名を書かなければ良いだけです

[Sheet1]
Private Sub Worksheet_Calculate()
  操作()  ' ←これだけ
End Sub

154 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 12:27:23.26 ]
シート番号指してシート名取得してその名前が欲しいシート名と一致ならば処理すれば?
変なエラーが起こらない。

For I = 1 To Worksheets.Count
If Worksheets(I).Name = "Hoge" then
'やりたいことやる
endif
Next


155 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 12:31:01.24 ]
>>147
すんまそん、アンカ忘れてた。
今からカリ首吊ってくる


シート番号指してシート名取得してその名前が欲しいシート名と一致ならば処理すれば?
変なエラーが起こらない。

For I = 1 To Worksheets.Count
If Worksheets(I).Name = "Hoge" then
'やりたいことやる
endif
Next


156 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 15:20:43.60 ]
Excel:2007、OS:Win7

上書き保存時、セーブ前に行列番号を消し、保存後、行列番号を再度表示させたいです。
ビュアーで見る時に番号を消したい、という意図です。
とりあえず調べた限り、以下でいいと思ったのですが以下の問題点でつまずいています。
・そもそも保存されない
・ブックを閉じようとすると上書き保存するか聞かれるが保存するを選んでも何度も同じことを聞かれる。
いいえかキャンセルのみで抜けられる。


Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean _
, Cancel As Boolean)
With ActiveWindow
.DisplayHeadings = False '行列番号消し

ThisWorkbook.Save 'セーブ。できてない?

Cancel = True '通常の上書き保存をキャンセル

.DisplayHeadings = True '行列番号表示
End With
End Sub


157 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 15:59:31.16 ]
>>156
環境が無いんで確認できないけど、
ThisWorkbook.SaveがWorkbook_BeforeSaveを誘発してるでしょ。
自分で聞いてやるしかないと思うよ。
Msgbox("保存しますか?",vbYesNo)
Yesなら
Application.DisplayAlerts = False
ThisWorkbook.Save
Application.DisplayAlerts = True
メッセージは、Ctrl+S時に表示しちゃまずいから、
BeforeCloseで保存確認しちゃった方がいいかもね。

まぁ結局はWorkbook_openで
DisplayHeadings = True '行列番号表示
しちゃう方が簡単だと思うんだ。

158 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 16:09:24.49 ]
>>156
Saveの直前にイベント抑止してみるとか

Application.EnableEvents = False
ThisWorkbook.Save 'セーブ。できてない?
Application.EnableEvents = True

ただ、保存されたものは常に行番号なしになるのでopen時には再度行番号有効化してやるとかの考慮は必要になる
あと、実際に保存された直後、
.DisplayHeadlings = True
の行でおそらく編集扱いになるので、ただ閉じようとしても必ず
保存しますか?
と聞かれてしまうのは仕方ないように思える

159 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 16:13:35.98 ]
157>>
返信ありがとう!

上司からのオーダーなもんで出来るだけ対応したいんだけどねぇ。
Ctrl+Sでやりたいから、必ずしもウィンドウを閉じる時ばかりじゃないもんで。
俺もこれを聞く前に閉じるときにセーブ前に非表示→開くときに表示というふうに
したんだけどそれだとダメらしい

出来ればCtrl+Sとかでも対応できるようBeforSaveでやりたいが……
自前の保存マクロでやるしかないかな……

160 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 16:21:54.14 ]
>>158
>.DisplayHeadlings = True
>の行でおそらく編集扱いになるので
ThisWorkbook.saved=Trueでどう?



161 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 16:23:43.56 ]
>>158
こっちもありがとう!

イベントの抑制・・・そういうのもあるのですね。参考にしてみる。
開くときに表示ON自体は_OpenでしてやればOKですね。実際それはもう仕込んであるので。

しかし、なるほど、結局、表示消すのが編集扱いになってるから何ども聞かれるのか。
そりゃそうだわな……

162 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 17:45:20.24 ]
>>160
遅れたがサンクス。

とりあえず各アソバイスを入れた結果、Ctrl+Sで保存で行が消せるようになった!
ビュアーでみてもちゃんと消える。
ただ
・ブックを閉じようとすると上書き保存するか聞かれるが保存するを選んでも何度も同じことを聞かれる。
いいえかキャンセルのみで抜けられる。
は解消されないな……一度保存すればあとはいいえ押せばいいだけなんだけどね。
ThisWorkbook.Saved = Trueの使い方がまずい?


Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean _
, Cancel As Boolean)
With ActiveWindow
.DisplayHeadings = False '行列番号消し

'Application.DisplayAlerts = False

Application.EnableEvents = False
ThisWorkbook.Save 'セーブ。できてない?
Application.EnableEvents = True

Cancel = True '通常の上書き保存をキャンセル

.DisplayHeadings = True '行列番号表示
ThisWorkbook.Saved = True '変更適応OK
End With

'Application.EnableEvents = False
End Sub
※その他、Open時とClose時にそれぞれ行列表示のOn,Offをいれてます。

163 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 20:16:58.40 ]
>>162
EXCEL2000ならあったから入れてみた。
ideone.com/tn9oN
出来てるとは思うけど、
割と脆弱なロジックなので、限られた範囲での使用に留めるべき。
仕事であれば別にボタンを用意するかな。

164 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 22:57:32.48 ]
あ、vbNoの処理間違ってた。
Saved=Trueが必要かな

165 名前:147 [2011/12/11(日) 23:51:37.67 ]
Worksheet_Calculate()時のActiveSheetは自シートか?という質問に関し、
>>149-155
ありがとうございました。勉強になります。手元にExcelが無いので明日試させて頂きます。

が、理解を超えている点があるので再質問させて下さい。
>>153
> シートモジュールの中で自分自身に対して何か処理をしたい場合はシート名を書かなければ良いだけです
その場合、省略された自分自身を表わす記法はどのようになりますか?
例えば、自シートをローカル変数に代入したいとか。(他モジュールで使い回したいような目的で)

[Sheet1]
' Set SelfSheet = Worksheets("Sheet1") 相当をシート名無しで実現するには?
Dim SelfSheet As Worksheet
Set SelfSheet = ' ThisWorksheet と書きたいが。

166 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 00:26:16.12 ]
>>165
俺はそんな時 Me を良く使うお
Set SelfSheet = Me

167 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 00:31:30.30 ]
すいません、質問が
VBAを使って、
Aというセルに数値を入れた時に、BというセルにそのAに入れた数値によって様々な値を出力する
というのを作りたいのですが、どうすればいいのでしょうか

168 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 01:24:37.73 ]
>>167
セルBにセルAを参照する数式を記述する

169 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 01:24:46.11 ]
質問です

mnock = 1: hno = 1の
:ってどういういみなんですか?

代入を一行に書いたわけではないんですよね・・・

170 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 01:56:23.33 ]
改行の代わり



171 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 01:59:19.61 ]
>>170
そうなのか・・・特殊記号かとおもってしまいました
ありがとう

172 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 09:47:18.15 ]

範囲指定をして何か処理(ソートとか)した後、その選択範囲が選択されたままになってしまいますが、それを解除する命令
とかってありますか?
何処かのセルを選択すればそれが解除されはするんですが、それとは別に言ったような選択を解除するようなものがあるのか
?と思いまして。


173 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 10:21:17.05 ]
未選択状態見たこと無いから無いんじゃない?

174 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 10:23:20.77 ]
thxです
やっぱり無いですかね w


175 名前:デフォルトの名無しさん [2011/12/12(月) 11:18:55.59 ]
質問があります。

OS:Windows 7 Ultimate 64bit SP1
Excelのバージョン:Office 2007 Personal SP3

A1-A10までのセルのいづれか1つに*が入力されたら、それ以外のA1-A10のセルを空にしたいです。(排他?)

※A1-A10のうち、*が入力されているのは常に1つの状態にしたいという事です。

よろしくお願いします。

176 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 12:02:31.09 ]
わーくしーとあふたーあっぷでーと()

A1〜10に入力があったら他排除

えんどサブ

177 名前:175 mailto:sage [2011/12/12(月) 12:35:42.16 ]
>>176
すみませんが、貴方の言う「A1〜10に入力があったら他排除」が分からないと質問をしているのです。
回答する気がないのであれば、中途半端なレスはいりませんよ、176さんも暇じゃないでしょうから。

178 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 12:43:30.40 ]
>>177

>>2

179 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 13:07:20.85 ]
>>175
おまえの態度が気に入らない
VBAを勉強する前に掲示板の使い方を覚えろ

Private Sub Worksheet_Change(ByVal Target As Range)
  Application.EnableEvents = False
  r = Target.Row
  c = Target.Column
  If c = 1 And r <= 10 Then
    If Cells(r, c) = "*" Then
      Range("A1:A10").Clear
      Cells(r, c) = "*"
    Else
      Intersect(Target, Range("A1:A10")) = ""
    End If
  End If
  Application.EnableEvents = True
End Sub

180 名前:175 mailto:sage [2011/12/12(月) 13:12:20.64 ]
>>179
態度を改めます。
掲示板の使い方も覚えます。
コードありがとうございました。



181 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 13:16:48.65 ]
ああごめん、フックが解んないかと思ってたわ

182 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 14:02:21.15 ]
>>163
サンクス。かなり参考にさせてもらった。
でもブックを閉じた時、保存ではいを押しても保存出来ないっぽい。2007の差でもあるのか

ちなみに皆さん、マクロ配布するときどうしてます?
エキスポートでcls出してインポートで使わせようと思ってもthis bookに書かなきゃうまくうごかなかった。そもそもVBAわざわざ開かせるのも微妙で。



183 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 14:16:59.61 ]
>>172
Application.CutCopyMode = False じゃないのか?

>>182
プログラムの入ってるブックとデータの入ってるブックは別にして
配布はプログラム用のEXCELブックを丸ごと配布する

184 名前:デフォルトの名無しさん [2011/12/12(月) 14:24:08.14 ]
オブジャクト指向ってなんですか?

185 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 14:33:16.67 ]
オブジェクト指向は、継承とポリモルフィズムです
smalltalkという言語が有名

186 名前:184 [2011/12/12(月) 14:39:05.33 ]
わたしが聞いてるのは「オブジャクト指向」のほうなんですが

187 名前:175 mailto:sage [2011/12/12(月) 15:34:06.89 ]
>>179
度々すみません。
*の排他入力?は出来たのですが、
文字列の中央揃えなどの設定が消えてしまいます。

188 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 15:41:17.73 ]
書いてあるコードググれよ

宿題なら自分でやりな

俺が聞く時に雰囲気悪くなったらどーすんだ!

189 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 15:54:57.59 ]
それを気にするほどのやわな神経なんてないだろ

190 名前:デフォルトの名無しさん [2011/12/12(月) 17:16:44.25 ]
VBAでシート関数はApplication.Sheetfunction.[関数]と書けばどんなものもつかえる?



191 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 18:27:00.97 ]
>>187 >>175

>>2
>★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み、
>   コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
>   ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ

と書いてあるんだが 読んだのか?

192 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 18:35:15.73 ]
>>191
当たりまえです
>>187を聞いてるのに関係ない話で誤魔化さないでください
わかりもしない、答える気もない屑が掲示板を荒らすのは本当に不愉快です

193 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 18:36:47.91 ]
オレ ジエン ここまで ぜんぶ

194 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 18:41:50.97 ]
>>192
偽者乙

195 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 18:43:55.77 ]
俺の自演って言ってるじゃないですカー!

196 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 19:39:03.96 ]
中央でそろえるとか、マクロの記録があるんだからそれ使えばいいじゃない
そのコードを今までのに追記するだけなんだし。

ここでやり取りしてる時間の方が無駄でしょ

197 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 19:51:40.07 ]
>>190
使えないものもあるよ。そういう時はEvaluateを使うみたいだけど。


198 名前:124 mailto:sage [2011/12/12(月) 20:29:23.23 ]
今日、会社で色々試しました。
解決策は意外な盲点にありました。

私はSendkeysはApplicationクラスのものを利用していましたが、
(こっちの方が安定性が高いらしいので)
普通のSendkeysを使用したら文字化けしませんでした。
それからメニュー等を操る時は、大文字入力だと失敗することが多いですね。

いずれにせよ、親身にアドバイスを下さった皆さん、
本当にありがとうございました。

199 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 20:38:26.96 ]
そういや「Sendkeysステートメント(メソッド)」って書いてたもんな
なんでメソッド?と微妙にひっかかっていたがそういうことか

200 名前:175 ◆txEbeGmJyg mailto:sage [2011/12/12(月) 20:47:44.09 ]
>>191
すみません。
他にExcelのVBAスレが見当たらなかったもので、勝手は承知で質問してしまいました。

>>196
失礼ですが、このスレの回答側の人はその程度のレベルなんですか?

>>179
さきほど、.Clearの所を= ""にしたら、できました。
あえて、勉強のために.Clearを使って書いてくれたのかな?




201 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 21:09:47.60 ]
質問者が恐らく理解出来るだろう内容で回答してるよう見えるけど

202 名前:175 ◆txEbeGmJyg mailto:sage [2011/12/12(月) 23:31:06.38 ]
>>201
私が言っているのは>179さんに対してではなくて、>196さんの発言に対してです。

>179さんのコードは綺麗だと思います。
.Clearメソッドを使った意図が、私に学習させるためなのかなと思っただけです。
なので、>179さんには感謝はすれど文句はありません。

203 名前:175 ◆txEbeGmJyg mailto:sage [2011/12/12(月) 23:46:11.89 ]
度々すみません。

>>179さんの書いてくださったコードで、
>r = Target.Row
という部分があると思いますが、これをAとかBで指定できるように
したいのですが、何かうまい方法はありますでしょうか?

これを、If c = 1 And r <= 10 Then
こうしたいです。
Dim strRowPos as String
strRowPos = A
If c = strRowPos And r <= 10 Then

ここを見て調べているのですが見つけられなくて。
www.eurus.dti.ne.jp/yoneyama/Excel/vba/index.html

度々すみませんが、179さんか分かる方いたら教えてください。
どうかよろしくお願いします。

204 名前:175 ◆txEbeGmJyg mailto:sage [2011/12/12(月) 23:48:55.32 ]
またまたすみません。

Dim strRowPosA as String
Dim strRowPosN as String
strRowPosA = A
'
'ここで、strRowPosAを数値にして、strRowPosNに入れたいということです。
'その変換方法がないかなと。
'
If c = strRowPosN And r <= 10 Then



205 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 23:50:01.50 ]
うーーーーーぜーーーーーーーーーーー

206 名前:175 ◆txEbeGmJyg mailto:sage [2011/12/12(月) 23:50:34.30 ]
だぁ・・・。
スレ伸ばしてすみません。

誤)Dim strRowPosN as String
正)Dim strRowPosN as Integer

207 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 00:11:04.02 ]
スレチ押し通すなっての。
既に聞く態度じゃないとと取られてんだし、誰も真面目に答えないよ?

208 名前:175 ◆txEbeGmJyg mailto:sage [2011/12/13(火) 00:20:56.52 ]
>>207
失礼ですが、どこがスレチなんでしょうか?
>>2の>★5と指摘されたので、調べつつ少しなりとも自分でやっているんですけど。
聞く態度じゃないというのも具体的に分かりませんが、改めて私のできる範囲で丁寧な
言葉でレスしているのですが。

ちなみに、誰も答えないとおっしゃられていますが、それは貴方の推測ですよね。
事実、もしそうであれば>>178でレスが止まっているはずですが、>>179氏はちゃんと指摘
とレスをしてくれましたよ。

質問者の立場で何ですが、一言あなたに言わせていただくと、あなたは回答できないので
はないですか?
基本2chて自分が嫌だと思ったらスルー推奨ですよね。


それで結果的にスマートではないと思うのですが、26進数変換の関数を作って対処(仮)しました。
もしもっと、いい方法を知っている方いらっしゃいましたら、教えていただけると助かります。



209 名前:デフォルトの名無しさん [2011/12/13(火) 00:23:31.37 ]
gigazine.jp/img/2011/01/11/goukaku_snack/DSC_9293.jpg
スレチ?

210 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 00:26:48.21 ]
ja.wikipedia.org/wiki/%E3%82%B9%E3%83%80%E3%83%81



211 名前:デフォルトの名無しさん [2011/12/13(火) 00:37:20.63 ]
missaoyama2008.camcolle.jp/blog/media/27/20080924-1222184378.JPG
トモダチ

212 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 00:41:06.61 ]
ttp://www.zukan-bouz.com/aji/buri/buri.image/buri.jpg

213 名前:デフォルトの名無しさん [2011/12/13(火) 00:41:27.05 ]
超初心者です・・・

Sub 例題()

Dim n As String

For n = 1 To 10

Cells(n, 1) = n

If n Mod 2 = 0 Then

Cells(n, 2) = " 偶数 "

End If

Next n


End Sub


で型が一致しないとでるのですがどうすればよいでしょうか

214 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 00:42:11.55 ]
ちょっと煽られただけですぐ感情的に反論するとか、どんだけ子供なんだよ
気に入らないレスは無視しろ
正論でも印象悪い
書き間違いが多すぎる
書き込む前に3回読み直せ

strRowPosA = A ← これは不可能。こういう書き方だとAは変数名になってしまう

やるならこう

strRowPosA = "A"
strRowPosN = Cells(, strRowPosA).Column

さらに言えば、ワークシートのA、B、C…はRowじゃなくてColumnだから、全体を修正すると

Dim strColumnPosA as String
Dim strColumnPosN as Integer

strColumnPosA = "A"
strColumnPosN = Cells(, strColumnPosA).Column

If c = strColumnPosN And r <= 10 Then

215 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 00:44:37.64 ]
>>213
○ Dim n As Integer
× Dim n As String

授業はちゃんと聞こうね

216 名前:175 ◆txEbeGmJyg mailto:sage [2011/12/13(火) 00:49:58.79 ]
>>214
すみません。
指摘感謝です。
>179さんかな?
コードありがとうございました!

217 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 00:55:07.20 ]
202
>>196ですら君は及ばないレベルだと自覚出来ない時点でもうね

218 名前:デフォルトの名無しさん [2011/12/13(火) 00:56:20.86 ]
>>215
ありがとうございました^^

219 名前:147 mailto:sage [2011/12/13(火) 02:19:10.83 ]
>>166
ありがとうございます。まとめます。
<Q>
[Sheet1]
Private Sub Worksheet_Calculate()
Worksheets("Sheet1").操作()
End Sub
という事を実現したいが、シート名は可変です。
で、
Private Sub Worksheet_Calculate()
ActiveSheet.操作()
End Sub
という例を見かけますが、この場合 ActiveSheet が Sheet1 という保証はあるのでしょうか。
環境 XP、Office2003
<A>
ActiveSheet が Sheet1 という保証は無いので、
Me.操作()
とすると良い。

220 名前:デフォルトの名無しさん [2011/12/13(火) 09:41:54.02 ]
「VBAは完全なオブジェクト指向ではない」との記述を見たのですが
このことをオブジェクト指向のことを十分には理解していない人に
200文字以上で説明してくださいませんか?




221 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 13:54:02.76 ]
>>220
>十分には理解していない人
どこのどいつだ?
Deutschでもよければ400字くらいで?

222 名前:220 [2011/12/13(火) 14:52:35.87 ]
>>221
ここのオレだ。
I'd rather prefer English than Deutsch.

223 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 16:22:00.16 ]
I'd rather prefer English wife than Deutsch wife.

224 名前:デフォルトの名無しさん [2011/12/13(火) 18:22:12.32 ]
VBAでいくつか文字列が入ったセル(その時によりセルの数が違う)があって
そのうち昇順で並べて一番最後の文字列だけを取り出す方法はどうしたらいいですか?

225 名前:224 [2011/12/13(火) 18:22:47.09 ]
セルちゃうわ、シート名だった。
シートの数は、ファイルによりいつくあるかはわからないの。

226 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 18:42:32.06 ]
>>224
Sub 最後のシト()
  s = ""
  For Each ws In Worksheets
    If ws.Name > s Then s = ws.Name
  Next
  Debug.Print s
End Sub

227 名前:147 mailto:sage [2011/12/13(火) 19:31:28.61 ]
>>220
俺もオブジェクト指向とか理解していないけど、
継承できなのにはかなりまいった。

228 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 19:33:23.34 ]
Excelではないのですが・・・知恵をお貸しください
Visioで下記の図を作成しようと思っています
A→ F→Z
B→↑
・Aに値が入ると、F・Zにも値が入る
・Bに値が入ると、F・Zの値がクリアされ、Aに値が入っている場合はAに値が入っている状態を維持。Bをクリアすると、上記と同じA・F・Zに値が入る
ここまではVBAで作成できたのですが、これを
・(Bに値が入っていない状態で)Aの値をクリアしてもF・Zの値をそのまま維持
にしたいのですが、値を維持するためにFにstaticを宣言してもうまくいきません。
そもそも、Staticでいいのかすら、迷ってきて・・・値を維持できるうまいやり方はないでしょうか

229 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 23:04:26.04 ]
>>226
お前>>176
それとも>>213
>最後のシトとかいらっとくるからやめろ。

230 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 23:21:13.61 ]
>>229

226

213
のボケをかますとは思えない

つーか一々煩いからお前が黙ってろ



231 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 00:23:42.59 ]
>>220

オブジェクトを部品として利用することは出来るが
既存のオブジェクト(クラス)を継承して新たな部品を作ることは出来ない


232 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 00:37:17.98 ]
>>230
ごめんなさーいw

233 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 09:33:54.08 ]
シートで行を削除するのにマクロの記録だと1行目・2行目を消すのに
Rows("1:2").Select
Range("A2").Activate
Rows("1:2").Delete Shift:=xlUp
Range("A1").Select
というのが出来たんで、この開始行と終了行を変数にしたい。
んで、
i= 11
endrow = 13
とかして
Rows(i:endrow).Delete Shift:=xlUp とすると構文エラーになってしまいます
行を変数にするのはどのようにしたら良いんでしょう?

234 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 09:42:02.74 ]
Rows(i:endrow).Delete Shift:=xlUp

Rows(i & ":" & endrow).Delete Shift:=xlUp

235 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 09:52:48.73 ]
>>234

ありがとうございます

236 名前:デフォルトの名無しさん [2011/12/14(水) 18:54:02.39 ]
>>235

ついでに言うと、Rowsに対するDeleteは常にxlUpだからShift:=xlUpは不要


237 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 21:04:31.60 ]
>>236
言われてみたら確かにそうですね w

238 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 21:33:37.60 ]
削除は下から消さないと・・・

239 名前:デフォルトの名無しさん [2011/12/14(水) 22:21:48.02 ]
>>238
分割された領域なら下からとか右からで削除しないと面倒だけど、
連続の領域をまとめて消すんなら別にどうでも良いんじゃね?

240 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 22:59:06.37 ]
アドバイスお願いします。

数字、名前のペアが複数あって、数字をキーにすると名前が取り出せて、
名前をキーにすると数字が取り出せる連想配列のようなものを作りたいのですが、
VBAではどのようにすると効率的でしょうか?
それぞれ、一意的にペアが決まっています。




241 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 23:06:34.94 ]
>>240
Scripting.Dictionary オブジェクトを2つ用意して、
一方は数字をキー、もう一方は名前をキーと使い分ければいい


242 名前:240 mailto:sage [2011/12/15(木) 22:30:21.63 ]
>>241
ありがとうございます。試してみます。

243 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 00:14:21.90 ]
どちらで聞いたらいいのか分からなかったのでこちらで聞きますが
セルの値を数値処理する場合vbsから操作するのとvbaから操作するのだとどちらが計算早いですか?

244 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 00:15:16.83 ]
vbs

245 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 00:19:32.00 ]
Excelとのやり取りが殆ど無い場合でも、
腐っても型付言語であるVBAの方が速いと思う。
やり取りが多い場合はインプロセスとアウトプロセスの
越えられない壁があるからVBSに勝ち目無し。

246 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 00:32:28.93 ]
VBSでエクセルを偽装してだね

247 名前:デフォルトの名無しさん [2011/12/16(金) 08:03:26.05 ]
x個の数からy個の数をランダムに取り出したいときってどうしてますか?

数の集合が{1, 2, 3, 4, 5}つまりx=5でy=3の場合だと
毎回
2, 3, 5
1, 2, 4
3, 4, 5

みたいに5個の数のうちランダムに3つ選び出す、というアルゴリズムです

248 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 08:13:33.97 ]
単純にやるなら乱数3つ
問いの内容ならxCy個の中から乱数1つ
1なら(123)、2なら(124)……て形で割り振るアルゴリズムを通してゲット
重複や順列の内容で幅を変えればいい

249 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 15:55:35.00 ]
www.eurus.dti.ne.jp/yoneyama/Excel/vba/vba_rnd.html
ここ参考にすればいいんじゃねーの

250 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 17:02:45.72 ]
vbaって動的の多次元配列ってできねえの?



251 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 17:03:30.70 ]
型はstringで

252 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 17:06:42.33 ]
なんでそういうサイトを上げるんかねぇ。
恥かかせるためか?

253 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 17:07:54.02 ]
>>250
やってみりゃ分かるだろ?

254 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 17:08:28.00 ]
dim hoge(,) as string
これだとエラーなんだけど

255 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 17:09:48.29 ]
dim hoge[][] as string
これもエラーだった

256 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 18:10:19.05 ]
二次元で要素数が不定の動的配列はできないんじゃないの?
検索するとできるって書いてあるページもあるけど、サンプルをコピペするとエラー出るし
VBとVBAを勘違いしてんじゃないかと思う

要素数固定で宣言して、片方の次元だけReDimする方式の動的配列なら可能だけど

257 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 19:23:51.82 ]
>>250
Dim hoge() As String

ReDim hoge(10, 5, 3)
hoge(0, 0, 0) = "3次元"
Debug.Print hoge(0, 0, 0)

258 名前:デフォルトの名無しさん mailto:sage [2011/12/16(金) 20:49:43.90 ]
>>257
思ってたのとちょっと違いますけどこれとpreserveで代用できそうだな
ありがとうございます

259 名前:デフォルトの名無しさん [2011/12/17(土) 00:44:13.36 ]
WindowsAPIを使用したいときは、いちいち定義しないとダメなんでしょうか?
現場では資料もなくネットも使えない環境なので手打ちをキツイです。

260 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 00:50:47.84 ]
>>259
いちいち定義しないとダメですが、WinAPIなら百科事典が発売されているのでそれを持ち込むという手も
あとはmsdnのオンラインヘルプ(CD-ROM版)を用意して、CのソースをVBAに書き換えるマクロとか用意すれば
なんとかなるでしょう



261 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 01:22:48.76 ]
vbaでこんな感じのリクエストを飛ばすのってどうやるのですか?

GET / HTTP/1.1
Accept-Language: ja
Accept-Encoding: gzip
User-Agent: hoge (1.1.1)
Host: wwww.aaa.bb

262 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 01:34:28.67 ]
GET /hogehoge.cgi HTTP/1.1
Accept-Language: ja
Accept-Encoding: gzip
User-Agent: hoge (1.1.1)
Host: wwww.aaa.bb

送るとこかいてませんでした

263 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 03:32:05.24 ]
>>261
WinInet関連のAPIを使う
HttpAddRequestHeadersしてHttpSendRequestかな?

WinHTTPライブラリ(WinInetの後継らしい)てのもあるが詳細はしらない

これ以上はスレチになるんで
ググるか APIのすれで聞いておくれ

264 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 04:19:21.00 ]
>>261
ネットのやりとりはいろんな方法がある
たぶん、こんな感じで行けると思う

Set oHttp = CreateObject("MSXML2.XMLHTTP")
oHttp.Open "GET", "www.aaa.bbb/hoge.cgi", False
oHttp.SetRequestHeader "Accept-Language", "ja"
oHttp.SetRequestHeader "Accept-Encoding", "gzip
oHttp.SetRequestHeader "User-Agent", "hoge(1.1.1)"
oHttp.Send ' リクエスト送信
istatus = oHttp.Status ' 結果確認
If istatus = 200 Then s = oHttp.responseText ' 本文(HTMLソース)取得

265 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 09:44:20.71 ]
Dim WS As Worksheet
Set WS = Worksheets("記録")
Worksheets(WS).Activate ←

で、矢印の部分で型が一致しないって出るんですけど、String型でないと駄目ッてこと
ですか?


266 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 09:47:26.21 ]
Dim WSName As String

WSName = "記録"
Worksheets(WSName).Activate


じゃないの?たぶん

267 名前:デフォルトの名無しさん [2011/12/17(土) 09:52:46.36 ]
>>265

265の方法でもよいし、Object型(Worksheet型)で宣言したときは

Worksheets(WS).Activate
じゃなくて
WS.Activate
って書けば良い

268 名前:267 [2011/12/17(土) 09:54:36.29 ]
安価ミスった
「265のやり方」じゃなくて「266のやり方」でした


269 名前:265 mailto:sage [2011/12/17(土) 09:55:52.47 ]
なるほど!

ありがとうございます

270 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 16:18:35.70 ]
>>264
できました!
ありがとうございます



271 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 18:21:08.96 ]
constって使う必要あるの?
変数に値持たせてそれ変えなければいいだけじゃないの

272 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 18:35:36.34 ]
>>271
プロシジャ毎にPrivate変数に一々代入するのって面倒じゃない?

273 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 18:48:53.68 ]
Constの場合は確実に固定値だと判断が出来る。
普通の変数だと、その点が曖昧にならざるを得ないから、
後でソースを見返す時に面倒。

274 名前:デフォルトの名無しさん [2011/12/17(土) 19:14:43.41 ]
>>272
ところでモジュール間でも定数は自由に使えますかにゃ?

標準モジュールとフォームモジュールを使ってた場合、
どちらかのモジュールの一番上に書いておけば、他方のモジュールをその時点で未使用でも、その他方の上のほうに書いてある定数は使用可能?

275 名前:274訂正 [2011/12/17(土) 19:16:32.05 ]
>>272
ところでモジュール間でも定数は自由に使えますかにゃ?

標準モジュールとフォームモジュールを使ってた場合、
どちらかのモジュールの一番上に書いておけば、他方のモジュールから実行が始まったとき、
書いてるほうのモジュールがその時点で未使用でも、その他方のモジュールから別のモジュールの上のほうに書いてある定数は使用可能?


276 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 19:36:50.61 ]
ちょっと試せばすぐにわかるのに

277 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 19:37:56.98 ]
モジュールはマクロ開始時点で全て初期化される。

278 名前:デフォルトの名無しさん [2011/12/17(土) 19:39:29.49 ]
>>276
あなたのVBA力と回答力を試しているんですが

279 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 19:43:07.60 ]
VBA力とか言ってる時点でみんなより自分が格下なのに気付けよ

280 名前:デフォルトの名無しさん [2011/12/17(土) 20:11:42.31 ]
わからないなら無理にレスしてくれなくていいよ?



281 名前:デフォルトの名無しさん [2011/12/17(土) 21:08:41.34 ]
VBAで、数値から文字列、文字列から数値への変換の方法はいろいろあるみたいだけど
どの方法が一番標準ですか?

自分は前者はCStr、後者はVal、でそれぞれやってますが、これって変?

282 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 21:25:43.32 ]
基本は自動型変換で良くね?
後、Val関数は何気に色々と面白い仕様だから注意した方が良いよ。

283 名前:デフォルトの名無しさん [2011/12/17(土) 22:04:12.83 ]
>>282
自動型変換とは何ですか?
面白い仕様とはどういうことですか?
あにゃたの発言のほうが意味がいろいろ取れて神経を使います。

284 名前:デフォルトの名無しさん mailto:sage [2011/12/17(土) 22:58:53.98 ]
別に標準とかないでしょ
いろいろな方法があるのにはそれなりに理由があるんだから
その時によって最適な方法を選べば良い

285 名前:デフォルトの名無しさん [2011/12/17(土) 23:21:52.65 ]
valは使わないな
文字列にする時はこんな自作ライブラリつかってる

Function dfVntToStr(ByVal StringVal As Variant) As String
On Error Resume Next

dfVntToStr = \\\"\\\" \\\'初期化

If Not IsNull(StringVal) Then
dfVntToStr = StringVal & \\\"\\\" \\\'文字列へ変換
End If

On Error GoTo 0 \\\'エラークリア
End Function

同じようにintに変換とかlongに変換とかのライブラリも作ってる


ネタ元はこれ
VisualBasic6エラーコーディング
ttp://www.amazon.co.jp/dp/4894712237/

286 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 00:52:58.28 ]
VBAで自作ライブラリ作ってる人とか初めて見た・・・すごいな

287 名前:デフォルトの名無しさん [2011/12/18(日) 01:00:33.26 ]
>>285
なぜ標準的な機能がすでに存在してるのに
わざわざ自作ライブラリまで作るんですか?
つこてる豆が違うんですか?

288 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 01:13:53.11 ]
その\\\は何なの

289 名前:デフォルトの名無しさん [2011/12/18(日) 01:18:30.50 ]
つこてる豆です

290 名前:デフォルトの名無しさん [2011/12/18(日) 01:50:27.77 ]
\\\\\\はたぶんp2が原因、だと思う

理由は変換でエラーが起きても統一した処理が書けるようにするため

ネタ本はVB6のエラー処理を解説してる本で、安全なプログラミングの
フレームワークのサンプルもある(285はその1つ)

個人的にツッコミを入れてたところへの解答がちゃんと書いてある本だったので、ExcelVBAでも使わせてもらってる

この本のライブラリと、「Excelプロフェッショナルエンジニアテクニック 」で
紹介されているアドイン:VBADeveloper.xla は自分が使うExcelVBA環境では
使いまわすようにしてる



291 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 02:45:14.73 ]
1時間かけてコーディングたものをデバッグしたら、最後のコードが.saved=true:.closeで、次開いたらコードが全て消えていました!
途中保存はしていませんでした、どうすればいいですか!!!




292 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 02:53:35.82 ]
www.gigafree.net/utility/recovery/undelete360.html

293 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 02:58:10.81 ]
デスクトップクリックして Alt + F4 押して エンター押せば解決だ!

294 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 03:23:28.84 ]
Winキーを押してすばやくUを2回押すとバックアップ取得できるよ

295 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 04:24:50.37 ]
>>291
おまえはこの1時間で金では買えない貴重な体験をした
明日からがんばれ

296 名前:デフォルトの名無しさん [2011/12/18(日) 05:06:32.28 ]
Sub kk()

Dim a As Long, b As Long, c As Long, d As Long

a = 10

Do While Cells(a, 2) <> " "

If Cells(a, 1) >= 9 And Cells(a - 1) <= 8 And Cells(a, 2) = Cells(a - 1, 2) Then

If Cells(a, "N") = 1 Then
Cells(a, "Y").Copy = Cells(a, "AA")
Cells(a, "Z").Copy = Cells(a, "AB")

End If



If Cells(a, "N") = 1 Or 2 Or 3 Then
Cells(a, "Z").Copy = Cells(a, "AB")
End If

Else: Cells(a, "AF") = "TRUE"

End If

a = a + 1

Loop

End Sub

297 名前:296 [2011/12/18(日) 05:07:21.63 ]
>>296ですが、エラー1004が出てしまいます・・・

アドバイスいただけないでしょうか?

298 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 05:24:31.13 ]
>>296
ここ、

If Cells(a, 1) >= 9 And Cells(a - 1) <= 8 And Cells(a, 2) = Cells(a - 1, 2) Then

↓ こうじゃないの?

If Cells(a, 1) >= 9 And Cells(a - 1, 1) <= 8 And Cells(a, 2) = Cells(a - 1, 2) Then

299 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 05:26:00.71 ]
>>296
これは、

If Cells(a, "N") = 1 Or 2 Or 3 Then

↓ たぶん、こう

If Cells(a, "N") = 1 Or Cells(a, "N") = 2 Or Cells(a, "N") = 3 Then

300 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 05:28:57.05 ]
>>296
Copyの使い方がおかしい

Cells(a, "Y").Copy = Cells(a, "AA")

↓修正

Cells(a, "Y").Copy Cells(a, "AA")

または

Cells(a, "AA") = Cells(a, "Y")



301 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 08:50:31.31 ]
>>285
数値から文字列への変換って意味ではそれ単なる暗黙の型変換だね

302 名前:デフォルトの名無しさん [2011/12/18(日) 11:21:49.50 ]
これはなぜエラーが出るの?

Sub Test()
ActiveSheet.ActiveCell = 1
End Sub


303 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 11:49:50.34 ]
ActiveCellはActiveSheetのプロパティではないから

304 名前:302 [2011/12/18(日) 12:22:44.96 ]
>>303
でもActiveCellはsheet一般のプロパティじゃないの?
そしてActiveSheetはsheet一般に属するんじゃないの?
以上から、ActiveCellはActiveSheetのプロパティになるんですけど。

305 名前:デフォルトの名無しさん [2011/12/18(日) 12:36:07.79 ]
>>302
officetanaka.net/excel/vba/tips/tips34.htm

これを見る限り、「ActiveCellはsheet一般のプロパティ」じゃないっぽい
(ちなみに俺は>>303じゃないよ)

306 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 12:41:09.09 ]
オブジェクトブラウザで確認しろ、ってことだな。
もしくは、一旦Sheet型に代入してからアクセスするとか。

307 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 14:27:30.83 ]
変数を初期化する時に数値型なら0を入れるのが普通ですよね(まぁ特定のセルの値をそれに使うこともあるでしょうけど)

日付型の時って初期化はどうするんですか?
Dim hi_from As Date

hi_from = ""
としたら怒られちゃった^^;

308 名前:296 [2011/12/18(日) 14:27:36.53 ]
>>298-300

おかげさまで解決しました。 ご丁寧にありがとうございましたー

309 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 14:33:48.23 ]
>>307
>としたら怒られちゃった^^;

何のために初期化したいのか知らんけど、0 でも入れときゃいいんじゃね。

310 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 14:37:58.97 ]
>>309
thx



311 名前:デフォルトの名無しさん [2011/12/18(日) 14:52:54.06 ]
>>307
この野郎!
おまえ何をやっとるんだ(怒)!!

みたいに怒られたのか?
それって誰によ?

312 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 14:57:58.13 ]
>>304
>でもActiveCellはsheet一般のプロパティじゃないの?
違う
ApplicationまたはWindowのプロパティ

>そしてActiveSheetはsheet一般に属するんじゃないの?
違う
Application、WindowまたはWorkbookのプロパティ

>以上から、ActiveCellはActiveSheetのプロパティになるんですけど。
ならないからエラー出るんだよ

313 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 15:00:13.09 ]
>>307
っていうかDimした時点で初期化されてるよ

314 名前:312 mailto:sage [2011/12/18(日) 15:04:30.79 ]
あーすまん
ActiveSheetが返すのはWorksheetオブジェクトね

315 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 15:05:10.06 ]
>>304
Excelのオブジェクトは階層構造になっている

Application - WorkBook(Application毎に複数) - WorkSheet(WorkBook毎に複数)

ActiveCell は最上位の Application オブジェクトのプロパティなので、Sheet オブジェクトから直接参照することはできない
やるならたぶん

ActiveSheet.Application.ActiveCell

となるはず

316 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 15:22:26.85 ]
なんで MSDN とか見ないのか…

msdn.microsoft.com/en-us/library/ff834673.aspx

The following expressions all return the active cell, and are all equivalent.

ActiveCell
Application.ActiveCell
ActiveWindow.ActiveCell
Application.ActiveWindow.ActiveCell

317 名前:デフォルトの名無しさん [2011/12/18(日) 16:00:58.06 ]
じゃあActivecellの前には普通の人が使うような単語は書いちゃいけないのか?
XXXXX.Activecell みたいな形はない、と覚えておいてOK?

そしてこれらの法則は、Activebookや、Activesheetにも当てはまる?
つまり、Workbooks(2).Activesheet みたいな形はない?

318 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 16:16:36.14 ]
>XXXXX.Activecell みたいな形はない、と覚えておいてOK?
ダメ
Application.ActiveCell
ActiveWindow.ActiveCell
>>312で「ApplicationまたはWindowのプロパティ」って書いたよね?
>>315とか>>316にも書いてあるよね?

>そしてこれらの法則は、Activebookや、Activesheetにも当てはまる?
法則とかの話じゃないし

>つまり、Workbooks(2).Activesheet みたいな形はない?
ある
>>312で「Application、WindowまたはWorkbookのプロパティ」って書いたよね?

319 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 16:31:28.44 ]
>>317
> XXXXX.Activecell みたいな形はない、と覚えておいてOK?

Type YYYYY
 ActiveCell As Integer
End Type

Dim XXXXX As YYYYY

みたいなケースは (やるかどうかは別にして) ありえるから、ダメ。

320 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 16:34:27.34 ]
>>317
>じゃあActivecellの前には普通の人が使うような単語は書いちゃいけないのか?
ActiveCellプロパティを持つオブジェクトを書く
書かなければApplicationとみなされる

あと、とりあえず>>319は無視していい



321 名前:デフォルトの名無しさん [2011/12/18(日) 16:51:48.87 ]
Application
ActiveWindow
Application.ActiveWindow

この違いはなんなのでしょう?
誰か違いのわかる男(あるいは女)はいますか?

322 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 17:41:31.56 ]
字数が異なります

323 名前:321 [2011/12/18(日) 17:50:13.70 ]
ふざけるな

324 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 17:58:43.06 ]
>>321
前提として
ApplicationはExcel自体
WindowはExcel内の子ウィンドウで、Book などに対応して作成される

Excelを起動すると、Applicationオブジェクトが作成される
Bookを作成すると、Applicationオブジェクト配下に、WorkbookオブジェクトとWindowオブジェクトが作成される
もう一つBookを作成すると、Applicationオブジェクト配下に、別のWorkbookオブジェクトと別のWindowオブジェクトが作成される
workbookは文書内容そのものを保持し、Windowはドキュメント内容以外の状態や表示設定(Book単位のActiveCellや画面の拡縮率など)を保持する
ActiveなBook(ActiveWorkbook)を切り替えると、ApplicationオブジェクトのActiveWindow、ActiveCell、ActiveChartなども一式自動的に切り替わる

で、
Application は、ActiveSheet.Applicationの省略形で、Excel全体を表すApplicationオブジェクトを指す
Application.ActiveWindowは、Excel内のアクティブなWindowオブジェクトを指す(workbookを切り替えるとWindowオブジェクトも切り替わる)
ActiveWindow は、Application.ActiveWindow の省略形で、Application.ActiveWindow と同じ

おそらく内部では、
Application.ActiveCell を参照したとき、Application.ActiveWindow.ActiveCell を返すような実装になってるはずなので、
ActiveCell
Application.ActiveCell
ActiveWindow.ActiveCell
Application.ActiveWindow.ActiveCell
の4つは常に同一になるはず

325 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 18:32:16.70 ]
2つのオブジェクトが同一かどうか調べる方法ってあるのかな?
たとえば

Set ObjA = ActiveCell
Set ObjB = Application.ActiveWindow.ActiveCell
If ObjA = ObjB Then …

みたいな感じで

326 名前:321 [2011/12/18(日) 18:42:08.92 ]
>>324
ご丁寧なご説明ありがとうございます。
かなりわかってきたような気がします。
>>322のアホとは違いますね。
つこてる豆が違います。
こういう基本的とも思えることまで解説した本などがあればいいのにね。

327 名前:デフォルトの名無しさん [2011/12/18(日) 19:02:29.27 ]
>>325
実際に試したら
書いているとおりのコードで調べることができましたよ。

Sub Test()
Dim objA As Object
Dim objB As Object
Set objA = ActiveCell
Set objB = Application.ActiveWindow.ActiveCell
If objA = objB Then
Stop   '<=ここで止まった。
End If
End Sub

328 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 19:06:04.93 ]
"つこてる豆が違います" の検索結果が見つかりませんでした。
つ こ てる 魔 眼 が 違います の検索結果を表示しています。

Bingワロタw

329 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 20:41:28.74 ]
なぞなぞ
Debug.Print ActiveCell Is ActiveCell
の結果はFalse。さて理由は?

330 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 20:52:33.37 ]
>>327
ダウト。これ試してみ

Sub Test()
  Dim objA As Object, objB As Object
  Set objA = Range("A1")
  Set objB = Range("B2")
  If objA = objB Then Debug.Print "同じ"
End Sub



331 名前:327 [2011/12/18(日) 21:22:50.30 ]
>>330

If objA = objB Then
でレンジを入れたオブジェクト変数を比較すると、
objAとobjBのValueで比較するみたいですね。

上記コードに
else
Debug.Print "違う"
を付け加えて、セルに違う値入れて実行したら"違う"になりました。
あとは例えば比較対象をobjA.AddressとobjB.Addressにすると"違う"と判別されましたし、
A1とB2で書式設定を違うものにしたら
objA.NumberformatとobjB.Numberformatの比較も"違う"という結果になります。


332 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 21:29:46.45 ]
>>329
ひょっとして、
ActiveCellが返すRangeオブジェクトは現在の選択座標をもとに都度新規に作成されるとかそういう話?

333 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 21:34:17.84 ]
それを言うなら
Range("A1") Is Range("A1")
もFalseだね

334 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 21:39:41.65 ]
>>329
これ前から謎だったんたよな
正解を教えてくれると助かる

で自分なりに出した答えは
セルの参照先は一緒だけどRangeオブジェクト(インスタンス?)が違うから

下と同じ原理かなと思う
 Set objA = Range("A1")
 Set objB = Range("A1")
 Debug.Print objA Is objB

 Set objA = Range("A1")
 Set objB = objA
 Debug.Print objA Is objB
前者はFalse だけと 後者はTrue

335 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 22:45:17.52 ]
ヒント
Set objA = Worksheets(1)
Set objB = Worksheets(1)
Debug.Print objA Is objB
これはTRUE

336 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 23:16:30.48 ]
うわあ・・・

337 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 23:22:59.09 ]
別のプロシージャに配列渡してその値変えたら元も変わる?

338 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 23:25:51.03 ]
ちょっと試せばすぐにわかるのに

339 名前:334 mailto:sage [2011/12/18(日) 23:27:21.13 ]
>>335
これは
シートオフジェクトは最初からあるからだったりするのか?
VBEでみるとシートオフジェクトが見えるし

340 名前:334 mailto:sage [2011/12/18(日) 23:30:23.28 ]
シートオフジェクト ってなんだよ(笑)
シートオブジェクト だった



341 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 23:33:39.87 ]
VBAからVBEのユーザーフォームデザイン編集画面でツールボックスを右クリックして「その他のコントロール」を選択した時にでるダイアログの
「利用可能なコントロール」を制御する事は可能ですか?
制御は出来なくても利用可能か調べたりチェックされているかどうか調べる方法でも良いです

342 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 00:01:49.44 ]
>>338
あなたのVBA力と回答力を試しているんですが

343 名前:デフォルトの名無しさん [2011/12/19(月) 02:24:24.73 ]
VBAでIEのHTML表示領域の幅と高さを調べたいのですが
どうすればよいでしょうか?
HTMLDocument の HeightやWidthですと
IEのウインドウ幅と高さの取得になってしまいます。

344 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 02:30:36.62 ]
tree viewを使用し、配列gets(n,m)のツリーを作成しようと思ったのですが
n = 0
m = 0

Do While gets(n, m) <> ""

thttp = gets(n, 0) '親カテゴリ
TreeView1.Nodes.Add , , thttp, thttp, "oya"
m = 1

Do While gets(n, m) <> ""
sthttp = Split(gets(n, m), "/") '子カテゴリFormat = KEY/TITLE
TreeView1.Nodes.Add thttp, tvwChild, sthttp(0), sthttp(1), "child"
m = m + 1
Loop

n = n + 1
m = 0

Loop

gets(n,m)はm=0が親カテゴリ m>0が子カテゴリで
親カテゴリ(n,0)は 単語 が格納されて、子カテゴリ(n,m)m>0には KEY/単語 が格納されています
空白の要素を余分に持っているため <> "" で飛ばしています
親カテゴリ(n,0)の要素が空白になった時終了するようにしているのですが
実行すると実行エラー35602 "Key is not unique in collection"と出てツリーが作成できません

345 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 02:46:08.20 ]
同じkeyが指定されてるんじゃね

346 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 03:14:42.05 ]
keyは親子の関係なく 一意でないと いけなかったと思ったけどそうなってる?

347 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 03:20:57.96 ]
>>345-346
ご指摘通りでした
配列の内容を見直しましたところ同じKEYの物がありました
ありがとうございます

348 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 03:34:19.11 ]
>>343
scrollHeight, scrollWidth


349 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 04:23:13.62 ]
>>343
表示領域とは?

>>348 以外に
ClientWidth ClientHeight
もあるが

350 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 09:29:22.69 ]
>>334
Isってメモリのアドレスを比較してるんだよ。
 Set objA = Range("A1")
 Set objB = Range("A1")
 Debug.Print objA Is objB
って
 Set objA = Range("A1")
 Set objB = Range("A1")
 Debug.Print ObjPtr(objA) = ObjPtr(objB)
と同じ。




351 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 16:15:11.69 ]
どういう時にインスタンスが複製されるのかよくわからんちん

352 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 20:07:31.39 ]
>>351の言う複製の意味がよくわからんちん

353 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 23:12:18.80 ]
public変数使わない方が良い理由が分からん

354 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 23:20:55.81 ]
>>339-340
>シートオフジェクトは最初からあるからだったりするのか?

多分そう。

Cell オブジェクトなんてものがあれば、Cells("A1") Is Cells("A1") が
True になるかもしれないけど、VBA には、Cell オブジェクトはなくて、
(*仮に単一のセルだとしても) 常にRange オブジェクトになってしまう。

Range オブジェクトは、当然範囲の情報を持つ必要があるので、
Obj = ActiveCell とやる度に、各々別の Range オブジェクトが「生成」される。

と言うのが、>>329 の答えだと思う。

355 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 23:21:41.47 ]
>>353
>public変数使わない方が良い理由が分からん

必要ない奴に見せたがることはないだろ。

356 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 23:23:37.89 ]
ユーザーフォーム間で変数やり取りとかするときにどうしてもpublic使いたくなる
それでもやっぱりpublicには抵抗がある

357 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 23:32:17.87 ]
パブリックプロパティならいいんじゃない

358 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 01:07:18.25 ]
>>353
プログラムの規模が大きくなった時にバグの元になりやすいっていう経験則だよ
今はまだピンと来なくても、先人の言うことは聞いておいた方がいい

359 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 07:37:37.21 ]
逆にPublic変数を使った方がいいっていうシチュエーションはあるのかな

360 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 07:50:40.39 ]
Public変数

メリット:小規模プログラムで受け渡しI/Fを考えなくて良い

デメリット:クラス間の結合度が問題になる(再利用しにくくなる)

位?

ところでVBAって
ユーザー定義型変数の参照渡しをプロシジャ引数で渡せたっけ?
もちろんPublicで型宣言しておいて。
なんだか言語仕様上ダメだった記憶がある。

変数クラスを定義してそのクラスのインスタンスをローカルで定義して
参照渡ししないとダメだった記憶もある。

なので、ユーザーフォームクラスとの受け渡しはPublic使った様な記憶
がある。



361 名前:デフォルトの名無しさん [2011/12/20(火) 11:09:24.62 ]
>>360
矢切りの渡しでなら渡せる

362 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 13:33:28.48 ]
矢切の渡しってたまに聞くけどどういう意味なの?
調べてもそれっぽいのでてこないけど

363 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 15:58:55.11 ]
ListViewのSortOrderって昇順と降順しかない?
1,5,10,50,100
とあるとしても
1
10
100
5
50
となってしまいます
これを
1
5
10
50
100
のようにできないですか?

364 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 19:23:33.25 ]
>>362
だよな。それが心のこりだわ。

365 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 19:43:09.87 ]
Functionプロシージャ内でSubプロシージャって呼び出せますか?
自分でやったらダメでしたが、何か方法があれば教えてください。

366 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 20:27:23.48 ]
普通に呼べるが

367 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 21:16:35.69 ]
>>366
具体的には、シートで「=Function名(引数値)」って書いたんですが
Function中のSubが実行されないのが疑問になっています。普通に呼べますか?

368 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 21:36:46.56 ]
呼べる。MsgBox入れてみればわかる。

369 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 21:45:52.54 ]
あ、MsgBoxは動きました。有難う御座います。
自分がしたいのは、ワークシートのA1をクリアする様なSubを
Function中から呼び出す様にして、そのワークシートで
=Function名(引数)
とA1以外のセルで書いて、シートのA1をクリアすることです。

370 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 21:51:56.35 ]
求むESPer



371 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 21:58:53.06 ]
>>369
support.microsoft.com/kb/170787/ja


372 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 22:19:19.93 ]
>>371
おお、有難う御座います!そうか、できないのかぁ。セルの総和とかで
クリアするかどうかをFunctionで判定して消去、ってやりたかったなぁ。

373 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 23:17:07.48 ]
関数でシート操作をしたいんだろうけど
更新処理をフックにするくらいだろうなあ

374 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 03:41:16.16 ]
>>360
>ユーザー定義型変数の参照渡しをプロシジャ引数で渡せたっけ?
Public Type hogeType
    a As Integer
    b As Integer
End Type

があるとして

Sub test()
    Dim hoge As hogeType
    hoge.a = 1
    hoge.b = 2
    MsgBox hogesum(hoge)
    MsgBox hoge.a
End Sub
Function hogesum(ByRef hage As hogeType) As Integer
    hogesum = hage.a + hage.b
    hage.a = 0
    hage.b = 0
End Function

でtestを走らせると、3と0と表示される
問題なく渡せるようだ

ちなみに引数をByValにすると
ユーザー定義型をByValで渡すことはできません
ってコンパイルエラーになった

できないのは値渡しと矢切りの渡しだな

375 名前:360 mailto:sage [2011/12/21(水) 07:31:46.89 ]
>>374

申し訳ないですが、言葉がごっそり抜けてました。

-----------------------------------------------------

(誤)
ところでVBAって
ユーザー定義型変数の参照渡しをプロシジャ引数で渡せたっけ?

(正)
ところでVBAって
標準モジュールでGlobal定義されたユーザー定義型変数の参照渡しを
標準モジュールからクラスモジュールのプロシジャに
プロシジャ引数で渡せたっけ?

-----------------------------------------------------

同一クラス内や標準モジュール内で渡せるのは知ってます(実際にできているので)。
標準モジュールからクラスモジュールのプロシジャに渡そうかなと思って書いたら、
VBAから怒られた。

解決方法は、
クラスモジュールにユーザー定義型変数だけPublic定義したクラスを定義して
そのクラスのインスタンスを標準モジュールに定義してからそのObjectを参照渡しする。

だけど、面倒なので、サクッと渡せないかなぁ、とおもっだだけです。

376 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 07:33:57.50 ]
>>375
Friendでいけたような記憶が

377 名前:360 mailto:sage [2011/12/21(水) 07:34:45.04 ]
あと、

矢切りの渡しって
「global宣言されたユーザー定義型変数を標準モジュールからクラスモジュールのプロシジャに参照渡しする」
の意味でしょうか?
隠語を良くしらないので(不勉強済みませんが)。

378 名前:360 mailto:sage [2011/12/21(水) 07:37:20.28 ]
>>376
Friendも試したけどダメだった様な記憶があります。
VBだと可能らしい(VBは使ったことないですが)。

というので混乱した覚えがあります。

379 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 08:19:02.97 ]
>>377
昔、矢切の渡しってヒット曲があっただけのおっさんジョークだからあまり真面目に受け取るなよ… w

380 名前:360 mailto:sage [2011/12/21(水) 08:23:29.73 ]
りょうかい。
まぁ、ワシも40過ぎのおっさんですけどねw



381 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 16:50:38.27 ]
Windows97 Excel2003で、アドインについて。
下記のコードを一度実行後にxlaファイルの配置場所が変わった場合、そのまま再度下記を実行すると、変更後のパスでAddしても、実際には変更前のパスのアドインが追加されます。(ファイルがないため関数実行部分でエラー)

Set myAddIn = AddIns.Add(パス.あどいん.xla)
myAddIn.Installed = true
アドイン関数実行
myAddIn.Installed = false

どうもエクセル→ツール→アドイン から、該当するアドインを手動で削除しないとパスの変更に対応できないのですが、どうにか自動で対応できないでしょうか。
AddしたxlaファイルをKillしてもダメでした。

ケータイからなので見にくければすみません。よろしくお願いします。


382 名前:デフォルトの名無しさん [2011/12/21(水) 18:47:10.91 ]
質問あげ

383 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 20:42:08.31 ]
そのOSパチモンだよ

384 名前:381 [2011/12/21(水) 21:14:08.81 ]
うわどういう間違いしてんだorz
OSはXPです……

385 名前:381 mailto:sage [2011/12/21(水) 21:15:50.46 ]
自ら晒しageしてしまった…

386 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 22:05:49.76 ]
アドンズからリムーブしてみては?

387 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 22:17:31.77 ]
>>375
クラスモジュール(Class1)
Function hogesum(ByRef hage As hogeType) As Integer
    hogesum = hage.a + hage.b
    hage.a = 0
    hage.b = 0
End Function

標準モジュール

Public Type hogeType
    a As Integer
    b As Integer
End Type
Sub test()
    Dim hoge As hogeType
    Dim c As New Class1
    hoge.a = 1
    hoge.b = 2
    MsgBox c.hogesum(hoge)
    MsgBox hoge.a
End Sub

同じように3と0の表示
ためしたのは2007だから、それ以前のバージョンではどうかしらんが、問題なさそうだ
具体的にどういうエラーが出てたのか気になる


388 名前:360 mailto:sage [2011/12/21(水) 23:13:55.10 ]
どうもです。

私は2003で駄目だったんですが、
VBA6.Xという意味では同じですかね?
ただ、やったのが2年位前だったんで?です。

ユーザー定義型のサイズが数10KBクラスなので
その辺が怪しいのかも?

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

389 名前:360 mailto:sage [2011/12/21(水) 23:21:38.00 ]
あ・・・思い出した

String型がメンバに含まれてました。
サイズを指定してないので動的変数ということになるので
その辺も影響しているかもです。
それと、ユーザー定義型のメンバに他のユーザー定義型を含んでます。


エラーメッセージは・・・・忘れてしまいましたが、
何となく理由が分かった様な気がします。
ありがとうございました。

390 名前:381 mailto:sage [2011/12/22(木) 09:50:46.01 ]
>>386
いろいろやってみましたが、リムーブの仕方がわかりません…
諦めて手動でやってもらう手順にするしかないかな…



391 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 12:38:16.17 ]
VBAと相性の良い言語って何がある?

392 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 12:53:13.38 ]
相性ってどういうこと?
どの言語でも組み合わせて使うという発想はあんまりないと思う
目的で使い分けるのが普通じゃないのかな

393 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 13:26:58.68 ]
Excelとって意味なら.NETかな

394 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 14:16:46.86 ]
VBSとか

395 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 14:24:48.00 ]
ActivePerl+WIN32::OLE

396 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 14:55:45.37 ]
webとデータのやり取りをするって意味です

397 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 15:14:31.06 ]
もしかして探してるのはアドインとかライブラリ?

398 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 20:49:09.81 ]
VBAが言語である事を知らないのでは

399 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 20:54:01.96 ]
入出力にExcelのワークシートを使って、演算処理は高速なCでやりたいとか

400 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 21:39:15.79 ]
>>399
> 演算処理は高速なCでやりたいとか

そんなこと思いつく奴の質問とは思えないが…



401 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 23:02:43.63 ]
3ステップで学ぶExcelVBA入門終わったんだが、次にオススメの課題有りの参考書オススメ無いですか?

402 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 23:05:35.35 ]
横から失礼します。
>>399
>入出力にExcelのワークシートを使って、演算処理は高速なCでやりたいとか
ちなみにこれの実現方法としては、例えばどんなのがあるんですか?

403 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 23:37:59.06 ]
>>402
Excel VBAからDLL呼び出し
www.ne.jp/asahi/hishidama/home/tech/excel/dll.html

404 名前:デフォルトの名無しさん [2011/12/23(金) 10:03:27.62 ]
FromにTimerを貼り付けるには?

405 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 10:42:30.15 ]
>>404
>Fromに

それは難しそうだ、その From とやらを作っている会社に問い合わせるべき。

406 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 11:20:34.71 ]
[タイマーコントロール] クラスモジュール
Tips15: VBAでも出来る [ タイマーコントロール ] クラスモジュール (Ver 3.0)
www.h3.dion.ne.jp/~sakatsu/Excel_Tips15.htm

Fromってなんやねん w
Formだろ


407 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 11:28:49.53 ]
Excel.Application.Visible = False
ブック作成

★ループ★
シート追加
ペースト
★ループ★

マクロ動作中に他の作業(ブラウザ使う)とかができない・・・(正確には画面がチカチカする)
完全にバックグラウンドで動作させるのは無理なのかな?

408 名前:404 [2011/12/23(金) 13:36:54.66 ]
>>405
アホ

>>406
ありがとうございます!
やっぱり標準機能ではないのですね
でも工夫すればできるということなんですね

409 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 15:58:49.73 ]
タイマーコントロールってVBAで出来たんだっけ
.netは標準装備だったけど

410 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 19:21:34.60 ]
APIのSetTimerとか使った自前実装っぽい。



411 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 21:16:35.17 ]
なんでググらないんだろうな
タイマーの実現方法調べるのに3時間か…

412 名前:デフォルトの名無しさん [2011/12/23(金) 21:54:29.88 ]
Formについてです。

はじめのときの
Load、Initialize、Activateの使いわけを教えてくださいませ。

あと、おわるときの
Unload、Terminateの使い分けを教えてくださいませ。

ちなみにLoad←→Unload、Initialize←→Terminateと対応ペアがあるようだけど、Activateに対するペアもう一方はなぜないのですか?

413 名前:デフォルトの名無しさん [2011/12/23(金) 22:23:42.54 ]
>>412
home.att.ne.jp/zeta/gen/excel/c04p28.htm
↑を読めば分かると思うけど、Activateの反対はDeactivate

そして、Load、Unload、Show、Hideはメソッドで
Activate、Deactivate、Initialize、Terminateはイベント

414 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 22:35:00.40 ]
>>387
こういう似非オブジェクト指向が面倒だからVBAではPublicばっか使ってるわ
vba程度で大規模なもんつくらねーし

415 名前:413 [2011/12/23(金) 22:35:43.53 ]
>>413はちょっと書き方に配慮が足りなかった。
(メソッドとイベントの対応が分かりにくい書き方になってた)

LoadするとInitializeイベントが発生して、
Showでイベントが発生する。
HideするとDeactivateイベントが発生して、
UnloadでTerminateイベントが発生する。

LoadしないでShowすると自動的にLoadされてShowするし、
HideしないでUnloadしても自動的にHideされてUnloadする。

416 名前:413 [2011/12/23(金) 22:37:50.21 ]
度々スマン
なぜか抜けてた
誤:Showでイベントが発生する。
正:ShowでActivateイベントが発生する。

417 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 22:40:19.38 ]
>>407
できるっしょ

418 名前:デフォルトの名無しさん [2011/12/24(土) 04:42:11.86 ]
特定のセルにコントロールを移したときに
そのセルに文字を入力したいのですがどうすればいいですか?

419 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 04:58:05.63 ]
>>418
SelectionChangeイベント

420 名前:418 [2011/12/24(土) 05:01:13.86 ]
>>419
ありがとうございます



421 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 05:56:28.60 ]
>>412
Loadは命令。Initialize、Activateはその結果実行されるプロシージャ(イベント)
Initializeはそのフォーム(のインスタンス)で1回しか起きないが、Activateは何回でも起きる(可能性がある)
Unloadも命令。Terminateはその結果起きるイベント

>>415
どうせならもうちょっと正確に書け
LoadとUnloadはメソッドじゃない。ステートメントだ
オブジェクト(フォーム)に定義されている命令ではなく、VBA言語に定義されている命令

LoadでInitializeイベントが起きるのも、ShowでActivateイベントが起きるのも結果に過ぎないぞ
ShowしなくてもActivateイベントは(そういう状況になれば)起こるし、HideしなくてもDeactivateイベントも起こる

こっから先は気にしなくてもいいかもしれんが、実験すると

Loadする前にインスタンス生成した段階でInitializeイベントは起こる
まあこれは解る

Unloadするとその時点でTerminateイベントが起こる
どうもインスタンスへの参照が無効になるっぽい。これはちょっと嫌な仕様だ

Unloadしないでインスタンスへの参照を削除した場合、Terminateイベントが起こってないかもしれん
デストラクタはあてにするなって事か

とりあえずLoadとUnloadメソッドは忘れて、Terminateイベントは無いものとして扱うのがいいんじゃないかな

ついでに実験中に気付いたこと
UserForm1.Show vbModeless
MsgBox "表示しました"
このコード走らすと初回表示のActivateイベントが発生しなくなる
これってバグじゃねえかと

422 名前:デフォルトの名無しさん [2011/12/24(土) 08:52:42.72 ]
>>421
LoadはShowがあるから使わなくて済むけど、
Unloadはあったほうが良いんじゃないの?


423 名前:ラーメン [2011/12/24(土) 09:56:51.82 ]
>>417
うまいっしょ?

424 名前:デフォルトの名無しさん [2011/12/24(土) 09:59:18.68 ]
Unloadを使わないとどんな不幸が起きますか?

425 名前:デフォルトの名無しさん [2011/12/24(土) 10:28:49.72 ]
>>424
不幸ってわけじゃないけど要らないオブジェクトをメモリに残しとくのってなんか嫌だ

426 名前:デフォルトの名無しさん [2011/12/24(土) 10:31:35.95 ]
>>425
それはExcelを閉じてもメモリに残りますか?

427 名前:デフォルトの名無しさん [2011/12/24(土) 10:38:43.47 ]
excel閉じたら残らんけど閉じるまで残ってるのが嫌なの


428 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 20:03:07.59 ]
>>422
LoadはShowするまえに初期化とかするために必要なんで、Showで代用はできんぞ

Load,Unloadはもともと既定のインスタンスを生成する命令で、インスタンスの概念がなかった時代の名残だからな

>>427
本来ならすべての参照が切れたら、適切なタイミングで消されるはずなんだが
このへんはカーベージコレクタの動作とか絡んでるからなぁ

既定のインスタンス使うならLoadは代用がないだろうし、Unloadもすべきかもしれん
既定のインスタンス使わないならLoadは不要だろう
UnloadはNothing代入とセットで使うなら良いんじゃね

429 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 10:34:22.39 ]
ガベージコレクションは無いよ

430 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 12:26:15.52 ]
あるメンバーサイトにログインして、目的のデータ取得してセルに表示するやり方分かる人いる?



431 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 12:37:49.52 ]
お前はVBAと相性のいい言語でも探してろ

432 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 22:35:42.79 ]
ここでいいのか知らないが
VBEのコード記入する画面の文字の色とか背景色って変えれる?

433 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 22:47:15.64 ]
調べれば3秒で分かるだろ

434 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 23:01:51.31 ]
3秒では無理だった
どうやったら3秒で調べられるん?

435 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 00:41:43.80 ]
どうやればいいと思う?

436 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 07:48:56.35 ]
答えがわかってて、それを表示するだけなら3秒
調べるのは無理

437 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 07:51:52.86 ]
色の変更はオプション→エディタの設定

438 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 12:40:40.84 ]
>>363
これ分かる方いませんか?
ListViewのノードが数でソートすると数の大小で並び替えができるか、です

439 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 12:51:41.31 ]
>>438
自分はわからん
別列作って文字列などで桁そろえてソートすれば解決するような気もする。

440 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 13:51:29.37 ]
1→0001
50→0050
みたいにしてあとで0取ればいいんじゃね?



441 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 15:08:52.08 ]
環境 WindowsXP SP3、excel2003です。

処理が終わったブックを保存する時に、マクロは含めずに
シートのみ保存するマクロってどうすればいいでしょうか?
別名保存で出来るかと思ったのですが、マクロファイルを外す
ような項目が見あたらなくて、わからなくなってしまいました。

442 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 15:15:38.30 ]
この辺参考にすればいいんじゃね
www.officetanaka.net/excel/vba/vbe/index.htm

443 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 21:57:58.10 ]
>>441
VBAマクロ入りのをアドインでセーブ。
そのアドインをExcel に登録すればマクロ無しで行けることになる。

バージョン管理ツールで管理しやすくなるし、pj内で共用しやすくなる


444 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 22:10:13.08 ]
>>441
単純にシートを新しいブックに移動またはコピーしてそれを保存するってのはどうかな?

445 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 08:48:23.35 ]
>>442-444
今回は444さんの方法で出来ましたが、
アドインは思いつきませんでした。

ありがとうございます。

446 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 19:08:40.83 ]
アドインがいいと思うけどなぁ
シートコピーは1セル256文字?制限あるし。
数文字程度の欠けだと誰も気付かないまま被害が拡大して…

447 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 23:16:49.93 ]
入力されているセル範囲の最終行が知りたくて
Dim R As Range
R=ActiveSheet.UsedRange
って、やってRから 最終業を取り出そうとしたんだけど、「オブジェクト云々」とエラーが出ます。
なんか間違ってる?

448 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 23:35:09.40 ]
うん間違ってる

449 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 23:44:59.95 ]
Set R=ActiveSheet.UsedRange

450 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 23:48:15.48 ]
何が間違ってるってその姿勢だよね。
エラーメッセージを読む気すらないっていう。



451 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 02:15:18.09 ]
ユーザーフォームのリストビューで
カラムをクリックしたときにクリックしたカラムの2行目のテキストを取得するにはどうしたら良いでしょうか

452 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 06:18:20.46 ]
SETの使い分けが分からん
代入する時は基本的に付けるもの?

453 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 07:07:36.48 ]
objectの参照のときにだけつける

454 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 07:37:45.25 ]
ヘルプ嫁

455 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 07:47:51.73 ]
ずぐだんずんぶんずんゲームやるときにつける

456 名前:147 mailto:sage [2011/12/28(水) 08:26:45.66 ]
俺も分からん。
For Each文や、関数での授受時にSetが要るのか要らんのかさぱーり理解できん。

For Each Set obj in collection とか、
Set objResult = funcMine(Set objArg) とか。

457 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 09:47:58.52 ]
=も代入じゃん(比較もするけど)
区別する必要って何?

458 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 11:58:37.21 ]
>>457
たとえばなんでも入れられるVariant型の変数aにa = AtiveCellとしたときaに参照を代入したのかActiveCell.Valueを代入したのか分からないから。
型によって区別する仕様にしてもよかったとは思うが。

459 名前:デフォルトの名無しさん [2011/12/28(水) 15:45:58.78 ]
本当に初歩的な質問をして申し訳ございません。

sheet1のcells(7,1)の部分から、cells(3,3)に入力した数字分だけ下に伸ばしたいのですが
自動的にやる方法ご存知でしょうか?
Sub Number()

Worksheets("sheet1").Activate
a = Worksheets("Sheet1").Cells(3, 3).Value

For n = 1 To a
Worksheets("sheet1").Cells(n + 5, 1).Value = n
Next


End Sub

上記のコードを書き込んだのですが、マクロ上で実行ボタンを押さないと
sheetに表示されません。
初歩的で大変すみません。よろしくお願いします。


460 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 15:52:12.75 ]
何がしたいのかわからん
日本語の初歩からやり直せ




461 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 17:40:40.99 ]
>>459
多分動いてるんじゃね?
マクロ実行押さないと何も動かない。
event で動かしたいならsheetモジュールの予約されたプロシジャに書けば?

462 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 17:43:15.26 ]
>>451
これ分かる方いませんか?

463 名前:デフォルトの名無しさん [2011/12/28(水) 18:01:44.22 ]
459です。すみません。割愛しすぎました。
cells(3,3)の部分に、たとえば任意で4や5といった数字を入れて
エンターキーを押すと自然に作動してほしいということです。
実行ボタンを押さずにということです。ただ単にそこのセルに数字を打ち込んで
エンターを押すだけで作動という意味です。

失礼します。

464 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 18:05:35.49 ]
>>463
Worksheet_Changeイベント

465 名前:デフォルトの名無しさん [2011/12/28(水) 18:13:14.55 ]
Private Sub Worksheet_Change()

Worksheets("sheet1").Activate
a = Worksheets("Sheet1").Cells(3, 3).Value

For n = 1 To a
Worksheets("sheet1").Cells(n + 5, 1).Value = n
Next


End Sub


にいれたのですができませんでした…

466 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 18:39:28.18 ]
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Cells(3, 3)) Is Nothing Then Exit Sub
a = Cells(3, 3).Value
Application.EnableEvents = False
For n = 1 To a
Cells(n + 5, 1).Value = n
Next
Application.EnableEvents = True
End Sub

467 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 21:26:12.73 ]
>>462
そもそも俺のエクセルのユーザフォームにはリストビューなんてないんだが
何をつかってるんだ

468 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 22:08:27.26 ]
Microsoft list view control 6.0です

469 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 22:11:43.56 ]
MsgBox りすとびゅー.SelectedItem.SubItems(2)


470 名前:a mailto:sage [2011/12/28(水) 22:15:38.89 ]
>>469
SubIrems(1)かも



471 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 22:31:10.27 ]
行と列が逆だったか?

Private Sub りすとびゅー_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
MsgBox りすとびゅー.ListItems(2).SubItems(ColumnHeader.Index - 1)
End Sub

472 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 23:13:24.34 ]
>>471
できました!
ありがとうございます

473 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 00:21:59.00 ]
UserFormをModelessで二つ以上開いてるときにエラーでたら強制終了するのは仕様?

474 名前:デフォルトの名無しさん [2011/12/29(木) 10:45:54.58 ]
あるセルに入力規則でドロップダウンリストの設定がしてあるのですが、
それをボタンを押せば、入力規則の設定を消すマクロを組みたいのですが、
clearではだあめなようで、どうすればいい?

475 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 10:58:02.14 ]
>>474
Validation

476 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 11:43:53.83 ]
トリミングするために CropTopなどに値を整数を入れるのですが
Debug.Print CropTop を実行すると 値が変更されてしまいます。


CropTop = 80
Debug.Print CropTop = 79.998

この現象を回避したいのですが
どうしたらよいでしょうか?

477 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 12:14:23.53 ]
>>476
何か問題でも?

478 名前:デフォルトの名無しさん [2011/12/29(木) 12:21:59.85 ]
もそっとくわしくおねがいしまふ

479 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 12:28:39.81 ]
.Delete

480 名前:デフォルトの名無しさん [2011/12/29(木) 12:32:12.17 ]
>>47 さんへでふ。 もそっとくわしくおねがいしまふ




481 名前:デフォルトの名無しさん [2011/12/29(木) 12:32:46.14 ]
>>475さんへです

482 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 12:40:41.34 ]
>>481
.Delete

483 名前:デフォルトの名無しさん [2011/12/29(木) 14:30:45.27 ]
>>466
本当にすみません。マクロを作るときは
マクロを選択して、名前を作って作成というボタンを押すんですよね?
それに466さんが張り付けてくれましたコードをそのまま入れましたら
できませんでした。。。


すみません。よろしくお願いします。

484 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 15:49:57.18 ]
>>483
1.シートの見出しタブを右クリックしコードの表示を選択
2.466のコードをコピペ
3.とりあえず動作確認

4.イベントマクロで検索
5.コードの意味を理解
6.そのままじゃ使い勝手悪いと思うので修正

485 名前:デフォルトの名無しさん [2011/12/29(木) 16:48:54.26 ]
Private Sub CommandButton1_Click()
Dim a, b, c As Single

c = 0
For b = 1 To 5
For a = 1 To 5
c = c + 3
Sheet.Cells(a, b).Value = c
Next
Next

d = 1
For b = 1 To 5
For a = 1 To 5
d = d + 1
Sheet.Cells(a + 10, b + 10).Value = d
Next
Next
End Sub



非常に簡単なんですが、シートに書き込むことができません。どうすれば
書き込めますか?
フォームを作って、クリックボタンを一つ作っています。

486 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 17:30:08.52 ]
>>485
僕も、シートに書き込むことができません。
どうすれば書き込めますか?

Private Sub CommandButton1_Click()
Dim a As Integer, b As Integer, c As Integer

c = 0
a = 1
b = 1
Sheets("Sheet1").Cell(a, b).Value = c

End Sub



487 名前:デフォルトの名無しさん [2011/12/29(木) 18:43:31.84 ]
ありがとうございます。
Private Sub CommandButton1_Click()
Dim a, b, c, d As Single

c = 0
d = 1
For b = 1 To 5
For a = 1 To 5
c = c + 3
Sheets("Sheet1").Cell(a, b).Value = c
d = d + 1
Sheets("Sheet1").Cell(a + 10, b + 10).Value = d
Next
Next
End Sub



上記のとおりにやりましたが、それでも、
Sheets("Sheet1").Cell(a, b).Value = c


の部分にエラーが出てしまいます;

488 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 19:24:38.06 ]
>>483
標準モジュールに作ってない?
WorkSheetの関数として実装するんだよ?

489 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 19:25:13.73 ]
>>487
いや、だから僕も書き込めないんだって…

× Sheet.Cells(a, b).Value = c
× Sheets("Sheet1").Cell(a, b).Value = c

でも↓はOKなのはなぜ?

Private Sub CommandButton1_Click()
Dim c As Integer

c = 0
Sheets("Sheet1").Cells(1, 1).Value = c

End Sub

490 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 20:13:23.66 ]
エラーメッセージを読むことを覚えよう



491 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 20:19:06.38 ]
Cell(a, b).Value = c

Cell じゃなくて
Cells だろ?

492 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 20:25:51.15 ]
エラーメッセージなんて読んでも意味わかんねーし
つべこべ言わずに答えを教えろやカス
お前らそれくらいしか取り柄がないんだろ?

493 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 20:40:38.71 ]
>>492はにせものです

494 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 20:44:04.22 ]
(でも本音です)

495 名前:デフォルトの名無しさん [2011/12/29(木) 21:04:15.31 ]
行列の掛け算同士って
for構文を使うのだと思いますがどうすればよいのでしょうか?
試行錯誤するのですが非常に複雑です。。。

496 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 21:06:45.45 ]
>>492
> エラーメッセージなんて読んでも意味わかんねーし

エラー箇所でF1押してヘルプを読むのは役に立つと思うけどな


497 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 21:14:23.88 ]
>>495
何をやりたいのかわからんが
Worksheetfunction.MMult
じゃ駄目なのか

498 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 23:15:20.75 ]
Dim i As Long, j As Long
Dim V(1 To 2, 1 To 2), VV(1 To 2, 1 To 2)
Dim VVV

For i = 1 To 2
For j = 1 To 2
V(i, j) = i
VV(i, j) = j
Next j
Next i

VVV = WorksheetFunction.MMult(V, VV)
Debug.Print WorksheetFunction.Index(VVV, 1, 2)

499 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 23:16:42.15 ]
>>495
4行4列くらいまでならべた書きの方が速い

500 名前:デフォルトの名無しさん [2011/12/30(金) 06:45:51.03 ]
>>499
4行4列ではなく、要素によって変わってくるため、
恐らく20行前後になってくると思います。。。




501 名前:デフォルトの名無しさん [2011/12/30(金) 08:01:37.33 ]
>>498
すみません。ありがとうございます。
worksheetfunctionではなく、他の方法でできますか?
Function MProd(X() As Double, Y() As Double) As Double()
'行列の積を計算する関数
'2009/07/10 山田宏
Dim m1 As Integer, n1 As Integer, n2 As Integer
Dim i As Integer, j As Integer, h As Integer
Dim tmp As Double, Z() As Double
m1 = UBound(X, 1): n1 = UBound(X, 2): n2 = UBound(Y, 2)
ReDim Z(1 To m1, 1 To n2)
For i = 1 To m1
For j = 1 To n2
tmp = 0
For h = 1 To n1
tmp = tmp + X(i, h) * Y(h, j)
Next h
Z(i, j) = tmp
Next j
Next i
MProd = Z
End Function

調べたらこれが出てきましたがまったくわかりません。。。

502 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 08:39:20.75 ]
>>501
worksheetfunctionで結果がでるならそれでいいじゃない
なんか問題あるの?

もしも 万が一 宿題なら自分でやろうぜ
あと
>>2 ★5 な

503 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 08:42:37.47 ]
行列の積の計算手順と、最低限度のプログラミングが理解できていれば、
悩むことではないと思うのだが。

504 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 08:57:12.87 ]
>>503
ttp://blogs.itmedia.co.jp/magic/2011/12/6886-2d5b.html

505 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 09:39:02.37 ]
>>501
わからないならエクセルにまかせりゃいいじゃん
↓ならわかるだろ

Function MProd2(X() , Y() )
Dim Z
Z = WorksheetFunction.MMult(X, Y)
MProd2 = Z
End Function

506 名前:デフォルトの名無しさん [2011/12/30(金) 09:41:47.52 ]
すべてのシートに同じ処理をするマクロで
For Eachの入れ子で組んだら上手くいきません

For Each sh In Worksheets
Columns("AA:AR").Select
For Each c In Selection
Case "1"
c.Interior.ColorIndex = 7
Select Case c.Value
End Select
Next c
Next sh

507 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 09:46:42.32 ]
それはたいへんですね。ごしゅーしょーさまです。

508 名前:デフォルトの名無しさん [2011/12/30(金) 09:49:00.68 ]
>>504

そのリンク先が>>503と何の関係が有るのかは分からないけど、
今の教育現場が酷いことになってるのは分かった。


509 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 09:55:32.45 ]
>>506
構文でたらめじゃねーか
でも並べかえれば動きそうな気がするし
さて、おちょくられているのかな

510 名前:デフォルトの名無しさん [2011/12/30(金) 10:03:24.56 ]
>>506
sh.activate追加で



511 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 10:20:57.78 ]
>>504
単位を省略しなければどちらも正解

○ 6本/人 × 8人=48本
○ 8人 × 6本/人=48本
? 6本 × 8人=48?
? 8人 × 6本=48?

512 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 10:30:47.97 ]
きっとその先生はCPU のbit数を意識して、演算結果が飽和しないように式を組む癖を叩き込みたいんだと思いますん。

513 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 10:50:54.62 ]
ふつーCPUの演算では飽和しません

514 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 11:05:36.54 ]
セル番地を指定するのにrangeとcellsが混在しているとみっともないでしょうか

515 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 11:26:10.43 ]
ユーザーフォームにラベルとテキストボックスを配置しました。
フォントは同じでサイズも同じですが
高さがズレて表示されます。

見た目の高さを揃えるにはどうしたらよいですか。
よろしくお願い申し上げます。

516 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 11:31:12.49 ]
>>514
そもそもcellsはrangeを返すプロパティ
これを踏まえてどう思うか

517 名前:デフォルトの名無しさん [2011/12/30(金) 11:39:08.66 ]
>>516
偉大な>>514様は、例えば左上のセルを Cells(1,1)と書くのとRange("A1")と書くことの違いが分かっておられないと思う。
その説明じゃなんのことは分かりやすく伝えてないから、説明になってないと思うぞ。
もう少し分かりやすく説明して差し上げたら?

518 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 11:39:41.44 ]
>>509
この構文のどのへんがだめなんでしょうか
よろしかったら教えてください

519 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 11:51:51.00 ]
>>518
条件付き書式でいいんと思うんだがCase "1"とSelect Case c.Valueが逆だろ?
Case "1"よりはCase 1だと思うが

520 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 11:53:14.65 ]
それにたった一つの分岐ならSelect Case使うまでもねーな。
Ifで充分。



521 名前:デフォルトの名無しさん [2011/12/30(金) 11:58:18.99 ]
>>519
逆と言われて、こうしたりして

Select Case c.Value
c.Interior.ColorIndex = 7
Case "1"
End Select

522 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 12:02:35.62 ]
そうだな。
まぁ色々と並べ替えてやってみんしゃい。
それにしてもAA:ARのすべてのセルを調べるのもなんだかねぇ。
せめてUsdRangeとの共有セルにした方がいいと思うね。

523 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 12:52:16.18 ]
もしかして、Excel2007以降だと104万行全部調べる羽目になるの?

524 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 14:30:32.28 ]
104万8576行*18列*シート数だね
おわりゃしねえ

525 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 15:30:07.14 ]
3シートでやってみた。たしかにそうだ (^-^*)

526 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 22:09:50.25 ]
急いでます。

=PRODUCT(A1:B1)
=PRODUCT(A2:B2)

と同様に一気に計算する方法ってどうやるんですか?

527 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 22:22:07.30 ]
>>526
とりあえず落ち着きんっさい

528 名前:デフォルトの名無しさん [2011/12/30(金) 22:26:13.26 ]
Excelだと、スロットゲームとか作れそうだけど、
どこかにサンプルないかな?
お勉強にしたい。

529 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 22:44:33.57 ]
● 2005年5月23日号 file NO.004 イカサマ・スロットマシンを作れ
pc.nikkeibp.co.jp/npc/download/excel_taskforce.html

530 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 22:47:37.64 ]
テーブルからの検索でなるべく早い方法ってなんでしょうか。データ量によりいろいろ方法あると思いますが。
特に列二つか三つに一致するデータを検索する使い方が多いのでvlookupは普段使ってません。

とりあえず上から順に検索
for i = 2 to .cells(rows.count,1).end(xlup).row
if .cells(i,1).value = ID then
if .cells(i,2).value = Name then
処理
exit for
end if
end if
next

上のやり方が遅すぎるので配列に代入してから。上のやり方より遥かに早くなったので
現状この方法を多用。
Dim Rng as variant
rng = .UsedRange
for i = 2 to Ubound(Rng)
if Rng(i,1) = ID then
if Rng(i,2) = Name then
処理
exit for
end if
end if
next

もっと早い方法あれば何かキーワードだけでもヒントお願いします。
上の方法だと5000〜1万件になるとちょっと実用できなさそうなので。
findやVlookupは知ってますが2列で一致するような使い方が出来なくて。




531 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 23:18:26.87 ]
Accessとか使った方がいいんじゃない

532 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 23:19:05.88 ]
検索した上で何がしたいのかによる

533 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 23:28:11.74 ]
>>530
検索キーの構造が単純なら、キーを結合した上でVLOOKUPするとか。
この場合だと、IDとNameをそれらで絶対に使われない文字を挟んで繋いでやれば
単一キーとして利用できる。

534 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 00:00:19.43 ]
WinXP Excel2000で作っていたときは問題なく動作をしていたのですが
Win7 Excel2010で実行すると
エラー番号1004'Range'メソッドは失敗しました'_Global'オブジェクト
とでました
問題の箇所は
UserForm2.Show vbModeless
ここです
コード自体は間違っていないと思うのですが環境の変化によって何が変わりエラーがでたのでしょうか

535 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 00:08:41.33 ]
どっかでみたコピペだな

536 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 01:54:14.77 ]
コピペじゃなくて真剣に悩んでます

537 名前:530 mailto:sage [2011/12/31(土) 02:16:34.54 ]
ありがとう
>>533
ワークシート関数で作業列で結合してそれでVLOOKUP使ってるのを見た事
ありますがそういう事ですね。

>>532
この質問では何がという特定の目的はありませんでした。ほかの検索方法
があれば知りたいなと思って。

>>531
アクセスっぽい事をエクセルでやりたいのです。どの会社行ってもエクセル
は必ずあるけどアクセスはあんまり見ないですし。

538 名前:デフォルトの名無しさん [2011/12/31(土) 02:50:44.07 ]
ただ検索して知りたいだけなら、VBA使わずに手動でオートフィルタだが。
VBAでオートフィルタって手もあるけど。だからどういうことをやりたいのか聞いた。

539 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 03:33:04.00 ]
エクセル97のおんぽろ会社PCで400行×20列くらいのデータ抽出を
数式のコピペだけでやって10秒ほど?で出来てるけどそれより早いなら解からん

540 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 09:24:49.34 ]
>>537
AccessなしでもAccessデータベースを扱うことは可能
他にもタダで使えるデータベースはあるから使い途によっては選択肢に入れてもいいかもね
でもいろいろ敷居が高いかな



541 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 10:23:56.08 ]
>>540
ようするに会社のパソコンで必ず使える物ならいいのでエクセルで無理やり頑張るより無料のデータベース
勉強する方が良いかもしれないですね。

542 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 11:04:55.91 ]
現状の配列方式で5000〜1万件ってそんな時間かかるものなん
条件合致したら、ループ抜けるんだよね?処理は1回だけ

543 名前:デフォルトの名無しさん [2011/12/31(土) 11:57:37.43 ]
エクセルの表に対してADO&SQLつかえば?

544 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 11:58:53.89 ]
遅いよ

545 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 12:00:28.32 ]
>>544
うん、わかった

546 名前:530 mailto:sage [2011/12/31(土) 13:48:33.96 ]
>>542
ダミーデータ1万行まで入れて一番下に入れた文字を検索してみたら0.015秒でした。
十分早いですね。
検索回数増えないようにロジック考えればこの方法で十分なんですね。


オートフィルタとか使わずに検索を一度に何十回とか繰り返してたのでそもそもそのへん
を考え直すべきなんですね。


547 名前:デフォルトの名無しさん [2011/12/31(土) 20:54:03.70 ]
下記はどう使い分けるのが適切でしょうか?

vbCR
vbLF
vbCRLF
vbNEWLINE

548 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 21:58:56.52 ]
vb.netで質問です
trackbar1のvalueからpicturebox1のbackcolorのレッドの濃淡を出したいのですが
trackbar1のvalueはinteger(0−255)にしています。
Public Sub TrackBar1_Scrollするとtrackbar1.valueから0の場合picturebox1のバックカラーは一番薄い色に(白か初期の灰色に)
逆に255ならばtrackbar1のバックカラーはどす黒いredにしたいのですが…

まず濃淡を出すこと自体可能なのでしょうか。。。


スレ違いと言うことは重々承知しております。vb.netスレが検索してもないもので。。。

お願いします。

549 名前:デフォルトの名無しさん [2011/12/31(土) 22:05:09.51 ]
toro.2ch.net/test/read.cgi/tech/1325083428/

550 名前:デフォルトの名無しさん [2012/01/01(日) 02:14:28.71 ]
選択範囲を全て罫線を引くのは下記で出来ますが
Selection.Borders.LineStyle = True

例えば
一番上と下のラインを以外の横の罫線を点線にしたい場合って
どうすればいいのでしょうか?
一応マクロの記録でやると何十行もの内容が出てる来たので
それは避けたいのですが



551 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 03:19:29.13 ]
全部書いてから横罫線だけ上書きするとか

Selection.Borders.LineStyle = xlContinuous
Selection.Borders(xlInsideHorizontal).LineStyle = xlDash


552 名前:デフォルトの名無しさん [2012/01/02(月) 09:58:08.79 ]
あけましておめでとうございます。
行列のことで質問したものです。
再度整理して、再質問します。
octave系のプログラミングソフトでは、行列表示は
a=[2 2;5 5]
などで表せます。
逆行列は、inv(a), また、転置行列は、a'で表せます。

Excelでは、
1.a=0 とまず、空の成分を置いて、
b=0
for i=1 to 10
for k=1 to 10
b=b+1
a(i,k)=a(i,k)+b
next i
next k
のように置くことは可能でしょうか?
つまり、例えばですが、
a(1,1)の部分には1が入り、a(2,2)の部分には2,また上の例には
対応していませんが、a(1,2)には3や4などといった数字が入り…といった感じです。


よろしくお願いします。

553 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 11:23:58.46 ]
馬鹿には無理

554 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 11:27:47.75 ]
試せばわかる

for i=1 to 2
for k=1 to 2
debug.print a(i, k)
next k
next i

555 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 11:35:11.16 ]
>>552
整理してそれかい
小学校からやり直せ

556 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 11:40:20.99 ]
2行2列で足し算
掛け算でなかったっけ?

For i = 1 To 2
For k = 1 To 2
a(i, k) = 1
b(i, k) = 2
c(i, k) = a(i, k) + b(i, k)
Next k
Next i

557 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 11:43:00.70 ]
iとkなのが気持ち悪いんだが

558 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 14:35:23.95 ]
>>552

新しく質問する前に前回の質問にケリ付けとこうよ。
>>502が聞いてたWorksheetFunctionを避けたい理由とか、
>>501で紹介していたFunctionの何が童話からないのかとか、
一切説明ないじゃん。
自分が分かればそれで良いってのは虫が良すぎるんじゃないの?

559 名前:デフォルトの名無しさん [2012/01/02(月) 15:05:35.05 ]
>>558
大変申し訳ございません。
worksheetfunctionを避けたい理由としましては、excelではなく
visual studio(ほとんど同じコードだと思います)でも使いたいので、
応用させたいと思っています。
また、501に関しては、Z() と最初においていますが、
これにより、
z(1,1)=5 , z(1,3)=4 , z(2,1)=3と打つと、
例えばですが、z(1,3)に入っている数字は4ということなんでしょうか?


560 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 15:42:01.97 ]
>>559
そういうこと
>>501は、行列の要素を1個ずつ計算しZ(i, j)に格納している



561 名前:558 mailto:sage [2012/01/02(月) 15:51:07.30 ]
>>501のは2つの引数X(),Y()で与えられた2次元配列について行列積を求め、MProd()で返す関数
まず、m1,n1,n2,は行列の大きさを格納するための変数
m1 = Xの行数,n1 = Xの列数 = Yの行数(もし違ってたら行列積の計算ができない),n2 = Yの列数
i,j,h,はFor next のためのカウンターの変数
tmpは各要素の計算結果を一時的に格納する変数
Z()は最終的な計算結果を格納する配列変数
UBound(X,1)はX(a,b)のaの個数の上限を求めるもので
UBound(X,2)はX(a,b)のbの個数の上限を求めるもの
UBound(Y,2)も同様にY(a,b)のbの上限になる

行列の大きさが分かったので
結果を入れるZ()をRedimでm1行、n2列に再定義して
m1,n2,n1,の順にネストしてループをまわす。
一番内側のhのループ内でX()i行目の各列とY()j列目の各行との要素の積を一個ずつtmpに合算していくと、
Z(i,j)の要素が求まるのでZ()に代入
これをその外側の2つのループでi,jを変えながら繰り返すとZ()の全要素について求まる。
最終的にZ()をMProd()に代入して処理完了

562 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 16:15:52.66 ]
>>2 ★2 ★3 ★4

563 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 16:21:30.23 ]
>>552
> a(1,1)の部分には1が入り、a(2,2)の部分には2,また上の例には
> 対応していませんが、a(1,2)には3や4などといった数字が入り…といった感じです。

どうしてそうなると考えたのか?

564 名前:デフォルトの名無しさん [2012/01/02(月) 16:35:00.75 ]
>>563
確かに行列積の計算方法そのものはわかってるとすると>>552が理解できれば>>501も理解できるのかもね。

565 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 17:49:32.42 ]
VBA以外触ったこと無いから分からないのですがクラスとはどういう時に使うものですか?

566 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 18:50:19.08 ]
中二病の発作を起こした時に作ってみるもの。
クラスにするまでも無かったと我に返ってコードを投げ捨てることも多い。

567 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 19:28:21.82 ]
XMLHttpRequestを使ってページの差分取得をしようと思ったのですが

Set XMLhttp = CreateObject("MSXML2.XMLHTTP")
XMLhttp.Open "GET", URL, Flase
XMLhttp.SetRequestHeader "If-Modified-Since", LastTime 'LastTimeにLast-Modified格納している
XMLhttp.SetRequestHeader "Accept-Language", "ja"
XMLhttp.SetRequestHeader "Accept-Encoding", "gzip"
XMLhttp.SetRequestHeader "Connection", "close"
http.Send

これでResponseBodyを見たところ全てのデータが含まれていました
上記のコードは正しくヘッダーがセットされていますか?

568 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 19:29:07.19 ]
最終行のhttp.SendはXMLhttp.Sendの間違いです

569 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 19:53:32.95 ]
もはやExcelと何の関係もないな…

570 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 20:11:48.40 ]
>>567
スレチ

If-Modified-Sinceは差分取得するもんじゃない
指定したLastTime以降更新されてなければ "304 Not Modified"が返る

と言う事で ここでは これ以上聞いてもスルーする



571 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 20:38:19.33 ]
>>567の件はぜんぜん分からないからスレチでなくとも俺は答えられないけど、
ちょっと便乗で質問。
ExcelのVBAでWebブラウザ制御するのって自動巡回扱いになるの?
この前仕事で某官庁のHPから統計データを引っ張るためにマクロ組んだら
上司にそれは自動巡回だからやっちゃだめって怒られた
(某官庁のHPには自動巡回ソフトの使用はご遠慮くださいって書いてあった)

IEをCreateObjectしてURLを自動的に生成(対象データの年度の部分を動的に変えるだけ)
して
表示されたらExecWBでSelectAll、Copy、して
クリップボードから.PasteSpecial でワークシートに貼り付けただけなんだけど、
そういうのも自動巡回ソフトに当たるんだろうか?
こんなの手作業をマクロに書き換えただけじゃんねぇ?

572 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 20:48:30.88 ]
手動じゃないなら自動でしょ

573 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 20:53:04.69 ]
>>572
いや、そういう意味じゃなくて自動巡回ソフトってサーバーに負担かけるからだめなんでしょ?
手作業でできることをマクロ化したところでサーバーにかかる負担なんて変わらないよねってこと
(一応、念のために適当にウェイトかまして速くならないようにはしてた。)

574 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 21:07:27.85 ]
わからんでもないが、それは配慮。
遠慮してくれってんだから、だめでしょ、やっぱり。

575 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 21:19:46.08 ]
手作業をマクロ化って自動化そのものじゃんねぇ?

576 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 21:26:20.81 ]
ねぇねぇ、思いつきだけど言って良い?




自動ポルノ。

577 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 21:35:58.88 ]
>>573
そう思うのならその某官庁とやらに説明して許可もらえばいいじゃん
そうでもしないと上司を納得させられないんじゃないの?

こんな所でグダグダ言ってても意味ないよ
スレ違いどころの話じゃないし

578 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 21:45:23.60 ]
うーん、結局釈然としないのは、
自動巡回ってもっと高度なことやってるもんなんじゃないか
っていう疑問が残るからなんだよね。

グーグルとかヤフーのクローラって(Robot.txtで排除できるらしいけど)
もっと直接HTMLのソースとか解析して根こそぎ情報取得するんでしょ?

そういうのがここでいう「自動巡回」なんじゃないかっていう気がしてるんですよ。
こちとらそんな高度なことできないから
普通にブラウザ開いて表示したページをコピペしてただけですから。

まぁ、上司に禁止されたからもうそのマクロは使えないんですけど、
もう少し上記の件に関する技術的なことを教えてもらえたら
って思って質問したんです。
(そういう方向の話になるとスレチっぽいんで答えてもらえないかもしれないけど)




579 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 21:54:59.88 ]
スレチっぽいって?
>>2読んでね

580 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 22:51:45.08 ]
>>578
LibraHackの件みたいな事もあるからね



581 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 23:00:52.70 ]
Static変数ってStatic変数を使う全てのプロシージャで宣言する必要ある?

582 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 23:03:58.52 ]
試せよ

583 名前:581 mailto:sage [2012/01/02(月) 23:09:41.91 ]
>>582
おまえのVBA力を試してるんだよ。

584 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 23:11:39.79 ]
VBA力とか言ってる時点で自分が格下なのに気付けよ

585 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 23:14:46.33 ]
>>584
だからおまえはみんなに嫌われるんだよ

586 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 23:16:18.47 ]
関係ない話で誤魔化さないでください
わかりもしない、答える気もない屑が掲示板を荒らすのは本当に不愉快です

587 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 23:38:34.73 ]
Publicを使わないでユーザーモジュール標準モジュールからアクセスでき
モジュールが終了しても記憶しておく変数を宣言することは可能ですか?
セルを使用する以外でお願いします

588 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 23:44:08.08 ]
public使えよ

589 名前:587 mailto:sage [2012/01/02(月) 23:51:54.46 ]
Publicを使わないでと言っておるんだよ

590 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 23:57:06.02 ]
>>560、561
大変ありがとうございます。理解できました。
しかし、したの例のように試してみると、たとえばz(1,1)の部分に
数字を入れることができなかったです。。。

Sub test()
Dim z() As Double
z(1, 1) = 1
Cells(1, 2).Value = z(1, 1)
End Sub





591 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 23:58:00.87 ]
>>589
どうせ別人だろうけど
temp.txtとか作ってそこに値いれとけばいいんじゃね

592 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 23:59:44.13 ]
>>587
Textファイルに書き出せばセルもパブリック変数も使わないで済む

こういう頓知解答がNGなら不可能

593 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 23:59:48.64 ]
ホント酷いな

594 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 00:13:55.85 ]
>>590

Z()を宣言しただけじゃZが2次元配列とは限らないから
Z(1,1)に値は入れられない。

はじめから
Dim Z(1,1) As Double
みたいに2次元配列で宣言するか
Redim Z(1,1)で配列の再宣言するかしなきゃ駄目
(あとはVariantで宣言する方法なんてのもあるけど割愛する)

とにかくこういうのは基本的な事なんで、
ここで聞く前にまず自分で調べるべき話。


595 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 00:19:40.84 ]
自分で調べるようになって欲しいと思ってるならそこまで甘やかすなよ

596 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 01:37:06.79 ]
>>587
Static変数をプロシジャの引数として参照渡しする。
変数クラスを定義してそのインスタンスを参照渡しする。

矢切の渡し。

597 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 01:38:59.07 ]
あ。。( ̄▽ ̄;)。

まちごた。
忘れてくれ。

598 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 02:54:00.11 ]
だからクラスってなんだよ

599 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 10:12:58.79 ]
>>598
>>566

簡単に言うと、必要なければ使ってはいけないものだ。

600 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 11:04:24.57 ]
>>590
www.eurus.dti.ne.jp/yoneyama/Excel/vba/vba_array.html



601 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 11:34:21.90 ]
>>587
セルに保存とかわらんが、BuiltinDocumentPropertiesとかUserFormのTagはときどき利用する。

602 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 14:04:34.56 ]
フォームモジュールにはあまり処理を書かない方がいいですか?
引用しようと思っても呼び出せないので

603 名前:デフォルトの名無しさん mailto:NG 試せ [2012/01/03(火) 14:17:23.88 ]
他モジュールのSubを呼び出すのに、
Call Module2.TestProcess
のようにモジュール名をつけないとダメですか?

604 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 14:24:11.79 ]
みなさんのVBA力はその程度ですか?

605 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 14:25:29.47 ]
見ず知らずの人に無償で提供できる範囲はこの程度

606 名前:デフォルトの名無しさん [2012/01/03(火) 14:42:14.27 ]
>>604
おまえのレス力は最低レベルだ。「レス力検定」でレス力を磨きなさい。

607 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 15:41:39.69 ]
わかりもしない、答える気もない屑は黙っていてください

608 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 16:01:25.32 ]
ここは、質問するのが自由なら
答えるのも自由だし、横やり入れるのも自由、そういう場ですよ

そういう場に自ら来ておいて、「回答以外はするな」はお門違い
ボウヤ、何勘違いしちゃってるの?ってな感じだ

横やりが嫌なら横やり禁止のとこ行け

609 名前:デフォルトの名無しさん [2012/01/03(火) 16:06:39.58 ]
ここは、横やり入れるのも自由なら
縦やり入れるのも自由だし、「回答以外はするな」も自由、そういう場ですよ

そういう場に自ら来ておいて、>>608の書き込みはお門違い

610 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 16:31:29.29 ]
オマエモナー



611 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 16:55:54.97 ]
悔し紛れにオウム返しするも、的を射て無くて完全に負け犬の遠吠え状態w

612 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 16:57:00.48 ]
答える能力のない自分を顧みずに上から目線ですか
哀れな屑ですね

613 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 17:03:53.01 ]
遠吠え谺す

614 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 17:23:29.76 ]
ユウナレスカ検定一級ですがなにか

615 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 18:29:34.79 ]
ねえマジで
この程度の質問にも答えられないの?
大した事ないっていうか…お前ら…
好きなエクセルでもこんなレベルって
きっと他の分野じゃ本当に無能なんだろうな

616 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 18:46:20.35 ]
>>615
あんた質問書いてないじゃん
書いてない質問にどう答えろと?

617 名前:デフォルトの名無しさん [2012/01/03(火) 20:12:26.74 ]
Sub sample()

Dim a, i As Double

a = Cells(2, 3).Value
For i = 1 To a
Cells(i, 1).Value = i
Nexti

End Sub

上記のように、マクロを使用せずに、シート1のセル(2,3)の部分に数字を
入れれば、自動的に、(1,1),(2,1),(3,1)の部分に1,2,3といったように
表示させたく上のコードを作りました。
しかし、なぜかエラーとして
subあるいはfunctionが定義されていません。
と出ました。
どうすればよいのでしょうか?
またfunction関数を作る場合は、module以外のシートに作る必要があるのでしょうか?


何卒よろしくお願いします。

618 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 20:23:11.61 ]
×Nexti
○Next i

619 名前:デフォルトの名無しさん [2012/01/03(火) 20:29:03.06 ]
早急なご返事大変ありがとうございます。
できました。
しかし、これは再生ボタンを押さないと表示されないです…
自動的に数字が変わる方法はご存じでしょうか?
よろしくお願いします。

620 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 20:36:32.52 ]
セルが変更された場合のイベントを補足して処理する
Worksheet_Change
とかで検索



621 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 20:57:23.13 ]
できました。本当にありがとうございました。失礼します。

622 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 21:51:20.18 ]
>>617
これはOption Explicitを指定しないせいで
Nextiが変数として処理されたために起きたトラブルだから、
モジュールの先頭にOption Explicit を書いておけば
Nextiと書いた部分がエラーになってその時点でトラブルが防げた。
OptionExplicitを書く癖をつけといたほうが良いと思う。

あと、変数iをDouble型で宣言している意味が分からない。
整数しか入れないならLongやIntegerで宣言しとけば良いと思うし、
さらにいうと変数aはVariantで宣言してるんだから
それならiもVariantで良いんじゃないかとも思う。
もしかして宣言の仕方自体が分かってないのかもしれないから補足しておくと、

Dim a,i As Double

と書くと、a は Variant型、i は Double型で宣言される。
両方ともDouble型で宣言するなら

Dim a As Double,i As Double

と書かなきゃ駄目だし、そんなこと書くぐらいなら

Dim a,i

で両方ともVariant型にしちゃっても良かったと思う。


623 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 21:59:05.03 ]
ハリキッテルネ!

624 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 22:00:21.24 ]
オマエモネ!

625 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 22:11:50.50 ]
ソクレス・・・スレカンシゴクロウサマデス!

626 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 22:14:06.89 ]
いや、たまたま新着レスがあったから
適当に書き込んだだけなんだけどw

627 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 22:54:22.81 ]
>>622
詳しいアドバイスありがとうございます。
ところで、さらに質問が出てきました。まったくべつのものですが、、、

Sub test1()
Dim x(100, 100) As Integer
a = 0
For i = 1 To 20
For n = 1 To 20
a = a + 2
Cells(i + 4, n + 4).Value = a
Next n
Next i

a = UBound(x, 1)
Cells(2, 2).Value = a

End Sub

ためしに、UBound(x,1)が100なのか、それとも数字が入っている20行までなのか
試してみたのですが、結局上記の場合、UBound(x,1)=100でした。。。

数字が入っているところまで20とすることは可能なのでしょうか?


628 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 23:06:28.37 ]
その例では、20はリテラル値なんだから
a = UBound(x, 1)

a = 20
にすれば良いだけじゃん

20の部分が変数になったとしても、同じく
a = 変数
で事足りる

固定のリテラル値にしろ変数にしろ、前段階の処理でどこまで数字を
入れたかが解ってるんだから、配列から取得する必要など何も無い

629 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 23:36:02.44 ]
>>616
そこに気づいたか
だがもう一歩だ

630 名前:622 mailto:sage [2012/01/03(火) 23:43:36.86 ]
>>627
>ためしに、UBound(x,1)が100なのか、それとも数字が入っている20行までなのか
>試してみたのですが、結局上記の場合、UBound(x,1)=100でした。。。
>
>数字が入っているところまで20とすることは可能なのでしょうか?


申し訳ないんだけど質問の意図がまったく分からない。

UBound(X,1)はXという配列変数の1次元目の上限を求めているわけで
変数の宣言時にX(100,100)と宣言してるのだから
(その後Redimで大きさを変更したりしない限り)
その時点で100になるのは当然のこと。

そして、ForNextのネストの中でCellに値を代入しているけど
そこでもX()はまったく出てきてないんだから
UBound(X,1)が100から変化すると貴方が考えた理由が分からない。

んで、

>数字が入っているところまで20とすることは可能なのでしょうか?

というのも何の事だかさっぱり意味が分からない。
できたらもう一度、意味が通じるように質問しなおしてほしい。



631 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 23:46:56.36 ]
ありがとうございます。
今、行列の計算のプログラムを作っています。
www.fastpic.jp/images/023/1362403442.bmp
しかしながら、上記のように正しい計算結果を得ることができません。
コードは以下のようになっています。大変わかりにくくてすみません。
Sub 行列掛け算()
Dim z(100, 100) As Double
Dim x(100, 100) As Double
Dim y(100, 100) As Double
Dim s As Double


'aの行列
For i = 16 To 19
For j = 4 To 6

'xの要素に、入れていく(1から)
For n = 1 To 4
For nn = 1 To 3
x(n, nn) = Cells(i, j).Value
Next nn
Next n

Next j
Next i


632 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 23:47:48.94 ]
'bの行列
For i1 = 16 To 18
For j1 = 8 To 12
'yの要素に、入れていく(1から)
For n1 = 1 To 3
For nn1 = 1 To 5
y(n1, nn1) = Cells(i1, j1).Value
Next nn1
Next n1
Next j1
Next i1

'逆行列の計算
For i2 = 1 To 4
For j2 = 1 To 5
s = 0
For k2 = 1 To 3
s = s + x(i2, k2) * y(k2, j2)
Next k2
z(i2, j2) = s
Cells(i2 + 21, j2 + 4).Value = z(i2, j2)
Next j2
Next i2
End Sub
書き込めなかったので2つに分けて書き込みます。
何卒よろしくお願いします。

633 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 23:52:11.31 ]
>>630
すみません。もう一度理由を述べます。
なぜxboundで100ではなく20がほしかったのかというと、
自分が今から作ろうとするFEM法を使った方法でやると、
行列の数が40行くらいになってしまう可能性があるからです。
しかもその行列の数は、節点数によって変わってくるため(この辺は専門的ですみません;)
行列の数が予測できないため、最初にx(100,100)と置きました。
さすがに、100行列まではいかないだろうということで、です。

今回は試しに、20行列を作ってみたので、ひょっとすれば
xboundで20が出るのかな(つまり数字が入っているところまで)
と思いましたが駄目でした。



634 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 00:07:00.57 ]
当たり前だろ

635 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 00:08:52.43 ]
>>633
それは無理。
行列の数がわからないのであればRedimすればいい。

636 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 00:16:13.38 ]
>>633
あなたは>>501


637 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 00:18:21.02 ]
>>633
x(n, nn) に期待通り取り込まれているのは確認できているか

638 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 00:19:00.82 ]
もはや"xbound"とか勝手な事書いてるけど、
"UBound"ってのはあくまでも配列の上限を返す関数であって
その配列の中でどこまで実際に値が入ってるかを調べるものじゃないから
そういう使い方は出来ない。

っつーか貴方、ここ最近行列云々で質問続けてる人だったのね?
VBAのこと事前に学習してないでしょ?

試行錯誤は決して悪いことじゃないけど、
中途半端な知識でプログラミングして失敗するよりも
一度きちんと学習してからプログラミングしたほうが良いと思うよ。
どっち道失敗はするだろうけど、今みたいなどうでも良い間違いは減ると思う。
本を買うなりWeb上の解説サイトを読むなり、多少基礎知識つけてから出直したほうが
ゴールに早くたどり着けるはずだよ。
こっちだってこんなどうでも良いこと質問されるのも正直迷惑だし。

639 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 00:23:42.80 ]
>>637
今確認しました。期待通りではなかったです…
なぜか、yはすべての成分が121の3行5列で、
xはすべての成分が20の4行3列でした。


640 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 00:31:33.33 ]
>>639
For〜Nextが理解できていない



641 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 00:37:38.67 ]
すみません。。たしかにfornextの部分頭の中でやっておかしいですね。。。
もう昨日の夜の12時からまったくの不眠不休でほかの研究作業もやりながらなので
ぜんぜん思考回路が回っていません。

寝て、もう一度再プログラムしてみます。失礼しました。




642 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 00:39:14.20 ]
もうすこし自分で考えてきてから質問してね
ここの人たちだって貴重な時間を割いてアドバイスしてくれてるのよ


643 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 09:05:14.29 ]
答えたくて答えてるだけだろ
思いっきりスレチだから
答えてる方も荒らしだから

644 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 10:18:47.09 ]
Range("A100").Formula = "=countif(A1:A80,""<=2"")"
<=2の部分をA90の値にしたいのですがどう書けばいいんでしょうか

645 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 10:34:11.32 ]
"=countif(A1:A80,""" & Range("A90").Value & """)"


646 名前:644 mailto:sage [2012/01/04(水) 10:41:57.67 ]
ありがとうございます!

647 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 10:44:32.37 ]
おはようございます。>>642、643 まことに大変申し訳ございません。。。
最後の質問です。この分野さえ終わることができれば終了です…
以下の行列の逆行列を求めようとしましたができませんでした。。

1 2 2
1 1 5
1 2 1


答えが 
-9 2 8
4 -1 -3
1 0 -1
ですが、
0 0 0
1 0 0
1 2 0

になってしまいました;


648 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 10:45:33.63 ]
コードは以下です。
Sub 逆行列()
Dim x As Double
Dim A(100, 100) As Double
For i = 1 To 3
For j = 1 To 6
A(i, j) = Cells(i, j).Value

'ちゃんと数字が入っているか確認
Cells(i + 5, j).Value = A(i, j)
'確認OK
Next j
Next i
'逆行列計算
For k = 1 To 3
x = A(k, k)
For j = k To 6
A(k, j) = A(k, j) / x
Next j
For i = 1 To 3
If i = k Then
x = A(i, k)
For j = k To 6
A(i, j) = A(i, j) - x * A(k, j)
Next j
End If
Next i
Next k



649 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 10:47:50.04 ]
'ここでAをセルに代入
For i = 6 To 8
For j = 6 To 8
Cells(i + 10, j + 1).Value = A(i - 5, j - 5)
Next j
Next i

End Sub


www.econ.nagoya-cu.ac.jp/~kamiyama/siryou/minv.html
このページを参考にしました

650 名前:デフォルトの名無しさん [2012/01/04(水) 12:58:01.29 ]
"=countif(A1:A80,""" & Range("A90").Value & """)"
これでセルの値を指定することができたのですが
<=を入れるとエラーになってしまいます
あとRCを使ったやり方で<=をつけるにはどうしたらいいですか?



651 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 13:30:28.28 ]
ここはVBAのスレです

VBAでの式入力方法ならまだしも
それ以前の式の作り方についてはスレ違い

652 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 14:26:11.02 ]
>>650

" で囲まれた中に " 自体を記述したいときは "" と2つ続けて書く

だから、

=countif(A1:A80,"<=2")

の前後を"で囲むと

"=countif(A1:A80,""<=2"")"

になる。

また、""で囲まれた部分は文字列だから、
& で他の文字列や文字列型変数と結合できる

つまり、 上記の式の"2"の部分をA90の値に変更したいなら、
"2"以前の部分の文字列と"2"以降の部分の文字列を作って、
Range("A90").Valueを & ではさめばよい。
(>>645は"<=2"をA90の値に置き換えてる)
ちなみに"2"以前の部分は
"=countif(A1:A80,""<="
になる。
後ろのほうは>>645とおなじだから後は自力でやって

653 名前:デフォルトの名無しさん [2012/01/04(水) 14:38:33.01 ]
普通のカッコ ( ) は、たとえば数学の計算式では
y=(-b+(b^2-4ac))/2a
のようにいくらでもネスト構造がありえるのに

なぜダブルクオーテーション " は、内部のは二つ重ねるルールにしたのですか?
欠点は、三重以上に重ねられなくなってしまってないですか?
二つ重ねるルールの利点を挙げてください。

654 名前:653 [2012/01/04(水) 14:39:41.54 ]
疑問の一つに、

=countif(A1:A80,"<=2")
の前後を"で囲むと
"=countif(A1:A80,""<=2"")"
になるなら、

"=countif(A1:A80,""<=2"")"
の前後をさらに"で囲むとどうなるの?

655 名前:653 [2012/01/04(水) 14:40:31.63 ]
オフィス田中の人は、このダブルクオーテーションのネストについて
なにか研究成果を発表はしてないのですか?

656 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 14:54:58.92 ]
単純すぎて研究するほどのことでもあるまいに

文字列の囲い記号(開始記号と終了記号)が「"」の場合
囲い記号としてではなく文字として「"」を表したくても
途中に"を入れるとそれが「文字 "」なのか「囲い終了記号」なのか判別できない

そこで、囲い開始記号以降の「"」は、1つなら「囲い終了記号」、
2つなら「文字 "」として扱うというルールにしただけのこと

この単純なルールだけで
> 三重以上に重ねられなくなってしまってないですか?
なんて欠点も無く、どんなものでも表現できる

657 名前:デフォルトの名無しさん [2012/01/04(水) 14:59:18.98 ]
できましたw
自力では無理だったと思うので助かりました
"=countif(A1:A80,"">=" & Range("A90").Value & """)"

658 名前:デフォルトの名無しさん [2012/01/04(水) 15:09:23.33 ]
redim kmax(100,100,100) as double
redim k(100,100) as double


for zzz=1 to 5
for z1=1 to 100

for z2=1 to 100
kmax(z1, z2, zzz) = k(z1, z2)
next z2
next z1

next zzz
とすると、kmaxの(z1,z2)の部分にはちゃんと、kの(z1,z2)は入るのでしょうか?


659 名前:デフォルトの名無しさん [2012/01/04(水) 15:14:55.75 ]
>にはちゃんと、kの(z1,z2)は入るのでしょうか?


自分で試せよ w

660 名前:デフォルトの名無しさん [2012/01/04(水) 15:20:51.45 ]
>>656
なるほど、あなた超頭いいですね。
こういう"の用法をたとえば本で書くときに
>>656の説明までちゃんと書いてくれてる本の作者こそ
物を書くセンスがあるといえる。
いままで"の由来について書かれたものは見たことがなかった。
>>656さんは自分でこの考えを発見したの?

そうすると、先の
「"=countif(A1:A80,""<=2"")" の前後をさらに"で囲むとどうなるの?」
の回答は、こうなるね。↓

"""=countif(A1:A80,""""<=2"""")"""



661 名前:デフォルトの名無しさん [2012/01/04(水) 15:21:30.46 ]
ここで皆に宿題だが
「"""=countif(A1:A80,""""<=2"""")"""」をさらに"で書くと、どうなるかね?

662 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 15:30:48.26 ]
>>660
俺は

VB言語では文字リテラルの囲いは「"〜"」
VB言語では「文字 "」のエスケープシーケンスは「"」

という説明を本で読んで、それをちょっと詳しく解説しただけで
このルールを発案した人じゃないから、べつにそう大げさに褒められるほどのものじゃないが

663 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 16:17:05.03 ]
早く 冬休み終わらないかなーー
スレチ話しがウザイ

664 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 16:28:28.39 ]
ちょっとしたスレチ話にムキになって突っかかっていくような幼稚な奴も
冬休みが終れば消えますかね?

665 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 16:31:25.24 ]
残念、永遠に冬休みでした

666 名前:デフォルトの名無しさん [2012/01/04(水) 16:49:58.19 ]
スレチを指摘する人はいるけど
適切なスレに誘導する人はあまりいないね。
そのほうがウザイスレチ話が減って有益だと思うんだけどな。

スレチ話ですまん。


667 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 17:32:31.98 ]
ここ以外でVBAを扱ってるスレはないからね

668 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 17:48:08.95 ]
そうでもないけどね

669 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 18:32:42.17 ]
>>647 をお願いします。。。

670 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 19:20:53.96 ]
>>669
これが最後ね

Sub 逆行列2()
Dim A
Dim x As Double
Dim z
Dim i As Long, j As Long, k As Long

A = Range("a1").Resize(3, 6)

For k = 1 To 3
x = A(k, k)
For j = k To 6
A(k, j) = A(k, j) / x
Next j
For i = 1 To 3
If i <> k Then
x = A(i, k)
For j = k To 6
A(i, j) = A(i, j) - x * A(k, j)
Next j
End If
Next i
Next k

Range("a10").Resize(3, 6) = A

End Sub



671 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 20:33:36.18 ]
>>670
もう来るなよ

672 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 21:57:59.60 ]
>>671
>>669に言えよ w

673 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:36:33.96 ]
間違ってはいない

674 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:38:23.54 ]
そう言えば、前スレで話題になったサンプルコレクションの本、第3版出たのね。

パラパラ見たけど、印刷文字薄くて見にくくなってた。でも、2010での動作可否が載ってるのはいいなと思た。

参考までに…


675 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 14:07:22.28 ]
Dこーてーしょんは、ユーザー自作メニューを汎用コードで作る時に地獄をみるのだ

676 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 22:22:32.41 ]
ボタンとかラベルとか動的に作成するとこはできますか?
出来る場合、動的に作成した物へのアクセスはどうすれば良いですか?

677 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 23:04:23.48 ]
私の辞書に調べるという文字はない

678 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 23:19:10.07 ]
>>676
VBAは知らんが、普通のOOPなら、できて当然だな
ボタンなりラベルなりのオブジェクトを作ってビューに配置
してやればいいだけだもんな
アクセスも自分で作ったオブジェクトだからわかるし

679 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 00:03:31.02 ]
>>676
たとえばボタンを作成して制御するなら
Dim button1 As Object
Set button1 = ActiveSheet.Buttons.Add(200, 200, 100, 25) ' left, top, width, height
button1.OnAction = "Macro2"

既存のボタンにアクセスするなら
Dim button1 As Object
Set button1 = ActiveSheet.Buttons(ボタンのインデックス)

たぶん

680 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 00:03:40.27 ]
VBA知らん奴が何しに来たの?ん?質問かい?



681 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 00:12:11.56 ]
VBA(VBも?)の場合、オブジェクト変数に代入する場合、
変数名の前にSetをつけなければならない理由はなんなのでしょうか?

そういう言語仕様だからというだけでしょうか?
それとも、同じオブジェクト変数に代入する場合でも、Setを伴う場合と
伴わない場合の2ケースあるのでしょうか?

682 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 00:49:42.22 ]
引数が9つある関数って他人が見たらどう思う?

683 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 00:59:14.44 ]
それなりの理由があれば問題無いな。
Excelのメソッドも、省略可能とはいえ引数がやたら多いのが結構あるし。

684 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 01:05:06.22 ]
>>681
もともと初期の vb にはオブジェクトの概念がなく、後付けでオブジェクトを導入したとき、
既存仕様を維持してオブジェクトをサポートするために、特別な Set キーワードを導入した
とかそんな話だった気がする

Dim a
Dim b
Set a = Range("b2")
b = Range("b2")

変数 a には Range オブジェクトが格納される
変数 b には Range オブジェクトのデフォルトプロパティが格納される

685 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 01:16:11.71 ]
>>684
変数にオブジェクトは格納されないよ〜

686 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 01:16:15.37 ]
>>684
なるほど、SetありもSetなしも文法上は許容されるのですね
であれば、Setキーワードの意味はありますね

この例でいうと、デフォルトプロパティは何を指しているのでしょうか?

687 名前:684 mailto:sage [2012/01/06(金) 01:55:17.69 ]
>>685
すみません、オブジェクトの参照ですね

>>686
厳密にはかなり面倒で、
Range には _Default という隠しプロパティがあってそれがデフォルトプロパティになるらしい
_Default には引数(RowIndex, ColumnIndex)を与えることができて、
引数ありだと Item(引数)の評価結果、引数なしの場合は Value の評価結果を返すらしい

まあ、通常は Value と覚えておけばよいかと

688 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 02:27:20.28 ]
Setは参照の代入だが、Setは省略できないぞ
Letっていう値を代入する命令があって、これは省略できる(というか書いてる事がほとんどない)
文法的には省略されてるのはLet

689 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 02:30:27.74 ]
>>688
つまり、>>684

Dim a
Dim b
Set a = Range("b2")
b = Range("b2")

のb = 〜の行は、

Let b = Range("b2")

と解釈されて、そのとき代入されるのが_Defaultプロパティということ?


690 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 03:07:22.43 ]
>>689
うん



691 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 03:11:34.65 ]
Letなんてキーワード見たの何年ぶりだろ
昔の教科書には必ず書いてあったけど最近の入門書は最初からスルーしてるよな

試してみたらこれはエラーになった

Let a = Range("A1")._Default

692 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 07:21:26.80 ]
>>691
Let a = Range("A1").[_Default]

693 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 07:30:27.21 ]
LETとかN-BASICですら使ったことがないなw

694 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 09:57:24.70 ]
やたら丁寧なコードを書くやつがよくLet使ってたな。
長く書くのが趣味だったんだな。

695 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 19:40:30.41 ]
>>681
>>457じゃないよね?

696 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 20:07:54.28 ]
凄くどうでもいいです……

697 名前:681!=467 mailto:sage [2012/01/06(金) 22:35:09.33 ]
>>695
ちがいます

698 名前:681!=457 mailto:sage [2012/01/06(金) 22:35:30.94 ]
>>697
あミスったw

699 名前:681!=457 mailto:sage [2012/01/06(金) 22:36:55.85 ]
>>690
どうもありがとうございました。
了解しましたm(_ _)m

700 名前:デフォルトの名無しさん [2012/01/07(土) 02:53:29.64 ]
質問です。
beebee2see.appspot.com/i/azuYl9K_BQw.jpg
このように、選択してある[C]の列だけを別の場所(あらかじめ決めているCという枠)へ移したい場合はどうすればいいのでしょうか?
コピーは出来なかったのです。



701 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 07:40:10.04 ]
Areasプロパティ

702 名前:デフォルトの名無しさん [2012/01/07(土) 09:12:33.09 ]
>>700

質問の仕方が悪いと思うよ

Excelで単純に"C"と書いたら、通常はシート左端から3列目の"C列"のことだと思われる。
貴方が貼った画像だと"A列"に"C"と書いてある"2","3","4","9"の"行"が選択されてる。
コピーしたいのは選択範囲の"すべての行"なのか、それとも選択範囲の"C列"なのか、
どっちか分からない。


703 名前:デフォルトの名無しさん [2012/01/07(土) 09:50:23.96 ]
>>700
ふつうにA列をフィルタして
抽出されたセルたちを「切り取り」して
他所に「貼り付け」してOKと思ったけど、

うまくできないね。
「切り取り」して「貼り付け」だと、フィルタで隠れた行まで移動してしまう。
「コピー」して「貼り付け」だと、フィルタしたものだけがコピーされるのに。

自分もこんな発見をして勉強になったよ。
力にはなれなかったけど、うまくいく方法が見つかるといいね。

704 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 09:51:31.30 ]
>>702
すいませんでした。
2.3.4.9の選択されている行です。

705 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 12:53:42.20 ]
22 名前:名無し募集中。。。[] 投稿日:2012/01/06(金) 23:40:34.39 0
AKB=金正恩

この意味わかるか
AKBという捏造ブームの裏に何があるか見えるか?




706 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 12:56:07.04 ]
>>700
選択範囲は Application.Selection で取得できるけど、
選択範囲が複数になる場合、Application.Selection.Areas に各選択範囲(Rangeオブジェクト)のコレクションが格納される

面倒だけど、最初に Areas の値を保存しておいて、ループ処理で各 Range 毎に処理するとかになるんじゃないかなあ

707 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 13:16:59.99 ]
>>700
とりあえず手動で今の状態からコピーしたいなら複数行の選択じゃなくセル範囲の選択でコピーしたら
貼り付け先には飛ばした行を詰めて貼り付けできるけど。


708 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 15:02:44.54 ]
>>700
関数使いたいなら作業列使えば可能

作業列1 =IF($J$2=A2,COUNTIF($A$2:A2,A2),"")
作業列2 1から連番
作業列3 =MATCH(G2,$E$2:$E$28,0)
L列 =IFERROR(INDEX($B$2:$B$28,H2),"")
M列 =IFERROR(INDEX($C$2:$C$28,H2),"")

ozcircle.net/_uploader/69930900

常にデータが増える表ならVBAの方が楽だけどそうでもないなら関数の方が早い。

709 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 15:28:48.21 ]
>>704
やっぱりよく分からない
複数選択範囲(行単位)の移動(カット&ペースト)が行いたいが、通常では複数選択範囲のカットができない、というだけ話なら
移動先を ActiveSheet.Range("100:100") と仮定した場合、

Application.Selection.Copy(ActiveSheet.Range("100:100"))
Application.Selection.Delete()

のようにコピー+削除でいけると思うけど、そういう話ではないの?

710 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 18:08:58.21 ]
>>703.>>706->>709
レスありがとうございます!
>>700の者です!
初心者かつ、語彙力がなく、説明不足ですいません。
わからなかった言葉もぐぐってみます!

>>709さんの回答が一番近いと思うのですが、
私はカットではなく、[A.B.C]とグループ分けをしたうちの[C]だけを別のページをコピーペーストしたいです。

簡単にいうと、複数選択のコピーの方法が知りたいです。

beebee2see.appspot.com/i/azuY3Iu-BQw.jpg

この画面でいうと、3.5.6.7.12.15行目をコピーしたいです。
右クリックでコピーを選択すると
beebee2see.appspot.com/i/azuYvILBBQw.jpg
このような画面が出ます。

一つ一つ貼っていくには膨大な量なので時間が足りません。

皆さんが教えて下さった数式(?)関数(?)を今から試してみようと思います!
それらが出来たらまたここに来て見ます。

何度もすいません、もう少しお付き合い下さい…
ありがとうございます。




711 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 18:43:31.57 ]
>>710
>>709の例は複数選択可能で、2行目のDeleteしなければただのコピー
現在のシートの選択行(複数選択あり)をたとえば シート(Sheet3)の10行目にコピーしたいなら

Application.Selection.Copy (ActiveWorkbook.Worksheets("Sheet3").Range("10:10"))

みたいなマクロだけでいけると思うけど

712 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 18:57:02.57 ]
>>710
> この画面でいうと、3.5.6.7.12.15行目をコピーしたいです。
> 右クリックでコピーを選択すると
> beebee2see.appspot.com/i/azuYvILBBQw.jpg
> このような画面が出ます。
>

たぶん行の選択の仕方が間違っている
ちゃんと選択すれば、そんな警告はでないしコピーできる


713 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 19:03:54.59 ]
>>712
ああ、行を選択してコピーしたあと、セルを選択して貼り付けようとするとその警告ですね。
貼り付ける時も行を選択して貼り付けたら警告でないです。

ていうか>>710は手動で選択してますよね。膨大な量というなら行を選択してる時点ですでに
間違いだとおもう。
オートフィルタ後コピペかABC列を昇順・降順並べ替え後にコピペが普通だとおもう。

714 名前:デフォルトの名無しさん [2012/01/07(土) 19:07:31.79 ]
>>710
なんか操作を間違ってないか?
複数の行を選択しているとして
右クリックから「切り取り」ならそのエラーが出るけど、
「コピー」だとエラーでないよ。
まぁ複数範囲の選択をしたときにいつでもコピーできるわけじゃなく、
たとえばA1とC3を選ぶみたいに行も列もばらばらの範囲だとコピーもできない。
Range(A1:C3)とRange(E1:G3)みたいに列が同じで行だけ飛んでる場合なんかはコピーできた。


715 名前:デフォルトの名無しさん [2012/01/07(土) 19:12:24.86 ]
>>710の訂正で
>私はカットではなく、[A.B.C]とグループ分けをしたうちの[C]だけを別のページをコピーペーストしたいです。
は、
[C]だけをコピーし
別のページにペーストしたいです。
わかりづらくてすいません。
今からレス返します。ありがとうございました。

716 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 19:14:22.35 ]
>>711
なるほど!
そのマクロ(?)をペーストしたいセルに打ち込めば出来るんでしょうか?
今してみたら何も起きませんした…

717 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 19:15:13.48 ]
>>712
選択の仕方が間違えていますか!そうかもしれません。
今は、コントロールキーを長押ししながら選択しています

718 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 19:18:12.73 ]
>>713
ありがとうございました!!!!!コピー&ペーストできました!!!!、
本当にありがとうございました!
こんな皆様の高度な知識の中基本も知らない私が頼りに頼ってしまいすいませんでした……
本当に助かりました!
ありがとうございました!!!!!

719 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 19:19:45.13 ]
複数選択の手動は大変ですがオートフィルの昇順がよくわからないので、今回は手動でいきます。
本当にありがとうございました!

720 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 19:25:26.20 ]
>>719
こっちで質問したほうがよかったね
toro.2ch.net/test/read.cgi/bsoft/1319632190/



721 名前:デフォルトの名無しさん [2012/01/07(土) 19:25:40.93 ]
>>719
オートフィルじゃなくてオートフィルタだよ
A列選択しといて ツールバーのデータ(D) -> フィルタ(F) -> オートフィルタで
A列の項目を選択してコピーできるようになる

722 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 19:28:14.13 ]
と思ったたら、もうしてた

723 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 01:33:43.29 ]
どうでもいいけどプリントスリーンってがあるよ

724 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 01:44:13.00 ]
vbaでパケットキャプチャって出来る?

725 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 07:34:05.68 ]
どっかでカーネルドライバが必要になるから、単体だと無理な気が。

726 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 09:50:28.06 ]
そうやってカーネルで遊ぶんだよ。
たしか、井上も推奨してたな。




カーネル遊び

727 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 19:15:54.10 ]
震災前

     /::::::::::::::::::::::::::::::;;::ノ ヽ;::\
    /::::::::;;;;;;;;;,,,;;...-‐''"~    ヽ:;::l
     |:::::::::::|    岡田 異音    |ミ|
     |:::::::/     ,,,  ヽ,、   '|ミ|  
     '|:::::::l    '''""   ゙゙゙゙`   |ミ|
       |:::::|.  ,,r ‐、   ,, - 、  |/
     ,/⌒|  ノ ・ _), (. ・ `つ|
     | (   "''''"    |"'''''"  | 
      ヽ,,.        ヽ    |
       |       ^-^_,, -、   |   
         |    _,, --‐''~    ) |  マニフェストもう守れない。どうしよう・・・・ 
         'ヽ  (   ,r''''''‐-‐′ / 


震災後

     |:::::::::/            |ミ|
     |::::::::|   ,,,,,    ,,,,,   |ミ|
     |彡|.  '''"""''   ''"""'' |/
     /⌒|  -=・=‐,   =・=-  |
     | (    "''''"   | "''''"  |  
     .ヽ,,         ヽ    .|  キリッ
        |       ^-^    |
   .     |     ‐-===-   |   大震災が起こったのだからマニフェストの破綻も致し方ありません
         ,\.    "'''''''"   / 
朝鮮民主党
     おわり

728 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 01:54:46.47 ]
ビジネスsoft板でVBAのスレ探してたんだけど、なかった。
プログラマ板だったのね。VBAやれる人はプログラマでいいんだ。
HTMLとCSSはできてもプログラマじゃないって言われたことあるけど。


729 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 02:55:30.12 ]
VBAやれる人がプログラマと呼べるとは限らない。
プログラマが触る対象がたまたまVBAだったならマ版にスレが立つだけで。

730 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 08:00:22.21 ]
ちょっと何いってっかわかんないっすね



731 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 14:41:45.23 ]
パスワードかけるのを標準モジュールだけとかできる?

732 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 17:09:08.89 ]
あれはプロジェクト単位でしょ

733 名前:デフォルトの名無しさん [2012/01/10(火) 22:42:54.05 ]
A列の一番最後にデータが入力されている箇所を取得したい場合
下記で良いと思いますが

Range("A60000").End(xlUp).Row

上記以外の方法つまりRange("A60000")の記載がソースとして綺麗ではないので
もし他のやりかたとかあれば教えてください


734 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 22:50:42.61 ]
>>733
cells(rows.count,1).end(xlup).row

735 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 23:30:01.65 ]
皆どれくらい勉強してVBAを使いこなせるようになった?

736 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 23:36:00.15 ]
10年以上やってるけど使いこなせてるとは思えない
どこまでできれば「使いこなした」ことになるんだ?

737 名前:デフォルトの名無しさん [2012/01/10(火) 23:58:18.81 ]
VBAがある程度以上できる人の、他のPCスキル状況を知りたい。
Excel関数、Word文書づくり、Accessデータベース構造、Powerpointの効果的飾りや、
それにとどまらず、JAVA, JAVAScript、VisualBasic、VisualC++、
HTML、CSS、Perlや
Network、TCP/IP、Unixも完璧にマスターしたりしてる?

738 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 06:38:45.74 ]
>>735
処理重くてもなんでもいいからこれ自動化したいと思った事をそれなりにできるようになる
ぐらいなら1日1時間で3ヶ月目ぐらいには出来てた。

後からの修正がやりやすいようにクラスを使うようになったのは1年過ぎてから。

現在は、4年過ぎた今でも、ちょっと凝った事する時はネットに繋がったPCで調べれないと
ちょっと困る。
VBAでゲームとか作ってる人のレベルには永久に到達しないと自覚してる。

739 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 07:33:35.99 ]
ゲームが作れるのと、Excelの機能を活かせているかは全然別問題。
どちからというと縄張りの違いだな。
ユーザーから提供されたシートが、Excel関数活かしまくりで驚かされることも多々あるし。

740 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 12:30:34.70 ]
関数を駆使してるようじゃ素人。
Excel扱うならほとんど関数は不要。



741 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 16:52:14.30 ]
いるよな。ワークシート関数にあるの知らないで自作関数でバグ出すやつ

742 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 17:21:24.04 ]
worksheet関数のコードって知ることできない?

743 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 17:44:07.83 ]
埋め込み関数もVBAも両方使えば良いだろ。
VBAコードにするまでもない場合あるし、
VBAとハイブリッドでつこてもいいじゃろし。

744 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 18:25:16.48 ]
カレントドライブを変更する方法教えてください

Sub testdirectory()
Dim fld As String
fld = "c:\temp"

If Left(CurDir, 1) <> Left(fld, 1) Then
??????????
End If
End Sub

↑の???です。
chdirはフォルダは変更してもドライブが変更しないってあるんで、ドライブを変える方法を知りたいです


745 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 18:38:07.98 ]
chdriveは違うの?

746 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 18:58:48.97 ]
それです^^;ありがとう

747 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 19:09:25.88 ]
とあるwebサイトのHTMLテキストを取得してそれをエクセルに反映させたいのです
方法を誰かおすえて

748 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 19:20:46.34 ]
>>747
それだけだと何とも言えん
Webクエリでも使っとけ

749 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 19:43:29.63 ]
>>748
ソースを取得したいのです

750 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 19:47:40.97 ]
>>749
>>261-264あたり




751 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 19:48:51.00 ]
>>749
そーっすか。

752 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 19:58:51.34 ]
>>534
これ分かる方いませんか?
ツリービューを使っていますが
イメージリストコントロールver6
ツリービューコントロールver6
両方チェックいれています
ちなみにソースコード内全て検索しましたがRangeは使っていません

753 名前:752 mailto:sage [2012/01/11(水) 20:03:21.58 ]
頭冷やしたら解決しました

754 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 20:11:29.98 ]
functionである範囲を入力としてとる関数を作っています。
その範囲内の単一のセルが書き換わったとき、そのセル位置を取得方法を教えてください。
2003です。

755 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 20:27:21.73 ]
文章がよくわからんがWorksheet_Changeイベント使ったらどうですか

756 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 20:45:34.14 ]
Dim K-ON! As Nyan

757 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 22:09:24.89 ]
As Nyan が言いたいだけなんじゃないかと

758 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 22:14:26.15 ]
Dim Anal As Hole

759 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 22:30:25.15 ]
>>755
sum関数みたいな範囲指定なんですが、
変更した数値に対して処理を付加したいんです。
直前のセルの値をstaticで保持しておいてもいいのですが、
全数を比較処理して、変更箇所を見つけるプロセスは処理コストかかるので、
簡単にできないかと。



760 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 00:11:10.87 ]
>>759
Worksheet_Change



761 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 08:57:38.12 ]
>>759
ユーザー定義関数?
だとしたらそのアプローチが間違ってるよ
処理を付加とかわかんないから詳しく

762 名前:デフォルトの名無しさん [2012/01/12(木) 16:11:18.52 ]


2chやニコニコ動画に民主党から反日工作費が流れていることが知られるようになってきた。
民主党が用意した資金で工作員が2chを荒らしていることもだんだんと知られるようになってきた


763 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 19:56:33.69 ]
>>759
あいかわららず何がしたいか全然わからいけど例えばこんなこと?

B1に下記のように式が入力してあって
=SUMもどき関数(A1:A2)

直前の操作(変更)がA1かA2なのかによって
B1に表示される結果を変えたいということかな。
だったら無理だと思う。



764 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 02:56:51.89 ]
スレ違いなら誘導していただけるとありがたいです。

環境の都合上、vbaで作らなければいけないのですが、
別アプリケーションの指定したピクセルの色で判断し、
キー入力をエミュレーションしたいです。

別のアプリケーションの色の取得はどうすれば出来るでしょうか?

765 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 04:55:15.99 ]
>>763
それなら出来る。
面倒くさかったけど作ったことがある

766 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 08:31:16.77 ]
マクロ有効ブックAのvbaで別のマクロ有効ブックBを開き、ブックBはWorkbook_Openイベントで自分自身を編集します。
編集後にそのブックBを手動で別のフォルダに保存したいのですが、
『名前をつけて保存』のダイアログボックスはブックBの元の読み込みフォルダを開いてしまいます。
これを自分の好きなフォルダを開くようにマクロから設定できないでしょうか?

767 名前:766 mailto:sage [2012/01/13(金) 09:23:12.96 ]
ちなみに、ブックBのマクロ内で
ChDir "C:\"
としてもダメでした。

ChDir "C:\"
S = GetSaveAsFilename()
ThisWorkbook.SaveAs S

とかならC:を開いて保存できますが、
保存するかどうかは任意なので
できれば手動で『名前をつけて保存』を選び、
そのときに指定したフォルダでダイアログボックスを開くようにしたいのです。

768 名前:766 mailto:sage [2012/01/13(金) 09:26:35.73 ]
すみません、ちょっとミスってました
>S = GetSaveAsFilename()

>S = Application.GetSaveAsFilename()
の間違いです。

769 名前:デフォルトの名無しさん [2012/01/13(金) 12:03:05.01 ]
2000版だと
ChDir "C:\xxx"
Application.Dialogs(xlDialogsaveAs).show

もし違ったら新しいマクロの記録を使ってダイアログボックスで保存した後、記録の終了→マクロを開いて編集して下さい

770 名前:766 mailto:sage [2012/01/13(金) 12:49:53.26 ]
どうもありがとうございます
都合により、来週水曜日まで
そのマクロにさわれないので来週試します。
本当にありがとうです



771 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 21:36:08.80 ]
>>764
Win32APIで別アプリのウィンドウハンドルを取得
これでわからなかったら、正直に「できません」と言ってあきらめろ

772 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 23:59:40.19 ]
野田改造内閣に早速疑惑浮上

@aritayoshifu 有田芳生
捜査当局が内偵を続けている農水疑惑。詳細な怪文書まで出回っている。3億円の
行方はどこに?

@minorucchu ジャーナリスト 田中稔
野田改造内閣を揺るがす、農水省3億円スキャンダルの怪文書。二人の議員名が浮上。
34分前 webから
https://twitter.com/#!/minorucchu/status/157687110562881537

鹿野と筒井らしい
自公は問責も視野に調査開始だって

773 名前:デフォルトの名無しさん [2012/01/14(土) 01:11:28.42 ]
A1=1 B1=あいう
A2=2 B2=かきく
A3=3 B3=さしす

1.txt、中身があいう といったテキストをUTF-8で複数作成したいのですが
どうすればよいでしょうか?

Sub out_ex_euc()


Dim MyIndex, myADOstr
For MyIndex = 1 To 3
myADOstr = FreeFile
Set myADOstr = CreateObject("ADODB.Stream")
myADOstr.Charset = "UTF-8"
Open Cells(MyIndex, 1) & ".txt" For Output As #myADOstr
Write #myADOstr, Cells(MyIndex, 2).Text
Close #myADOstr
Next MyIndex


End Sub


こんなの書いてみたのですがダメでした



774 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 01:36:06.05 ]
>>773
なんでプロシージャ名がeuc?ってのはおいといて、FreeFileとか宣言してない変数がいきなり出てくるあたり
どっかのコピペなんだろうけど、もうちょっと落ち着いてコードを見直そうね

Sub out_ex_euc()
  Dim MyIndex, myADOstr

  For MyIndex = 1 To 3
    Set myADOstr = CreateObject("ADODB.Stream")
    myADOstr.Type = 2  'Textモード
    myADOstr.Charset = "UTF-8"
    myADOstr.Open
    myADOstr.writeText Cells(MyIndex, 2).Text
    myADOstr.saveToFile Cells(MyIndex, 1).Text & ".txt", 2
    myADOstr.Close
    Set myADOstr = Nothing
  Next
End Sub

775 名前:デフォルトの名無しさん [2012/01/14(土) 01:53:53.22 ]
>>774
有難う御座います!
無事出来ました。
本当に助かりました。

776 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 11:31:16.38 ]
指定されたフォルダー内のファイル名を作成日時の
降順に並べ替えるにはどうすればいいでしょうか?
ファイル名の一覧を取得して、別の配列に作成日時を
比較しながら挿入して行く方法しか思いつかないのですが、
もっと簡単な方法はありますか?

777 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 11:44:00.25 ]
dir /b /a-d /od の実行結果を取り込む。

778 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 11:52:12.23 ]
>>774
> FreeFileとか宣言してない変数

変数じゃないし。

まあ、ADODB.Stream 使うなら関係ないけど。

779 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 11:57:19.44 ]
dir /b /a-d /od- だったw

780 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 15:07:46.00 ]
>>779
/tc



781 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 15:48:47.05 ]
ファイルディスクリプタを返す関数か

782 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 15:53:31.63 ]
>>773
>>774
>>778

AODで
UTF-8のtxt作る場合にはBOMがくっつくから
不要ならばバイナリで扱って掃除しないと困るよん。


と、焼酎飲みながらカキコ

783 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 16:45:49.71 ]

反日ネット工作員
朝日新聞社→社員約300人
民主党とその取り巻きの資金が入った反日工作会社→数社約450人

朝日新聞の社員は捕まった49歳の編集者を含め新聞記事を書く合間に2chを荒らしている程度とみられているが
民主党が用意した反日工作会社はほぼ24時間体制で工作を行っている
工作範囲は民主党が予め工作費を流している2ch、ニコニコ動画を中心にyoutube、個人のブログなどである。



784 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 18:01:51.55 ]
detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1479372954



785 名前:784 mailto:sage [2012/01/14(土) 18:05:05.75 ]
エクセルマクロで十分そうな物をSEに頼むか普通。


786 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 19:37:32.74 ]
>>782

>15:53:31.63
>15:53:31.63
>15:53:31.63

787 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 12:42:32.23 ]
>771
ありがとうございます。無事書けました。
プリントスクリーンして〜 とかトンチンカンなことを考えてました。


788 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 22:11:07.35 ]
codepad.org/tyOKeGsr

のような構造体配列があって年度別に成績を格納するところまではできたんですが、
総合計を出すために nen = 9999 のところにどうやって加算するのかでつまずいて
ます。
みなさんのお知恵をぜひお借り出来れば m(_ _)m


789 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 22:56:18.31 ]
>>788
それだけじゃわからん

790 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 23:03:13.96 ]
> 最後に総合成績のためのidxを設ける

普通に
Public 合計 As nendobetu_seiseki
って宣言して、それに足しこんでいけば良いんじゃね?

nen は、無駄になるけど気にしない。

そもそも、nen を持つ必要はないと思うし。



791 名前:788 mailto:sage [2012/01/15(日) 23:07:29.37 ]
なかなか上手く伝えられないですが^^;、イメージ的には
年度 勝 負
2004 12 6
2005 21 2
2006 18 1
2007 18 4
2008 13 4
2009 13 4
2010 15 4
2011 13 4
2012 0 0
9999 0 0

となっていて、勝・負の数を9999のところに足しこみたいということです。


792 名前:788 mailto:sage [2012/01/15(日) 23:13:43.40 ]
>>790
そういえば、確かに無理やり配列の中でやらなくてもいいですね^^;
分かりました。
ありがとうです

793 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 23:55:42.31 ]
民主党には朝鮮人など外国人のなりすまし、スパイが約90名在籍している
野田内閣は過半数が帰化人

野田はどうだろうか
韓国人から賄賂を貰い、韓国人の集いに出席している野田は

首になった蓮○はシャブで逮捕歴のある人間と仲が良いな。蓮○自身はやってんの?
い-6-1
テレビが言えない民主党のスポンサー=韓国北朝鮮
あとはもうわかるよな



794 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 00:20:33.95 ]
XP Excel2003です
複数のPCでブックの共有をしてるのですが、Excel以外にも
アプリを起動しているので常に前面にExcelがあるわけではないです。

この状態でAのPCで共有ブックをマクロを実行して更新したことをBのPCで
気づけるようにしたいのですが良い方法はないでしょうか?
msgboxを試してみたのですが実行したPCでしか表示されませんでした。

795 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 00:44:47.83 ]
>>794
VBAにこういうのを埋め込む
ttp://oshiete.goo.ne.jp/qa/2172332.html

796 名前:デフォルトの名無しさん mailto:sage [2012/01/17(火) 17:25:31.76 ]
ちょっと質問。
実行時にウインドウを閉じてバックグラウンドで動作させるプログラムを組みました。
内容は、webクエリを実行してコピー→別シートに貼り付けというのが大まかな流れ。
それで、手持ちのノートPCなら動作中は他のプログラムを問題なく使える。
だけど、デスクトップで実行すると画面がチカチカしてクリックがうまくいかなかったり
フォームに文字を入力できなかったりします。
動かすパソコンによって動作の違いってあるのでしょうか?
パソコンはともにwin7 64bitでoffice2010です。

797 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 00:19:40.90 ]
IEで開いたとあるサイトのテキストボックスに、エクセルのセルの値を貼り付けているVBA組んでいますが、
他のテキストボックスには値のが入るのですが、特定のテキストボックス入らず困っています。
(VBA知識は、「マクロの記録」+入門書レベル)

プログラムは

Dim strData(10) As String    Dim objIE As Object   で定義した変数に

strData(0) = Cells(intRow, 4).Value        値を変数に入れて

objIE.Document.getElementById("TEXT_BOX09").Value = strData(0) 
  って感じでIEのテキストボックスに入れていきます。



その問題の特定テキストボックスが、他のテキストボックスと違いそうなトコは以下の2点です。

1. そのテキストボックスは、隣にカレンダーボタンがあり、クリックするとカレンダーがでてきて、日付を選択すると
  その日付がテキストボックスにはいる
  ただし、Sendkeysでためしに、クリップボードの文字列を{~v}で貼り付けたら入るので・・よく分りません・

2. type=hidden  テキストボックスがhidden型?の場合は何か特殊な処理必要なのでしょうか?

798 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 01:14:03.52 ]
hiddenはテキストボックスじゃないし、そもそもブラウザ画面に表示されないし
hiddenなフォームフィールドに貼り付けとかどうやってできるのか俺には解らない

ホントにVBAの問題かちゃんと切り分けてから質問してくれ
どうせJavaScriptかなんかで上書きされてるってオチだろう


799 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 01:23:01.92 ]
>>797
hiddenの値を書き換えたいならIEを外からコントロールするんじゃなくて、submitまでの処理を自前でやった方が簡単
たとえばGoogleの検索はqという名前のテキストボックスに検索ワードを書き込むけど、
URLの末尾に「q=文字列」と追加しても同じ結果が得られる
hiddenで隠されたパラメータも同じ方法で自由な値を送信することが可能


ttp://www.google.co.jp/search?q=文字列&num=20

numというのは表示される件数。設定画面で変更してcookieに保存されたパラメータがhiddenで送信されている

800 名前:797 mailto:sage [2012/01/18(水) 10:22:32.24 ]
>798
ありがとうございます。JAVAの問題なのか。となると、これはVBAで操作ではできないことなんでしょうか。

ちなみに該当するとあるサイトのhidden(?)なテキストボックス(?)に20111225と、手入力した状態のソースです。
こんな感じで、そのテキストボックスに20111225と数字をVBAでエクセルからコピペしたいのです。

</TH><TD>
<INPUT tabIndex=6 onchange="KCCDateTextUtils.onChangeText( this );" value=20111225 maxLength=8 size=8 type=text tabIndexOrder="6">
    ↑サイトに20111225と手入力した時の、テキストボックス(?)の要素

<INPUT id=TEXT_BOX09 value=20111225 type=hidden name=TEXT_BOX09 kccext="dateText">
<INPUT type=hidden>
    ↑TEXT_BOX09にVBAで値を入れることはまではできますが、テキストボックス(?)に反映されないのが困りごとです。

<INPUT tabIndex=6 onclick="return KCCDateTextUtils.showCalendar( '〜〜/init.do' , this );" src="/〜〜/img/icon_calendar.png" type=image tabIndexOrder="7">
    ↑テキストボックス(?)のとなりにある、カレンダー呼び出しボタン



>799 URLでできるかも確認してみます。



801 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 11:30:47.40 ]
>>800
間違ってるかもだけど なんとなく
 <INPUT tabIndex=6 onchange="KCCDateTextUtils.onChangeText( this );" value=20111225 maxLength=8 size=8 type=text tabIndexOrder="6">
これがあるのに

<INPUT id=TEXT_BOX09 value=20111225 type=hidden name=TEXT_BOX09 kccext="dateText">
なぜここへ値を入れようとしてるの?

VBAで値を入れるべきところは前者のような気がするんだけど

802 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 11:33:35.05 ]
>>800
間違いなくJavascriptで入力内容をチェックしてるね
(ちなみにJavascriptとJAVAは名前は似てるけど完全に別物だからきちんと区別してね)

803 名前:797 mailto:sage [2012/01/18(水) 15:05:07.95 ]
>>801
ありがとうございます。
そこの使い方がわからなかったんです。

前者に20111225と値を入れたいのですが・・・

VBAで変数から入れようとしたら、 「name=」も「id=」もないので

objIE.Document.getElementById("−−−−").Value = 変数 

でどう使えばいいのかわからなかったとこです。

804 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 15:29:00.19 ]
>>803
VBSのサンプルだけどここが参考になると思う

7.10 フォームの操作3/フォーム名やコントロール名が無い場合
www.happy2-island.com/vbs/cafe02/capter00710.shtml

ちなみに onchangeはたぶん動作しないと思うが
javascriptが動かないとまずいときは値を入れた後そのテキストボックスに対して
.OnChange
とかしてみるといいいかも
例:objIE.document.forms(0).Item(5).OnChange

805 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 17:35:23.98 ]
型が一致しません。と出ます
原因を教えてください。

For t = 3 To 100
For y = 2 To 50
If Worksheets("01").Cells(t, y).Value > 10 Then
Worksheets("02").Cells(t, y).Borders.LineStyle = True
End If
Next y
Next t

806 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 17:59:44.63 ]
>>805
Worksheets("02").Cells(t, y).Borders.LineStyle = xlContinuous

807 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 18:25:30.15 ]
>>806
それでやってみましたがやっぱりエラーが出ます

808 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 18:25:53.32 ]
>>804
多謝!
目的の操作ができました。

809 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 18:48:18.95 ]
>>805
ステップ実行でどこでエラーか調べてみて

810 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 18:53:01.55 ]
>>807
tとyの型宣言はどうなってる



811 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 19:31:13.60 ]
>>809
ここまで黄色の帯がかかります
If Worksheets("01").Cells(t, y).Value > 10 Then

>>810
Dim t As Integer
Dim y As Integer

よろしくお願いします

812 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 19:38:08.33 ]
>>811
エラーでとまったときのtとyの値は?
そのセルに入力されている値は?

813 名前:805 mailto:sage [2012/01/18(水) 19:52:01.57 ]
>>812
セルの値が#DIV/0!になっていたのが原因だったようです
お騒がせしました

814 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 19:56:59.65 ]
参照エラーね・・・・。




参照は小粒でピリリと辛いって言うからねぇ

815 名前:デフォルトの名無しさん mailto:sage [2012/01/18(水) 20:01:18.80 ]
あ・・・0除算だから参照エラーって言わないのかな?



如何ざんしょう?・・・・ナンツッテ

816 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 17:43:20.40 ]
エクセルのシートで、使用されている行、および列の数ってどうやって抜き出すのが良いんでしょうか?
excelvba.pc-users.net/fol7/7_3.html
www.happy2-island.com/excelsmile/smile03/capter00702.shtml
一応調べてはみたのですが、
プログラムを組む時に基準に出来るような、正確に中身を測れる方法ではないのでしょうか?
正確に使われているセルを調べる方法が無いなら、データを保存するだけのシートを
分けて作って、普段見えないようにしておき。
見る時は、別シートの参照値だけを記述したシートを見るなんて運用になるんでしょうか?

817 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 18:34:19.73 ]
>>816
もっとわかりすくお願いします

818 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 19:08:45.09 ]
>>817
UsedRangeは空白の列や行が二つ以上続くと使われたセルの値を正確に返せない。
Endプロパティだと、列と行を一つずつ調べなければならない
そして列や行の端に値が有るのか無いのかの区別も別途ロジックを用意しなければならない

と言う認識なんだけど。
適当に作ったシートの中身をここら辺のプログラムで読み取るのって
汎用性が有る記述方法が見つからなかったんですが。

そもそもシートの記述の時点で、ユーザーフォームからしか書き込めなくするとか、
1シートに表を1つしか作れないようにするとかって制限をかける方が無難なんでしょうか?


DBに近いような物をシートに作る時はどのようにしてますか?

819 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 20:01:14.28 ]
2007以降ならテーブル

820 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 20:54:57.78 ]
ごめん 816と818を何度読み返してみても、
何がしたいのか、何に困っているのか理解できなっかた。




821 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 22:23:54.84 ]
>>820
プログラムの設計書をVBAで自動生成しようとしてる。
電文の設計書と、それに対応した処理をするモジュールの設計書を作るとして。
両方自動生成するつもりなんだけど、テーブル二つを一つのシートに書くと、
検索のプログラムをシートの書き方毎に作らなきゃならないし面倒そう。

1 シート毎にテーブル一つにする。
2 ファイル名=モジュールのIDとし、特定の列のN番目からデータを取り自動生成すると楽っぽい
3 動的型でも使えるっぽいので、引数でどっちかを指定すれば、エクセルファイルの幅の設定もファイルの種類毎に変えられるっぽい

こんな感じの印象を持っている。
まぁ上のは例を挙げただけなんだが。

プログラムで何かをする時に、元データとして使うシート自体の書き方制限して特定の形にしておくと便利っぽいが
ネットで調べる限りそんな記述が出て来ないんだけど、言葉にしないだけで結構みんなセルに特定の規則作って使ってるよね??

と、出来る限り分かりやすく書き直してみたんだけどOK?

822 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 22:39:40.26 ]
>>821
そのレスも自動生成なのかい?
実用レベルには程遠いね

823 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 23:12:10.03 ]
>>822
もういいやw

説明するのも面倒だし、学校の先生から説明されるような物じゃ無いと何も理解できないとかww
金貰って書いてるわけじゃ無し、理解できない奴は無視しておけば良いやw

しかも実用にほど遠いってww
ひな形の作成ぐらいにしかなって無いだろうよ説明的にww

824 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 01:14:31.59 ]
そりゃお前は中身解ってるから理解できるだろうけどさー
一つ言える事は、ExcelをDBとして使う事は愚の骨頂。できるけど。
どうしてもやるなら入力専用シートなりフォームを作って
データシートをテーブルに見立ててSQL
下手にLookUpとか使うと>>813みたいに思わぬ所で参照エラー地獄
これで解らないなら敢えてExcelで作る必要無し
Accessとかなんか得意なのが有ればそっちのが良いんじゃね?

PGなんてのは一つ一つやりたい事実装してけば最後には出来るもんなんだよ
いっぺんにあれこれやろうとするから解らなくなる
すっ飛ばすのは数こなして慣れてからだよ

825 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 01:26:24.94 ]
というかセルの型指定できるだろ
入力制限もかけられる
動的に生成したいなら、マクロの記録使ってセル設定すれば
ソースが出来るから後はそれを使いまわせ

826 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 01:48:27.05 ]
>>824
DBに近いような物・・・
DB自体じゃないよ
PG作る時のクラスの命名規則とかいちいちDB作って登録するわけじゃないでしょ、
あくまで簡易な物

それにDBのテーブル自体もエクセルにしといた方が良いと思うが。
テーブルのデータじゃ無く、テーブルの構造な。
MVCアーキテクチャで作る時に、どのテーブルのどのデータ抜いてきたかとか分かると良いだろ。
で、参照値にしとけばって話で
detail.chiebukuro.yahoo.co.jp/qa/question_detail/q127916537
こんなのも出来るし

まぁどちらにしろプログラムの作り方についての質問じゃ無く。
VBAで何かする時に、元になるシートが有るわけだが、好き勝手毎回適当に作るより、
規則性持たせた方が都合が良さそうだけど、どう思う>all
ぐらいな感じ

827 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 04:02:02.22 ]
>>816
ヒトにとって読み易い表フォーマットは往々にして機械走査しにくいが、どんな運用ルールを設けてもなし崩しにされてしまうので、結局ニンゲンさまに合わてプログラムするしかないと諦めてます。

828 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 08:43:35.88 ]
formのボタンを押すにはどうしたら?
プログラムから、ボタンを押すと実行されるサブルーチンをcallするのでなく、ボタンそのものを押す方法。
プログラムは、vbaで出来なければ、他のものでも良いです。

829 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 09:27:13.58 ]
日付関係で質問
VBAでコピー元→コピー先に値の貼付を行なった際、表示がコピー先の書式設定に合ってない…
どう対処したら良いっすか!?

コピー元書式設定:「文字列」 値「2012/1/20」
コピー先書式設定:「yyyy"年"m"月"d"日"(aaa)」
         「2012/1/20(金)」で表示されて欲しいところ「2012/1/20」になってしまう

ソース
'日付コピー
Range(Cells(2, HidukeCol), Cells(EndRow, HidukeCol)).Select
Selection.Copy
'値の貼付
Workbooks(HATUKESAKI).Activate
Range("B2").PasteSpecial Paste:=xlPasteValues


830 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 10:04:14.60 ]
Type co
num As Integer
pr As Long
End Type
Dim CoStr(3) As co
こういう構造体配列があります。
数値としては例えば
num pr
1 125
2 138
3 175
みたいなのが入っていたとして、CORRELによる結果を出したいのですが、
CORREL(配列1, 配列2)
となっている時、どういうふうに書けばいいんでしょうか?

今は一旦シートに書きだしてその上でそれぞれrng1,rng2に入れてから
Application.Correl(rng1, rng2)
として計算しています。シートに書き出さず直接計算できたらと思っているのですけど。




831 名前:教えてください [2012/01/20(金) 10:18:09.88 ]
ユーザーフォーム内に10個のテキストボックスを作り、その中に数値を
入力していき、最後に別のテキストボックスに10個の数値のMAXと
MINを自動的に割り出したいのですが、どうしてもうまくいきません。
AVEはいくんですが・・・。
どうか、優しい方、教えてください。

832 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 11:06:59.01 ]
>>828
VB6と一緒
ここはあくまでExcelをマクロ言語操作することに関してのスレなので
例え環境としてVBAを使おうと、Excel操作以外はスレ違い

>>829
コピー先に日付書式が設定されていても、それはあくまで数値(シリアル値)が入力されたら
その書式に沿って表示せよという設定なだけで、文字列を入力すれば文字列のまま表示されるので
日付文字列を一旦CDateやDateValueでシリアル値に変換してから入力すれば良い

>>830
VB6と一緒
ここはあくまでExcelをマクロ言語操作することに関してのスレなので
例え環境としてVBAを使おうと、Excel操作以外はスレ違い

>>831
VB6と一緒
ここはあくまでExcelをマクロ言語操作することに関してのスレなので
例え環境としてVBAを使おうと、Excel操作以外はスレ違い

833 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 16:57:30.64 ]
>>826
何分かけて一レス書くのか知らないけど、それと同じ時間だけ何度も読んで、同じ時間だけかけて推敲してから送信してね。

834 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 17:44:05.85 ]
>>832
ありがとうございます。
でもセル範囲でデータを取っているため
Cdateが使えません……

835 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 18:31:49.23 ]
Dim セル As Range
For Each セル In セル範囲


836 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 18:49:15.64 ]
>>833
お前のレベルに合わせたら例3つぐらい出して、起承転結付けて最初と最後に結論かくような、
いかにも国語の教科書って書き方しないと伝わらないだろ
>>819の時点で分かる人には分かるって気が付かないか?
そもそも最初の文だけでも伝わる人には伝わる。

俺に重要なのはお前に伝わる書き方をする事ではない。
同じような考察に至った人が現在どういう使い方をしているのかが知りたいだけ。

自分が経験不足で何を言いたいか理解できなかったからってこっちのせいにするな。
ここはお前のようなかまってちゃんに、必ず伝わらないと文章書いちゃいけないなんてルールは無いんだぞ

837 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 19:22:44.14 ]
>>836
> そもそも最初の文だけでも伝わる人には伝わる。
> 同じような考察に至った人が現在どういう使い方をしているのかが知りたいだけ。


838 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 19:23:39.67 ]
あーごめん俺>>819だけどお前の話はさっぱりわからんわ

839 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 19:33:38.62 ]
>>837
誰にも伝わっていないか、それとも同じような考察に至った者がいないか(笑)

840 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 19:37:50.75 ]
ID無いとやり放題とw
使えない上司の定型文貼る奴はレベルが違いますね



841 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 07:38:58.15 ]
>>839
俺にはこう伝わったぞ
>プログラムで何かをする時に、元データ(略)の書き方制限して特定の形にしておくと便利っぽい
プログラムで完全に不定なデータ扱うなんて、考察にいたるとかいうまでもなく
無理だってわかりそうなもんだが、彼は今初めてそれに気づいたらしい

あと助詞と句読点の使い方がおかしいので、日本語が不自由な人だというのも伝わった

842 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 07:49:31.87 ]
同意

843 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 07:50:15.28 ]
たぶん頭も不自由なんだろう

844 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 08:16:13.33 ]
そもDBに近いようなものってとどのつまりDBじゃねーの
簡易だろうがなんだろうがDBはDBでしか無いじゃん
あとPG作る時のクラスの命名規則とかいちいちDB作って登録する事は普通に有るので
無いでしょ?と問われたらNOとしか言えませぬ。

まあ一つ言える事は、どんな規則作っても
一番偉い奴がガッチリ管理し続けない限りなし崩しになるから
そんなとこに無駄な労力を割く必要無し。
ルールをプリントアウトして目立つとこに貼っとけw

845 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 08:30:50.69 ]
なにはともあれ質問が漠然とし過ぎてて解んねーよ
仕事なら一緒になって真面目に考えるけどさ
もうちょっと具体例というか・・・あ、ここVBAスレだな。

仕様は自分で考えて、コーディングの段階になってからまた来てくれよ

846 名前:デフォルトの名無しさん [2012/01/21(土) 10:32:17.82 ]
ソースコードジェネレータ、つーか、テンプレート、みたいなのを作りたいのか?
ひな形に読ませる設定一覧が表になってて、表のレイアウト込みで自動で読ませたい

こんなかんじ?
やめとけ、出来ない事はないと思うがレスのやり取り見てると作った本人でも使えないモノしか出来そーにない

847 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 12:30:39.01 ]
何でもかんでもExcelでやろうとする奴は例外なく馬鹿

848 名前:デフォルトの名無しさん [2012/01/21(土) 12:32:23.74 ]
定型的コードを一意に作るならできる。
例えばc言語のテーブルみたいなのを想定したシートにパラメータつっこめばテーブルに加工するのは容易。
同じように定型的コードの要素をならべてシートに整理。VBAで処理したら、典型的コードの亜種がつくれます。


用途は、テストコードの量産とか。

849 名前:デフォルトの名無しさん [2012/01/21(土) 12:34:52.45 ]
補足
典型的コードの構成部品はVBAコードに埋め込み。リファインはVBAを直接弄る。

850 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 13:51:04.88 ]
【プログラミング部】 PHPが100倍速で動くようになったぞー
awabi.2ch.net/test/read.cgi/poverty/1327050821/



851 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 15:14:31.78 ]
恋のぼんちシート
www.youtube.com/watch?v=wlNVmH4X27s

852 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 22:04:14.91 ]
>>844
エクセルの使い道って、プログラミング組めなくてmysqlとか使えない奴が使う
簡易なDB機能じゃなかろうか・・・
いちいち作るのが面倒ならエクセル使うと思うんだが

クラス名をDBに登録ってどんな規模ならやる羽目になるん?

853 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 22:06:47.92 ]
そうか、お前はプログラミング組めなくてmysqlとか使えない奴なんだな

854 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 22:20:20.20 ]
>>853
いちいち作るのが面倒ならエクセル使うと思うんだが
いちいち作るのが面倒ならエクセル使うと思うんだが
いちいち作るのが面倒ならエクセル使うと思うんだが
いちいち作るのが面倒ならエクセル使うと思うんだが

文章自体読めない奴が何をw

855 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 22:41:24.94 ]
ほう、ならプログラミングできてDBも使えるって言うのかい?

856 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 22:41:35.78 ]
データ=DB
という錯誤が、この話題ではまかり通っているように思える。

857 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 23:39:22.32 ]
> データ=DB
は実は錯誤でもなんでもなく正しいんだけどね
少なくともExcelにおいてはね

さすがにCSVデータのみを以てDBとするのは正しくないが
Excelは昨今のDBソフトには遠く及ばないものの、DBとして本質的な
最低限の機能は備えているので、Excelのシート上にデータを置けば
それはDBと呼んでも何の差し支えも無い

むしろDBに対して、本質的なところではなく
後発の固有DBフォーマットや固有DBソフトの付随的な機能や規格を挙げて
「この要素を満たしてなければBDとは言えない」とか言ってる奴の方に錯誤がある
BDソフトメーカーの高機能戦略に踊らされすぎて、本質的なDBというものが見えてない

858 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 01:10:50.49 ]
>>856-857
もちろんExcel表(上のデータ)は立派なDB足り得るぞ
だが、データ=DBが正しいなら、CSVデータも本質的に立派なDBだが?

すべてのデータがDBだというのはさすがに間違ってるだろうが
今回の話でのデータはまさしくDBといって差し支えないぞ

そのDBのデータをエクセルで扱うのに、フォーマット不定でできないかって言ってる

DBの本質とかDBソフトの本質とかスレ違いだしそっちは他所で議論してくれ

859 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 04:51:55.62 ]
ここはExcelのスレだが?

860 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 05:10:01.15 ]
XP Excel2000です。

Q.
For Each i In 範囲 〜 next iの文で
範囲を.Range("B1:B8")、("C1:C9")等といった形でまとめて記述し
B1,B2,B3…C1,C2,C3…と順番に処理させたいのですが
どう記述すれば良いですか?

↓自分で試して失敗したコト↓

範囲をVariant型で宣言し、変数A("B1:B8")、変数B("C1:C9")…を
範囲 = Array(A,B,C…)と代入して動作は確認できたのですが
For〜nextの変数iにSelect Caseの条件分岐をかけたらエラーになってしまいました。

とりあえずFor〜nextの処理を i.value = 10 にしてわかったことは
1つの記述が"B1:B8"でまとめて成されてしまうため
i = "" で値が入力されているかどうかで分岐させる条件と比較できないということでした。

B1,B2…C1,C2…と1セルずつ処理を進行させるにはどういう記述にすればいいでしょうか?
範囲を.Range("B1:B8")という記述で必要分だけ文をコピペすると文が長くなりますよね…



861 名前:sss mailto:sage [2012/01/22(日) 06:34:50.26 ]
列毎のループとセル毎のループの2段ループにすれば良いだけちゃうの?

Dim cols As Range, cell As Range
Dim ii As Long

For Each cols In Range("A1:E5").Columns
  For Each cell In cols.Cells
    ii = ii + 1
    cell.Value = ii
  Next cell
Next cols

862 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 07:17:23.72 ]
>>856
いやいや、さすがにそれはねーよ

・・・あったでござる >>857-858

863 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 08:20:48.53 ]
>>861
感動!.cellsや.columnsという記述でこんな簡単に制御できたのかwww
色々試したら希望通りの動作が確認できました。
これで記述のシェイプアップが捗りそうです!ありがとうございます!

ところで範囲が四角でククれない不定形の場合(Ctrl+左クリックで選ぶような)で
記述を簡略化する場合はどう書けばいいのでしょうか?

今考えついて動作確認できたのが、Array(A,B)配列を作って
For Each I In 範囲(数字).cellsとして数字=0からスタートし、
next iを越えたら数字=数字+1としてGoToで頭に戻るという記述なのですが
もっとスマートに書く方法はありますか?



864 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 08:32:07.79 ]
>>862
君は>>857最後の1行に該当する子なんだね。

865 名前:sss mailto:sage [2012/01/22(日) 08:44:03.75 ]
>>863
よう解らんがこういうことか?

For Each cell In [A1:C3,E2:G4,C6:E8]
  ii = ii + 1
  cell.Value = ii
Next cell


866 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 09:26:32.36 ]
>>865
ですです、そういう内容の時に範囲の部分を[A,B,C]というように
手前でsetした変数としての記述はできないのかな、という疑問です。

というのは、手元の環境でDim A As Rangeの
set A = range("A1:C3")等と変数記述すると
For Eachのところでオブジェクトが必要と怒られるのですが
その解決方法がわからなかったので…
変数記述しなければ動作するのはこちらでも確認できましたが

867 名前:sss mailto:sage [2012/01/22(日) 09:39:04.98 ]
>>866
つまりこういうことか?

Dim x As Range, y As Range, z As Range
Dim cell As Range
Dim ii As Long

Set x = Range("A1:C3")
Set y = Range("E2:G4")
Set z = Range("C6:E8")

For Each cell In Union(x, y, z)
  ii = ii + 1
  cell.Value = ii
Next cell

868 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 10:01:25.18 ]
>>867
感動した。正にその記述です。
詰まるところArrayじゃなくてUnionを使えば良かったのですね。
VBA一ヶ月目の俺にはさっぱり意味が全然わからないけどwこれから勉強させて頂きます。
.cellsとUnionよくわからんけどすごい!びっくり!
とりあえずネカフェの12時間パックが切れそうなので一旦お暇して夜また来ます!

一番ネックだった部分が解決して本当に嬉しい!
お付き合い頂きありがとうございました。感謝。

869 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 11:48:45.06 ]
>>864
相手にするだけ無駄だろ
データを大量に詰め込めて検索できればDBなのにそれも理解してなそうだし
VB以前にVLOOKUPも知ってるか謎

870 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 11:54:36.92 ]
> データを大量に詰め込めて検索できればDB
トンデモすなあ



871 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 12:10:46.65 ]
> データを大量に詰め込めて検索できればDB
データベースというものを、大手の作るデータペースソフトとしてしか
見れてない奴からすると、トンデモ理論に見えるんだろうね。

データベースというものの本質を解っていれば、
実にシンプルかつ的確にデータベースというものを表現しているのだが。

872 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 12:40:44.83 ]
メモ帳もDB

873 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 12:52:31.14 ]
>>871
削除も、更新も不要なんだ、へぇ〜。

馬鹿すぎ。

874 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 12:58:59.50 ]
あなたのVBA力を試しているのですが

875 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 13:08:09.76 ]
>>874
お久しぶりです!

876 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 13:10:48.90 ]
データベースというものを、大手の作るデータペースソフトとしてしか見れてない奴なので
> さすがにCSVデータのみを以てDBとするのは正しくないが
というトンデモ理論が口をつくのだろう。

877 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 13:52:01.22 ]
削除や更新や検索は DBMSのお仕事であって
データベースそのものじゃないとおもうが

878 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 13:55:22.65 ]
悪態をつくことは出来るが反論できない負け犬が吠えてるw

879 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 13:57:20.36 ]
削除も、更新も不要なんだ、へぇ〜。

(こんな事も知らなかった俺って)馬鹿すぎ。

こうだなw

880 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 14:20:41.87 ]
>>877
君の言う「データベースそのもの」って言うのを明確にしてくれ。
何でもかんでもデータベースだと言うなら別に止めないけど。



881 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 14:22:05.34 ]
>>879
なら、詰め込むのも不要だよな。

馬鹿だね。(w

882 名前:877 mailto:sage [2012/01/22(日) 14:30:17.06 ]
>>880
ある目的にそったデータを集めたもの

883 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 14:44:04.59 ]
集めただけでいいの?

あと、その意見だと「データ=DB」は間違いだよね。

884 名前:877 mailto:sage [2012/01/22(日) 14:55:39.32 ]
集めたデータを提供するのがDBMSの仕事だって認識

885 名前:877 mailto:sage [2012/01/22(日) 15:04:01.39 ]
ちょっと訂正
×提供するのが
○管理し提供するのが

886 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 16:05:05.70 ]
>>884-885
じゃあデータだけ見ただけだと何も言えないということでいい?

つまり

「データ=DB」
「CSVデータも本質的に立派なDBだが?」
「データを大量に詰め込めて検索できればDB」

は、データの目的が書いてないので、DBと言い切るのはトンデモ理論ということでいいよね。

887 名前:デフォルトの名無しさん [2012/01/22(日) 16:11:31.87 ]
awabi.2ch.net/test/read.cgi/poverty/1327050821/3

888 名前:877 mailto:sage [2012/01/22(日) 16:48:18.64 ]
それらを どうしても"トンデモ理論にしたい"で  考えたらそうなるね
そのスタンスでいる限り平行線になるな どっちも
メンドイから抜けるわ

罵倒されるだろうけどあえて受けるよ
じゃ頑張ってね

889 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 16:53:17.31 ]
>>877
そもそも構うだけ無駄だった
まぁ言った通りの低能ぶりだったろ

結局辞書で調べろと言っても分からない奴には何を言っても無駄

890 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 17:32:57.64 ]
お前が辞書で調べろっていう



891 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 17:48:25.04 ]
e-words.jp/w/E38387E383BCE382BFE38399E383BCE382B9.html
複数ユーザーで使用するエクセルの表・・・
立派なデータベースですねw

892 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 17:55:54.10 ]
>>890
生徒のテストの点数をエクセルで管理してる全国の教職員に謝ったら?

893 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 18:05:57.04 ]
うわーえらーい、すごーい

894 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 18:27:10.66 ]
え、何?
お前の中では「エクセル表がデータベースかどうか」って話だったの?
さすが、レベルが違うわ〜

895 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 18:40:52.85 ]
引数付きのプロシージャーを呼び出す時って、
Callの時は引数を括弧でくくって、Call付けない時は括弧を付けない。
と言うことでOK?


896 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 18:52:40.11 ]
半分OK

897 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 19:24:29.62 ]
>>888
無理やり引き分けに持ち込んだ気になって、自己満か。
まあ、理論的に返せないから、彼にとっては一番いい解決法なんだろうな。

898 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 19:47:59.28 ]
>>897
複数のアプリケーションソフトまたはユーザによって共有されるデータの集合のこと。

複数のアプリケーションソフトによって共有されるデータの集合のこと。
複数のユーザによって共有されるデータの集合のこと。
この片方でも満たしていればデータベースと呼べるわけだが・・・

頭悪いの?広い意味では図書館すらデータベースなのにw

899 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 19:52:20.31 ]
VBA力と回答力を試しているんですが

900 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 20:04:38.66 ]
>>898
へぇ〜、ファイルサーバーで共有されているファイルは、全部データベースって呼べるんだ。
これまた、すごい珍説乙。

まだ >>888 で止めときゃいいのに、馬鹿だねぇ。(w



901 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 20:13:32.56 ]
>>900
馬鹿過ぎワロタw

>ファイルサーバーで共有されているファイルは
ファイルサーバーは

それと別人だから、お前と違って恥ずかしい勘違いしてるから仲間が居ない奴とは違うw

902 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 20:30:26.88 ]
>>901
落ち着いてレスしろよ、なに言ってるのかわからん。

本人にもわかっているのか、怪しいけど。(w

903 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 20:36:41.00 ]
>>902
日本人専用なの、チョンに合わせて書く事はできませぬw

904 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 20:57:42.86 ]
ああごめん、反論できなくなるとチョンとか言い出すんだったんだよな。

わかりやすいね。(w

905 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 21:12:25.54 ]
>>904
>>901が理解できるようになってから書き込んでねw
これだからチョンはw

906 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 21:52:25.63 ]
>>905
え゛っ、マジで >>901 がまともなレスだと思っているんだ…、すごいな。

>ファイルサーバーで共有されているファイルは
ファイルサーバーは
> それと別人だから、お前と違って恥ずかしい勘違いしてるから仲間が居ない奴とは違うw

誰か、翻訳してくれ。

907 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 22:25:55.91 ]
質問のある方、こいつらのワケワカメな話に付き合う必要ないから、どうぞ〜

908 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 23:04:51.26 ]
DBを解ってる奴が2人しかいないなんて・・・

909 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 23:07:29.40 ]
レコードの中にフィールドがあり、フィールドの中にデータが入っているのがデータベース
データベースの定義はたったこれだけ

検索だの抽出だのシステムかどうのとかいうのはまた別の話

910 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 23:18:19.90 ]
そもそもDBとDBMSの区別ができてないやつがいるな

一般論で言えばデータが集まってれば何でもデータベースだよ
一連のスレをざっと見て目に付いた単語を並べると、図書館、ファイルシステム、CSV、エクセルのシート、みんな正解
メモ帳はアプリだから違う。カテゴリー分けするなら、DBではなく、極めて原始的なDBMSの方に入る
それをどう使うか、効率、使いやすさ、規模ってのはまた全然別の話。検索だの削除だのもみんな運用側の話だわな



911 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 23:48:41.18 ]
昼過ぎはDB理解してる奴が一人も居ない件について

912 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 00:03:20.57 ]
エクセルのデータをIEにVBAで転記していますが、ボタンを押して、
データが正しいときと、間違っているときでは開かれるサイトが違います。

そこで処理が正しければ、EXCELのその行のA列に"OK"といれて
ダメなら"Error"とでも入れたいのですが、
そのIE上の処理が正しいかどうかを判別する方法ありますか?

例えば、ボタンを押した後に出てくるアドレスとかがEXCELに取得できれば
判別できるのかと考えていますが、そんな方法ありますか?

お願いします。

913 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 00:33:42.81 ]
>>906
>ファイルサーバーで共有されているファイルは
ファイルサーバーは

↑これは、「データの集合」から「データ」に勝手に解釈変えて何言ってるの?馬鹿なの死ぬの?

>まだ >>888 で止めときゃいいのに、馬鹿だねぇ。(w
それと別人だから、お前と違って恥ずかしい勘違いしてるから仲間が居ない奴とは違うw

これは勝手に同一人物認定してるんじゃね〜
ファイルサーバーがデータベースじゃないとか恥ずかしい勘違いしてる奴と違って、
論理破綻してね〜から同一人物の可能性がどれだけ少ないと思ってるんだ?この低能がw

馬鹿過ぎワロタw
↑これは、教えてもらえてるのに自分の知らない知識は間違ってる事にしたい君の全てのレスに対して

こんな感じ

914 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 00:34:22.77 ]
>>912
いくらでも出来るけどスレ違い

ここはマクロ言語で「Excelを操作する」ことに関してのスレで
他のアプリを操作したりデータを取ったり渡したりは管轄外

915 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 00:50:37.76 ]
議論ですらないから反論なんてあるわけないね

916 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 01:47:33.88 ]
アプリ起動時にユーザフォームだけ出す方法として
Application.Visible = Falseがありますが、
これだと2つ以上ブックを開いていたときも全部非表示になってしまい都合がわるいです。
非表示させたいブックを指定する方法はないでしょうか?

917 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 02:14:02.47 ]
ひとつのアプリ(Excel)で二つのブック開く場合は無理だろ
関連付け変えて、ブックを開くたびに新しいExcel開くようにしな
多少多めもメモリ食うが、昨今のどころかここ数年くらいのPCなら
Excelを10個や20個起ち上げたところでメモリ不足になんかならないし
タスクボタンもグループ化出来るからさほど邪魔にならないはず

つーかさ、ユーザーフォームだけ使いたいなら、わざわざExcel使わないで普通の開発環境使えば?
VBAと完全互換のVB6は有料な上にとっくに終了してるが、オクで1/10以下の価格で出回ってるし
互換性の高いActiveBasicとか、そこそこ互換性のあるVB.NET(VB2010)とかは無料で使えるし
HTA+VBScriptなんて手もあるし

918 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 02:23:32.94 ]
>>917
アドバイスありがとうございます。
たしかにユーザーフォームだけ使うのであればエクセルである必要がないですね。

919 名前:デフォルトの名無しさん [2012/01/23(月) 02:50:45.17 ]
>>912

↓こんなんですか?

Sub Test()

Dim MyObj As Object

For Each MyObj In CreateObject("Shell.Application").Windows
If MyObj.Name = "Windows Internet Explorer" Then
Exit For
End If
Set MyObj = Nothing
Next MyObj

If MyObj Is Nothing Then
MsgBox "IE が起動してないよ"
Else
MsgBox MyObj.LocationURL
End If
Set MyObj = Nothing

End Sub

見当違いの回答だったらごめんね

920 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 07:03:36.43 ]
>>919

>MyObj.LocationURL
これできました。ありがとうございます。



921 名前:デフォルトの名無しさん [2012/01/23(月) 09:29:03.86 ]
以下は,配列に入っているデータを入れ替えるプログラムです
(配列xを引数として入れ替える関数subprogramに渡している)
(a)値呼び出しの場合,配列xと配列yの値はどのようになるか?結果だけでなく引数を渡す過程も含めて詳しく説明せよ.
(b)参照呼び出しの(ByVal を ByRefに変えた)場合,配列xと配列yの値はどのようになるか?結果だけでなく引数を渡す過程も含めて詳しく説明せよ.

Sub main()

Dim x(5) As Integer
x(0) = 10: x(1) = 20: x(2) = 30: x(3) = 40: x(4) = 50: x(5) = 60
Call subprogram(x())
For i = 0 To 5
debug.Print x(i)
Next

End Sub

Sub subprogram(ByVal y As Integer)
Dim i As Integer
For i = 5 To 1 step -1
y(i) = y(i- 1)
Next
End Sub

助けてください。

922 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 09:53:04.14 ]
>>921
ヒント:>>2

ここはマクロでExcelを操作する話以外はスレ違い

923 名前:デフォルトの名無しさん [2012/01/23(月) 10:30:44.83 ]
>>899
コラ
それはオレが広めたセリフであり
オレだけが使うことを許されたセリフだ
もし使いたいならオレの了承を取ってからにしてくれ

924 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 10:38:49.73 ]
最初に使ったのは俺だぜ
使いたいならまずはお前が俺の承諾を取れ

925 名前:923 [2012/01/23(月) 11:25:08.87 ]
のびたのくせに生意気だ

926 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 11:27:27.99 ]
ところでVBAで配列をByValで渡すと、スタックに大量のデータが積まれるの?
それともデータ領域を複製してポインタを渡すだけ?

927 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 20:03:56.47 ]
>>923
使うのがお前だけって事は全く広まってなくね?

928 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 22:00:59.47 ]
>>926
データを複製してポインタを渡すだけ。
VARIANTとSAFEARRAYを使って実装されてるっぽいし。

929 名前:デフォルトの名無しさん [2012/01/23(月) 22:19:20.89 ]
>>928
桜は満開でございます
blog-imgs-46-origin.fc2.com/k/e/t/ketsunomi/c464.jpg

930 名前:デフォルトの名無しさん [2012/01/23(月) 22:23:00.95 ]
apfsy.com/anal/img/anal0117.jpg



931 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 23:06:12.89 ]
>>910, >>913
*.wav って、PCM データが集まってるよな。
それを共有したらデータベースって言うわけだよな。

すごいよ、お前ら。

さすがにあほすぎて太刀打ちできんわ。(w

932 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 23:24:21.19 ]
もう・・・ノーサイドにしましょうよ・・・。

933 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 23:52:45.71 ]
>>931
本当に残念な奴だなお前はw

データを特定の形で整理した
「データの集合」がまず有って、
それを複数のユーザーで使いまわす事が出来る状態になってれば
それはもう立派なデータベースだと・・・

PCMデータを一個ずつ抜き出して意味の有る物の単位になるのか?
いい加減謝れよ、てかその屁理屈考えるのにどのぐらいかけたの?w

934 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 00:43:03.87 ]
>>933
>データを特定の形で整理した

おや? >>898 には、一言も書いてないんだけど、そんな条件。
後出しじゃんけん乙。

ちなみに、PCM データは時系列に音の大きさを特定のビット数で並べると
言う形で整理されてるし、一個ずつ抜き出せばその時点の音の大きさと言う
意味のあるデータになる

もちろんファイルサーバーなり、P2P で複数のユーザーから使いまわすことが
でぎる状態にできるし。

て言うか、複数のユーザーとか何回もアホみたいに書いてるが、一人で使う
データベースと言うものの存在も知らないのか?

例) 自分の蔵書を自分が見るためだけにデータベース化してる奴など。

> どのぐらいかけたの?

「データの集合」と言う言葉から *.wav ぐらいはすぐ思いつくと思うが、
もしかして必死に考えないと思いつかないの? (w

935 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 01:32:49.56 ]
>>934
丸一日レスが無かったから顔真っ赤にして必死に考えてたんだと思ったよw

>データを特定の形で整理した
>>869で検索できればと言っているわけだがw
検索、再利用、何かの指針にできるここまで分かってれば特定の形で整理されて無いとDB足りえないと分かるよなw
後出しではなく、君が低能なだけだねww

それと君の言ってるwavの話なんてそもそもDBじゃないでしょww
アルファベットの定義があるから、アルファベットの意味不明の文字列がDBになるなんて
誰も言ってないわけだがwww

>「データの集合」と言う言葉から *.wav ぐらいはすぐ思いつくと思うが、
>もしかして必死に考えないと思いつかないの? (w

わざと間違った方向に考える為に知恵を絞ったんじゃないの?w
真性の低能だからそういうのがパッと思いついたの?w

936 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 02:26:48.68 ]
ブルドック.wavとチワワ.wavとドーベルマン.wavを集めたら
立派な鳴き声データベースですが?

937 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 02:57:11.15 ]
データベースの定義はたった一つだけ「データの集まり」であること

補足すると、データの種類は問わない、集めた個数も問わない
定義の中にデータの種類や個数を限定する言葉は一切出てきてないんだから当たり前だね
つまり、PCMデータを集めてもいいってこと

ではここで問題
PCMデータを集めたwavファイルはデータベースか?

ヒント データが集まってればそれはデータベースだよ

938 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 03:05:59.71 ]
wavファイル一個でデータベースとか暴論すぎだろw

おはよう
こんにちは
こんばんは
こんな感じで三つあればデータベースだが

おはよう
これ一個だけを

”お”・”は”・”よ”・”う”
こう分けられるからデータベースだとか酷過ぎるだろw

誰がこんなゴミデータ再利用するの?w

データ・ベース
dictionary.goo.ne.jp/leaf/jn2/198592/m0u/
ベースの意味を学習しなさいw

PCMデータの一覧とかならデータベース足りえるが・・・
wavで使われる一つ一つのPCMに意味なんかないだろ?w
ゴミの集合じゃデータベースとは言えないんだよ
意味のあるデータの集まりである必要がある

939 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 03:12:29.63 ]
Microsoft Accessでテーブルを作り、無意味な16bitのデータをどんどん入れていきました
入っているデータに意味がないのでこれはデータベースではありません

これは○か×か?

940 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 03:16:44.61 ]
上の問いで作成した、無意味なデータの入ったAccessのファイルを別の人に見せました
内容が何かは伝えていません
このファイルを見た人はこれをデータベースだと思うでしょうか、違うと思うでしょうか



941 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 06:08:22.67 ]
>>935
>丸一日レスが無かったから顔真っ赤にして必死に考えてたんだと思ったよw

すごいなぁ、昼間に働くとか学校に行くとかの概念がないんだ…

>>>869で検索できればと言っているわけだがw

はぁ? そのレスが君のレスで >>898 に関連しているとエスパーしろと? ばかじゃゃねーの?

> 検索、再利用、何かの指針にできるここまで分かってれば特定の形で整理されて無いとDB足りえないと分かるよなw
> 後出しではなく、君が低能なだけだねww

検索、再利用、指針? どんどん後出しされるねぇ。
自分が >>898 で「この片方でも満たしていればデータベースと呼べるわけだが・・・」って書いたことを忘れたのかなぁ? (w

>それと君の言ってるwavの話なんてそもそもDBじゃないでしょww

そりゃそうだよ、DBじゃない例出してるんだから。
でも、君の >>898 の定義は満たしてるだろ?

>アルファベットの定義があるから、アルファベットの意味不明の文字列がDBになるなんて
>誰も言ってないわけだがwww
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
>わざと間違った方向に考える為に知恵を絞ったんじゃないの?w

ひょっとして、自画自賛?

>真性の低能だからそういうのがパッと思いついたの?w

そういう、自己紹介はいいから。

942 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 06:42:16.23 ]


943 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 06:57:01.65 ]
ぷ。←ボウリングしてる人

944 名前:デフォルトの名無しさん [2012/01/24(火) 10:21:26.30 ]
>>938
wavファイル一個でも、異なる複数の音声が入っていて、
それがユーザーにとって意味あるものでかつシークとかで
検索できるものであればDBと言えるんじゃない?

「おはよう」はこれ一個だけがユーザーにとって意味あるもので
あって、一文字づつ分けるひつようないし、
「おはようこんにちはぽぽぽぽーん」とかのデータから
単語を抜き取るルールがあればDBなんじゃないの


945 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 10:45:19.90 ]
どっちかってとそのインデックスがデータベースなのでは?

946 名前:デフォルトの名無しさん [2012/01/24(火) 13:42:31.73 ]
ここでは例えとして、インデックスではなくて、
I/OをDBMSが担っているということにしてはダメ?


947 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 15:30:28.17 ]
そろそろVBAの話しろよ

948 名前:デフォルトの名無しさん [2012/01/24(火) 15:30:28.97 ]
いつまでDBの話してんですか。ちょっとした質問でも すれ違いだと言って回答しないのに。

949 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 16:10:55.54 ]
俺データベース定義自慢は、こっちでどうぞ。

データベース
toro.2ch.net/db/

950 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 18:47:52.27 ]
>>941
>すごいなぁ、昼間に働くとか学校に行くとかの概念がないんだ…
すごいなぁ、真性のコミュ障が社会に出てると思われるとでも?w
それとも君のレスを見てコミュ障だと思われないとでも?w

検索、再利用、指針≒複数人数での使いまわしの必要条件
まぁ脳みそ腐ってる奴に言っても無駄なんだろうけどw



951 名前:デフォルトの名無しさん [2012/01/24(火) 21:34:50.36 ]
上司「12345−6789=の答えを33333になるにはどうすればいいか考えてきて^^」

俺新入社員の営業職でエクセルを使うよりも商品知識を付けたいのにエクセルの関数の問題出された
おまえら助けろ下さいおなしゃっす

952 名前:デフォルトの名無しさん [2012/01/24(火) 21:36:16.60 ]
あれ、スレ違いだったかな
エクセル総合にいってきます

953 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 22:16:24.40 ]
if a = 5556 than a = 33333

954 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 08:45:10.92 ]
シートを削除する際に

Sheets("シート名").Select
ActiveWindow.SelectedSheets.Delete

と普通にマクロの記録で書くと、
「選択したシートに、データが〜〜[削除]をクリックしてください]
というメッセージがでますが、それを出ないようにするか、
自動に[削除]をクリックすることはできますか?

955 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 09:04:43.39 ]
検索してから質問しろ

956 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 10:39:28.30 ]
>>954
Application.DisplayAlert = False

>>955
うぜぇバカヤロウは消えろ

957 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 18:50:05.47 ]
みんながちゃんと検索するようになったら俺の存在価値がなくなっちゃうだろ!


とか思ってるのかな〜

958 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 21:42:43.57 ]
質問です
RangeからCellsをFor Eachで取り出した時の順番は左上から右に向かうというのは保証されてるんでしょうか?
ヘルプかどこかに明記されていますか?

959 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 01:57:07.03 ]
>>958
MSDNだったかヘルプだか忘れたが、どこかで保証されないと書いてあるのを見た記憶があるが、実際は決まった順序だろ?
二次元配列に取り込めば、縦方向が先になるけど。

960 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 06:50:28.76 ]
>>958-959
Rangeの取り方しだいかもよ

単純な矩形の領域だと左上から横行って下に行くけど、
不定形の領域を指定するとそうじゃなくなった。

たとえば
For Each Cell in Application.Union(Range1,Range2)
だとRange1から先に処理するんで、
Range2の方がRange1より左上にあると全体としては左上からじゃなくなる。



961 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 07:16:22.31 ]
>>958
おれが見てるのは2010のヘルプだけど、
「For Each...Next ステートメント」の所にある
「コレクション」のリンクにある記載でどう?

962 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 12:56:18.30 ]
そもそもVBAのFor Eachって、順序保障してくれてるものなのか?

963 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 16:53:19.52 ]
メモリによるんじゃね

964 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 22:03:39.50 ]
>>950
反論できなくなったので、人格攻撃?

実にわかりやすい。(w

965 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 23:14:40.58 ]
コード4桁の数値プラス "-M" 及び "-W"のシートがあり、それを
新しいブックを作りそこに移動させようとしています。

それでマクロの記録で
Sheets(Array("5541-W", "5541-M")).Select
Sheets("5541-M").Activate
Sheets(Array("5541-W", "5541-M")).Move
というのができたんで、それを直して
array_string = sc & "-W," & sc & "-M"
Sheets(Array(array_string)).Select
Sheets(Array(array_string)).Move

.Select のところで←インデックスが有効範囲にない
というエラーが出ます。
どのように直せば良いんでしょうか?


966 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 23:54:18.01 ]
>>965
それだと、"5541-W,5541-M"になってしまうな。
Array(sc & "-W", sc & "-M")
このように、Array関数の個々の引数になっている事が重要かと。

967 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 00:02:58.70 ]
>>966
深夜にお付き合いいただきありがとうございます
エラーも直りました。



968 名前:デフォルトの名無しさん [2012/01/27(金) 00:13:20.74 ]
ADOで取得したデータ20万件を、65000行単位で複数シートにすべて出力したい場合
"CopyFromRecordset dbRes 65000"という風に書いてループさせているのですが、
2枚目以降の出力になると途端重くなります。
他に高速コピーできる手段はありますか?

969 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 05:26:21.74 ]
>>968
画面の書き換え、再計算、イベント、全部切ってる?
あとExcel2010に乗り換えれば分割する必要なくなるよ

970 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 08:54:25.58 ]
CopyFromRecordsetか忘れたけど、知る限りDBからの貼り付けではそれが一番高速。
その場合、貼り付け行数分ずつの取得になると思う。
答えになってないけど何やったか書いてくれないと答えようがないなぁ



971 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 08:55:24.16 ]
書いてあった!ゴメン!

972 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 09:08:42.04 ]
Excel VBAから、ワードを開いて文書を加工するとこまで一気に処理したいです。

@Excel VBAから開いたワード文書についているマクロ呼び出して実行させることは可能でしょうか?

Aもし@がだめなら、Excelでワード文書をWordマクロと同じようなことをさせるマクロが可能でしょうか
  (または、コマンドが詳しく書いてあるサイトを教えてください。
具体的には、以下のWordマクロをエクセルVBAで記述したく。
1.Selection.Paste                   ・・・エクセルVBAでクリップボードに入れたのを貼り付け

2.Selection.Find.ClearFormatting          ・・・文字列AAAAが書いてある行探す

With Selection.Find
.Text = "value=""AAAA"""

End With
Selection.Find.Execute

 3.Selection.MoveDown Unit:=wdLine, Count:=7    ・・・文字列AAAAから、先頭行まで削除
 Selection.HomeKey Unit:=wdStory, Extend:=wdExtend

973 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 10:55:11.73 ]
マクロのブックを外部から開いてマクロを実行する時にコマンドライン引数の様に
引数を渡すのにVBSを使うやり方がありますが、WIN7(32bit)&EXCEL2010の組み合わせでも
可能でしょうか?
可能な場合その時に使うAPIの名前や構造はXP(32bit)と同じでしょうか?
もしくは、簡単にコマンドライン引数を受け取るやり方はありますでしょうか?

当方、XPとEXCEL2003しかなく現地作業をしなくてはいけないので情報を御願いします。

974 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 14:20:56.18 ]
>>972
できる。
適当にググって見つけたページ:
www.simple-sys.com/blog/vbamatome/vbamatome007/

975 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 14:22:21.02 ]
>>973
別のBookからパラメータ付きでそのマクロブックのマクロを実行するのでは駄目なの?

976 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 17:16:34.20 ]
>>975
レスありがとうございます。
別のマクロブックを用意して、そのブックで外部プログラムからのパラメータを受け取って、
目的のマクロを起動すると言うことでしょうか?
多分、私にはハードルが高そうな感じがします。

VBSに目的のマクロブックを起動するスクリプトを書いて、必要なパラメータを
渡すやり方は何度かやったことがあるので、この方法を採用しようと思ったのですが、
win7とexcel2010を扱ったことがないので質問しました。

977 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 19:34:06.14 ]
>>964
検索、再利用、指針≒複数人数での使いまわしの必要条件
議論ですらないから反論なんてあるわけないね

↑これ無視してる都合の良い脳みそだから人格攻撃位されるだろw

978 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 00:58:23.24 ]
>>977
>指針≒複数人数での使いまわしの必要条件

>>934
> て言うか、複数のユーザーとか何回もアホみたいに書いてるが、一人で使う
> データベースと言うものの存在も知らないのか?
> 例) 自分の蔵書を自分が見るためだけにデータベース化してる奴など。

わざわざ例まで書いてあるのに、アホ過ぎ。

979 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 01:20:13.55 ]
>>978
基本複数人数で使う物だけどなw
同じシステムで作るから、名前そのままにしただけだろ

で、他に何かいえる事有るの?てか、別に複数人で使わないでも言うってURLまで
貼ってこっちから示してるわけだがw
そんなんだからコミュ障言われるんだよ

980 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 08:23:08.58 ]
>>979
指摘されたら 「基本」とか、アホ過ぎて議論にもなってない。

> 別に複数人で使わないでも言うってURLまで
> 貼ってこっちから示してるわけだがw

示してるレス番書いてみな。



981 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 17:38:41.07 ]
>>980
URLで検索かけろよカスがw

982 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 17:45:24.08 ]
何だ、やっぱり書けないのか。
想像通りの回答乙。

983 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 19:43:27.31 ]
>>982
スレに検索もかけられない奴は何も書き込む権利無いんだ。
残念ながら、コミュ障や園児レベルの馬鹿と認定されてスルーされるのが2ch

984 名前:デフォルトの名無しさん [2012/01/28(土) 19:51:14.84 ]
>>983とその相手の連中

>949がDB板に誘導してるのに
それに気付かずなのか無視してるのか知らんが
いつまでも板違いの罵り合いをしてるお前さん達全員が
コミュ障や園児レベルの馬鹿だと思うよ
DB論議やりたきゃそれにふさわしいところで好きなだけやれよ
ここでするのはスレ違いだし板違いだ

985 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 20:45:09.63 ]
>>984
エクセルがDBかどうか・・・
まぁDB関連の一覧じゃなくてキチンと誘導すべきだったなw

そも単発で書きなぐっただけのお前とコミュニケーション自体取ろうとしてないがなw
無視された=コミュ障なんだな
「お前の中では」

986 名前:984 [2012/01/28(土) 20:57:55.61 ]
いや、俺この件について書き込むのは初めてだったんだが・・・
自分に意見言う奴はみんな同一人物かよ
本物のコミュ障だなお前

987 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 20:59:27.52 ]
>>986
んじゃ、まともに誘導してないのも知らないのに適当に書きなぐってみただけなんだな
屑だなw

988 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 21:03:55.89 ]
>>986
誘導してる奴と同一人物には見えても
DBの定義が分からないの馬鹿にされて暴れてる馬鹿とは同一人物認定してないわけだがなw
被害妄想酷過ぎるな

まぁsageすら知らんカスは書き込むなよw

989 名前:984 [2012/01/28(土) 21:10:34.37 ]
>>987
まず勝手に同一人物認定した事とかの反省は一切無いの?
まぁそういう人だからこんなことやってんだろうけど。

で、誘導がまともかどうかは君と俺では見解が違うとしか言いようが無いな。
DB板で自分でスレ立てして好きなだけ語れというつもりだったんだが
(多分>>949もその程度の意図しかなかったと思う)
スレ立ててから誘導してほしいなんて
ドンだけ甘えんぼさんなんだよw
付き合いきれんわ

990 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 21:20:51.29 ]
>>989
やっぱり同一人物なんじゃねーか

DB定義知らん奴と同一人物だとはだれも認識してないと思うが
被害妄想酷過ぎだな

それと
sageすら知らんカスは書き込むな
sageすら知らんカスは書き込むな
sageすら知らんカスは書き込むな
sageすら知らんカスは書き込むな
sageすら知らんカスは書き込むな
sageすら知らんカスは書き込むな

コミュ障はこんな基本を教えてもらっても全て聞き流すんだよな



991 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 21:21:39.60 ]
>>983
権利とかばかじゃねーの?

> スルーされるのが2ch

「 お・前 」 がスルーできてないし (w

992 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 21:25:16.42 ]
>>984
DB板なんかに誘導するなよ、それこそ迷惑だ。

このやり取りをDB議論と思うようなら、ちょっとにちゃんから
はなれて世間の常識を取り戻した方がいいぞ。

単に、アホが一人暴れてるだけだろ。

993 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 21:25:42.99 ]
>>991
真性のコミュ障ばかり集まってるなw
スレ内検索してから出直して来い、お前の意見に耳を傾ける奴は誰も居ない
まともに対応してもらいたいならまず検索を覚えろw
これも2ch利用する為のマナーの部類だな

994 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 21:32:14.86 ]
>>992
同意。
上で何度か出てるが「議論ですらない」

995 名前:984 [2012/01/28(土) 21:37:15.69 ]
>>990
>やっぱり同一人物なんじゃねーか

意味分からん
俺は949氏じゃない
意見が同じだってのと同一人物だってのは別物だぞ

949氏がDB板へのリンク張ってて、
君らはそっち行くべきだと俺も思ったから984を書いたんだよ。
だから(多分>>949もその程度の意図しかなかったと思う)
って書いただろ
俺が949氏ならこんなこと書かねーよ
被害妄想も大概にしとけ

で、sageについてはどうでも良い
このスレはsage推奨でもないし、
もうすぐ1000行くスレであげた所でたいした実害も無いからな。
あと、第三者が冷静に見たらsageない事と
ここでDB論議してる事とどっちが痛いかは一目瞭然なんで、
目立つようにわざとあげてるってのもある

996 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 21:40:24.90 ]
>>995
「議論ですらない」
議論に見えるなら眼科行けw

それと誘導するなら暴れてる馬鹿一人なんだが・・・
DBの定義辞書でひいて張り付けてあるのに、DBスレの一覧に誘導して何になるの?w

997 名前:984 [2012/01/28(土) 21:41:21.65 ]
>>992
ごめん、悪かった
DB論議として適当かどうかは別として
やるんならDB板だろって思ったんだが、
確かにこんなの押し付けられたらDB板の人も気の毒だな


998 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 21:43:28.19 ]
次スレたてるならIDつけて

999 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 21:53:12.74 ]
>>993
また、スルーできなかったね。

レス番も書けないし、そうやってごまかすしかないもんな。(w

まあ、このスレも終わりだ、良かったな。

1000 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 21:54:36.99 ]
>>999
カスの自覚はあったのねw



1001 名前:1001 [Over 1000 Thread]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<283KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef