Excel VBA 質問スレ Part22
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2011/11/27(日) 22:36:18.7802 http://pc11.2ch.net/test/read.cgi/tech/1168308855/
03 http://pc11.2ch.net/test/read.cgi/tech/1180192018/
04 http://pc11.2ch.net/test/read.cgi/tech/1189814602/
05 http://pc11.2ch.net/test/read.cgi/tech/1197448064/
06 http://pc11.2ch.net/test/read.cgi/tech/1205231499/
07 http://pc11.2ch.net/test/read.cgi/tech/1212587819/
08 http://pc11.2ch.net/test/read.cgi/tech/1219673793/
09 http://pc11.2ch.net/test/read.cgi/tech/1228372971/
10 http://pc12.2ch.net/test/read.cgi/tech/1235332603/
11 http://pc12.2ch.net/test/read.cgi/tech/1241885130/
12 http://pc12.2ch.net/test/read.cgi/tech/1247566074/
13 http://pc12.2ch.net/test/read.cgi/tech/1254281104/
14 http://pc12.2ch.net/test/read.cgi/tech/1262748898/
15 http://pc12.2ch.net/test/read.cgi/tech/1271261239/
16 http://hibari.2ch.net/test/read.cgi/tech/1280045912/
17 http://hibari.2ch.net/test/read.cgi/tech/1289182437/
18 http://hibari.2ch.net/test/read.cgi/tech/1298240666/
19 http://hibari.2ch.net/test/read.cgi/tech/1305754555/
20 http://hibari.2ch.net/test/read.cgi/tech/1312435844/
前スレ:
Excel VBA 質問スレ Part21
http://hibari.2ch.net/test/read.cgi/tech/1316931607/
0002デフォルトの名無しさん
2011/11/27(日) 22:37:24.79★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)
0003前スレ980
2011/11/27(日) 22:40:56.31URLとかテンプレとか間違ってたらごめん。
あと、話を遮って質問したけども、関係ない話はやめたほうがいい。
だって、俺がスレたてなきゃいけなくなtt(ry
0004デフォルトの名無しさん
2011/11/27(日) 23:19:04.690005デフォルトの名無しさん
2011/11/27(日) 23:22:10.17前スレの最後はうんこくんが荒らして大変だったねw
ILの直腸注入だったっけ
0006デフォルトの名無しさん
2011/11/27(日) 23:27:38.33スルー推奨 >> 各位
0007デフォルトの名無しさん
2011/11/27(日) 23:28:32.99また荒れるからやめとけ
0008デフォルトの名無しさん
2011/11/27(日) 23:55:43.05やり方教えてくれ
A
1 100
2 200
3 300
ここで、A1〜A3に「表1」という名前をつける
つぎにA4に、400という数値を入力すると
A1〜A3の範囲だった「名前:表1」が自動的に「A4」まで拡張される
みたいなことやりたいんだけどどうやればいい?
0009デフォルトの名無しさん
2011/11/28(月) 00:20:00.95名前の範囲をカレントリージョンのものに付け直せば?
0010デフォルトの名無しさん
2011/11/28(月) 00:31:53.27Private 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で設定するだけ
すきな用に直してくれ
0011デフォルトの名無しさん
2011/11/28(月) 04:51:18.01> 変数 X に例えばA1〜A20の数値の和、合計を入れたいのですが。
という質問をして
> X = WorksheetFunction.Sum(Worksheets("Sheet1").Range("A1:A20"))
というアドバイスをいただいたのですが、この一文を経過したあとで、
ファンクションプロシージャで定義された語句を使うとエラーか、上手く作動しなく
なってしまうのですが、なにかそのようなルールがあるのでしょうか?
0012デフォルトの名無しさん
2011/11/28(月) 07:25:32.21Offset(,1)とOffset(0,1)ではどちらが一般的でしょうか?
0013デフォルトの名無しさん
2011/11/28(月) 07:30:48.54うーん。
状況が見えないから何とも言えないけど、
�@何か別に理由がある。
�A合計対象セル範囲に足せない文字列とかが含まれている。
�B合計対象セル範囲がシート枠を超えている。
�CILとの直交性
あたりが原因なんじゃないかな。
0014デフォルトの名無しさん
2011/11/28(月) 07:39:44.44そこを省略しちゃうと、Offset知らない人に
NullやVbNullString辺りが入ることが許されるのか、
勝手に0が入るのかコードから見て取れないから、
前者は余り一般的とは呼べないと思う。
一般的、可読性が高いのは後者じゃない?
0015デフォルトの名無しさん
2011/11/28(月) 11:15:08.97俺は0は書かないな。
こんな簡単なものに可読性もへったくれもないと思うし。
ところで省略を嫌う人ってResizeで
With Range("A1").Currentregion
.Resize( ,2)
End With
これを下のように略さずに書くのかな?
With Range("A1").Currentregion
.Resize(.Rows.Count ,2)
End With
0016デフォルトの名無しさん
2011/11/28(月) 11:30:47.07Excelのバージョンは?
2007以降ならテーブル(構造化参照)使えばいいんじゃないの?
0017デフォルトの名無しさん
2011/11/28(月) 12:16:00.19amazonの中古で売れに売れて、もう高額の出品者からしか買えなくなりました。
すでにレアものです。
0018デフォルトの名無しさん
2011/11/28(月) 13:15:28.02一般的って意味が、どう書く人が多いかって話なら
Offset(,1)やResize( ,2) って書く人が多いと思う
可読性に関して言えば、省略しない方が高いのはたしかではあるが
どっちにしろOffsetやResizeが何をするか、引数は何かが解らないと使えないので
大差がないと言えばまあその通り
だがたとえばこの例だと、Offsetは省略した値は0だけど、Resizeは省略した値はゼロではない
俺ならOffsetは0であることを明示的に示しときたいので省略しない
Resizeは変更しないことを明示的に示しときたいので、あえて書かない
0019デフォルトの名無しさん
2011/11/28(月) 17:53:47.27新装版あるけど
002017
2011/11/28(月) 19:39:03.82新装版のことを言っておるにょだ
0021デフォルトの名無しさん
2011/11/28(月) 21:54:24.65s(0) = "aaa"
Debug.Print s(0)
これがなぜ通るのか理解できません。
0022デフォルトの名無しさん
2011/11/28(月) 22:08:26.22どこがどう問題だと思うの?
0023デフォルトの名無しさん
2011/11/28(月) 22:15:17.18どこがどう問題と思ってると思う?
0024デフォルトの名無しさん
2011/11/28(月) 23:29:09.18C言語に置き換えたらなんとなくわかるんじゃないか?
0025デフォルトの名無しさん
2011/11/28(月) 23:32:05.60VBAの配列はインデックスの最大値を書く
Dim s(1)だとs(0)とs(1)の2個になる
0026デフォルトの名無しさん
2011/11/28(月) 23:32:32.36つい、今確認したけど、普通に、Amazonで定価で買えるよ。
Amazonでは、常に人気書籍を定価以上の価格で出品している業者が張り付いている。
普段は売れないけど、たまたまAmazonの在庫が切れたときにアクセスして、、
「まずい、もうレアものになってしまったんだ」って勘違いして買う人が居るからだって。
0027デフォルトの名無しさん
2011/11/29(火) 00:42:34.48そうでしたか。
それはすばらしいです。
ところでVBAじゃなくExcelの関数のほうも
こういうサンプルがた〜くさん載ってる実用的な本は
ないものでしょうか?
0028デフォルトの名無しさん
2011/11/29(火) 07:58:26.67ありがと、やっぱそうなのか。ググっても"要素数を指定"って書いてるのが多くて悩んだ。
久しぶりにVBA触ると色々謎仕様に直面して驚く。
0029デフォルトの名無しさん
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
曲はここから入れ子にしたいのだけど、最初の曲が流れない・・・
0030デフォルトの名無しさん
2011/11/29(火) 19:15:51.93つまりcnt=1でmusicChangeを呼び出すことはないわけだが
0031デフォルトの名無しさん
2011/11/29(火) 21:31:14.11If 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をクリックで消すのでこの処理だけど
もっとスマートにならんかのー。
0032デフォルトの名無しさん
2011/11/29(火) 21:39:18.52んで、ループで回してcntに一致している奴だけplayで後は全部close。
0033デフォルトの名無しさん
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
0034デフォルトの名無しさん
2011/11/29(火) 21:45:14.470035デフォルトの名無しさん
2011/11/29(火) 22:53:27.13標準モジュールに書いてれば糞コードだけど一応それで動くはず。
Sheet2以外のシートモジュールに書いてあればRangeとCellsの親(シート)が違うので動かない。
正しくは
Sub SetRows()
With Worksheets("Sheet2")
.Range(.Cells(2, 2), .Cells(5, 5)).EntireRow.Value = "hoge"
End With
End Sub
とCellsにもシートの修飾をつける。
0036デフォルトの名無しさん
2011/11/29(火) 23:39:35.49なるほど、なるほど
ありがとうございます!!
Sheet2以外のシートモジュールに書いてます。
インターネットのサイトを見て勉強し始めた段階なので
糞コードなのは申し訳ないです。
勉強になりました!
0037デフォルトの名無しさん
2011/11/30(水) 22:44:11.50自分で定義したConstなどなどが
入力補完されることに今更気がついた。
しかも標準モジュールにつけた名前なんかも
入力補完の対象なのね。
処理時間は落ちるかもしれないけど、
標準モジュール名.モジュール名〜などで
明確に定義付けすると意味が通ってメンテが楽になりそう。
0038デフォルトの名無しさん
2011/12/01(木) 10:32:45.430039デフォルトの名無しさん
2011/12/01(木) 13:45:12.97004038
2011/12/01(木) 15:48:27.730041デフォルトの名無しさん
2011/12/01(木) 15:53:42.14VBAでそういうコードを書けば良い
OK?
0042デフォルトの名無しさん
2011/12/01(木) 16:48:51.030043デフォルトの名無しさん
2011/12/01(木) 22:06:18.25How meny files? な世界も偶には良いよね。
0044デフォルトの名無しさん
2011/12/01(木) 22:28:00.06Dim DesktopPath As String
Dim ShellObject As IWshRuntimeLibrary.WshShell
Set ShellObject = New IWshRuntimeLibrary.WshShell
DesktopPath = ShellObject.SpecialFolders("Desktop")
これでデスクトップのパスは得られるから、後は好きなようにやればよろし
0045デフォルトの名無しさん
2011/12/02(金) 00:53:27.340046デフォルトの名無しさん
2011/12/02(金) 12:00:59.070047デフォルトの名無しさん
2011/12/03(土) 11:02:53.92004846
2011/12/03(土) 11:15:11.770049デフォルトの名無しさん
2011/12/03(土) 15:46:49.14これお勧めだよ。
http://ec2.images-amazon.com/images/I/413NNoUiCoL._SL500_AA300_.jpg
0050デフォルトの名無しさん
2011/12/04(日) 00:43:59.63∧_∧
( ´・ω・`) ∧_∧
/ \ ( )何言ってんだこいつ
.__| | .| |_ / ヽ
||\  ̄ ̄ ̄ ̄ / .| | |
||\..∧_∧ (⌒\|__./ ./
||. ( ) ~\_____ノ| ∧_∧
/ ヽ 空気読めよ \| ( )
| ヽ \/ ヽ. オマエ馬鹿だろ
| |ヽ、二⌒) / .| | |
.| ヽ \∧_∧ (⌒\|__./ /
0051デフォルトの名無しさん
2011/12/04(日) 03:36:25.49あるいはLongにしないとだめ?
あらまDate型もあるのね。絶対にDateにしないとだめ?
0052デフォルトの名無しさん
2011/12/04(日) 08:00:58.14用途による
IntegerでもByteでもお好きな型をどうぞ
2011/12/4はシリアル値だと40881だけど、必要な範囲はプログラムの作者にしかわからないから
0053デフォルトの名無しさん
2011/12/04(日) 09:46:54.70Integerだと32000位までじゃなかったか?
0054デフォルトの名無しさん
2011/12/04(日) 10:45:24.69なんですか?
0055デフォルトの名無しさん
2011/12/04(日) 11:08:24.36activecell=10
activecell.offset(1,0).activate
activecell=10
これ結果は同じですよね?どちらがどういう理由で好ましいですか?
0056デフォルトの名無しさん
2011/12/04(日) 11:23:59.67NumberFormatLocalプロパティ
使用中のWindowsの国別情報に従った言語の書式記号が表示される
NumberFormatプロパティ
Exel既定の言語(英語)に従った言語の書式記号が表示される
基本、NumberFormatLocalを使っておけばOK
0057デフォルトの名無しさん
2011/12/04(日) 11:26:58.13なるほどよくわかりました。
Localは地球の地域という意味でのlocalだったんですね。
Thank you.
0058デフォルトの名無しさん
2011/12/04(日) 14:20:50.44あと、date型に日付だけを代入して使ってるときって時間の情報もたとえば0:00:00みたいなのがダミーで入ってるの?
逆の場合も疑問。(時間を代入したときは日付も入ってる?もしそうならそのときの日時は?)
0059デフォルトの名無しさん
2011/12/04(日) 14:25:25.95いちいち他人に聞いてたら
出来るもんも出来んよ
0060デフォルトの名無しさん
2011/12/04(日) 17:33:23.31> あと、date型に日付だけを代入して使ってるときって時間の情報もたとえば0:00:00みたいなのがダミーで入ってるの?
> 逆の場合も疑問。(時間を代入したときは日付も入ってる?もしそうならそのときの日時は?)
なぜ試さん?
006158
2011/12/04(日) 17:38:50.350062デフォルトの名無しさん
2011/12/04(日) 17:45:44.12VBA力とか言ってる時点でみんなより自分が格下なのに気付けよ
006358
2011/12/04(日) 18:27:48.04006458
2011/12/04(日) 19:36:00.70こら、それはオレのセリフだ
ニセモノめが
0065デフォルトの名無しさん
2011/12/04(日) 21:03:36.560066デフォルトの名無しさん
2011/12/04(日) 21:15:48.150067デフォルトの名無しさん
2011/12/05(月) 15:49:51.74その色をRGB(x,y,z)で表すときのx,y,zの値を取得するにはどうすればいい?
0068デフォルトの名無しさん
2011/12/05(月) 15:59:54.97C = Range("A1").Interior.Color
R = C And &HFF
G = (C \ &H100) And &HFF
B = (C \ &H10000) And &HFF
0069デフォルトの名無しさん
2011/12/05(月) 23:11:21.16Excelを用いてオークションのシミュレーションをしたいのですが、そのためには何について学ぶべきですか?
参考となる書籍やサイトをご存知でしたら教えていただきたいです
現在、どうやらExcelでオークションのシミュレーションができそうだ、ということを知ったレベルです
よろしくお願いします。
0070デフォルトの名無しさん
2011/12/05(月) 23:46:22.60Sub オークションシミューション()
Dim a As Integer
a = Int(Rnd * 100 + 1)
If a <= 20 Then
ActiveCell = "あなたは入札に性交しました"
Else
ActiveCell = "あなたは入札に失敗しました"
End If
End Sub
0071デフォルトの名無しさん
2011/12/05(月) 23:54:05.05> Excelでオークションのシミュレーションができそうだ、ということを知った
どこで知ったのか知らんけど、そこで聞けよ。
0072デフォルトの名無しさん
2011/12/06(火) 00:19:38.14それはExcelでシミュレーションをできるということを知って、自分のやろうとしてることも恐らくできるだろうと判断しました
どこかの掲示板で聞いた、というわけではないんです
0073デフォルトの名無しさん
2011/12/06(火) 00:25:40.24> Excelでシミュレーションをできるということを知って
だから、どこで知ったんだよ。
て言うか、他人と会話したことないのか?
0074デフォルトの名無しさん
2011/12/06(火) 01:00:52.64まずオクのシミュレーションはどんな作りにしたいのかをフローにして、
その後VBAでどう言ったコードにすればいいかを
考えればいいんじゃないかな
0075デフォルトの名無しさん
2011/12/06(火) 01:21:45.52何から手を付ければいいかわからなかったので、とても参考になりました
ありがとうございます
0076デフォルトの名無しさん
2011/12/06(火) 12:27:07.14VBAからネットワーク認証を行うにはどうすればよいのですか?
007767
2011/12/06(火) 13:35:25.49あなた頭いいですな
脳ミソ詰まってる
わたしにも分けてくれ
0078デフォルトの名無しさん
2011/12/06(火) 21:38:46.64でもできることもあるみたいだし。
でもそれを忘れてるか気にしないでいるとエラーが出ることもある。
どなたかこのしくみはどうなってるか教えてくれませんか?
非常に困っております。
0079デフォルトの名無しさん
2011/12/06(火) 21:55:14.09でも、同じ操作で無くてもある程度は融通が利くよ。
って感じじゃね?
うまく動かなくて困ったら実際の操作を真似させる、で十分かと。
深く悩んだところで、MSの中の人すら完全に理解しているかどうか怪しいし。
0080デフォルトの名無しさん
2011/12/06(火) 22:39:11.97特定のシートオブジェクトを明示的に取得して、activate せずに、そのシートに対して操作することは可能
activate しないと使えない機能もあるが、どちらかというとレアじゃないかと思う
問題はマクロの記録とかで記録したコードについては activate前提のコードの書き方になっているということで、
記録したコードをそのまま使い回したいなら、アクティベートしたほうが無難だとは思う
0081デフォルトの名無しさん
2011/12/06(火) 23:47:01.44Excelを[X]で閉じようとしたときに
2回ボタンを押さないといけなくなりやがった。
これを防ぐ方法ある?
0082デフォルトの名無しさん
2011/12/07(水) 06:47:38.01大村あつしさんの参考書使ってる
4月までには使えるようになりたい
プロ野球の選手成績を管理したいんだ
野球ゲームの成績まとめでも使いたいし
0083デフォルトの名無しさん
2011/12/07(水) 08:39:20.32なんてメッセージ出てんの?
0084デフォルトの名無しさん
2011/12/07(水) 19:26:41.10メッセージはなにも出ないんだ。
みんなも個人用マクロブックを作ってたらそうなってるんでしょ?
0085デフォルトの名無しさん
2011/12/07(水) 19:27:27.27http://yuzuru.2ch.net/test/read.cgi/gamespo/1323059897/14-
あなたはこの人ですか?
0086デフォルトの名無しさん
2011/12/07(水) 20:52:36.60activateしないとできないのは、copyメソッドとかpastespecialメソッドとかでしょ
他にもあったっけ
なぜできないのか、この辺の理屈がどうも分からないんだよな〜
0087デフォルトの名無しさん
2011/12/07(水) 21:12:04.89なぜそういう仕様になってるかおわかりのかたいらっしゃいますか?
0088デフォルトの名無しさん
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
0089デフォルトの名無しさん
2011/12/08(木) 00:05:42.28パージョンいくつ?
.OnAction = "'setColor(34)'"
又は
.OnAction = "'setColor 34'"
じゃないかな?(シングルクウォートで括る。)
ちなみに複数の引数を渡したい時は、自分の知ってる限りでは
.OnAction = "'setColor 34,4'"
とかでうまくいくハズ
0090デフォルトの名無しさん
2011/12/08(木) 02:25:45.46仕様の理由はわからんけど、動作見る限りエクセルVBAって
人が操作する動作をトレースしてるだけだから
手動で出来ないことはVBAでも出来ないってコトでいいんじゃね?
だからコピーもペーストもシートをアクティブにしないと出来ないと。
0091デフォルトの名無しさん
2011/12/08(木) 09:27:07.74VBの機能も使えるから出来ることは同じじゃない
0092デフォルトの名無しさん
2011/12/08(木) 12:48:05.58Sub 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はあるのにな
どうせ操作対象をちゃんと指定してないから、アクティブシートが対象になってるだけだろ
アクティブじゃないとできない操作の実例教えてくれ
0093デフォルトの名無しさん
2011/12/08(木) 14:00:27.280094デフォルトの名無しさん
2011/12/08(木) 19:50:51.44実際に使われる環境で正しく動けば、それで良いじゃん。
0095デフォルトの名無しさん
2011/12/08(木) 22:05:52.74できました!ありがとうございました。
バージョンは2003と2007です。
0096デフォルトの名無しさん
2011/12/08(木) 22:14:25.21本体プロシージャはシンプルそのもの、
そしてプロシージャから他のプロシージャを呼び出しまくるような
かっこいいプログラミングがしたいです。
そんなスキル (=プロシージャを呼び出しまくるスキル) を学ぶに特化した学習用の本があれば紹介していただけますか?
0097デフォルトの名無しさん
2011/12/09(金) 06:29:49.64わからないことがあったので質問させてください
VBAを使って
1、2500、5000、7500
の4つの数字をランダムで選ぶ
そしてこの動作を繰り返す
というプログラムはどうやって書けば良いのでしょうか
よろしくお願いします
0098デフォルトの名無しさん
2011/12/09(金) 06:43:25.560099デフォルトの名無しさん
2011/12/09(金) 06:54:05.47すいません
できるか出来ないかだけでも教えていただけますか?
この4つをMT乱数を用いて選び出したいんです
そしてこの試行を繰り返す、という動作です
0100デフォルトの名無しさん
2011/12/09(金) 07:12:39.98乱数を取得
乱数の3の余剰を求める
前記余剰を配列番号に与えてアタイを撮る
0101デフォルトの名無しさん
2011/12/09(金) 07:17:25.61乱数を取得
乱数の3の余剰を求める
前記余剰を配列番号に与えてアタイを撮る
アタイをLogに出力
の上記をひたすら気が済むまでLoopする
0102デフォルトの名無しさん
2011/12/09(金) 07:46:34.640〜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がいるけど。
0103デフォルトの名無しさん
2011/12/09(金) 07:52:19.50もちろん「できる」
ところでVBAの乱数って内部アルゴリズムは公開されてたっけ?
MT乱数の使用が必須条件なら自分で乱数発生プログラムも書く必要があるかも
0104デフォルトの名無しさん
2011/12/09(金) 08:03:45.92で
ヤホーでググればたくさん落ちてる
ちなみにワシは100-101だが
ボケてた。
3の余剰じゃなくって4の余剰だ
0105デフォルトの名無しさん
2011/12/09(金) 08:06:06.37C言語の基本的なことはわかるので、配列で出来そうです
乱数は自分でプログラム書かなくても大丈夫だったような……
わからないことだらけなのでまた質問することもあるかとは思いますが、その時はよろしくお願いします
今回は皆さんのおかげで解決出来ました
ありがとうございます
0106デフォルトの名無しさん
2011/12/09(金) 09:09:25.31C言語の基本なことがわかってる奴が >>97 みたいな質問するのか?
と、思った奴は俺だけじゃないと思う。
0107デフォルトの名無しさん
2011/12/09(金) 10:43:42.62正式には公開されてないけど、どこかで解析されてたぞ。
MT乱数ならExcelで使えるdllがある。
なんか64bitのWindowsでは使えないみたいだが。
PtrSafeかましてもうまくいかん。
0108デフォルトの名無しさん
2011/12/09(金) 10:46:17.930109デフォルトの名無しさん
2011/12/09(金) 20:35:25.180110デフォルトの名無しさん
2011/12/09(金) 21:43:02.26'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)
http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/VERSIONS/BASIC/mt19937arVBcode.txt
0111デフォルトの名無しさん
2011/12/10(土) 01:13:56.71すいません
実はVBA触るのは今回が初めてでなにが出来てなにが出来ないのかがまるでわかってないんです
基本Cと同じく考えて良いんですかね
0112デフォルトの名無しさん
2011/12/10(土) 01:31:07.91まじめにCが普通に使える奴なら、VBA はマージン見ても一週間もあれば
それなりに使えるようになると思う。
ポインタは使えない (異論ある人もいるだろうけど、あえて言い切る) けど、
構造体もあるし、似たようなもんだと思っていい。
0113デフォルトの名無しさん
2011/12/10(土) 01:48:34.83Cが使えるか?と言われると中々自信が無いですけどね
基本は学んだことがあるので、コードを見てなにが書いてあるか位なら何となくはわかるかと
おかげで少しやる気がでました
とりあえずやりたいことに関する参考書でも探してみようと思います
0114デフォルトの名無しさん
2011/12/10(土) 10:31:40.78> コードを見てなにが書いてあるか位なら何となくはわかるかと
自分で書いたことはないってこと?
読めるのと書けるのの間はそれなりにある (例えば小説考えればわかるでしょ) ので、
一週間じゃ難しいかも。
幸いなことに VBA はネットにも本屋にも山ほど情報はあるから、じっくりがんばれ。
0115デフォルトの名無しさん
2011/12/10(土) 12:09:19.41そんなわけあるか
「多倍長」でぐぐれ
0116デフォルトの名無しさん
2011/12/10(土) 12:10:05.050117デフォルトの名無しさん
2011/12/10(土) 12:35:07.22変数の型は
integerやlongやは使わず
すべてdoubleにしていいですか?
0118デフォルトの名無しさん
2011/12/10(土) 12:54:57.600119デフォルトの名無しさん
2011/12/10(土) 12:58:11.55プログラムが複雑になってくると、最小限に切り詰めた方が計算は速くなるんだけど
そういう質問をするレベルなら大したプログラムは作らんだろうから、たぶん大丈夫
0120デフォルトの名無しさん
2011/12/10(土) 13:03:28.160121デフォルトの名無しさん
2011/12/10(土) 14:11:46.85>文章と違ってコードは書くより読む方が難しいと思うんだけどなあ
読むと言う意味が違うんじゃない?
俺は、例えば I = I + 1 がどういう動作かわかるのを読むと言ってて、
貴方はプログラム全体がどういう動作するかをl理解することを読むと
言ってるんじゃない?
0122デフォルトの名無しさん
2011/12/10(土) 15:52:32.15いま手元にあるVBAの本には定数のことについての説明が1ページもない。
変数は
Dim a as Integer
だけど、
定数は
Const a=3.14
みたいな感じ?
それとも
Const a as Double = 3.14
みたいに書くんだっけ?
0123デフォルトの名無しさん
2011/12/10(土) 16:43:38.17Public Const shisuu As Integer = 0
Public Const sakimono As Integer = 4
0124デフォルトの名無しさん
2011/12/10(土) 16:48:13.30日本語入力の文字化け現象についてはVBAではどうにもならないと聞きました。
クリップボードを経由してもダメでした。
何か良い方法は無いでしょうか?
0125デフォルトの名無しさん
2011/12/10(土) 17:16:54.060126デフォルトの名無しさん
2011/12/10(土) 17:23:31.690127デフォルトの名無しさん
2011/12/10(土) 20:02:53.99ありがとうございます。
SendMessageについて色々調べてみましたが、今一理解できません。
失礼は重々承知ですが、使い方を教えて下さいませんか?
とりあえず、Yahooトップページの検索ボックス(既にフォーカスされているものとして)に
下記の文字列を送信するコードを教えて下さい。
"日本語で入力します。"
よろしくお願いします。
0128デフォルトの名無しさん
2011/12/10(土) 20:36:01.01Const a=3.14
みたいな感じ?
それともこう?
Const a as Double = 3.14
0129デフォルトの名無しさん
2011/12/10(土) 20:41:52.19>>0x7B
0130デフォルトの名無しさん
2011/12/10(土) 20:57:48.09>>&H80
>>&H7B
じゃね?
01310x81
2011/12/10(土) 21:30:56.65ExcelVBAで組み込みCの色々なテーブルとかマクロ作って生活の足しに
しているんでな。
つーかワークシートの位置指すのにヘキサで書く理由がわからないですが
そういう仕事の人はいますか?(居たら事例を聞きたい)
01320x81
2011/12/10(土) 22:16:12.22まぁ、ワシのティンコは言うこときかないんですけどね。元気すぎて
0133デフォルトの名無しさん
2011/12/10(土) 22:36:49.98Sub yahoo_search()
Dim objIE As Object
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True
objIE.navigate ("http://yahoo.co.jp")
Do While objIE.ReadyState <> 4
DoEvents
Loop
SendKeys "日本語で入力します。"
SendKeys "{ENTER}"
End Sub
0134デフォルトの名無しさん
2011/12/11(日) 00:00:06.36>>124はどういう状況なんだろう
0135デフォルトの名無しさん
2011/12/11(日) 00:13:24.16ってことかな
表示がバグるだけで内部データは問題ないんじゃね
01360x81
2011/12/11(日) 00:20:33.700137デフォルトの名無しさん
2011/12/11(日) 00:30:15.04>>134
すみません!完全に私の記述ミス&勘違いです!!
エクセルファイルの各内容を変数に取得して、
社内システムにフォーカスを移して入力を試みています。
半角文字列や数字は問題なく入力できるのですが、
全角文字列(日本語)をSendkeysで送っても文字化けしてしまうのです…
文字化けしないようにするにはSendMessageを使う必要があるって聞きましたが、
使い方がよく分かりません。お手数掛けてすみませんが、ご教授お願いします。
0138デフォルトの名無しさん
2011/12/11(日) 00:31:36.91え、そうなんですか?
月曜日に確認してみます!
ありがとうございます!!
0139デフォルトの名無しさん
2011/12/11(日) 00:46:38.45全角文字とSendKyesの組み合わせだと、
入力したい全角文字列をクリップボートにコピーしてから、SendKeys で Ctro+V のみを送るって方法がある
0140デフォルトの名無しさん
2011/12/11(日) 00:54:48.00ありがとうございます。
でも、 ^V って何故だか動作しませんでした…
0141デフォルトの名無しさん
2011/12/11(日) 00:56:06.62なるほど
みんな苦労してるんだなあ
うちもツギハギのWEBアプリで四苦八苦してるよ
十何年もかけて機能の拡張やバージョンアップを繰り返してるから画面のデザインとか操作体系がめちゃくちゃになってる
支店が全国に一万店以上あるからうっかり大幅に変更すると再教育のコストもかかるしどうにもならなくなってきてる
0142デフォルトの名無しさん
2011/12/11(日) 01:15:47.91何度も試してるとできることもあるけど、再現条件がわからん
Sleepで待ち時間を入れてもDoEventsをはさんでも同じ
半角だと貼れるのに全角は貼れない
わけがわからん
0143デフォルトの名無しさん
2011/12/11(日) 01:19:34.660144デフォルトの名無しさん
2011/12/11(日) 01:45:06.76VBAのSendKeysではうまくいかないけど、VBSのSendKeysならうまくいくことがわかった
以下のサンプルはクリップボードにデータを設定する部分で警告が出るけど、そこは問題の本質じゃないので無視してくれ
Sub yahoo_search()
Set IE = CreateObject("InternetExplorer.application")
IE.Visible = True
IE.navigate ("http://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
0145デフォルトの名無しさん
2011/12/11(日) 07:23:03.30SendKeysなんか使わずにDOM操作した方がよくない?
例えば>>133のコードを拝借すると、SendKeysの2行をこんな風にする
objIE.Document.getElementById("srchtxt").Value = "日本語で入力します。"
objIE.Document.getElementById("srchbtn").Click
対象がすでに表示中のIEだと捕まえるのがちょっと面倒だけどね
0146145
2011/12/11(日) 07:25:19.851行目
っていうか相手がIEだったら(>>124)
↓
っていうか相手がIEだったら(>>124は「社内システム」としか書いてないからわからんけど)
0147デフォルトの名無しさん
2011/12/11(日) 09:07:00.03[Sheet1]
Private Sub Worksheet_Calculate()
Worksheets("Sheet1").操作()
End Sub
という事を実現したいが、シート名は可変です。
で、
Private Sub Worksheet_Calculate()
ActiveSheet.操作()
End Sub
という例を見かけますが、この場合 ActiveSheet が Sheet1 という保証はあるのでしょうか。
(手元にExcelがないのでコードは不正確かもしれません)
0148124
2011/12/11(日) 09:16:05.26お返事が遅くなりすみません。
社内システムはIEではありません。
.exeファイルです。
…VBSのSendkeysとか想像もしてませんでした。
DataObjectでクリップボードに格納して、VBSのSendkeysを試してみます。
いずれにせよ、月曜日じゃないと確認できませんが。。。
何度もアドバイス下さり、本当にありがとうございます!
また、結果などをご報告いたします。
0149デフォルトの名無しさん
2011/12/11(日) 10:35:28.06ブックの"Sheet1"という名前のシートに操作をするなら
For i = 1 To ActiveWorkbook.Sheets.Count
If ActiveWorkbook.Sheets(i).Name = "Sheet1" Then
操作
End If
Next
にしたらいかがでせうか
0150149
2011/12/11(日) 10:36:30.35取り消してくらはい
0151デフォルトの名無しさん
2011/12/11(日) 11:31:08.05>という例を見かけますが、この場合 ActiveSheet が Sheet1 という保証はあるのでしょうか。
当然そんな保証はない。
「シート名は可変です。」と書いてあるが、ではソノシート名はいつどこで指定するのか?
あらかじめ指定しておくと言うなら、
Dim SheetName As String
Private Sub Setup( )
SheetName = "Sheet1"
End Sub
Private Sub Worksheet_Calculate( )
Worksheeets(SheetName).操作( )
End Sub
でいい。
Sheet1 がないケースなどがあるなら、適切なエラー処理が必要。
0152デフォルトの名無しさん
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
の方が (個人的には) よりいいと思う。
0153デフォルトの名無しさん
2011/12/11(日) 11:40:53.64Worksheet_Calculateイベントはアクティブシートがどこにあっても発生する可能性があります
シートモジュールの中で自分自身に対して何か処理をしたい場合はシート名を書かなければ良いだけです
[Sheet1]
Private Sub Worksheet_Calculate()
操作() ' ←これだけ
End Sub
0154デフォルトの名無しさん
2011/12/11(日) 12:27:23.26変なエラーが起こらない。
For I = 1 To Worksheets.Count
If Worksheets(I).Name = "Hoge" then
'やりたいことやる
endif
Next
0155デフォルトの名無しさん
2011/12/11(日) 12:31:01.24すんまそん、アンカ忘れてた。
今からカリ首吊ってくる
シート番号指してシート名取得してその名前が欲しいシート名と一致ならば処理すれば?
変なエラーが起こらない。
For I = 1 To Worksheets.Count
If Worksheets(I).Name = "Hoge" then
'やりたいことやる
endif
Next
0156デフォルトの名無しさん
2011/12/11(日) 15:20:43.60上書き保存時、セーブ前に行列番号を消し、保存後、行列番号を再度表示させたいです。
ビュアーで見る時に番号を消したい、という意図です。
とりあえず調べた限り、以下でいいと思ったのですが以下の問題点でつまずいています。
・そもそも保存されない
・ブックを閉じようとすると上書き保存するか聞かれるが保存するを選んでも何度も同じことを聞かれる。
いいえかキャンセルのみで抜けられる。
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
0157デフォルトの名無しさん
2011/12/11(日) 15:59:31.16環境が無いんで確認できないけど、
ThisWorkbook.SaveがWorkbook_BeforeSaveを誘発してるでしょ。
自分で聞いてやるしかないと思うよ。
Msgbox("保存しますか?",vbYesNo)
Yesなら
Application.DisplayAlerts = False
ThisWorkbook.Save
Application.DisplayAlerts = True
メッセージは、Ctrl+S時に表示しちゃまずいから、
BeforeCloseで保存確認しちゃった方がいいかもね。
まぁ結局はWorkbook_openで
DisplayHeadings = True '行列番号表示
しちゃう方が簡単だと思うんだ。
0158デフォルトの名無しさん
2011/12/11(日) 16:09:24.49Saveの直前にイベント抑止してみるとか
Application.EnableEvents = False
ThisWorkbook.Save 'セーブ。できてない?
Application.EnableEvents = True
ただ、保存されたものは常に行番号なしになるのでopen時には再度行番号有効化してやるとかの考慮は必要になる
あと、実際に保存された直後、
.DisplayHeadlings = True
の行でおそらく編集扱いになるので、ただ閉じようとしても必ず
保存しますか?
と聞かれてしまうのは仕方ないように思える
0159デフォルトの名無しさん
2011/12/11(日) 16:13:35.98返信ありがとう!
上司からのオーダーなもんで出来るだけ対応したいんだけどねぇ。
Ctrl+Sでやりたいから、必ずしもウィンドウを閉じる時ばかりじゃないもんで。
俺もこれを聞く前に閉じるときにセーブ前に非表示→開くときに表示というふうに
したんだけどそれだとダメらしい
出来ればCtrl+Sとかでも対応できるようBeforSaveでやりたいが……
自前の保存マクロでやるしかないかな……
0160デフォルトの名無しさん
2011/12/11(日) 16:21:54.14>.DisplayHeadlings = True
>の行でおそらく編集扱いになるので
ThisWorkbook.saved=Trueでどう?
0161デフォルトの名無しさん
2011/12/11(日) 16:23:43.56こっちもありがとう!
イベントの抑制・・・そういうのもあるのですね。参考にしてみる。
開くときに表示ON自体は_OpenでしてやればOKですね。実際それはもう仕込んであるので。
しかし、なるほど、結局、表示消すのが編集扱いになってるから何ども聞かれるのか。
そりゃそうだわな……
0162デフォルトの名無しさん
2011/12/11(日) 17:45:20.24遅れたがサンクス。
とりあえず各アソバイスを入れた結果、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をいれてます。
0163デフォルトの名無しさん
2011/12/11(日) 20:16:58.40EXCEL2000ならあったから入れてみた。
http://ideone.com/tn9oN
出来てるとは思うけど、
割と脆弱なロジックなので、限られた範囲での使用に留めるべき。
仕事であれば別にボタンを用意するかな。
0164デフォルトの名無しさん
2011/12/11(日) 22:57:32.48Saved=Trueが必要かな
0165147
2011/12/11(日) 23:51:37.67>>149-155
ありがとうございました。勉強になります。手元にExcelが無いので明日試させて頂きます。
が、理解を超えている点があるので再質問させて下さい。
>>153
> シートモジュールの中で自分自身に対して何か処理をしたい場合はシート名を書かなければ良いだけです
その場合、省略された自分自身を表わす記法はどのようになりますか?
例えば、自シートをローカル変数に代入したいとか。(他モジュールで使い回したいような目的で)
[Sheet1]
' Set SelfSheet = Worksheets("Sheet1") 相当をシート名無しで実現するには?
Dim SelfSheet As Worksheet
Set SelfSheet = ' ThisWorksheet と書きたいが。
0166デフォルトの名無しさん
2011/12/12(月) 00:26:16.12俺はそんな時 Me を良く使うお
Set SelfSheet = Me
0167デフォルトの名無しさん
2011/12/12(月) 00:31:30.30VBAを使って、
Aというセルに数値を入れた時に、BというセルにそのAに入れた数値によって様々な値を出力する
というのを作りたいのですが、どうすればいいのでしょうか
0168デフォルトの名無しさん
2011/12/12(月) 01:24:37.73セルBにセルAを参照する数式を記述する
0169デフォルトの名無しさん
2011/12/12(月) 01:24:46.11mnock = 1: hno = 1の
:ってどういういみなんですか?
代入を一行に書いたわけではないんですよね・・・
0170デフォルトの名無しさん
2011/12/12(月) 01:56:23.330171デフォルトの名無しさん
2011/12/12(月) 01:59:19.61そうなのか・・・特殊記号かとおもってしまいました
ありがとう
0172デフォルトの名無しさん
2011/12/12(月) 09:47:18.15範囲指定をして何か処理(ソートとか)した後、その選択範囲が選択されたままになってしまいますが、それを解除する命令
とかってありますか?
何処かのセルを選択すればそれが解除されはするんですが、それとは別に言ったような選択を解除するようなものがあるのか
?と思いまして。
0173デフォルトの名無しさん
2011/12/12(月) 10:21:17.050174デフォルトの名無しさん
2011/12/12(月) 10:23:20.77やっぱり無いですかね w
0175デフォルトの名無しさん
2011/12/12(月) 11:18:55.59OS:Windows 7 Ultimate 64bit SP1
Excelのバージョン:Office 2007 Personal SP3
A1-A10までのセルのいづれか1つに*が入力されたら、それ以外のA1-A10のセルを空にしたいです。(排他?)
※A1-A10のうち、*が入力されているのは常に1つの状態にしたいという事です。
よろしくお願いします。
0176デフォルトの名無しさん
2011/12/12(月) 12:02:31.09A1〜10に入力があったら他排除
えんどサブ
0177175
2011/12/12(月) 12:35:42.16すみませんが、貴方の言う「A1〜10に入力があったら他排除」が分からないと質問をしているのです。
回答する気がないのであれば、中途半端なレスはいりませんよ、176さんも暇じゃないでしょうから。
0178デフォルトの名無しさん
2011/12/12(月) 12:43:30.40>>2
0179デフォルトの名無しさん
2011/12/12(月) 13:07:20.85おまえの態度が気に入らない
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
0181デフォルトの名無しさん
2011/12/12(月) 13:16:48.650182デフォルトの名無しさん
2011/12/12(月) 14:02:21.15サンクス。かなり参考にさせてもらった。
でもブックを閉じた時、保存ではいを押しても保存出来ないっぽい。2007の差でもあるのか
ちなみに皆さん、マクロ配布するときどうしてます?
エキスポートでcls出してインポートで使わせようと思ってもthis bookに書かなきゃうまくうごかなかった。そもそもVBAわざわざ開かせるのも微妙で。
0183デフォルトの名無しさん
2011/12/12(月) 14:16:59.61Application.CutCopyMode = False じゃないのか?
>>182
プログラムの入ってるブックとデータの入ってるブックは別にして
配布はプログラム用のEXCELブックを丸ごと配布する
0184デフォルトの名無しさん
2011/12/12(月) 14:24:08.140185デフォルトの名無しさん
2011/12/12(月) 14:33:16.67smalltalkという言語が有名
0186184
2011/12/12(月) 14:39:05.330188デフォルトの名無しさん
2011/12/12(月) 15:41:17.73宿題なら自分でやりな
俺が聞く時に雰囲気悪くなったらどーすんだ!
0189デフォルトの名無しさん
2011/12/12(月) 15:54:57.590190デフォルトの名無しさん
2011/12/12(月) 17:16:44.250191デフォルトの名無しさん
2011/12/12(月) 18:27:00.97>>2
>★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み、
> コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
> ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ
と書いてあるんだが 読んだのか?
0192デフォルトの名無しさん
2011/12/12(月) 18:35:15.73当たりまえです
>>187を聞いてるのに関係ない話で誤魔化さないでください
わかりもしない、答える気もない屑が掲示板を荒らすのは本当に不愉快です
0193デフォルトの名無しさん
2011/12/12(月) 18:36:47.910194デフォルトの名無しさん
2011/12/12(月) 18:41:50.97偽者乙
0195デフォルトの名無しさん
2011/12/12(月) 18:43:55.770196デフォルトの名無しさん
2011/12/12(月) 19:39:03.96そのコードを今までのに追記するだけなんだし。
ここでやり取りしてる時間の方が無駄でしょ
0197デフォルトの名無しさん
2011/12/12(月) 19:51:40.07使えないものもあるよ。そういう時はEvaluateを使うみたいだけど。
0198124
2011/12/12(月) 20:29:23.23解決策は意外な盲点にありました。
私はSendkeysはApplicationクラスのものを利用していましたが、
(こっちの方が安定性が高いらしいので)
普通のSendkeysを使用したら文字化けしませんでした。
それからメニュー等を操る時は、大文字入力だと失敗することが多いですね。
いずれにせよ、親身にアドバイスを下さった皆さん、
本当にありがとうございました。
0199デフォルトの名無しさん
2011/12/12(月) 20:38:26.96なんでメソッド?と微妙にひっかかっていたがそういうことか
0200175 ◆txEbeGmJyg
2011/12/12(月) 20:47:44.09すみません。
他にExcelのVBAスレが見当たらなかったもので、勝手は承知で質問してしまいました。
>>196
失礼ですが、このスレの回答側の人はその程度のレベルなんですか?
>>179
さきほど、.Clearの所を= ""にしたら、できました。
あえて、勉強のために.Clearを使って書いてくれたのかな?
0201デフォルトの名無しさん
2011/12/12(月) 21:09:47.600202175 ◆txEbeGmJyg
2011/12/12(月) 23:31:06.38私が言っているのは>179さんに対してではなくて、>196さんの発言に対してです。
>179さんのコードは綺麗だと思います。
.Clearメソッドを使った意図が、私に学習させるためなのかなと思っただけです。
なので、>179さんには感謝はすれど文句はありません。
0203175 ◆txEbeGmJyg
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さんか分かる方いたら教えてください。
どうかよろしくお願いします。
0204175 ◆txEbeGmJyg
2011/12/12(月) 23:48:55.32Dim strRowPosA as String
Dim strRowPosN as String
strRowPosA = A
'
'ここで、strRowPosAを数値にして、strRowPosNに入れたいということです。
'その変換方法がないかなと。
'
If c = strRowPosN And r <= 10 Then
0205デフォルトの名無しさん
2011/12/12(月) 23:50:01.500206175 ◆txEbeGmJyg
2011/12/12(月) 23:50:34.30スレ伸ばしてすみません。
誤)Dim strRowPosN as String
正)Dim strRowPosN as Integer
0207デフォルトの名無しさん
2011/12/13(火) 00:11:04.02既に聞く態度じゃないとと取られてんだし、誰も真面目に答えないよ?
0208175 ◆txEbeGmJyg
2011/12/13(火) 00:20:56.52失礼ですが、どこがスレチなんでしょうか?
>>2の>★5と指摘されたので、調べつつ少しなりとも自分でやっているんですけど。
聞く態度じゃないというのも具体的に分かりませんが、改めて私のできる範囲で丁寧な
言葉でレスしているのですが。
ちなみに、誰も答えないとおっしゃられていますが、それは貴方の推測ですよね。
事実、もしそうであれば>>178でレスが止まっているはずですが、>>179氏はちゃんと指摘
とレスをしてくれましたよ。
質問者の立場で何ですが、一言あなたに言わせていただくと、あなたは回答できないので
はないですか?
基本2chて自分が嫌だと思ったらスルー推奨ですよね。
それで結果的にスマートではないと思うのですが、26進数変換の関数を作って対処(仮)しました。
もしもっと、いい方法を知っている方いらっしゃいましたら、教えていただけると助かります。
0209デフォルトの名無しさん
2011/12/13(火) 00:23:31.37スレチ?
0210デフォルトの名無しさん
2011/12/13(火) 00:26:48.210211デフォルトの名無しさん
2011/12/13(火) 00:37:20.63トモダチ
0212デフォルトの名無しさん
2011/12/13(火) 00:41:06.610213デフォルトの名無しさん
2011/12/13(火) 00:41:27.05Sub 例題()
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
で型が一致しないとでるのですがどうすればよいでしょうか
0214デフォルトの名無しさん
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
0215デフォルトの名無しさん
2011/12/13(火) 00:44:37.64○ Dim n As Integer
× Dim n As String
授業はちゃんと聞こうね
0217デフォルトの名無しさん
2011/12/13(火) 00:55:07.20>>196ですら君は及ばないレベルだと自覚出来ない時点でもうね
0218デフォルトの名無しさん
2011/12/13(火) 00:56:20.86ありがとうございました^^
0219147
2011/12/13(火) 02:19:10.83ありがとうございます。まとめます。
<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.操作()
とすると良い。
0220デフォルトの名無しさん
2011/12/13(火) 09:41:54.02このことをオブジェクト指向のことを十分には理解していない人に
200文字以上で説明してくださいませんか?
0221デフォルトの名無しさん
2011/12/13(火) 13:54:02.76>十分には理解していない人
どこのどいつだ?
Deutschでもよければ400字くらいで?
0222220
2011/12/13(火) 14:52:35.87ここのオレだ。
I'd rather prefer English than Deutsch.
0223デフォルトの名無しさん
2011/12/13(火) 16:22:00.160224デフォルトの名無しさん
2011/12/13(火) 18:22:12.32そのうち昇順で並べて一番最後の文字列だけを取り出す方法はどうしたらいいですか?
0225224
2011/12/13(火) 18:22:47.09シートの数は、ファイルによりいつくあるかはわからないの。
0226デフォルトの名無しさん
2011/12/13(火) 18:42:32.06Sub 最後のシト()
s = ""
For Each ws In Worksheets
If ws.Name > s Then s = ws.Name
Next
Debug.Print s
End Sub
0228デフォルトの名無しさん
2011/12/13(火) 19:33:23.34Visioで下記の図を作成しようと思っています
A→ F→Z
B→↑
・Aに値が入ると、F・Zにも値が入る
・Bに値が入ると、F・Zの値がクリアされ、Aに値が入っている場合はAに値が入っている状態を維持。Bをクリアすると、上記と同じA・F・Zに値が入る
ここまではVBAで作成できたのですが、これを
・(Bに値が入っていない状態で)Aの値をクリアしてもF・Zの値をそのまま維持
にしたいのですが、値を維持するためにFにstaticを宣言してもうまくいきません。
そもそも、Staticでいいのかすら、迷ってきて・・・値を維持できるうまいやり方はないでしょうか
0229デフォルトの名無しさん
2011/12/13(火) 23:04:26.04お前>>176?
それとも>>213?
>最後のシトとかいらっとくるからやめろ。
0230デフォルトの名無しさん
2011/12/13(火) 23:21:13.61226
が
213
のボケをかますとは思えない
つーか一々煩いからお前が黙ってろ
0231デフォルトの名無しさん
2011/12/14(水) 00:23:42.59オブジェクトを部品として利用することは出来るが
既存のオブジェクト(クラス)を継承して新たな部品を作ることは出来ない
0232デフォルトの名無しさん
2011/12/14(水) 00:37:17.98ごめんなさーいw
0233デフォルトの名無しさん
2011/12/14(水) 09:33:54.08Rows("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 とすると構文エラーになってしまいます
行を変数にするのはどのようにしたら良いんでしょう?
0234デフォルトの名無しさん
2011/12/14(水) 09:42:02.74↓
Rows(i & ":" & endrow).Delete Shift:=xlUp
0235デフォルトの名無しさん
2011/12/14(水) 09:52:48.73ありがとうございます
0236デフォルトの名無しさん
2011/12/14(水) 18:54:02.39ついでに言うと、Rowsに対するDeleteは常にxlUpだからShift:=xlUpは不要
0237デフォルトの名無しさん
2011/12/14(水) 21:04:31.60言われてみたら確かにそうですね w
0238デフォルトの名無しさん
2011/12/14(水) 21:33:37.600239デフォルトの名無しさん
2011/12/14(水) 22:21:48.02分割された領域なら下からとか右からで削除しないと面倒だけど、
連続の領域をまとめて消すんなら別にどうでも良いんじゃね?
0240デフォルトの名無しさん
2011/12/14(水) 22:59:06.37数字、名前のペアが複数あって、数字をキーにすると名前が取り出せて、
名前をキーにすると数字が取り出せる連想配列のようなものを作りたいのですが、
VBAではどのようにすると効率的でしょうか?
それぞれ、一意的にペアが決まっています。
0241デフォルトの名無しさん
2011/12/14(水) 23:06:34.94Scripting.Dictionary オブジェクトを2つ用意して、
一方は数字をキー、もう一方は名前をキーと使い分ければいい
0243デフォルトの名無しさん
2011/12/16(金) 00:14:21.90セルの値を数値処理する場合vbsから操作するのとvbaから操作するのだとどちらが計算早いですか?
0244デフォルトの名無しさん
2011/12/16(金) 00:15:16.830245デフォルトの名無しさん
2011/12/16(金) 00:19:32.00腐っても型付言語であるVBAの方が速いと思う。
やり取りが多い場合はインプロセスとアウトプロセスの
越えられない壁があるからVBSに勝ち目無し。
0246デフォルトの名無しさん
2011/12/16(金) 00:32:28.930247デフォルトの名無しさん
2011/12/16(金) 08:03:26.05数の集合が{1, 2, 3, 4, 5}つまりx=5でy=3の場合だと
毎回
2, 3, 5
1, 2, 4
3, 4, 5
みたいに5個の数のうちランダムに3つ選び出す、というアルゴリズムです
0248デフォルトの名無しさん
2011/12/16(金) 08:13:33.97問いの内容ならxCy個の中から乱数1つ
1なら(123)、2なら(124)……て形で割り振るアルゴリズムを通してゲット
重複や順列の内容で幅を変えればいい
0249デフォルトの名無しさん
2011/12/16(金) 15:55:35.00ここ参考にすればいいんじゃねーの
0250デフォルトの名無しさん
2011/12/16(金) 17:02:45.720251デフォルトの名無しさん
2011/12/16(金) 17:03:30.700252デフォルトの名無しさん
2011/12/16(金) 17:06:42.33恥かかせるためか?
0253デフォルトの名無しさん
2011/12/16(金) 17:07:54.02やってみりゃ分かるだろ?
0254デフォルトの名無しさん
2011/12/16(金) 17:08:28.00これだとエラーなんだけど
0255デフォルトの名無しさん
2011/12/16(金) 17:09:48.29これもエラーだった
0256デフォルトの名無しさん
2011/12/16(金) 18:10:19.05検索するとできるって書いてあるページもあるけど、サンプルをコピペするとエラー出るし
VBとVBAを勘違いしてんじゃないかと思う
要素数固定で宣言して、片方の次元だけReDimする方式の動的配列なら可能だけど
0257デフォルトの名無しさん
2011/12/16(金) 19:23:51.82Dim hoge() As String
ReDim hoge(10, 5, 3)
hoge(0, 0, 0) = "3次元"
Debug.Print hoge(0, 0, 0)
0258デフォルトの名無しさん
2011/12/16(金) 20:49:43.90思ってたのとちょっと違いますけどこれとpreserveで代用できそうだな
ありがとうございます
0259デフォルトの名無しさん
2011/12/17(土) 00:44:13.36現場では資料もなくネットも使えない環境なので手打ちをキツイです。
0260デフォルトの名無しさん
2011/12/17(土) 00:50:47.84いちいち定義しないとダメですが、WinAPIなら百科事典が発売されているのでそれを持ち込むという手も
あとはmsdnのオンラインヘルプ(CD-ROM版)を用意して、CのソースをVBAに書き換えるマクロとか用意すれば
なんとかなるでしょう
0261デフォルトの名無しさん
2011/12/17(土) 01:22:48.76GET / HTTP/1.1
Accept-Language: ja
Accept-Encoding: gzip
User-Agent: hoge (1.1.1)
Host: wwww.aaa.bb
0262デフォルトの名無しさん
2011/12/17(土) 01:34:28.67Accept-Language: ja
Accept-Encoding: gzip
User-Agent: hoge (1.1.1)
Host: wwww.aaa.bb
送るとこかいてませんでした
0263デフォルトの名無しさん
2011/12/17(土) 03:32:05.24WinInet関連のAPIを使う
HttpAddRequestHeadersしてHttpSendRequestかな?
WinHTTPライブラリ(WinInetの後継らしい)てのもあるが詳細はしらない
これ以上はスレチになるんで
ググるか APIのすれで聞いておくれ
0264デフォルトの名無しさん
2011/12/17(土) 04:19:21.00ネットのやりとりはいろんな方法がある
たぶん、こんな感じで行けると思う
Set oHttp = CreateObject("MSXML2.XMLHTTP")
oHttp.Open "GET", "http://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ソース)取得
0265デフォルトの名無しさん
2011/12/17(土) 09:44:20.71Set WS = Worksheets("記録")
Worksheets(WS).Activate ←
で、矢印の部分で型が一致しないって出るんですけど、String型でないと駄目ッてこと
ですか?
0266デフォルトの名無しさん
2011/12/17(土) 09:47:26.21WSName = "記録"
Worksheets(WSName).Activate
じゃないの?たぶん
0267デフォルトの名無しさん
2011/12/17(土) 09:52:46.36265の方法でもよいし、Object型(Worksheet型)で宣言したときは
Worksheets(WS).Activate
じゃなくて
WS.Activate
って書けば良い
0268267
2011/12/17(土) 09:54:36.29「265のやり方」じゃなくて「266のやり方」でした
0269265
2011/12/17(土) 09:55:52.47ありがとうございます
0270デフォルトの名無しさん
2011/12/17(土) 16:18:35.70できました!
ありがとうございます
0271デフォルトの名無しさん
2011/12/17(土) 18:21:08.96変数に値持たせてそれ変えなければいいだけじゃないの
0272デフォルトの名無しさん
2011/12/17(土) 18:35:36.34プロシジャ毎にPrivate変数に一々代入するのって面倒じゃない?
0273デフォルトの名無しさん
2011/12/17(土) 18:48:53.68普通の変数だと、その点が曖昧にならざるを得ないから、
後でソースを見返す時に面倒。
0274デフォルトの名無しさん
2011/12/17(土) 19:14:43.41ところでモジュール間でも定数は自由に使えますかにゃ?
標準モジュールとフォームモジュールを使ってた場合、
どちらかのモジュールの一番上に書いておけば、他方のモジュールをその時点で未使用でも、その他方の上のほうに書いてある定数は使用可能?
0275274訂正
2011/12/17(土) 19:16:32.05ところでモジュール間でも定数は自由に使えますかにゃ?
標準モジュールとフォームモジュールを使ってた場合、
どちらかのモジュールの一番上に書いておけば、他方のモジュールから実行が始まったとき、
書いてるほうのモジュールがその時点で未使用でも、その他方のモジュールから別のモジュールの上のほうに書いてある定数は使用可能?
0276デフォルトの名無しさん
2011/12/17(土) 19:36:50.610277デフォルトの名無しさん
2011/12/17(土) 19:37:56.980278デフォルトの名無しさん
2011/12/17(土) 19:39:29.49あなたのVBA力と回答力を試しているんですが
0279デフォルトの名無しさん
2011/12/17(土) 19:43:07.600280デフォルトの名無しさん
2011/12/17(土) 20:11:42.310281デフォルトの名無しさん
2011/12/17(土) 21:08:41.34どの方法が一番標準ですか?
自分は前者はCStr、後者はVal、でそれぞれやってますが、これって変?
0282デフォルトの名無しさん
2011/12/17(土) 21:25:43.32後、Val関数は何気に色々と面白い仕様だから注意した方が良いよ。
0283デフォルトの名無しさん
2011/12/17(土) 22:04:12.83自動型変換とは何ですか?
面白い仕様とはどういうことですか?
あにゃたの発言のほうが意味がいろいろ取れて神経を使います。
0284デフォルトの名無しさん
2011/12/17(土) 22:58:53.98いろいろな方法があるのにはそれなりに理由があるんだから
その時によって最適な方法を選べば良い
0285デフォルトの名無しさん
2011/12/17(土) 23:21:52.65文字列にする時はこんな自作ライブラリつかってる
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/
0286デフォルトの名無しさん
2011/12/18(日) 00:52:58.280287デフォルトの名無しさん
2011/12/18(日) 01:00:33.26なぜ標準的な機能がすでに存在してるのに
わざわざ自作ライブラリまで作るんですか?
つこてる豆が違うんですか?
0288デフォルトの名無しさん
2011/12/18(日) 01:13:53.110289デフォルトの名無しさん
2011/12/18(日) 01:18:30.500290デフォルトの名無しさん
2011/12/18(日) 01:50:27.77理由は変換でエラーが起きても統一した処理が書けるようにするため
ネタ本はVB6のエラー処理を解説してる本で、安全なプログラミングの
フレームワークのサンプルもある(285はその1つ)
個人的にツッコミを入れてたところへの解答がちゃんと書いてある本だったので、ExcelVBAでも使わせてもらってる
この本のライブラリと、「Excelプロフェッショナルエンジニアテクニック 」で
紹介されているアドイン:VBADeveloper.xla は自分が使うExcelVBA環境では
使いまわすようにしてる
0291デフォルトの名無しさん
2011/12/18(日) 02:45:14.73途中保存はしていませんでした、どうすればいいですか!!!
0292デフォルトの名無しさん
2011/12/18(日) 02:53:35.820293デフォルトの名無しさん
2011/12/18(日) 02:58:10.810294デフォルトの名無しさん
2011/12/18(日) 03:23:28.840295デフォルトの名無しさん
2011/12/18(日) 04:24:50.37おまえはこの1時間で金では買えない貴重な体験をした
明日からがんばれ
0296デフォルトの名無しさん
2011/12/18(日) 05:06:32.28Dim 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
0297296
2011/12/18(日) 05:07:21.63アドバイスいただけないでしょうか?
0298デフォルトの名無しさん
2011/12/18(日) 05:24:31.13ここ、
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
0299デフォルトの名無しさん
2011/12/18(日) 05:26:00.71これは、
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
0300デフォルトの名無しさん
2011/12/18(日) 05:28:57.05Copyの使い方がおかしい
Cells(a, "Y").Copy = Cells(a, "AA")
↓修正
Cells(a, "Y").Copy Cells(a, "AA")
または
Cells(a, "AA") = Cells(a, "Y")
0301デフォルトの名無しさん
2011/12/18(日) 08:50:31.31数値から文字列への変換って意味ではそれ単なる暗黙の型変換だね
0302デフォルトの名無しさん
2011/12/18(日) 11:21:49.50Sub Test()
ActiveSheet.ActiveCell = 1
End Sub
0303デフォルトの名無しさん
2011/12/18(日) 11:49:50.340304302
2011/12/18(日) 12:22:44.96でもActiveCellはsheet一般のプロパティじゃないの?
そしてActiveSheetはsheet一般に属するんじゃないの?
以上から、ActiveCellはActiveSheetのプロパティになるんですけど。
0305デフォルトの名無しさん
2011/12/18(日) 12:36:07.79http://officetanaka.net/excel/vba/tips/tips34.htm
これを見る限り、「ActiveCellはsheet一般のプロパティ」じゃないっぽい
(ちなみに俺は>>303じゃないよ)
0306デフォルトの名無しさん
2011/12/18(日) 12:41:09.09もしくは、一旦Sheet型に代入してからアクセスするとか。
0307デフォルトの名無しさん
2011/12/18(日) 14:27:30.83日付型の時って初期化はどうするんですか?
Dim hi_from As Date
で
hi_from = ""
としたら怒られちゃった^^;
0308296
2011/12/18(日) 14:27:36.53おかげさまで解決しました。 ご丁寧にありがとうございましたー
0309デフォルトの名無しさん
2011/12/18(日) 14:33:48.23>としたら怒られちゃった^^;
何のために初期化したいのか知らんけど、0 でも入れときゃいいんじゃね。
0310デフォルトの名無しさん
2011/12/18(日) 14:37:58.97thx
0311デフォルトの名無しさん
2011/12/18(日) 14:52:54.06この野郎!
おまえ何をやっとるんだ(怒)!!
みたいに怒られたのか?
それって誰によ?
0312デフォルトの名無しさん
2011/12/18(日) 14:57:58.13>でもActiveCellはsheet一般のプロパティじゃないの?
違う
ApplicationまたはWindowのプロパティ
>そしてActiveSheetはsheet一般に属するんじゃないの?
違う
Application、WindowまたはWorkbookのプロパティ
>以上から、ActiveCellはActiveSheetのプロパティになるんですけど。
ならないからエラー出るんだよ
0313デフォルトの名無しさん
2011/12/18(日) 15:00:13.09っていうかDimした時点で初期化されてるよ
0314312
2011/12/18(日) 15:04:30.79ActiveSheetが返すのはWorksheetオブジェクトね
0315デフォルトの名無しさん
2011/12/18(日) 15:05:10.06Excelのオブジェクトは階層構造になっている
Application - WorkBook(Application毎に複数) - WorkSheet(WorkBook毎に複数)
ActiveCell は最上位の Application オブジェクトのプロパティなので、Sheet オブジェクトから直接参照することはできない
やるならたぶん
ActiveSheet.Application.ActiveCell
となるはず
0316デフォルトの名無しさん
2011/12/18(日) 15:22:26.85http://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
0317デフォルトの名無しさん
2011/12/18(日) 16:00:58.06XXXXX.Activecell みたいな形はない、と覚えておいてOK?
そしてこれらの法則は、Activebookや、Activesheetにも当てはまる?
つまり、Workbooks(2).Activesheet みたいな形はない?
0318デフォルトの名無しさん
2011/12/18(日) 16:16:36.14ダメ
Application.ActiveCell
ActiveWindow.ActiveCell
>>312で「ApplicationまたはWindowのプロパティ」って書いたよね?
>>315とか>>316にも書いてあるよね?
>そしてこれらの法則は、Activebookや、Activesheetにも当てはまる?
法則とかの話じゃないし
>つまり、Workbooks(2).Activesheet みたいな形はない?
ある
>>312で「Application、WindowまたはWorkbookのプロパティ」って書いたよね?
0319デフォルトの名無しさん
2011/12/18(日) 16:31:28.44> XXXXX.Activecell みたいな形はない、と覚えておいてOK?
Type YYYYY
ActiveCell As Integer
End Type
Dim XXXXX As YYYYY
みたいなケースは (やるかどうかは別にして) ありえるから、ダメ。
0320デフォルトの名無しさん
2011/12/18(日) 16:34:27.34>じゃあActivecellの前には普通の人が使うような単語は書いちゃいけないのか?
ActiveCellプロパティを持つオブジェクトを書く
書かなければApplicationとみなされる
あと、とりあえず>>319は無視していい
0321デフォルトの名無しさん
2011/12/18(日) 16:51:48.87ActiveWindow
Application.ActiveWindow
この違いはなんなのでしょう?
誰か違いのわかる男(あるいは女)はいますか?
0322デフォルトの名無しさん
2011/12/18(日) 17:41:31.560323321
2011/12/18(日) 17:50:13.700324デフォルトの名無しさん
2011/12/18(日) 17:58:43.06前提として
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つは常に同一になるはず
0325デフォルトの名無しさん
2011/12/18(日) 18:32:16.70たとえば
Set ObjA = ActiveCell
Set ObjB = Application.ActiveWindow.ActiveCell
If ObjA = ObjB Then …
みたいな感じで
0326321
2011/12/18(日) 18:42:08.92ご丁寧なご説明ありがとうございます。
かなりわかってきたような気がします。
>>322のアホとは違いますね。
つこてる豆が違います。
こういう基本的とも思えることまで解説した本などがあればいいのにね。
0327デフォルトの名無しさん
2011/12/18(日) 19:02:29.27実際に試したら
書いているとおりのコードで調べることができましたよ。
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
0328デフォルトの名無しさん
2011/12/18(日) 19:06:04.93つ こ てる 魔 眼 が 違います の検索結果を表示しています。
Bingワロタw
0329デフォルトの名無しさん
2011/12/18(日) 20:41:28.74Debug.Print ActiveCell Is ActiveCell
の結果はFalse。さて理由は?
0330デフォルトの名無しさん
2011/12/18(日) 20:52:33.37ダウト。これ試してみ
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
0331327
2011/12/18(日) 21:22:50.30If objA = objB Then
でレンジを入れたオブジェクト変数を比較すると、
objAとobjBのValueで比較するみたいですね。
上記コードに
else
Debug.Print "違う"
を付け加えて、セルに違う値入れて実行したら"違う"になりました。
あとは例えば比較対象をobjA.AddressとobjB.Addressにすると"違う"と判別されましたし、
A1とB2で書式設定を違うものにしたら
objA.NumberformatとobjB.Numberformatの比較も"違う"という結果になります。
0332デフォルトの名無しさん
2011/12/18(日) 21:29:46.45ひょっとして、
ActiveCellが返すRangeオブジェクトは現在の選択座標をもとに都度新規に作成されるとかそういう話?
0333デフォルトの名無しさん
2011/12/18(日) 21:34:17.84Range("A1") Is Range("A1")
もFalseだね
0334デフォルトの名無しさん
2011/12/18(日) 21:39:41.65これ前から謎だったんたよな
正解を教えてくれると助かる
で自分なりに出した答えは
セルの参照先は一緒だけど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
0335デフォルトの名無しさん
2011/12/18(日) 22:45:17.52Set objA = Worksheets(1)
Set objB = Worksheets(1)
Debug.Print objA Is objB
これはTRUE
0336デフォルトの名無しさん
2011/12/18(日) 23:16:30.480337デフォルトの名無しさん
2011/12/18(日) 23:22:59.090338デフォルトの名無しさん
2011/12/18(日) 23:25:51.030340334
2011/12/18(日) 23:30:23.28シートオブジェクト だった
0341デフォルトの名無しさん
2011/12/18(日) 23:33:39.87「利用可能なコントロール」を制御する事は可能ですか?
制御は出来なくても利用可能か調べたりチェックされているかどうか調べる方法でも良いです
0342デフォルトの名無しさん
2011/12/19(月) 00:01:49.44あなたのVBA力と回答力を試しているんですが
0343デフォルトの名無しさん
2011/12/19(月) 02:24:24.73どうすればよいでしょうか?
HTMLDocument の HeightやWidthですと
IEのウインドウ幅と高さの取得になってしまいます。
0344デフォルトの名無しさん
2011/12/19(月) 02:30:36.62n = 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"と出てツリーが作成できません
0345デフォルトの名無しさん
2011/12/19(月) 02:46:08.200346デフォルトの名無しさん
2011/12/19(月) 03:14:42.050347デフォルトの名無しさん
2011/12/19(月) 03:20:57.96ご指摘通りでした
配列の内容を見直しましたところ同じKEYの物がありました
ありがとうございます
0348デフォルトの名無しさん
2011/12/19(月) 03:34:19.11scrollHeight, scrollWidth
0349デフォルトの名無しさん
2011/12/19(月) 04:23:13.62表示領域とは?
>>348 以外に
ClientWidth ClientHeight
もあるが
0350デフォルトの名無しさん
2011/12/19(月) 09:29:22.69Isってメモリのアドレスを比較してるんだよ。
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)
と同じ。
0351デフォルトの名無しさん
2011/12/19(月) 16:15:11.690352デフォルトの名無しさん
2011/12/19(月) 20:07:31.390353デフォルトの名無しさん
2011/12/19(月) 23:12:18.800354デフォルトの名無しさん
2011/12/19(月) 23:20:55.81>シートオフジェクトは最初からあるからだったりするのか?
多分そう。
Cell オブジェクトなんてものがあれば、Cells("A1") Is Cells("A1") が
True になるかもしれないけど、VBA には、Cell オブジェクトはなくて、
(*仮に単一のセルだとしても) 常にRange オブジェクトになってしまう。
Range オブジェクトは、当然範囲の情報を持つ必要があるので、
Obj = ActiveCell とやる度に、各々別の Range オブジェクトが「生成」される。
と言うのが、>>329 の答えだと思う。
0355デフォルトの名無しさん
2011/12/19(月) 23:21:41.47>public変数使わない方が良い理由が分からん
必要ない奴に見せたがることはないだろ。
0356デフォルトの名無しさん
2011/12/19(月) 23:23:37.89それでもやっぱりpublicには抵抗がある
0357デフォルトの名無しさん
2011/12/19(月) 23:32:17.870358デフォルトの名無しさん
2011/12/20(火) 01:07:18.25プログラムの規模が大きくなった時にバグの元になりやすいっていう経験則だよ
今はまだピンと来なくても、先人の言うことは聞いておいた方がいい
0359デフォルトの名無しさん
2011/12/20(火) 07:37:37.210360デフォルトの名無しさん
2011/12/20(火) 07:50:40.39メリット:小規模プログラムで受け渡しI/Fを考えなくて良い
デメリット:クラス間の結合度が問題になる(再利用しにくくなる)
位?
ところでVBAって
ユーザー定義型変数の参照渡しをプロシジャ引数で渡せたっけ?
もちろんPublicで型宣言しておいて。
なんだか言語仕様上ダメだった記憶がある。
変数クラスを定義してそのクラスのインスタンスをローカルで定義して
参照渡ししないとダメだった記憶もある。
なので、ユーザーフォームクラスとの受け渡しはPublic使った様な記憶
がある。
0361デフォルトの名無しさん
2011/12/20(火) 11:09:24.62矢切りの渡しでなら渡せる
0362デフォルトの名無しさん
2011/12/20(火) 13:33:28.48調べてもそれっぽいのでてこないけど
0363デフォルトの名無しさん
2011/12/20(火) 15:58:55.111,5,10,50,100
とあるとしても
1
10
100
5
50
となってしまいます
これを
1
5
10
50
100
のようにできないですか?
0364デフォルトの名無しさん
2011/12/20(火) 19:23:33.25だよな。それが心のこりだわ。
0365デフォルトの名無しさん
2011/12/20(火) 19:43:09.87自分でやったらダメでしたが、何か方法があれば教えてください。
0366デフォルトの名無しさん
2011/12/20(火) 20:27:23.480367デフォルトの名無しさん
2011/12/20(火) 21:16:35.69具体的には、シートで「=Function名(引数値)」って書いたんですが
Function中のSubが実行されないのが疑問になっています。普通に呼べますか?
0368デフォルトの名無しさん
2011/12/20(火) 21:36:46.560369デフォルトの名無しさん
2011/12/20(火) 21:45:52.54自分がしたいのは、ワークシートのA1をクリアする様なSubを
Function中から呼び出す様にして、そのワークシートで
=Function名(引数)
とA1以外のセルで書いて、シートのA1をクリアすることです。
0370デフォルトの名無しさん
2011/12/20(火) 21:51:56.350371デフォルトの名無しさん
2011/12/20(火) 21:58:53.06http://support.microsoft.com/kb/170787/ja
0372デフォルトの名無しさん
2011/12/20(火) 22:19:19.93おお、有難う御座います!そうか、できないのかぁ。セルの総和とかで
クリアするかどうかをFunctionで判定して消去、ってやりたかったなぁ。
0373デフォルトの名無しさん
2011/12/20(火) 23:17:07.48更新処理をフックにするくらいだろうなあ
0374デフォルトの名無しさん
2011/12/21(水) 03:41:16.16>ユーザー定義型変数の参照渡しをプロシジャ引数で渡せたっけ?
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で渡すことはできません
ってコンパイルエラーになった
できないのは値渡しと矢切りの渡しだな
0375360
2011/12/21(水) 07:31:46.89申し訳ないですが、言葉がごっそり抜けてました。
-----------------------------------------------------
(誤)
ところでVBAって
ユーザー定義型変数の参照渡しをプロシジャ引数で渡せたっけ?
(正)
ところでVBAって
標準モジュールでGlobal定義されたユーザー定義型変数の参照渡しを
標準モジュールからクラスモジュールのプロシジャに
プロシジャ引数で渡せたっけ?
-----------------------------------------------------
同一クラス内や標準モジュール内で渡せるのは知ってます(実際にできているので)。
標準モジュールからクラスモジュールのプロシジャに渡そうかなと思って書いたら、
VBAから怒られた。
解決方法は、
クラスモジュールにユーザー定義型変数だけPublic定義したクラスを定義して
そのクラスのインスタンスを標準モジュールに定義してからそのObjectを参照渡しする。
だけど、面倒なので、サクッと渡せないかなぁ、とおもっだだけです。
0376デフォルトの名無しさん
2011/12/21(水) 07:33:57.50Friendでいけたような記憶が
0377360
2011/12/21(水) 07:34:45.04矢切りの渡しって
「global宣言されたユーザー定義型変数を標準モジュールからクラスモジュールのプロシジャに参照渡しする」
の意味でしょうか?
隠語を良くしらないので(不勉強済みませんが)。
0378360
2011/12/21(水) 07:37:20.28Friendも試したけどダメだった様な記憶があります。
VBだと可能らしい(VBは使ったことないですが)。
というので混乱した覚えがあります。
0379デフォルトの名無しさん
2011/12/21(水) 08:19:02.97昔、矢切の渡しってヒット曲があっただけのおっさんジョークだからあまり真面目に受け取るなよ… w
0380360
2011/12/21(水) 08:23:29.73まぁ、ワシも40過ぎのおっさんですけどねw
0381デフォルトの名無しさん
2011/12/21(水) 16:50:38.27下記のコードを一度実行後にxlaファイルの配置場所が変わった場合、そのまま再度下記を実行すると、変更後のパスでAddしても、実際には変更前のパスのアドインが追加されます。(ファイルがないため関数実行部分でエラー)
Set myAddIn = AddIns.Add(パス.あどいん.xla)
myAddIn.Installed = true
アドイン関数実行
myAddIn.Installed = false
どうもエクセル→ツール→アドイン から、該当するアドインを手動で削除しないとパスの変更に対応できないのですが、どうにか自動で対応できないでしょうか。
AddしたxlaファイルをKillしてもダメでした。
ケータイからなので見にくければすみません。よろしくお願いします。
0382デフォルトの名無しさん
2011/12/21(水) 18:47:10.910383デフォルトの名無しさん
2011/12/21(水) 20:42:08.310384381
2011/12/21(水) 21:14:08.81OSはXPです……
0385381
2011/12/21(水) 21:15:50.460386デフォルトの名無しさん
2011/12/21(水) 22:05:49.760387デフォルトの名無しさん
2011/12/21(水) 22:17:31.77クラスモジュール(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だから、それ以前のバージョンではどうかしらんが、問題なさそうだ
具体的にどういうエラーが出てたのか気になる
0388360
2011/12/21(水) 23:13:55.10私は2003で駄目だったんですが、
VBA6.Xという意味では同じですかね?
ただ、やったのが2年位前だったんで?です。
ユーザー定義型のサイズが数10KBクラスなので
その辺が怪しいのかも?
ありがとうございました。
0389360
2011/12/21(水) 23:21:38.00String型がメンバに含まれてました。
サイズを指定してないので動的変数ということになるので
その辺も影響しているかもです。
それと、ユーザー定義型のメンバに他のユーザー定義型を含んでます。
エラーメッセージは・・・・忘れてしまいましたが、
何となく理由が分かった様な気がします。
ありがとうございました。
0391デフォルトの名無しさん
2011/12/22(木) 12:38:16.170392デフォルトの名無しさん
2011/12/22(木) 12:53:13.38どの言語でも組み合わせて使うという発想はあんまりないと思う
目的で使い分けるのが普通じゃないのかな
0393デフォルトの名無しさん
2011/12/22(木) 13:26:58.680394デフォルトの名無しさん
2011/12/22(木) 14:16:46.860395デフォルトの名無しさん
2011/12/22(木) 14:24:48.000396デフォルトの名無しさん
2011/12/22(木) 14:55:45.370397デフォルトの名無しさん
2011/12/22(木) 15:14:31.060398デフォルトの名無しさん
2011/12/22(木) 20:49:09.810399デフォルトの名無しさん
2011/12/22(木) 20:54:01.960400デフォルトの名無しさん
2011/12/22(木) 21:39:15.79> 演算処理は高速なCでやりたいとか
そんなこと思いつく奴の質問とは思えないが…
0401デフォルトの名無しさん
2011/12/22(木) 23:02:43.630402デフォルトの名無しさん
2011/12/22(木) 23:05:35.35>>399
>入出力にExcelのワークシートを使って、演算処理は高速なCでやりたいとか
ちなみにこれの実現方法としては、例えばどんなのがあるんですか?
0403デフォルトの名無しさん
2011/12/22(木) 23:37:59.06Excel VBAからDLL呼び出し
http://www.ne.jp/asahi/hishidama/home/tech/excel/dll.html
0404デフォルトの名無しさん
2011/12/23(金) 10:03:27.620405デフォルトの名無しさん
2011/12/23(金) 10:42:30.15>Fromに
それは難しそうだ、その From とやらを作っている会社に問い合わせるべき。
0406デフォルトの名無しさん
2011/12/23(金) 11:20:34.71Tips15: VBAでも出来る [ タイマーコントロール ] クラスモジュール (Ver 3.0)
http://www.h3.dion.ne.jp/~sakatsu/Excel_Tips15.htm
Fromってなんやねん w
Formだろ
0407デフォルトの名無しさん
2011/12/23(金) 11:28:49.53ブック作成
★ループ★
シート追加
ペースト
★ループ★
マクロ動作中に他の作業(ブラウザ使う)とかができない・・・(正確には画面がチカチカする)
完全にバックグラウンドで動作させるのは無理なのかな?
0409デフォルトの名無しさん
2011/12/23(金) 15:58:49.73.netは標準装備だったけど
0410デフォルトの名無しさん
2011/12/23(金) 19:21:34.600411デフォルトの名無しさん
2011/12/23(金) 21:16:35.17タイマーの実現方法調べるのに3時間か…
0412デフォルトの名無しさん
2011/12/23(金) 21:54:29.88はじめのときの
Load、Initialize、Activateの使いわけを教えてくださいませ。
あと、おわるときの
Unload、Terminateの使い分けを教えてくださいませ。
ちなみにLoad←→Unload、Initialize←→Terminateと対応ペアがあるようだけど、Activateに対するペアもう一方はなぜないのですか?
0413デフォルトの名無しさん
2011/12/23(金) 22:23:42.54http://home.att.ne.jp/zeta/gen/excel/c04p28.htm
↑を読めば分かると思うけど、Activateの反対はDeactivate
そして、Load、Unload、Show、Hideはメソッドで
Activate、Deactivate、Initialize、Terminateはイベント
0414デフォルトの名無しさん
2011/12/23(金) 22:35:00.40こういう似非オブジェクト指向が面倒だからVBAではPublicばっか使ってるわ
vba程度で大規模なもんつくらねーし
0415413
2011/12/23(金) 22:35:43.53(メソッドとイベントの対応が分かりにくい書き方になってた)
LoadするとInitializeイベントが発生して、
Showでイベントが発生する。
HideするとDeactivateイベントが発生して、
UnloadでTerminateイベントが発生する。
LoadしないでShowすると自動的にLoadされてShowするし、
HideしないでUnloadしても自動的にHideされてUnloadする。
0416413
2011/12/23(金) 22:37:50.21なぜか抜けてた
誤:Showでイベントが発生する。
正:ShowでActivateイベントが発生する。
0417デフォルトの名無しさん
2011/12/23(金) 22:40:19.38できるっしょ
0418デフォルトの名無しさん
2011/12/24(土) 04:42:11.86そのセルに文字を入力したいのですがどうすればいいですか?
0419デフォルトの名無しさん
2011/12/24(土) 04:58:05.63SelectionChangeイベント
0420418
2011/12/24(土) 05:01:13.86ありがとうございます
0421デフォルトの名無しさん
2011/12/24(土) 05:56:28.60Loadは命令。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イベントが発生しなくなる
これってバグじゃねえかと
0422デフォルトの名無しさん
2011/12/24(土) 08:52:42.72LoadはShowがあるから使わなくて済むけど、
Unloadはあったほうが良いんじゃないの?
0423ラーメン
2011/12/24(土) 09:56:51.82うまいっしょ?
0424デフォルトの名無しさん
2011/12/24(土) 09:59:18.680425デフォルトの名無しさん
2011/12/24(土) 10:28:49.72不幸ってわけじゃないけど要らないオブジェクトをメモリに残しとくのってなんか嫌だ
0426デフォルトの名無しさん
2011/12/24(土) 10:31:35.95それはExcelを閉じてもメモリに残りますか?
0427デフォルトの名無しさん
2011/12/24(土) 10:38:43.470428デフォルトの名無しさん
2011/12/24(土) 20:03:07.59LoadはShowするまえに初期化とかするために必要なんで、Showで代用はできんぞ
Load,Unloadはもともと既定のインスタンスを生成する命令で、インスタンスの概念がなかった時代の名残だからな
>>427
本来ならすべての参照が切れたら、適切なタイミングで消されるはずなんだが
このへんはカーベージコレクタの動作とか絡んでるからなぁ
既定のインスタンス使うならLoadは代用がないだろうし、Unloadもすべきかもしれん
既定のインスタンス使わないならLoadは不要だろう
UnloadはNothing代入とセットで使うなら良いんじゃね
0429デフォルトの名無しさん
2011/12/25(日) 10:34:22.390430デフォルトの名無しさん
2011/12/25(日) 12:26:15.520431デフォルトの名無しさん
2011/12/25(日) 12:37:49.520432デフォルトの名無しさん
2011/12/25(日) 22:35:42.79VBEのコード記入する画面の文字の色とか背景色って変えれる?
0433デフォルトの名無しさん
2011/12/25(日) 22:47:15.640434デフォルトの名無しさん
2011/12/25(日) 23:01:51.31どうやったら3秒で調べられるん?
0435デフォルトの名無しさん
2011/12/26(月) 00:41:43.800436デフォルトの名無しさん
2011/12/26(月) 07:48:56.35調べるのは無理
0437デフォルトの名無しさん
2011/12/26(月) 07:51:52.860438デフォルトの名無しさん
2011/12/26(月) 12:40:40.84これ分かる方いませんか?
ListViewのノードが数でソートすると数の大小で並び替えができるか、です
0439デフォルトの名無しさん
2011/12/26(月) 12:51:41.31自分はわからん
別列作って文字列などで桁そろえてソートすれば解決するような気もする。
0440デフォルトの名無しさん
2011/12/26(月) 13:51:29.3750→0050
みたいにしてあとで0取ればいいんじゃね?
0441デフォルトの名無しさん
2011/12/26(月) 15:08:52.08処理が終わったブックを保存する時に、マクロは含めずに
シートのみ保存するマクロってどうすればいいでしょうか?
別名保存で出来るかと思ったのですが、マクロファイルを外す
ような項目が見あたらなくて、わからなくなってしまいました。
0442デフォルトの名無しさん
2011/12/26(月) 15:15:38.30http://www.officetanaka.net/excel/vba/vbe/index.htm
0443デフォルトの名無しさん
2011/12/26(月) 21:57:58.10VBAマクロ入りのをアドインでセーブ。
そのアドインをExcel に登録すればマクロ無しで行けることになる。
バージョン管理ツールで管理しやすくなるし、pj内で共用しやすくなる
。
0444デフォルトの名無しさん
2011/12/26(月) 22:10:13.08単純にシートを新しいブックに移動またはコピーしてそれを保存するってのはどうかな?
0445デフォルトの名無しさん
2011/12/27(火) 08:48:23.35今回は444さんの方法で出来ましたが、
アドインは思いつきませんでした。
ありがとうございます。
0446デフォルトの名無しさん
2011/12/27(火) 19:08:40.83シートコピーは1セル256文字?制限あるし。
数文字程度の欠けだと誰も気付かないまま被害が拡大して…
0447デフォルトの名無しさん
2011/12/27(火) 23:16:49.93Dim R As Range
R=ActiveSheet.UsedRange
って、やってRから 最終業を取り出そうとしたんだけど、「オブジェクト云々」とエラーが出ます。
なんか間違ってる?
0448デフォルトの名無しさん
2011/12/27(火) 23:35:09.400449デフォルトの名無しさん
2011/12/27(火) 23:44:59.950450デフォルトの名無しさん
2011/12/27(火) 23:48:15.48エラーメッセージを読む気すらないっていう。
0451デフォルトの名無しさん
2011/12/28(水) 02:15:18.09カラムをクリックしたときにクリックしたカラムの2行目のテキストを取得するにはどうしたら良いでしょうか
0452デフォルトの名無しさん
2011/12/28(水) 06:18:20.46代入する時は基本的に付けるもの?
0453デフォルトの名無しさん
2011/12/28(水) 07:07:36.480454デフォルトの名無しさん
2011/12/28(水) 07:37:45.250455デフォルトの名無しさん
2011/12/28(水) 07:47:51.730456147
2011/12/28(水) 08:26:45.66For Each文や、関数での授受時にSetが要るのか要らんのかさぱーり理解できん。
For Each Set obj in collection とか、
Set objResult = funcMine(Set objArg) とか。
0457デフォルトの名無しさん
2011/12/28(水) 09:47:58.52区別する必要って何?
0458デフォルトの名無しさん
2011/12/28(水) 11:58:37.21たとえばなんでも入れられるVariant型の変数aにa = AtiveCellとしたときaに参照を代入したのかActiveCell.Valueを代入したのか分からないから。
型によって区別する仕様にしてもよかったとは思うが。
0459デフォルトの名無しさん
2011/12/28(水) 15:45:58.78sheet1の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に表示されません。
初歩的で大変すみません。よろしくお願いします。
0460デフォルトの名無しさん
2011/12/28(水) 15:52:12.75日本語の初歩からやり直せ
0461デフォルトの名無しさん
2011/12/28(水) 17:40:40.99多分動いてるんじゃね?
マクロ実行押さないと何も動かない。
event で動かしたいならsheetモジュールの予約されたプロシジャに書けば?
0462デフォルトの名無しさん
2011/12/28(水) 17:43:15.26これ分かる方いませんか?
0463デフォルトの名無しさん
2011/12/28(水) 18:01:44.22cells(3,3)の部分に、たとえば任意で4や5といった数字を入れて
エンターキーを押すと自然に作動してほしいということです。
実行ボタンを押さずにということです。ただ単にそこのセルに数字を打ち込んで
エンターを押すだけで作動という意味です。
失礼します。
0464デフォルトの名無しさん
2011/12/28(水) 18:05:35.49Worksheet_Changeイベント
0465デフォルトの名無しさん
2011/12/28(水) 18:13:14.55Worksheets("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
にいれたのですができませんでした…
0466デフォルトの名無しさん
2011/12/28(水) 18:39:28.18If 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
0467デフォルトの名無しさん
2011/12/28(水) 21:26:12.73そもそも俺のエクセルのユーザフォームにはリストビューなんてないんだが
何をつかってるんだ
0468デフォルトの名無しさん
2011/12/28(水) 22:08:27.260469デフォルトの名無しさん
2011/12/28(水) 22:11:43.560471デフォルトの名無しさん
2011/12/28(水) 22:31:10.27Private Sub りすとびゅー_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
MsgBox りすとびゅー.ListItems(2).SubItems(ColumnHeader.Index - 1)
End Sub
0472デフォルトの名無しさん
2011/12/28(水) 23:13:24.34できました!
ありがとうございます
0473デフォルトの名無しさん
2011/12/29(木) 00:21:59.000474デフォルトの名無しさん
2011/12/29(木) 10:45:54.58それをボタンを押せば、入力規則の設定を消すマクロを組みたいのですが、
clearではだあめなようで、どうすればいい?
0475デフォルトの名無しさん
2011/12/29(木) 10:58:02.14Validation
0476デフォルトの名無しさん
2011/12/29(木) 11:43:53.83Debug.Print CropTop を実行すると 値が変更されてしまいます。
例
CropTop = 80
Debug.Print CropTop = 79.998
この現象を回避したいのですが
どうしたらよいでしょうか?
0477デフォルトの名無しさん
2011/12/29(木) 12:14:23.53何か問題でも?
0478デフォルトの名無しさん
2011/12/29(木) 12:21:59.850479デフォルトの名無しさん
2011/12/29(木) 12:28:39.810480デフォルトの名無しさん
2011/12/29(木) 12:32:12.170481デフォルトの名無しさん
2011/12/29(木) 12:32:46.140482デフォルトの名無しさん
2011/12/29(木) 12:40:41.34.Delete
0483デフォルトの名無しさん
2011/12/29(木) 14:30:45.27本当にすみません。マクロを作るときは
マクロを選択して、名前を作って作成というボタンを押すんですよね?
それに466さんが張り付けてくれましたコードをそのまま入れましたら
できませんでした。。。
すみません。よろしくお願いします。
0484デフォルトの名無しさん
2011/12/29(木) 15:49:57.181.シートの見出しタブを右クリックしコードの表示を選択
2.466のコードをコピペ
3.とりあえず動作確認
4.イベントマクロで検索
5.コードの意味を理解
6.そのままじゃ使い勝手悪いと思うので修正
0485デフォルトの名無しさん
2011/12/29(木) 16:48:54.26Dim 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
非常に簡単なんですが、シートに書き込むことができません。どうすれば
書き込めますか?
フォームを作って、クリックボタンを一つ作っています。
0486デフォルトの名無しさん
2011/12/29(木) 17:30:08.52僕も、シートに書き込むことができません。
どうすれば書き込めますか?
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
0487デフォルトの名無しさん
2011/12/29(木) 18:43:31.84Private 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
の部分にエラーが出てしまいます;
0488デフォルトの名無しさん
2011/12/29(木) 19:24:38.06標準モジュールに作ってない?
WorkSheetの関数として実装するんだよ?
0489デフォルトの名無しさん
2011/12/29(木) 19:25:13.73いや、だから僕も書き込めないんだって…
× 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
0490デフォルトの名無しさん
2011/12/29(木) 20:13:23.660491デフォルトの名無しさん
2011/12/29(木) 20:19:06.38Cell じゃなくて
Cells だろ?
0492デフォルトの名無しさん
2011/12/29(木) 20:25:51.15つべこべ言わずに答えを教えろやカス
お前らそれくらいしか取り柄がないんだろ?
0493デフォルトの名無しさん
2011/12/29(木) 20:40:38.710494デフォルトの名無しさん
2011/12/29(木) 20:44:04.220495デフォルトの名無しさん
2011/12/29(木) 21:04:15.31for構文を使うのだと思いますがどうすればよいのでしょうか?
試行錯誤するのですが非常に複雑です。。。
0496デフォルトの名無しさん
2011/12/29(木) 21:06:45.45> エラーメッセージなんて読んでも意味わかんねーし
エラー箇所でF1押してヘルプを読むのは役に立つと思うけどな
0497デフォルトの名無しさん
2011/12/29(木) 21:14:23.88何をやりたいのかわからんが
Worksheetfunction.MMult
じゃ駄目なのか
0498デフォルトの名無しさん
2011/12/29(木) 23:15:20.75Dim 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)
0499デフォルトの名無しさん
2011/12/29(木) 23:16:42.154行4列くらいまでならべた書きの方が速い
0500デフォルトの名無しさん
2011/12/30(金) 06:45:51.034行4列ではなく、要素によって変わってくるため、
恐らく20行前後になってくると思います。。。
0501デフォルトの名無しさん
2011/12/30(金) 08:01:37.33すみません。ありがとうございます。
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
調べたらこれが出てきましたがまったくわかりません。。。
0502デフォルトの名無しさん
2011/12/30(金) 08:39:20.75worksheetfunctionで結果がでるならそれでいいじゃない
なんか問題あるの?
もしも 万が一 宿題なら自分でやろうぜ
あと
>>2 ★5 な
0503デフォルトの名無しさん
2011/12/30(金) 08:42:37.47悩むことではないと思うのだが。
0504デフォルトの名無しさん
2011/12/30(金) 08:57:12.87ttp://blogs.itmedia.co.jp/magic/2011/12/6886-2d5b.html
0505デフォルトの名無しさん
2011/12/30(金) 09:39:02.37わからないならエクセルにまかせりゃいいじゃん
↓ならわかるだろ
Function MProd2(X() , Y() )
Dim Z
Z = WorksheetFunction.MMult(X, Y)
MProd2 = Z
End Function
0506デフォルトの名無しさん
2011/12/30(金) 09:41:47.52For 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
0507デフォルトの名無しさん
2011/12/30(金) 09:46:42.320508デフォルトの名無しさん
2011/12/30(金) 09:49:00.68そのリンク先が>>503と何の関係が有るのかは分からないけど、
今の教育現場が酷いことになってるのは分かった。
0509デフォルトの名無しさん
2011/12/30(金) 09:55:32.45構文でたらめじゃねーか
でも並べかえれば動きそうな気がするし
さて、おちょくられているのかな
0510デフォルトの名無しさん
2011/12/30(金) 10:03:24.56sh.activate追加で
0511デフォルトの名無しさん
2011/12/30(金) 10:20:57.78単位を省略しなければどちらも正解
○ 6本/人 × 8人=48本
○ 8人 × 6本/人=48本
? 6本 × 8人=48?
? 8人 × 6本=48?
0512デフォルトの名無しさん
2011/12/30(金) 10:30:47.970513デフォルトの名無しさん
2011/12/30(金) 10:50:54.620514デフォルトの名無しさん
2011/12/30(金) 11:05:36.540515デフォルトの名無しさん
2011/12/30(金) 11:26:10.43フォントは同じでサイズも同じですが
高さがズレて表示されます。
見た目の高さを揃えるにはどうしたらよいですか。
よろしくお願い申し上げます。
0516デフォルトの名無しさん
2011/12/30(金) 11:31:12.49そもそもcellsはrangeを返すプロパティ
これを踏まえてどう思うか
0517デフォルトの名無しさん
2011/12/30(金) 11:39:08.66偉大な>>514様は、例えば左上のセルを Cells(1,1)と書くのとRange("A1")と書くことの違いが分かっておられないと思う。
その説明じゃなんのことは分かりやすく伝えてないから、説明になってないと思うぞ。
もう少し分かりやすく説明して差し上げたら?
0518デフォルトの名無しさん
2011/12/30(金) 11:39:41.44この構文のどのへんがだめなんでしょうか
よろしかったら教えてください
0519デフォルトの名無しさん
2011/12/30(金) 11:51:51.00条件付き書式でいいんと思うんだがCase "1"とSelect Case c.Valueが逆だろ?
Case "1"よりはCase 1だと思うが
0520デフォルトの名無しさん
2011/12/30(金) 11:53:14.65Ifで充分。
0521デフォルトの名無しさん
2011/12/30(金) 11:58:18.99逆と言われて、こうしたりして
Select Case c.Value
c.Interior.ColorIndex = 7
Case "1"
End Select
0522デフォルトの名無しさん
2011/12/30(金) 12:02:35.62まぁ色々と並べ替えてやってみんしゃい。
それにしてもAA:ARのすべてのセルを調べるのもなんだかねぇ。
せめてUsdRangeとの共有セルにした方がいいと思うね。
0523デフォルトの名無しさん
2011/12/30(金) 12:52:16.180524デフォルトの名無しさん
2011/12/30(金) 14:30:32.28おわりゃしねえ
0525デフォルトの名無しさん
2011/12/30(金) 15:30:07.140526デフォルトの名無しさん
2011/12/30(金) 22:09:50.25=PRODUCT(A1:B1)
=PRODUCT(A2:B2)
と同様に一気に計算する方法ってどうやるんですか?
0527デフォルトの名無しさん
2011/12/30(金) 22:22:07.30とりあえず落ち着きんっさい
0528デフォルトの名無しさん
2011/12/30(金) 22:26:13.26どこかにサンプルないかな?
お勉強にしたい。
0529デフォルトの名無しさん
2011/12/30(金) 22:44:33.57http://pc.nikkeibp.co.jp/npc/download/excel_taskforce.html
0530デフォルトの名無しさん
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列で一致するような使い方が出来なくて。
0531デフォルトの名無しさん
2011/12/30(金) 23:18:26.870532デフォルトの名無しさん
2011/12/30(金) 23:19:05.880533デフォルトの名無しさん
2011/12/30(金) 23:28:11.74検索キーの構造が単純なら、キーを結合した上でVLOOKUPするとか。
この場合だと、IDとNameをそれらで絶対に使われない文字を挟んで繋いでやれば
単一キーとして利用できる。
0534デフォルトの名無しさん
2011/12/31(土) 00:00:19.43Win7 Excel2010で実行すると
エラー番号1004'Range'メソッドは失敗しました'_Global'オブジェクト
とでました
問題の箇所は
UserForm2.Show vbModeless
ここです
コード自体は間違っていないと思うのですが環境の変化によって何が変わりエラーがでたのでしょうか
0535デフォルトの名無しさん
2011/12/31(土) 00:08:41.330536デフォルトの名無しさん
2011/12/31(土) 01:54:14.770537530
2011/12/31(土) 02:16:34.54>>533
ワークシート関数で作業列で結合してそれでVLOOKUP使ってるのを見た事
ありますがそういう事ですね。
>>532
この質問では何がという特定の目的はありませんでした。ほかの検索方法
があれば知りたいなと思って。
>>531
アクセスっぽい事をエクセルでやりたいのです。どの会社行ってもエクセル
は必ずあるけどアクセスはあんまり見ないですし。
0538デフォルトの名無しさん
2011/12/31(土) 02:50:44.07VBAでオートフィルタって手もあるけど。だからどういうことをやりたいのか聞いた。
0539デフォルトの名無しさん
2011/12/31(土) 03:33:04.00数式のコピペだけでやって10秒ほど?で出来てるけどそれより早いなら解からん
0540デフォルトの名無しさん
2011/12/31(土) 09:24:49.34AccessなしでもAccessデータベースを扱うことは可能
他にもタダで使えるデータベースはあるから使い途によっては選択肢に入れてもいいかもね
でもいろいろ敷居が高いかな
0541デフォルトの名無しさん
2011/12/31(土) 10:23:56.08ようするに会社のパソコンで必ず使える物ならいいのでエクセルで無理やり頑張るより無料のデータベース
勉強する方が良いかもしれないですね。
0542デフォルトの名無しさん
2011/12/31(土) 11:04:55.91条件合致したら、ループ抜けるんだよね?処理は1回だけ
0543デフォルトの名無しさん
2011/12/31(土) 11:57:37.430544デフォルトの名無しさん
2011/12/31(土) 11:58:53.890545デフォルトの名無しさん
2011/12/31(土) 12:00:28.32うん、わかった
0546530
2011/12/31(土) 13:48:33.96ダミーデータ1万行まで入れて一番下に入れた文字を検索してみたら0.015秒でした。
十分早いですね。
検索回数増えないようにロジック考えればこの方法で十分なんですね。
オートフィルタとか使わずに検索を一度に何十回とか繰り返してたのでそもそもそのへん
を考え直すべきなんですね。
0547デフォルトの名無しさん
2011/12/31(土) 20:54:03.70vbCR
vbLF
vbCRLF
vbNEWLINE
0548デフォルトの名無しさん
2011/12/31(土) 21:58:56.52trackbar1のvalueからpicturebox1のbackcolorのレッドの濃淡を出したいのですが
trackbar1のvalueはinteger(0−255)にしています。
Public Sub TrackBar1_Scrollするとtrackbar1.valueから0の場合picturebox1のバックカラーは一番薄い色に(白か初期の灰色に)
逆に255ならばtrackbar1のバックカラーはどす黒いredにしたいのですが…
まず濃淡を出すこと自体可能なのでしょうか。。。
スレ違いと言うことは重々承知しております。vb.netスレが検索してもないもので。。。
お願いします。
0549デフォルトの名無しさん
2011/12/31(土) 22:05:09.510550デフォルトの名無しさん
2012/01/01(日) 02:14:28.71Selection.Borders.LineStyle = True
例えば
一番上と下のラインを以外の横の罫線を点線にしたい場合って
どうすればいいのでしょうか?
一応マクロの記録でやると何十行もの内容が出てる来たので
それは避けたいのですが
0551デフォルトの名無しさん
2012/01/01(日) 03:19:29.13Selection.Borders.LineStyle = xlContinuous
Selection.Borders(xlInsideHorizontal).LineStyle = xlDash
0552デフォルトの名無しさん
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などといった数字が入り…といった感じです。
よろしくお願いします。
0553デフォルトの名無しさん
2012/01/02(月) 11:23:58.460554デフォルトの名無しさん
2012/01/02(月) 11:27:47.75for i=1 to 2
for k=1 to 2
debug.print a(i, k)
next k
next i
0555デフォルトの名無しさん
2012/01/02(月) 11:35:11.16整理してそれかい
小学校からやり直せ
0556デフォルトの名無しさん
2012/01/02(月) 11:40:20.99掛け算でなかったっけ?
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
0557デフォルトの名無しさん
2012/01/02(月) 11:43:00.700558デフォルトの名無しさん
2012/01/02(月) 14:35:23.95新しく質問する前に前回の質問にケリ付けとこうよ。
>>502が聞いてたWorksheetFunctionを避けたい理由とか、
>>501で紹介していたFunctionの何が童話からないのかとか、
一切説明ないじゃん。
自分が分かればそれで良いってのは虫が良すぎるんじゃないの?
0559デフォルトの名無しさん
2012/01/02(月) 15:05:35.05大変申し訳ございません。
worksheetfunctionを避けたい理由としましては、excelではなく
visual studio(ほとんど同じコードだと思います)でも使いたいので、
応用させたいと思っています。
また、501に関しては、Z() と最初においていますが、
これにより、
z(1,1)=5 , z(1,3)=4 , z(2,1)=3と打つと、
例えばですが、z(1,3)に入っている数字は4ということなんでしょうか?
0560デフォルトの名無しさん
2012/01/02(月) 15:42:01.97そういうこと
>>501は、行列の要素を1個ずつ計算しZ(i, j)に格納している
0561558
2012/01/02(月) 15:51:07.30まず、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()に代入して処理完了
0562デフォルトの名無しさん
2012/01/02(月) 16:15:52.660563デフォルトの名無しさん
2012/01/02(月) 16:21:30.23> a(1,1)の部分には1が入り、a(2,2)の部分には2,また上の例には
> 対応していませんが、a(1,2)には3や4などといった数字が入り…といった感じです。
どうしてそうなると考えたのか?
0564デフォルトの名無しさん
2012/01/02(月) 16:35:00.75確かに行列積の計算方法そのものはわかってるとすると>>552が理解できれば>>501も理解できるのかもね。
0565デフォルトの名無しさん
2012/01/02(月) 17:49:32.420566デフォルトの名無しさん
2012/01/02(月) 18:50:19.08クラスにするまでも無かったと我に返ってコードを投げ捨てることも多い。
0567デフォルトの名無しさん
2012/01/02(月) 19:28:21.82Set 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を見たところ全てのデータが含まれていました
上記のコードは正しくヘッダーがセットされていますか?
0568デフォルトの名無しさん
2012/01/02(月) 19:29:07.190569デフォルトの名無しさん
2012/01/02(月) 19:53:32.950570デフォルトの名無しさん
2012/01/02(月) 20:11:48.40スレチ
If-Modified-Sinceは差分取得するもんじゃない
指定したLastTime以降更新されてなければ "304 Not Modified"が返る
と言う事で ここでは これ以上聞いてもスルーする
0571デフォルトの名無しさん
2012/01/02(月) 20:38:19.33ちょっと便乗で質問。
ExcelのVBAでWebブラウザ制御するのって自動巡回扱いになるの?
この前仕事で某官庁のHPから統計データを引っ張るためにマクロ組んだら
上司にそれは自動巡回だからやっちゃだめって怒られた
(某官庁のHPには自動巡回ソフトの使用はご遠慮くださいって書いてあった)
IEをCreateObjectしてURLを自動的に生成(対象データの年度の部分を動的に変えるだけ)
して
表示されたらExecWBでSelectAll、Copy、して
クリップボードから.PasteSpecial でワークシートに貼り付けただけなんだけど、
そういうのも自動巡回ソフトに当たるんだろうか?
こんなの手作業をマクロに書き換えただけじゃんねぇ?
0572デフォルトの名無しさん
2012/01/02(月) 20:48:30.880573デフォルトの名無しさん
2012/01/02(月) 20:53:04.69いや、そういう意味じゃなくて自動巡回ソフトってサーバーに負担かけるからだめなんでしょ?
手作業でできることをマクロ化したところでサーバーにかかる負担なんて変わらないよねってこと
(一応、念のために適当にウェイトかまして速くならないようにはしてた。)
0574デフォルトの名無しさん
2012/01/02(月) 21:07:27.85遠慮してくれってんだから、だめでしょ、やっぱり。
0575デフォルトの名無しさん
2012/01/02(月) 21:19:46.080576デフォルトの名無しさん
2012/01/02(月) 21:26:20.81自動ポルノ。
0577デフォルトの名無しさん
2012/01/02(月) 21:35:58.88そう思うのならその某官庁とやらに説明して許可もらえばいいじゃん
そうでもしないと上司を納得させられないんじゃないの?
こんな所でグダグダ言ってても意味ないよ
スレ違いどころの話じゃないし
0578デフォルトの名無しさん
2012/01/02(月) 21:45:23.60自動巡回ってもっと高度なことやってるもんなんじゃないか
っていう疑問が残るからなんだよね。
グーグルとかヤフーのクローラって(Robot.txtで排除できるらしいけど)
もっと直接HTMLのソースとか解析して根こそぎ情報取得するんでしょ?
そういうのがここでいう「自動巡回」なんじゃないかっていう気がしてるんですよ。
こちとらそんな高度なことできないから
普通にブラウザ開いて表示したページをコピペしてただけですから。
まぁ、上司に禁止されたからもうそのマクロは使えないんですけど、
もう少し上記の件に関する技術的なことを教えてもらえたら
って思って質問したんです。
(そういう方向の話になるとスレチっぽいんで答えてもらえないかもしれないけど)
0579デフォルトの名無しさん
2012/01/02(月) 21:54:59.88>>2読んでね
0580デフォルトの名無しさん
2012/01/02(月) 22:51:45.08LibraHackの件みたいな事もあるからね
0581デフォルトの名無しさん
2012/01/02(月) 23:00:52.700582デフォルトの名無しさん
2012/01/02(月) 23:03:58.520584デフォルトの名無しさん
2012/01/02(月) 23:11:39.790585デフォルトの名無しさん
2012/01/02(月) 23:14:46.33だからおまえはみんなに嫌われるんだよ
0586デフォルトの名無しさん
2012/01/02(月) 23:16:18.47わかりもしない、答える気もない屑が掲示板を荒らすのは本当に不愉快です
0587デフォルトの名無しさん
2012/01/02(月) 23:38:34.73モジュールが終了しても記憶しておく変数を宣言することは可能ですか?
セルを使用する以外でお願いします
0588デフォルトの名無しさん
2012/01/02(月) 23:44:08.080589587
2012/01/02(月) 23:51:54.460590デフォルトの名無しさん
2012/01/02(月) 23:57:06.02大変ありがとうございます。理解できました。
しかし、したの例のように試してみると、たとえばz(1,1)の部分に
数字を入れることができなかったです。。。
Sub test()
Dim z() As Double
z(1, 1) = 1
Cells(1, 2).Value = z(1, 1)
End Sub
0591デフォルトの名無しさん
2012/01/02(月) 23:58:00.87どうせ別人だろうけど
temp.txtとか作ってそこに値いれとけばいいんじゃね
0592デフォルトの名無しさん
2012/01/02(月) 23:59:44.13Textファイルに書き出せばセルもパブリック変数も使わないで済む
こういう頓知解答がNGなら不可能
0593デフォルトの名無しさん
2012/01/02(月) 23:59:48.640594デフォルトの名無しさん
2012/01/03(火) 00:13:55.85Z()を宣言しただけじゃZが2次元配列とは限らないから
Z(1,1)に値は入れられない。
はじめから
Dim Z(1,1) As Double
みたいに2次元配列で宣言するか
Redim Z(1,1)で配列の再宣言するかしなきゃ駄目
(あとはVariantで宣言する方法なんてのもあるけど割愛する)
とにかくこういうのは基本的な事なんで、
ここで聞く前にまず自分で調べるべき話。
0595デフォルトの名無しさん
2012/01/03(火) 00:19:40.840596デフォルトの名無しさん
2012/01/03(火) 01:37:06.79Static変数をプロシジャの引数として参照渡しする。
変数クラスを定義してそのインスタンスを参照渡しする。
矢切の渡し。
0597デフォルトの名無しさん
2012/01/03(火) 01:38:59.07まちごた。
忘れてくれ。
0598デフォルトの名無しさん
2012/01/03(火) 02:54:00.110599デフォルトの名無しさん
2012/01/03(火) 10:12:58.79>>566
簡単に言うと、必要なければ使ってはいけないものだ。
0600デフォルトの名無しさん
2012/01/03(火) 11:04:24.57www.eurus.dti.ne.jp/yoneyama/Excel/vba/vba_array.html
0601デフォルトの名無しさん
2012/01/03(火) 11:34:21.90セルに保存とかわらんが、BuiltinDocumentPropertiesとかUserFormのTagはときどき利用する。
0602デフォルトの名無しさん
2012/01/03(火) 14:04:34.56引用しようと思っても呼び出せないので
0603デフォルトの名無しさん
2012/01/03(火) 14:17:23.88Call Module2.TestProcess
のようにモジュール名をつけないとダメですか?
0604デフォルトの名無しさん
2012/01/03(火) 14:24:11.790605デフォルトの名無しさん
2012/01/03(火) 14:25:29.470606デフォルトの名無しさん
2012/01/03(火) 14:42:14.27おまえのレス力は最低レベルだ。「レス力検定」でレス力を磨きなさい。
0607デフォルトの名無しさん
2012/01/03(火) 15:41:39.690608デフォルトの名無しさん
2012/01/03(火) 16:01:25.32答えるのも自由だし、横やり入れるのも自由、そういう場ですよ
そういう場に自ら来ておいて、「回答以外はするな」はお門違い
ボウヤ、何勘違いしちゃってるの?ってな感じだ
横やりが嫌なら横やり禁止のとこ行け
0609デフォルトの名無しさん
2012/01/03(火) 16:06:39.58縦やり入れるのも自由だし、「回答以外はするな」も自由、そういう場ですよ
そういう場に自ら来ておいて、>>608の書き込みはお門違い
0610デフォルトの名無しさん
2012/01/03(火) 16:31:29.290611デフォルトの名無しさん
2012/01/03(火) 16:55:54.970612デフォルトの名無しさん
2012/01/03(火) 16:57:00.48哀れな屑ですね
0613デフォルトの名無しさん
2012/01/03(火) 17:03:53.010614デフォルトの名無しさん
2012/01/03(火) 17:23:29.760615デフォルトの名無しさん
2012/01/03(火) 18:29:34.79この程度の質問にも答えられないの?
大した事ないっていうか…お前ら…
好きなエクセルでもこんなレベルって
きっと他の分野じゃ本当に無能なんだろうな
0616デフォルトの名無しさん
2012/01/03(火) 18:46:20.35あんた質問書いてないじゃん
書いてない質問にどう答えろと?
0617デフォルトの名無しさん
2012/01/03(火) 20:12:26.74Dim 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以外のシートに作る必要があるのでしょうか?
何卒よろしくお願いします。
0618デフォルトの名無しさん
2012/01/03(火) 20:23:11.61○Next i
0619デフォルトの名無しさん
2012/01/03(火) 20:29:03.06できました。
しかし、これは再生ボタンを押さないと表示されないです…
自動的に数字が変わる方法はご存じでしょうか?
よろしくお願いします。
0620デフォルトの名無しさん
2012/01/03(火) 20:36:32.52Worksheet_Change
とかで検索
0621デフォルトの名無しさん
2012/01/03(火) 20:57:23.130622デフォルトの名無しさん
2012/01/03(火) 21:51:20.18これは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型にしちゃっても良かったと思う。
0623デフォルトの名無しさん
2012/01/03(火) 21:59:05.030624デフォルトの名無しさん
2012/01/03(火) 22:00:21.240625デフォルトの名無しさん
2012/01/03(火) 22:11:50.500626デフォルトの名無しさん
2012/01/03(火) 22:14:06.89適当に書き込んだだけなんだけどw
0627デフォルトの名無しさん
2012/01/03(火) 22:54:22.81詳しいアドバイスありがとうございます。
ところで、さらに質問が出てきました。まったくべつのものですが、、、
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とすることは可能なのでしょうか?
0628デフォルトの名無しさん
2012/01/03(火) 23:06:28.37a = UBound(x, 1)
を
a = 20
にすれば良いだけじゃん
20の部分が変数になったとしても、同じく
a = 変数
で事足りる
固定のリテラル値にしろ変数にしろ、前段階の処理でどこまで数字を
入れたかが解ってるんだから、配列から取得する必要など何も無い
0629デフォルトの名無しさん
2012/01/03(火) 23:36:02.44そこに気づいたか
だがもう一歩だ
0630622
2012/01/03(火) 23:43:36.86>ためしに、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とすることは可能なのでしょうか?
というのも何の事だかさっぱり意味が分からない。
できたらもう一度、意味が通じるように質問しなおしてほしい。
0631デフォルトの名無しさん
2012/01/03(火) 23:46:56.36今、行列の計算のプログラムを作っています。
http://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
0632デフォルトの名無しさん
2012/01/03(火) 23:47:48.94For 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つに分けて書き込みます。
何卒よろしくお願いします。
0633デフォルトの名無しさん
2012/01/03(火) 23:52:11.31すみません。もう一度理由を述べます。
なぜxboundで100ではなく20がほしかったのかというと、
自分が今から作ろうとするFEM法を使った方法でやると、
行列の数が40行くらいになってしまう可能性があるからです。
しかもその行列の数は、節点数によって変わってくるため(この辺は専門的ですみません;)
行列の数が予測できないため、最初にx(100,100)と置きました。
さすがに、100行列まではいかないだろうということで、です。
今回は試しに、20行列を作ってみたので、ひょっとすれば
xboundで20が出るのかな(つまり数字が入っているところまで)
と思いましたが駄目でした。
0634デフォルトの名無しさん
2012/01/04(水) 00:07:00.570635デフォルトの名無しさん
2012/01/04(水) 00:08:52.43それは無理。
行列の数がわからないのであればRedimすればいい。
0636デフォルトの名無しさん
2012/01/04(水) 00:16:13.38あなたは>>501か
0637デフォルトの名無しさん
2012/01/04(水) 00:18:21.02x(n, nn) に期待通り取り込まれているのは確認できているか
0638デフォルトの名無しさん
2012/01/04(水) 00:19:00.82"UBound"ってのはあくまでも配列の上限を返す関数であって
その配列の中でどこまで実際に値が入ってるかを調べるものじゃないから
そういう使い方は出来ない。
っつーか貴方、ここ最近行列云々で質問続けてる人だったのね?
VBAのこと事前に学習してないでしょ?
試行錯誤は決して悪いことじゃないけど、
中途半端な知識でプログラミングして失敗するよりも
一度きちんと学習してからプログラミングしたほうが良いと思うよ。
どっち道失敗はするだろうけど、今みたいなどうでも良い間違いは減ると思う。
本を買うなりWeb上の解説サイトを読むなり、多少基礎知識つけてから出直したほうが
ゴールに早くたどり着けるはずだよ。
こっちだってこんなどうでも良いこと質問されるのも正直迷惑だし。
0639デフォルトの名無しさん
2012/01/04(水) 00:23:42.80今確認しました。期待通りではなかったです…
なぜか、yはすべての成分が121の3行5列で、
xはすべての成分が20の4行3列でした。
0640デフォルトの名無しさん
2012/01/04(水) 00:31:33.33For〜Nextが理解できていない
0641デフォルトの名無しさん
2012/01/04(水) 00:37:38.67もう昨日の夜の12時からまったくの不眠不休でほかの研究作業もやりながらなので
ぜんぜん思考回路が回っていません。
寝て、もう一度再プログラムしてみます。失礼しました。
0642デフォルトの名無しさん
2012/01/04(水) 00:39:14.20ここの人たちだって貴重な時間を割いてアドバイスしてくれてるのよ
0643デフォルトの名無しさん
2012/01/04(水) 09:05:14.29思いっきりスレチだから
答えてる方も荒らしだから
0644デフォルトの名無しさん
2012/01/04(水) 10:18:47.09<=2の部分をA90の値にしたいのですがどう書けばいいんでしょうか
0645デフォルトの名無しさん
2012/01/04(水) 10:34:11.320646644
2012/01/04(水) 10:41:57.670647デフォルトの名無しさん
2012/01/04(水) 10:44:32.37最後の質問です。この分野さえ終わることができれば終了です…
以下の行列の逆行列を求めようとしましたができませんでした。。
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
になってしまいました;
0648デフォルトの名無しさん
2012/01/04(水) 10:45:33.63Sub 逆行列()
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
0649デフォルトの名無しさん
2012/01/04(水) 10:47:50.04For 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
http://www.econ.nagoya-cu.ac.jp/~kamiyama/siryou/minv.html
このページを参考にしました
0650デフォルトの名無しさん
2012/01/04(水) 12:58:01.29これでセルの値を指定することができたのですが
<=を入れるとエラーになってしまいます
あとRCを使ったやり方で<=をつけるにはどうしたらいいですか?
0651デフォルトの名無しさん
2012/01/04(水) 13:30:28.28VBAでの式入力方法ならまだしも
それ以前の式の作り方についてはスレ違い
0652デフォルトの名無しさん
2012/01/04(水) 14:26:11.02" で囲まれた中に " 自体を記述したいときは "" と2つ続けて書く
だから、
=countif(A1:A80,"<=2")
の前後を"で囲むと
"=countif(A1:A80,""<=2"")"
になる。
また、""で囲まれた部分は文字列だから、
& で他の文字列や文字列型変数と結合できる
つまり、 上記の式の"2"の部分をA90の値に変更したいなら、
"2"以前の部分の文字列と"2"以降の部分の文字列を作って、
Range("A90").Valueを & ではさめばよい。
(>>645は"<=2"をA90の値に置き換えてる)
ちなみに"2"以前の部分は
"=countif(A1:A80,""<="
になる。
後ろのほうは>>645とおなじだから後は自力でやって
0653デフォルトの名無しさん
2012/01/04(水) 14:38:33.01y=(-b+(b^2-4ac))/2a
のようにいくらでもネスト構造がありえるのに
なぜダブルクオーテーション " は、内部のは二つ重ねるルールにしたのですか?
欠点は、三重以上に重ねられなくなってしまってないですか?
二つ重ねるルールの利点を挙げてください。
0654653
2012/01/04(水) 14:39:41.54=countif(A1:A80,"<=2")
の前後を"で囲むと
"=countif(A1:A80,""<=2"")"
になるなら、
"=countif(A1:A80,""<=2"")"
の前後をさらに"で囲むとどうなるの?
0655653
2012/01/04(水) 14:40:31.63なにか研究成果を発表はしてないのですか?
0656デフォルトの名無しさん
2012/01/04(水) 14:54:58.92文字列の囲い記号(開始記号と終了記号)が「"」の場合
囲い記号としてではなく文字として「"」を表したくても
途中に"を入れるとそれが「文字 "」なのか「囲い終了記号」なのか判別できない
そこで、囲い開始記号以降の「"」は、1つなら「囲い終了記号」、
2つなら「文字 "」として扱うというルールにしただけのこと
この単純なルールだけで
> 三重以上に重ねられなくなってしまってないですか?
なんて欠点も無く、どんなものでも表現できる
0657デフォルトの名無しさん
2012/01/04(水) 14:59:18.98自力では無理だったと思うので助かりました
"=countif(A1:A80,"">=" & Range("A90").Value & """)"
0658デフォルトの名無しさん
2012/01/04(水) 15:09:23.33redim 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)は入るのでしょうか?
0659デフォルトの名無しさん
2012/01/04(水) 15:14:55.75自分で試せよ w
0660デフォルトの名無しさん
2012/01/04(水) 15:20:51.45なるほど、あなた超頭いいですね。
こういう"の用法をたとえば本で書くときに
>>656の説明までちゃんと書いてくれてる本の作者こそ
物を書くセンスがあるといえる。
いままで"の由来について書かれたものは見たことがなかった。
>>656さんは自分でこの考えを発見したの?
そうすると、先の
「"=countif(A1:A80,""<=2"")" の前後をさらに"で囲むとどうなるの?」
の回答は、こうなるね。↓
"""=countif(A1:A80,""""<=2"""")"""
0661デフォルトの名無しさん
2012/01/04(水) 15:21:30.46「"""=countif(A1:A80,""""<=2"""")"""」をさらに"で書くと、どうなるかね?
0662デフォルトの名無しさん
2012/01/04(水) 15:30:48.26俺は
VB言語では文字リテラルの囲いは「"〜"」
VB言語では「文字 "」のエスケープシーケンスは「"」
という説明を本で読んで、それをちょっと詳しく解説しただけで
このルールを発案した人じゃないから、べつにそう大げさに褒められるほどのものじゃないが
0663デフォルトの名無しさん
2012/01/04(水) 16:17:05.03スレチ話しがウザイ
0664デフォルトの名無しさん
2012/01/04(水) 16:28:28.39冬休みが終れば消えますかね?
0665デフォルトの名無しさん
2012/01/04(水) 16:31:25.240666デフォルトの名無しさん
2012/01/04(水) 16:49:58.19適切なスレに誘導する人はあまりいないね。
そのほうがウザイスレチ話が減って有益だと思うんだけどな。
スレチ話ですまん。
0667デフォルトの名無しさん
2012/01/04(水) 17:32:31.980668デフォルトの名無しさん
2012/01/04(水) 17:48:08.950669デフォルトの名無しさん
2012/01/04(水) 18:32:42.170670デフォルトの名無しさん
2012/01/04(水) 19:20:53.96これが最後ね
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
0671デフォルトの名無しさん
2012/01/04(水) 20:33:36.18もう来るなよ
0672デフォルトの名無しさん
2012/01/04(水) 21:57:59.60>>669に言えよ w
0673デフォルトの名無しさん
2012/01/04(水) 23:36:33.960674デフォルトの名無しさん
2012/01/04(水) 23:38:23.54パラパラ見たけど、印刷文字薄くて見にくくなってた。でも、2010での動作可否が載ってるのはいいなと思た。
参考までに…
0675デフォルトの名無しさん
2012/01/05(木) 14:07:22.280676デフォルトの名無しさん
2012/01/05(木) 22:22:32.41出来る場合、動的に作成した物へのアクセスはどうすれば良いですか?
0677デフォルトの名無しさん
2012/01/05(木) 23:04:23.480678デフォルトの名無しさん
2012/01/05(木) 23:19:10.07VBAは知らんが、普通のOOPなら、できて当然だな
ボタンなりラベルなりのオブジェクトを作ってビューに配置
してやればいいだけだもんな
アクセスも自分で作ったオブジェクトだからわかるし
0679デフォルトの名無しさん
2012/01/06(金) 00:03:31.02たとえばボタンを作成して制御するなら
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(ボタンのインデックス)
たぶん
0680デフォルトの名無しさん
2012/01/06(金) 00:03:40.270681デフォルトの名無しさん
2012/01/06(金) 00:12:11.56変数名の前にSetをつけなければならない理由はなんなのでしょうか?
そういう言語仕様だからというだけでしょうか?
それとも、同じオブジェクト変数に代入する場合でも、Setを伴う場合と
伴わない場合の2ケースあるのでしょうか?
0682デフォルトの名無しさん
2012/01/06(金) 00:49:42.220683デフォルトの名無しさん
2012/01/06(金) 00:59:14.44Excelのメソッドも、省略可能とはいえ引数がやたら多いのが結構あるし。
0684デフォルトの名無しさん
2012/01/06(金) 01:05:06.22もともと初期の vb にはオブジェクトの概念がなく、後付けでオブジェクトを導入したとき、
既存仕様を維持してオブジェクトをサポートするために、特別な Set キーワードを導入した
とかそんな話だった気がする
Dim a
Dim b
Set a = Range("b2")
b = Range("b2")
変数 a には Range オブジェクトが格納される
変数 b には Range オブジェクトのデフォルトプロパティが格納される
0685デフォルトの名無しさん
2012/01/06(金) 01:16:11.71変数にオブジェクトは格納されないよ〜
0686デフォルトの名無しさん
2012/01/06(金) 01:16:15.37なるほど、SetありもSetなしも文法上は許容されるのですね
であれば、Setキーワードの意味はありますね
この例でいうと、デフォルトプロパティは何を指しているのでしょうか?
0687684
2012/01/06(金) 01:55:17.69すみません、オブジェクトの参照ですね
>>686
厳密にはかなり面倒で、
Range には _Default という隠しプロパティがあってそれがデフォルトプロパティになるらしい
_Default には引数(RowIndex, ColumnIndex)を与えることができて、
引数ありだと Item(引数)の評価結果、引数なしの場合は Value の評価結果を返すらしい
まあ、通常は Value と覚えておけばよいかと
0688デフォルトの名無しさん
2012/01/06(金) 02:27:20.28Letっていう値を代入する命令があって、これは省略できる(というか書いてる事がほとんどない)
文法的には省略されてるのはLet
0689デフォルトの名無しさん
2012/01/06(金) 02:30:27.74つまり、>>684の
Dim a
Dim b
Set a = Range("b2")
b = Range("b2")
のb = 〜の行は、
Let b = Range("b2")
と解釈されて、そのとき代入されるのが_Defaultプロパティということ?
0690デフォルトの名無しさん
2012/01/06(金) 03:07:22.43うん
0691デフォルトの名無しさん
2012/01/06(金) 03:11:34.65昔の教科書には必ず書いてあったけど最近の入門書は最初からスルーしてるよな
試してみたらこれはエラーになった
Let a = Range("A1")._Default
0692デフォルトの名無しさん
2012/01/06(金) 07:21:26.80Let a = Range("A1").[_Default]
0693デフォルトの名無しさん
2012/01/06(金) 07:30:27.210694デフォルトの名無しさん
2012/01/06(金) 09:57:24.70長く書くのが趣味だったんだな。
0695デフォルトの名無しさん
2012/01/06(金) 19:40:30.41君>>457じゃないよね?
0696デフォルトの名無しさん
2012/01/06(金) 20:07:54.280700デフォルトの名無しさん
2012/01/07(土) 02:53:29.64http://beebee2see.appspot.com/i/azuYl9K_BQw.jpg
このように、選択してある[C]の列だけを別の場所(あらかじめ決めているCという枠)へ移したい場合はどうすればいいのでしょうか?
コピーは出来なかったのです。
0701デフォルトの名無しさん
2012/01/07(土) 07:40:10.040702デフォルトの名無しさん
2012/01/07(土) 09:12:33.09質問の仕方が悪いと思うよ
Excelで単純に"C"と書いたら、通常はシート左端から3列目の"C列"のことだと思われる。
貴方が貼った画像だと"A列"に"C"と書いてある"2","3","4","9"の"行"が選択されてる。
コピーしたいのは選択範囲の"すべての行"なのか、それとも選択範囲の"C列"なのか、
どっちか分からない。
0703デフォルトの名無しさん
2012/01/07(土) 09:50:23.96ふつうにA列をフィルタして
抽出されたセルたちを「切り取り」して
他所に「貼り付け」してOKと思ったけど、
うまくできないね。
「切り取り」して「貼り付け」だと、フィルタで隠れた行まで移動してしまう。
「コピー」して「貼り付け」だと、フィルタしたものだけがコピーされるのに。
自分もこんな発見をして勉強になったよ。
力にはなれなかったけど、うまくいく方法が見つかるといいね。
0704デフォルトの名無しさん
2012/01/07(土) 09:51:31.30すいませんでした。
2.3.4.9の選択されている行です。
0705デフォルトの名無しさん
2012/01/07(土) 12:53:42.20AKB=金正恩
この意味わかるか
AKBという捏造ブームの裏に何があるか見えるか?
0706デフォルトの名無しさん
2012/01/07(土) 12:56:07.04選択範囲は Application.Selection で取得できるけど、
選択範囲が複数になる場合、Application.Selection.Areas に各選択範囲(Rangeオブジェクト)のコレクションが格納される
面倒だけど、最初に Areas の値を保存しておいて、ループ処理で各 Range 毎に処理するとかになるんじゃないかなあ
0707デフォルトの名無しさん
2012/01/07(土) 13:16:59.99とりあえず手動で今の状態からコピーしたいなら複数行の選択じゃなくセル範囲の選択でコピーしたら
貼り付け先には飛ばした行を詰めて貼り付けできるけど。
0708デフォルトの名無しさん
2012/01/07(土) 15:02:44.54関数使いたいなら作業列使えば可能
作業列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),"")
http://ozcircle.net/_uploader/69930900
常にデータが増える表ならVBAの方が楽だけどそうでもないなら関数の方が早い。
0709デフォルトの名無しさん
2012/01/07(土) 15:28:48.21やっぱりよく分からない
複数選択範囲(行単位)の移動(カット&ペースト)が行いたいが、通常では複数選択範囲のカットができない、というだけ話なら
移動先を ActiveSheet.Range("100:100") と仮定した場合、
Application.Selection.Copy(ActiveSheet.Range("100:100"))
Application.Selection.Delete()
のようにコピー+削除でいけると思うけど、そういう話ではないの?
0710デフォルトの名無しさん
2012/01/07(土) 18:08:58.21レスありがとうございます!
>>700の者です!
初心者かつ、語彙力がなく、説明不足ですいません。
わからなかった言葉もぐぐってみます!
>>709さんの回答が一番近いと思うのですが、
私はカットではなく、[A.B.C]とグループ分けをしたうちの[C]だけを別のページをコピーペーストしたいです。
簡単にいうと、複数選択のコピーの方法が知りたいです。
http://beebee2see.appspot.com/i/azuY3Iu-BQw.jpg
この画面でいうと、3.5.6.7.12.15行目をコピーしたいです。
右クリックでコピーを選択すると
http://beebee2see.appspot.com/i/azuYvILBBQw.jpg
このような画面が出ます。
一つ一つ貼っていくには膨大な量なので時間が足りません。
皆さんが教えて下さった数式(?)関数(?)を今から試してみようと思います!
それらが出来たらまたここに来て見ます。
何度もすいません、もう少しお付き合い下さい…
ありがとうございます。
0711デフォルトの名無しさん
2012/01/07(土) 18:43:31.57>>709の例は複数選択可能で、2行目のDeleteしなければただのコピー
現在のシートの選択行(複数選択あり)をたとえば シート(Sheet3)の10行目にコピーしたいなら
Application.Selection.Copy (ActiveWorkbook.Worksheets("Sheet3").Range("10:10"))
みたいなマクロだけでいけると思うけど
0712デフォルトの名無しさん
2012/01/07(土) 18:57:02.57> この画面でいうと、3.5.6.7.12.15行目をコピーしたいです。
> 右クリックでコピーを選択すると
> http://beebee2see.appspot.com/i/azuYvILBBQw.jpg
> このような画面が出ます。
>
たぶん行の選択の仕方が間違っている
ちゃんと選択すれば、そんな警告はでないしコピーできる
0713デフォルトの名無しさん
2012/01/07(土) 19:03:54.59ああ、行を選択してコピーしたあと、セルを選択して貼り付けようとするとその警告ですね。
貼り付ける時も行を選択して貼り付けたら警告でないです。
ていうか>>710は手動で選択してますよね。膨大な量というなら行を選択してる時点ですでに
間違いだとおもう。
オートフィルタ後コピペかABC列を昇順・降順並べ替え後にコピペが普通だとおもう。
0714デフォルトの名無しさん
2012/01/07(土) 19:07:31.79なんか操作を間違ってないか?
複数の行を選択しているとして
右クリックから「切り取り」ならそのエラーが出るけど、
「コピー」だとエラーでないよ。
まぁ複数範囲の選択をしたときにいつでもコピーできるわけじゃなく、
たとえばA1とC3を選ぶみたいに行も列もばらばらの範囲だとコピーもできない。
Range(A1:C3)とRange(E1:G3)みたいに列が同じで行だけ飛んでる場合なんかはコピーできた。
0715デフォルトの名無しさん
2012/01/07(土) 19:12:24.86>私はカットではなく、[A.B.C]とグループ分けをしたうちの[C]だけを別のページをコピーペーストしたいです。
は、
[C]だけをコピーし
別のページにペーストしたいです。
わかりづらくてすいません。
今からレス返します。ありがとうございました。
0716デフォルトの名無しさん
2012/01/07(土) 19:14:22.35なるほど!
そのマクロ(?)をペーストしたいセルに打ち込めば出来るんでしょうか?
今してみたら何も起きませんした…
0717デフォルトの名無しさん
2012/01/07(土) 19:15:13.48選択の仕方が間違えていますか!そうかもしれません。
今は、コントロールキーを長押ししながら選択しています
0718デフォルトの名無しさん
2012/01/07(土) 19:18:12.73ありがとうございました!!!!!コピー&ペーストできました!!!!、
本当にありがとうございました!
こんな皆様の高度な知識の中基本も知らない私が頼りに頼ってしまいすいませんでした……
本当に助かりました!
ありがとうございました!!!!!
0719デフォルトの名無しさん
2012/01/07(土) 19:19:45.13本当にありがとうございました!
0720デフォルトの名無しさん
2012/01/07(土) 19:25:26.20こっちで質問したほうがよかったね
http://toro.2ch.net/test/read.cgi/bsoft/1319632190/
0721デフォルトの名無しさん
2012/01/07(土) 19:25:40.93オートフィルじゃなくてオートフィルタだよ
A列選択しといて ツールバーのデータ(D) -> フィルタ(F) -> オートフィルタで
A列の項目を選択してコピーできるようになる
0722デフォルトの名無しさん
2012/01/07(土) 19:28:14.130723デフォルトの名無しさん
2012/01/08(日) 01:33:43.290724デフォルトの名無しさん
2012/01/08(日) 01:44:13.000725デフォルトの名無しさん
2012/01/08(日) 07:34:05.680726デフォルトの名無しさん
2012/01/08(日) 09:50:28.06たしか、井上も推奨してたな。
カーネル遊び
0727デフォルトの名無しさん
2012/01/08(日) 19:15:54.10/::::::::::::::::::::::::::::::;;::ノ ヽ;::\
/::::::::;;;;;;;;;,,,;;...-‐''"~ ヽ:;::l
|:::::::::::| 岡田 異音 |ミ|
|:::::::/ ,,, ヽ,、 '|ミ|
'|:::::::l '''"" ゙゙゙゙` |ミ|
|:::::|. ,,r ‐、 ,, - 、 |/
,/⌒| ノ ・ _), (. ・ `つ|
| ( "''''" |"'''''" |
ヽ,,. ヽ |
| ^-^_,, -、 |
| _,, --‐''~ ) | マニフェストもう守れない。どうしよう・・・・
'ヽ ( ,r''''''‐-‐′ /
震災後
|:::::::::/ |ミ|
|::::::::| ,,,,, ,,,,, |ミ|
|彡|. '''"""'' ''"""'' |/
/⌒| -=・=‐, =・=- |
| ( "''''" | "''''" |
.ヽ,, ヽ .| キリッ
| ^-^ |
. | ‐-===- | 大震災が起こったのだからマニフェストの破綻も致し方ありません
,\. "'''''''" /
朝鮮民主党
おわり
0728デフォルトの名無しさん
2012/01/10(火) 01:54:46.47プログラマ板だったのね。VBAやれる人はプログラマでいいんだ。
HTMLとCSSはできてもプログラマじゃないって言われたことあるけど。
0729デフォルトの名無しさん
2012/01/10(火) 02:55:30.12プログラマが触る対象がたまたまVBAだったならマ版にスレが立つだけで。
0730デフォルトの名無しさん
2012/01/10(火) 08:00:22.210731デフォルトの名無しさん
2012/01/10(火) 14:41:45.230732デフォルトの名無しさん
2012/01/10(火) 17:09:08.890733デフォルトの名無しさん
2012/01/10(火) 22:42:54.05下記で良いと思いますが
Range("A60000").End(xlUp).Row
上記以外の方法つまりRange("A60000")の記載がソースとして綺麗ではないので
もし他のやりかたとかあれば教えてください
0734デフォルトの名無しさん
2012/01/10(火) 22:50:42.61cells(rows.count,1).end(xlup).row
0735デフォルトの名無しさん
2012/01/10(火) 23:30:01.650736デフォルトの名無しさん
2012/01/10(火) 23:36:00.15どこまでできれば「使いこなした」ことになるんだ?
0737デフォルトの名無しさん
2012/01/10(火) 23:58:18.81Excel関数、Word文書づくり、Accessデータベース構造、Powerpointの効果的飾りや、
それにとどまらず、JAVA, JAVAScript、VisualBasic、VisualC++、
HTML、CSS、Perlや
Network、TCP/IP、Unixも完璧にマスターしたりしてる?
0738デフォルトの名無しさん
2012/01/11(水) 06:38:45.74処理重くてもなんでもいいからこれ自動化したいと思った事をそれなりにできるようになる
ぐらいなら1日1時間で3ヶ月目ぐらいには出来てた。
後からの修正がやりやすいようにクラスを使うようになったのは1年過ぎてから。
現在は、4年過ぎた今でも、ちょっと凝った事する時はネットに繋がったPCで調べれないと
ちょっと困る。
VBAでゲームとか作ってる人のレベルには永久に到達しないと自覚してる。
0739デフォルトの名無しさん
2012/01/11(水) 07:33:35.99どちからというと縄張りの違いだな。
ユーザーから提供されたシートが、Excel関数活かしまくりで驚かされることも多々あるし。
0740デフォルトの名無しさん
2012/01/11(水) 12:30:34.70Excel扱うならほとんど関数は不要。
0741デフォルトの名無しさん
2012/01/11(水) 16:52:14.300742デフォルトの名無しさん
2012/01/11(水) 17:21:24.040743デフォルトの名無しさん
2012/01/11(水) 17:44:07.83VBAコードにするまでもない場合あるし、
VBAとハイブリッドでつこてもいいじゃろし。
0744デフォルトの名無しさん
2012/01/11(水) 18:25:16.48Sub testdirectory()
Dim fld As String
fld = "c:\temp"
If Left(CurDir, 1) <> Left(fld, 1) Then
??????????
End If
End Sub
↑の???です。
chdirはフォルダは変更してもドライブが変更しないってあるんで、ドライブを変える方法を知りたいです
0745デフォルトの名無しさん
2012/01/11(水) 18:38:07.980746デフォルトの名無しさん
2012/01/11(水) 18:58:48.970747デフォルトの名無しさん
2012/01/11(水) 19:09:25.88方法を誰かおすえて
0748デフォルトの名無しさん
2012/01/11(水) 19:20:46.34それだけだと何とも言えん
Webクエリでも使っとけ
0749デフォルトの名無しさん
2012/01/11(水) 19:43:29.63ソースを取得したいのです
0750デフォルトの名無しさん
2012/01/11(水) 19:47:40.97>>261-264あたり
0751デフォルトの名無しさん
2012/01/11(水) 19:48:51.00そーっすか。
0752デフォルトの名無しさん
2012/01/11(水) 19:58:51.34これ分かる方いませんか?
ツリービューを使っていますが
イメージリストコントロールver6
ツリービューコントロールver6
両方チェックいれています
ちなみにソースコード内全て検索しましたがRangeは使っていません
0753752
2012/01/11(水) 20:03:21.580754デフォルトの名無しさん
2012/01/11(水) 20:11:29.98その範囲内の単一のセルが書き換わったとき、そのセル位置を取得方法を教えてください。
2003です。
0755デフォルトの名無しさん
2012/01/11(水) 20:27:21.730756デフォルトの名無しさん
2012/01/11(水) 20:45:34.140757デフォルトの名無しさん
2012/01/11(水) 22:09:24.890758デフォルトの名無しさん
2012/01/11(水) 22:14:26.150759デフォルトの名無しさん
2012/01/11(水) 22:30:25.15sum関数みたいな範囲指定なんですが、
変更した数値に対して処理を付加したいんです。
直前のセルの値をstaticで保持しておいてもいいのですが、
全数を比較処理して、変更箇所を見つけるプロセスは処理コストかかるので、
簡単にできないかと。
0760デフォルトの名無しさん
2012/01/12(木) 00:11:10.87Worksheet_Change
0761デフォルトの名無しさん
2012/01/12(木) 08:57:38.12ユーザー定義関数?
だとしたらそのアプローチが間違ってるよ
処理を付加とかわかんないから詳しく
0762デフォルトの名無しさん
2012/01/12(木) 16:11:18.522chやニコニコ動画に民主党から反日工作費が流れていることが知られるようになってきた。
民主党が用意した資金で工作員が2chを荒らしていることもだんだんと知られるようになってきた
0763デフォルトの名無しさん
2012/01/12(木) 19:56:33.69あいかわららず何がしたいか全然わからいけど例えばこんなこと?
B1に下記のように式が入力してあって
=SUMもどき関数(A1:A2)
直前の操作(変更)がA1かA2なのかによって
B1に表示される結果を変えたいということかな。
だったら無理だと思う。
0764デフォルトの名無しさん
2012/01/13(金) 02:56:51.89環境の都合上、vbaで作らなければいけないのですが、
別アプリケーションの指定したピクセルの色で判断し、
キー入力をエミュレーションしたいです。
別のアプリケーションの色の取得はどうすれば出来るでしょうか?
0765デフォルトの名無しさん
2012/01/13(金) 04:55:15.99それなら出来る。
面倒くさかったけど作ったことがある
0766デフォルトの名無しさん
2012/01/13(金) 08:31:16.77編集後にそのブックBを手動で別のフォルダに保存したいのですが、
『名前をつけて保存』のダイアログボックスはブックBの元の読み込みフォルダを開いてしまいます。
これを自分の好きなフォルダを開くようにマクロから設定できないでしょうか?
0767766
2012/01/13(金) 09:23:12.96ChDir "C:\"
としてもダメでした。
ChDir "C:\"
S = GetSaveAsFilename()
ThisWorkbook.SaveAs S
とかならC:を開いて保存できますが、
保存するかどうかは任意なので
できれば手動で『名前をつけて保存』を選び、
そのときに指定したフォルダでダイアログボックスを開くようにしたいのです。
0768766
2012/01/13(金) 09:26:35.73>S = GetSaveAsFilename()
は
>S = Application.GetSaveAsFilename()
の間違いです。
0769デフォルトの名無しさん
2012/01/13(金) 12:03:05.01ChDir "C:\xxx"
Application.Dialogs(xlDialogsaveAs).show
もし違ったら新しいマクロの記録を使ってダイアログボックスで保存した後、記録の終了→マクロを開いて編集して下さい
0770766
2012/01/13(金) 12:49:53.26都合により、来週水曜日まで
そのマクロにさわれないので来週試します。
本当にありがとうです
0771デフォルトの名無しさん
2012/01/13(金) 21:36:08.80Win32APIで別アプリのウィンドウハンドルを取得
これでわからなかったら、正直に「できません」と言ってあきらめろ
0772デフォルトの名無しさん
2012/01/13(金) 23:59:40.19@aritayoshifu 有田芳生
捜査当局が内偵を続けている農水疑惑。詳細な怪文書まで出回っている。3億円の
行方はどこに?
@minorucchu ジャーナリスト 田中稔
野田改造内閣を揺るがす、農水省3億円スキャンダルの怪文書。二人の議員名が浮上。
34分前 webから
https://twitter.com/#!/minorucchu/status/157687110562881537
鹿野と筒井らしい
自公は問責も視野に調査開始だって
0773デフォルトの名無しさん
2012/01/14(土) 01:11:28.42A2=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
こんなの書いてみたのですがダメでした
0774デフォルトの名無しさん
2012/01/14(土) 01:36:06.05なんでプロシージャ名が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
0775デフォルトの名無しさん
2012/01/14(土) 01:53:53.22有難う御座います!
無事出来ました。
本当に助かりました。
0776デフォルトの名無しさん
2012/01/14(土) 11:31:16.38降順に並べ替えるにはどうすればいいでしょうか?
ファイル名の一覧を取得して、別の配列に作成日時を
比較しながら挿入して行く方法しか思いつかないのですが、
もっと簡単な方法はありますか?
0777デフォルトの名無しさん
2012/01/14(土) 11:44:00.250778デフォルトの名無しさん
2012/01/14(土) 11:52:12.23> FreeFileとか宣言してない変数
変数じゃないし。
まあ、ADODB.Stream 使うなら関係ないけど。
0779デフォルトの名無しさん
2012/01/14(土) 11:57:19.440780デフォルトの名無しさん
2012/01/14(土) 15:07:46.00/tc
0781デフォルトの名無しさん
2012/01/14(土) 15:48:47.050782デフォルトの名無しさん
2012/01/14(土) 15:53:31.63>>774
>>778
AODで
UTF-8のtxt作る場合にはBOMがくっつくから
不要ならばバイナリで扱って掃除しないと困るよん。
と、焼酎飲みながらカキコ
0783デフォルトの名無しさん
2012/01/14(土) 16:45:49.71反日ネット工作員
朝日新聞社→社員約300人
民主党とその取り巻きの資金が入った反日工作会社→数社約450人
朝日新聞の社員は捕まった49歳の編集者を含め新聞記事を書く合間に2chを荒らしている程度とみられているが
民主党が用意した反日工作会社はほぼ24時間体制で工作を行っている
工作範囲は民主党が予め工作費を流している2ch、ニコニコ動画を中心にyoutube、個人のブログなどである。
0784デフォルトの名無しさん
2012/01/14(土) 18:01:51.550785784
2012/01/14(土) 18:05:05.750786デフォルトの名無しさん
2012/01/14(土) 19:37:32.74>15:53:31.63
>15:53:31.63
>15:53:31.63
0787デフォルトの名無しさん
2012/01/15(日) 12:42:32.23ありがとうございます。無事書けました。
プリントスクリーンして〜 とかトンチンカンなことを考えてました。
0788デフォルトの名無しさん
2012/01/15(日) 22:11:07.35のような構造体配列があって年度別に成績を格納するところまではできたんですが、
総合計を出すために nen = 9999 のところにどうやって加算するのかでつまずいて
ます。
みなさんのお知恵をぜひお借り出来れば m(_ _)m
0789デフォルトの名無しさん
2012/01/15(日) 22:56:18.31それだけじゃわからん
0790デフォルトの名無しさん
2012/01/15(日) 23:03:13.96普通に
Public 合計 As nendobetu_seiseki
って宣言して、それに足しこんでいけば良いんじゃね?
nen は、無駄になるけど気にしない。
そもそも、nen を持つ必要はないと思うし。
0791788
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のところに足しこみたいということです。
0793デフォルトの名無しさん
2012/01/15(日) 23:55:42.31野田内閣は過半数が帰化人
野田はどうだろうか
韓国人から賄賂を貰い、韓国人の集いに出席している野田は
首になった蓮○はシャブで逮捕歴のある人間と仲が良いな。蓮○自身はやってんの?
い-6-1
テレビが言えない民主党のスポンサー=韓国北朝鮮
あとはもうわかるよな
0794デフォルトの名無しさん
2012/01/17(火) 00:20:33.95複数のPCでブックの共有をしてるのですが、Excel以外にも
アプリを起動しているので常に前面にExcelがあるわけではないです。
この状態でAのPCで共有ブックをマクロを実行して更新したことをBのPCで
気づけるようにしたいのですが良い方法はないでしょうか?
msgboxを試してみたのですが実行したPCでしか表示されませんでした。
0795デフォルトの名無しさん
2012/01/17(火) 00:44:47.83VBAにこういうのを埋め込む
ttp://oshiete.goo.ne.jp/qa/2172332.html
0796デフォルトの名無しさん
2012/01/17(火) 17:25:31.76実行時にウインドウを閉じてバックグラウンドで動作させるプログラムを組みました。
内容は、webクエリを実行してコピー→別シートに貼り付けというのが大まかな流れ。
それで、手持ちのノートPCなら動作中は他のプログラムを問題なく使える。
だけど、デスクトップで実行すると画面がチカチカしてクリックがうまくいかなかったり
フォームに文字を入力できなかったりします。
動かすパソコンによって動作の違いってあるのでしょうか?
パソコンはともにwin7 64bitでoffice2010です。
0797デフォルトの名無しさん
2012/01/18(水) 00:19:40.90他のテキストボックスには値のが入るのですが、特定のテキストボックス入らず困っています。
(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型?の場合は何か特殊な処理必要なのでしょうか?
0798デフォルトの名無しさん
2012/01/18(水) 01:14:03.52hiddenなフォームフィールドに貼り付けとかどうやってできるのか俺には解らない
ホントにVBAの問題かちゃんと切り分けてから質問してくれ
どうせJavaScriptかなんかで上書きされてるってオチだろう
0799デフォルトの名無しさん
2012/01/18(水) 01:23:01.92hiddenの値を書き換えたいならIEを外からコントロールするんじゃなくて、submitまでの処理を自前でやった方が簡単
たとえばGoogleの検索はqという名前のテキストボックスに検索ワードを書き込むけど、
URLの末尾に「q=文字列」と追加しても同じ結果が得られる
hiddenで隠されたパラメータも同じ方法で自由な値を送信することが可能
例
ttp://www.google.co.jp/search?q=文字列&num=20
numというのは表示される件数。設定画面で変更してcookieに保存されたパラメータがhiddenで送信されている
0800797
2012/01/18(水) 10:22:32.24ありがとうございます。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でできるかも確認してみます。
0801デフォルトの名無しさん
2012/01/18(水) 11:30:47.40間違ってるかもだけど なんとなく
<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で値を入れるべきところは前者のような気がするんだけど
0802デフォルトの名無しさん
2012/01/18(水) 11:33:35.05間違いなくJavascriptで入力内容をチェックしてるね
(ちなみにJavascriptとJAVAは名前は似てるけど完全に別物だからきちんと区別してね)
0803797
2012/01/18(水) 15:05:07.95ありがとうございます。
そこの使い方がわからなかったんです。
前者に20111225と値を入れたいのですが・・・
VBAで変数から入れようとしたら、 「name=」も「id=」もないので
objIE.Document.getElementById("−−−−").Value = 変数
でどう使えばいいのかわからなかったとこです。
0804デフォルトの名無しさん
2012/01/18(水) 15:29:00.19VBSのサンプルだけどここが参考になると思う
7.10 フォームの操作3/フォーム名やコントロール名が無い場合
http://www.happy2-island.com/vbs/cafe02/capter00710.shtml
ちなみに onchangeはたぶん動作しないと思うが
javascriptが動かないとまずいときは値を入れた後そのテキストボックスに対して
.OnChange
とかしてみるといいいかも
例:objIE.document.forms(0).Item(5).OnChange
0805デフォルトの名無しさん
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
0806デフォルトの名無しさん
2012/01/18(水) 17:59:44.63Worksheets("02").Cells(t, y).Borders.LineStyle = xlContinuous
0807デフォルトの名無しさん
2012/01/18(水) 18:25:30.15それでやってみましたがやっぱりエラーが出ます
0808デフォルトの名無しさん
2012/01/18(水) 18:25:53.32多謝!
目的の操作ができました。
0809デフォルトの名無しさん
2012/01/18(水) 18:48:18.95ステップ実行でどこでエラーか調べてみて
0810デフォルトの名無しさん
2012/01/18(水) 18:53:01.55tとyの型宣言はどうなってる
0811デフォルトの名無しさん
2012/01/18(水) 19:31:13.60ここまで黄色の帯がかかります
If Worksheets("01").Cells(t, y).Value > 10 Then
>>810
Dim t As Integer
Dim y As Integer
よろしくお願いします
0812デフォルトの名無しさん
2012/01/18(水) 19:38:08.33エラーでとまったときのtとyの値は?
そのセルに入力されている値は?
0814デフォルトの名無しさん
2012/01/18(水) 19:56:59.65参照は小粒でピリリと辛いって言うからねぇ
0815デフォルトの名無しさん
2012/01/18(水) 20:01:18.80如何ざんしょう?・・・・ナンツッテ
0816デフォルトの名無しさん
2012/01/19(木) 17:43:20.40http://excelvba.pc-users.net/fol7/7_3.html
http://www.happy2-island.com/excelsmile/smile03/capter00702.shtml
一応調べてはみたのですが、
プログラムを組む時に基準に出来るような、正確に中身を測れる方法ではないのでしょうか?
正確に使われているセルを調べる方法が無いなら、データを保存するだけのシートを
分けて作って、普段見えないようにしておき。
見る時は、別シートの参照値だけを記述したシートを見るなんて運用になるんでしょうか?
0817デフォルトの名無しさん
2012/01/19(木) 18:34:19.73もっとわかりすくお願いします
0818デフォルトの名無しさん
2012/01/19(木) 19:08:45.09UsedRangeは空白の列や行が二つ以上続くと使われたセルの値を正確に返せない。
Endプロパティだと、列と行を一つずつ調べなければならない
そして列や行の端に値が有るのか無いのかの区別も別途ロジックを用意しなければならない
と言う認識なんだけど。
適当に作ったシートの中身をここら辺のプログラムで読み取るのって
汎用性が有る記述方法が見つからなかったんですが。
そもそもシートの記述の時点で、ユーザーフォームからしか書き込めなくするとか、
1シートに表を1つしか作れないようにするとかって制限をかける方が無難なんでしょうか?
DBに近いような物をシートに作る時はどのようにしてますか?
0819デフォルトの名無しさん
2012/01/19(木) 20:01:14.280820デフォルトの名無しさん
2012/01/19(木) 20:54:57.78何がしたいのか、何に困っているのか理解できなっかた。
0821デフォルトの名無しさん
2012/01/19(木) 22:23:54.84プログラムの設計書をVBAで自動生成しようとしてる。
電文の設計書と、それに対応した処理をするモジュールの設計書を作るとして。
両方自動生成するつもりなんだけど、テーブル二つを一つのシートに書くと、
検索のプログラムをシートの書き方毎に作らなきゃならないし面倒そう。
1 シート毎にテーブル一つにする。
2 ファイル名=モジュールのIDとし、特定の列のN番目からデータを取り自動生成すると楽っぽい
3 動的型でも使えるっぽいので、引数でどっちかを指定すれば、エクセルファイルの幅の設定もファイルの種類毎に変えられるっぽい
こんな感じの印象を持っている。
まぁ上のは例を挙げただけなんだが。
プログラムで何かをする時に、元データとして使うシート自体の書き方制限して特定の形にしておくと便利っぽいが
ネットで調べる限りそんな記述が出て来ないんだけど、言葉にしないだけで結構みんなセルに特定の規則作って使ってるよね??
と、出来る限り分かりやすく書き直してみたんだけどOK?
0822デフォルトの名無しさん
2012/01/19(木) 22:39:40.26そのレスも自動生成なのかい?
実用レベルには程遠いね
0823デフォルトの名無しさん
2012/01/19(木) 23:12:10.03もういいやw
説明するのも面倒だし、学校の先生から説明されるような物じゃ無いと何も理解できないとかww
金貰って書いてるわけじゃ無し、理解できない奴は無視しておけば良いやw
しかも実用にほど遠いってww
ひな形の作成ぐらいにしかなって無いだろうよ説明的にww
0824デフォルトの名無しさん
2012/01/20(金) 01:14:31.59一つ言える事は、ExcelをDBとして使う事は愚の骨頂。できるけど。
どうしてもやるなら入力専用シートなりフォームを作って
データシートをテーブルに見立ててSQL
下手にLookUpとか使うと>>813みたいに思わぬ所で参照エラー地獄
これで解らないなら敢えてExcelで作る必要無し
Accessとかなんか得意なのが有ればそっちのが良いんじゃね?
PGなんてのは一つ一つやりたい事実装してけば最後には出来るもんなんだよ
いっぺんにあれこれやろうとするから解らなくなる
すっ飛ばすのは数こなして慣れてからだよ
0825デフォルトの名無しさん
2012/01/20(金) 01:26:24.94入力制限もかけられる
動的に生成したいなら、マクロの記録使ってセル設定すれば
ソースが出来るから後はそれを使いまわせ
0826デフォルトの名無しさん
2012/01/20(金) 01:48:27.05DBに近いような物・・・
DB自体じゃないよ
PG作る時のクラスの命名規則とかいちいちDB作って登録するわけじゃないでしょ、
あくまで簡易な物
それにDBのテーブル自体もエクセルにしといた方が良いと思うが。
テーブルのデータじゃ無く、テーブルの構造な。
MVCアーキテクチャで作る時に、どのテーブルのどのデータ抜いてきたかとか分かると良いだろ。
で、参照値にしとけばって話で
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q127916537
こんなのも出来るし
まぁどちらにしろプログラムの作り方についての質問じゃ無く。
VBAで何かする時に、元になるシートが有るわけだが、好き勝手毎回適当に作るより、
規則性持たせた方が都合が良さそうだけど、どう思う>all
ぐらいな感じ
0827デフォルトの名無しさん
2012/01/20(金) 04:02:02.22ヒトにとって読み易い表フォーマットは往々にして機械走査しにくいが、どんな運用ルールを設けてもなし崩しにされてしまうので、結局ニンゲンさまに合わてプログラムするしかないと諦めてます。
0828デフォルトの名無しさん
2012/01/20(金) 08:43:35.88プログラムから、ボタンを押すと実行されるサブルーチンをcallするのでなく、ボタンそのものを押す方法。
プログラムは、vbaで出来なければ、他のものでも良いです。
0829デフォルトの名無しさん
2012/01/20(金) 09:27:13.58VBAでコピー元→コピー先に値の貼付を行なった際、表示がコピー先の書式設定に合ってない…
どう対処したら良いっすか!?
コピー元書式設定:「文字列」 値「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
0830デフォルトの名無しさん
2012/01/20(金) 10:04:14.60num 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)
として計算しています。シートに書き出さず直接計算できたらと思っているのですけど。
0831教えてください
2012/01/20(金) 10:18:09.88入力していき、最後に別のテキストボックスに10個の数値のMAXと
MINを自動的に割り出したいのですが、どうしてもうまくいきません。
AVEはいくんですが・・・。
どうか、優しい方、教えてください。
0832デフォルトの名無しさん
2012/01/20(金) 11:06:59.01VB6と一緒
ここはあくまでExcelをマクロ言語操作することに関してのスレなので
例え環境としてVBAを使おうと、Excel操作以外はスレ違い
>>829
コピー先に日付書式が設定されていても、それはあくまで数値(シリアル値)が入力されたら
その書式に沿って表示せよという設定なだけで、文字列を入力すれば文字列のまま表示されるので
日付文字列を一旦CDateやDateValueでシリアル値に変換してから入力すれば良い
>>830
VB6と一緒
ここはあくまでExcelをマクロ言語操作することに関してのスレなので
例え環境としてVBAを使おうと、Excel操作以外はスレ違い
>>831
VB6と一緒
ここはあくまでExcelをマクロ言語操作することに関してのスレなので
例え環境としてVBAを使おうと、Excel操作以外はスレ違い
0833デフォルトの名無しさん
2012/01/20(金) 16:57:30.64何分かけて一レス書くのか知らないけど、それと同じ時間だけ何度も読んで、同じ時間だけかけて推敲してから送信してね。
0834デフォルトの名無しさん
2012/01/20(金) 17:44:05.85ありがとうございます。
でもセル範囲でデータを取っているため
Cdateが使えません……
0835デフォルトの名無しさん
2012/01/20(金) 18:31:49.23For Each セル In セル範囲
0836デフォルトの名無しさん
2012/01/20(金) 18:49:15.64お前のレベルに合わせたら例3つぐらい出して、起承転結付けて最初と最後に結論かくような、
いかにも国語の教科書って書き方しないと伝わらないだろ
>>819の時点で分かる人には分かるって気が付かないか?
そもそも最初の文だけでも伝わる人には伝わる。
俺に重要なのはお前に伝わる書き方をする事ではない。
同じような考察に至った人が現在どういう使い方をしているのかが知りたいだけ。
自分が経験不足で何を言いたいか理解できなかったからってこっちのせいにするな。
ここはお前のようなかまってちゃんに、必ず伝わらないと文章書いちゃいけないなんてルールは無いんだぞ
0837デフォルトの名無しさん
2012/01/20(金) 19:22:44.14> そもそも最初の文だけでも伝わる人には伝わる。
> 同じような考察に至った人が現在どういう使い方をしているのかが知りたいだけ。
0838デフォルトの名無しさん
2012/01/20(金) 19:23:39.670839デフォルトの名無しさん
2012/01/20(金) 19:33:38.62誰にも伝わっていないか、それとも同じような考察に至った者がいないか(笑)
0840デフォルトの名無しさん
2012/01/20(金) 19:37:50.75使えない上司の定型文貼る奴はレベルが違いますね
0841デフォルトの名無しさん
2012/01/21(土) 07:38:58.15俺にはこう伝わったぞ
>プログラムで何かをする時に、元データ(略)の書き方制限して特定の形にしておくと便利っぽい
プログラムで完全に不定なデータ扱うなんて、考察にいたるとかいうまでもなく
無理だってわかりそうなもんだが、彼は今初めてそれに気づいたらしい
あと助詞と句読点の使い方がおかしいので、日本語が不自由な人だというのも伝わった
0842デフォルトの名無しさん
2012/01/21(土) 07:49:31.870843デフォルトの名無しさん
2012/01/21(土) 07:50:15.280844デフォルトの名無しさん
2012/01/21(土) 08:16:13.33簡易だろうがなんだろうがDBはDBでしか無いじゃん
あとPG作る時のクラスの命名規則とかいちいちDB作って登録する事は普通に有るので
無いでしょ?と問われたらNOとしか言えませぬ。
まあ一つ言える事は、どんな規則作っても
一番偉い奴がガッチリ管理し続けない限りなし崩しになるから
そんなとこに無駄な労力を割く必要無し。
ルールをプリントアウトして目立つとこに貼っとけw
0845デフォルトの名無しさん
2012/01/21(土) 08:30:50.69仕事なら一緒になって真面目に考えるけどさ
もうちょっと具体例というか・・・あ、ここVBAスレだな。
仕様は自分で考えて、コーディングの段階になってからまた来てくれよ
0846デフォルトの名無しさん
2012/01/21(土) 10:32:17.82ひな形に読ませる設定一覧が表になってて、表のレイアウト込みで自動で読ませたい
こんなかんじ?
やめとけ、出来ない事はないと思うがレスのやり取り見てると作った本人でも使えないモノしか出来そーにない
0847デフォルトの名無しさん
2012/01/21(土) 12:30:39.010848デフォルトの名無しさん
2012/01/21(土) 12:32:23.74例えばc言語のテーブルみたいなのを想定したシートにパラメータつっこめばテーブルに加工するのは容易。
同じように定型的コードの要素をならべてシートに整理。VBAで処理したら、典型的コードの亜種がつくれます。
用途は、テストコードの量産とか。
0849デフォルトの名無しさん
2012/01/21(土) 12:34:52.45典型的コードの構成部品はVBAコードに埋め込み。リファインはVBAを直接弄る。
0850デフォルトの名無しさん
2012/01/21(土) 13:51:04.88http://awabi.2ch.net/test/read.cgi/poverty/1327050821/
0851デフォルトの名無しさん
2012/01/21(土) 15:14:31.78http://www.youtube.com/watch?v=wlNVmH4X27s
0852デフォルトの名無しさん
2012/01/21(土) 22:04:14.91エクセルの使い道って、プログラミング組めなくてmysqlとか使えない奴が使う
簡易なDB機能じゃなかろうか・・・
いちいち作るのが面倒ならエクセル使うと思うんだが
クラス名をDBに登録ってどんな規模ならやる羽目になるん?
0853デフォルトの名無しさん
2012/01/21(土) 22:06:47.920854デフォルトの名無しさん
2012/01/21(土) 22:20:20.20いちいち作るのが面倒ならエクセル使うと思うんだが
いちいち作るのが面倒ならエクセル使うと思うんだが
いちいち作るのが面倒ならエクセル使うと思うんだが
いちいち作るのが面倒ならエクセル使うと思うんだが
文章自体読めない奴が何をw
0855デフォルトの名無しさん
2012/01/21(土) 22:41:24.940856デフォルトの名無しさん
2012/01/21(土) 22:41:35.78という錯誤が、この話題ではまかり通っているように思える。
0857デフォルトの名無しさん
2012/01/21(土) 23:39:22.32は実は錯誤でもなんでもなく正しいんだけどね
少なくともExcelにおいてはね
さすがにCSVデータのみを以てDBとするのは正しくないが
Excelは昨今のDBソフトには遠く及ばないものの、DBとして本質的な
最低限の機能は備えているので、Excelのシート上にデータを置けば
それはDBと呼んでも何の差し支えも無い
むしろDBに対して、本質的なところではなく
後発の固有DBフォーマットや固有DBソフトの付随的な機能や規格を挙げて
「この要素を満たしてなければBDとは言えない」とか言ってる奴の方に錯誤がある
BDソフトメーカーの高機能戦略に踊らされすぎて、本質的なDBというものが見えてない
0858デフォルトの名無しさん
2012/01/22(日) 01:10:50.49もちろんExcel表(上のデータ)は立派なDB足り得るぞ
だが、データ=DBが正しいなら、CSVデータも本質的に立派なDBだが?
すべてのデータがDBだというのはさすがに間違ってるだろうが
今回の話でのデータはまさしくDBといって差し支えないぞ
そのDBのデータをエクセルで扱うのに、フォーマット不定でできないかって言ってる
DBの本質とかDBソフトの本質とかスレ違いだしそっちは他所で議論してくれ
0859デフォルトの名無しさん
2012/01/22(日) 04:51:55.620860デフォルトの名無しさん
2012/01/22(日) 05:10:01.15Q.
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")という記述で必要分だけ文をコピペすると文が長くなりますよね…
0861sss
2012/01/22(日) 06:34:50.26Dim 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
0862デフォルトの名無しさん
2012/01/22(日) 07:17:23.72いやいや、さすがにそれはねーよ
・・・あったでござる >>857-858
0863デフォルトの名無しさん
2012/01/22(日) 08:20:48.53感動!.cellsや.columnsという記述でこんな簡単に制御できたのかwww
色々試したら希望通りの動作が確認できました。
これで記述のシェイプアップが捗りそうです!ありがとうございます!
ところで範囲が四角でククれない不定形の場合(Ctrl+左クリックで選ぶような)で
記述を簡略化する場合はどう書けばいいのでしょうか?
今考えついて動作確認できたのが、Array(A,B)配列を作って
For Each I In 範囲(数字).cellsとして数字=0からスタートし、
next iを越えたら数字=数字+1としてGoToで頭に戻るという記述なのですが
もっとスマートに書く方法はありますか?
0864デフォルトの名無しさん
2012/01/22(日) 08:32:07.79君は>>857最後の1行に該当する子なんだね。
0865sss
2012/01/22(日) 08:44:03.75よう解らんがこういうことか?
For Each cell In [A1:C3,E2:G4,C6:E8]
ii = ii + 1
cell.Value = ii
Next cell
0866デフォルトの名無しさん
2012/01/22(日) 09:26:32.36ですです、そういう内容の時に範囲の部分を[A,B,C]というように
手前でsetした変数としての記述はできないのかな、という疑問です。
というのは、手元の環境でDim A As Rangeの
set A = range("A1:C3")等と変数記述すると
For Eachのところでオブジェクトが必要と怒られるのですが
その解決方法がわからなかったので…
変数記述しなければ動作するのはこちらでも確認できましたが
0867sss
2012/01/22(日) 09:39:04.98つまりこういうことか?
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
0868デフォルトの名無しさん
2012/01/22(日) 10:01:25.18感動した。正にその記述です。
詰まるところArrayじゃなくてUnionを使えば良かったのですね。
VBA一ヶ月目の俺にはさっぱり意味が全然わからないけどwこれから勉強させて頂きます。
.cellsとUnionよくわからんけどすごい!びっくり!
とりあえずネカフェの12時間パックが切れそうなので一旦お暇して夜また来ます!
一番ネックだった部分が解決して本当に嬉しい!
お付き合い頂きありがとうございました。感謝。
0869デフォルトの名無しさん
2012/01/22(日) 11:48:45.06相手にするだけ無駄だろ
データを大量に詰め込めて検索できればDBなのにそれも理解してなそうだし
VB以前にVLOOKUPも知ってるか謎
0870デフォルトの名無しさん
2012/01/22(日) 11:54:36.92トンデモすなあ
0871デフォルトの名無しさん
2012/01/22(日) 12:10:46.65データベースというものを、大手の作るデータペースソフトとしてしか
見れてない奴からすると、トンデモ理論に見えるんだろうね。
データベースというものの本質を解っていれば、
実にシンプルかつ的確にデータベースというものを表現しているのだが。
0872デフォルトの名無しさん
2012/01/22(日) 12:40:44.830873デフォルトの名無しさん
2012/01/22(日) 12:52:31.14削除も、更新も不要なんだ、へぇ〜。
馬鹿すぎ。
0874デフォルトの名無しさん
2012/01/22(日) 12:58:59.500875デフォルトの名無しさん
2012/01/22(日) 13:08:09.76お久しぶりです!
0876デフォルトの名無しさん
2012/01/22(日) 13:10:48.90> さすがにCSVデータのみを以てDBとするのは正しくないが
というトンデモ理論が口をつくのだろう。
0877デフォルトの名無しさん
2012/01/22(日) 13:52:01.22データベースそのものじゃないとおもうが
0878デフォルトの名無しさん
2012/01/22(日) 13:55:22.650879デフォルトの名無しさん
2012/01/22(日) 13:57:20.36(こんな事も知らなかった俺って)馬鹿すぎ。
こうだなw
0880デフォルトの名無しさん
2012/01/22(日) 14:20:41.87君の言う「データベースそのもの」って言うのを明確にしてくれ。
何でもかんでもデータベースだと言うなら別に止めないけど。
0881デフォルトの名無しさん
2012/01/22(日) 14:22:05.34なら、詰め込むのも不要だよな。
馬鹿だね。(w
0883デフォルトの名無しさん
2012/01/22(日) 14:44:04.59あと、その意見だと「データ=DB」は間違いだよね。
0884877
2012/01/22(日) 14:55:39.320885877
2012/01/22(日) 15:04:01.39×提供するのが
○管理し提供するのが
0886デフォルトの名無しさん
2012/01/22(日) 16:05:05.70じゃあデータだけ見ただけだと何も言えないということでいい?
つまり
「データ=DB」
「CSVデータも本質的に立派なDBだが?」
「データを大量に詰め込めて検索できればDB」
は、データの目的が書いてないので、DBと言い切るのはトンデモ理論ということでいいよね。
0887デフォルトの名無しさん
2012/01/22(日) 16:11:31.870888877
2012/01/22(日) 16:48:18.64そのスタンスでいる限り平行線になるな どっちも
メンドイから抜けるわ
罵倒されるだろうけどあえて受けるよ
じゃ頑張ってね
0889デフォルトの名無しさん
2012/01/22(日) 16:53:17.31そもそも構うだけ無駄だった
まぁ言った通りの低能ぶりだったろ
結局辞書で調べろと言っても分からない奴には何を言っても無駄
0890デフォルトの名無しさん
2012/01/22(日) 17:32:57.640891デフォルトの名無しさん
2012/01/22(日) 17:48:25.04複数ユーザーで使用するエクセルの表・・・
立派なデータベースですねw
0892デフォルトの名無しさん
2012/01/22(日) 17:55:54.10生徒のテストの点数をエクセルで管理してる全国の教職員に謝ったら?
0893デフォルトの名無しさん
2012/01/22(日) 18:05:57.040894デフォルトの名無しさん
2012/01/22(日) 18:27:10.66お前の中では「エクセル表がデータベースかどうか」って話だったの?
さすが、レベルが違うわ〜
0895デフォルトの名無しさん
2012/01/22(日) 18:40:52.85Callの時は引数を括弧でくくって、Call付けない時は括弧を付けない。
と言うことでOK?
0896デフォルトの名無しさん
2012/01/22(日) 18:52:40.110897デフォルトの名無しさん
2012/01/22(日) 19:24:29.62無理やり引き分けに持ち込んだ気になって、自己満か。
まあ、理論的に返せないから、彼にとっては一番いい解決法なんだろうな。
0898デフォルトの名無しさん
2012/01/22(日) 19:47:59.28複数のアプリケーションソフトまたはユーザによって共有されるデータの集合のこと。
複数のアプリケーションソフトによって共有されるデータの集合のこと。
複数のユーザによって共有されるデータの集合のこと。
この片方でも満たしていればデータベースと呼べるわけだが・・・
頭悪いの?広い意味では図書館すらデータベースなのにw
0899デフォルトの名無しさん
2012/01/22(日) 19:52:20.310900デフォルトの名無しさん
2012/01/22(日) 20:04:38.66へぇ〜、ファイルサーバーで共有されているファイルは、全部データベースって呼べるんだ。
これまた、すごい珍説乙。
まだ >>888 で止めときゃいいのに、馬鹿だねぇ。(w
0901デフォルトの名無しさん
2012/01/22(日) 20:13:32.56馬鹿過ぎワロタw
>ファイルサーバーで共有されているファイルは
ファイルサーバーは
それと別人だから、お前と違って恥ずかしい勘違いしてるから仲間が居ない奴とは違うw
0902デフォルトの名無しさん
2012/01/22(日) 20:30:26.88落ち着いてレスしろよ、なに言ってるのかわからん。
本人にもわかっているのか、怪しいけど。(w
0903デフォルトの名無しさん
2012/01/22(日) 20:36:41.00日本人専用なの、チョンに合わせて書く事はできませぬw
0904デフォルトの名無しさん
2012/01/22(日) 20:57:42.86わかりやすいね。(w
0905デフォルトの名無しさん
2012/01/22(日) 21:12:25.54>>901が理解できるようになってから書き込んでねw
これだからチョンはw
0906デフォルトの名無しさん
2012/01/22(日) 21:52:25.63え゛っ、マジで >>901 がまともなレスだと思っているんだ…、すごいな。
>ファイルサーバーで共有されているファイルは
ファイルサーバーは
> それと別人だから、お前と違って恥ずかしい勘違いしてるから仲間が居ない奴とは違うw
誰か、翻訳してくれ。
0907デフォルトの名無しさん
2012/01/22(日) 22:25:55.910908デフォルトの名無しさん
2012/01/22(日) 23:04:51.260909デフォルトの名無しさん
2012/01/22(日) 23:07:29.40データベースの定義はたったこれだけ
検索だの抽出だのシステムかどうのとかいうのはまた別の話
0910デフォルトの名無しさん
2012/01/22(日) 23:18:19.90一般論で言えばデータが集まってれば何でもデータベースだよ
一連のスレをざっと見て目に付いた単語を並べると、図書館、ファイルシステム、CSV、エクセルのシート、みんな正解
メモ帳はアプリだから違う。カテゴリー分けするなら、DBではなく、極めて原始的なDBMSの方に入る
それをどう使うか、効率、使いやすさ、規模ってのはまた全然別の話。検索だの削除だのもみんな運用側の話だわな
0911デフォルトの名無しさん
2012/01/22(日) 23:48:41.180912デフォルトの名無しさん
2012/01/23(月) 00:03:20.57データが正しいときと、間違っているときでは開かれるサイトが違います。
そこで処理が正しければ、EXCELのその行のA列に"OK"といれて
ダメなら"Error"とでも入れたいのですが、
そのIE上の処理が正しいかどうかを判別する方法ありますか?
例えば、ボタンを押した後に出てくるアドレスとかがEXCELに取得できれば
判別できるのかと考えていますが、そんな方法ありますか?
お願いします。
0913デフォルトの名無しさん
2012/01/23(月) 00:33:42.81>ファイルサーバーで共有されているファイルは
ファイルサーバーは
↑これは、「データの集合」から「データ」に勝手に解釈変えて何言ってるの?馬鹿なの死ぬの?
>まだ >>888 で止めときゃいいのに、馬鹿だねぇ。(w
それと別人だから、お前と違って恥ずかしい勘違いしてるから仲間が居ない奴とは違うw
これは勝手に同一人物認定してるんじゃね〜
ファイルサーバーがデータベースじゃないとか恥ずかしい勘違いしてる奴と違って、
論理破綻してね〜から同一人物の可能性がどれだけ少ないと思ってるんだ?この低能がw
馬鹿過ぎワロタw
↑これは、教えてもらえてるのに自分の知らない知識は間違ってる事にしたい君の全てのレスに対して
こんな感じ
0914デフォルトの名無しさん
2012/01/23(月) 00:34:22.77いくらでも出来るけどスレ違い
ここはマクロ言語で「Excelを操作する」ことに関してのスレで
他のアプリを操作したりデータを取ったり渡したりは管轄外
0915デフォルトの名無しさん
2012/01/23(月) 00:50:37.760916デフォルトの名無しさん
2012/01/23(月) 01:47:33.88Application.Visible = Falseがありますが、
これだと2つ以上ブックを開いていたときも全部非表示になってしまい都合がわるいです。
非表示させたいブックを指定する方法はないでしょうか?
0917デフォルトの名無しさん
2012/01/23(月) 02:14:02.47関連付け変えて、ブックを開くたびに新しいExcel開くようにしな
多少多めもメモリ食うが、昨今のどころかここ数年くらいのPCなら
Excelを10個や20個起ち上げたところでメモリ不足になんかならないし
タスクボタンもグループ化出来るからさほど邪魔にならないはず
つーかさ、ユーザーフォームだけ使いたいなら、わざわざExcel使わないで普通の開発環境使えば?
VBAと完全互換のVB6は有料な上にとっくに終了してるが、オクで1/10以下の価格で出回ってるし
互換性の高いActiveBasicとか、そこそこ互換性のあるVB.NET(VB2010)とかは無料で使えるし
HTA+VBScriptなんて手もあるし
0918デフォルトの名無しさん
2012/01/23(月) 02:23:32.94アドバイスありがとうございます。
たしかにユーザーフォームだけ使うのであればエクセルである必要がないですね。
0919デフォルトの名無しさん
2012/01/23(月) 02:50:45.17↓こんなんですか?
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
見当違いの回答だったらごめんね
0920デフォルトの名無しさん
2012/01/23(月) 07:03:36.43>MyObj.LocationURL
これできました。ありがとうございます。
0921デフォルトの名無しさん
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
助けてください。
0922デフォルトの名無しさん
2012/01/23(月) 09:53:04.14ヒント:>>2
ここはマクロでExcelを操作する話以外はスレ違い
0923デフォルトの名無しさん
2012/01/23(月) 10:30:44.83コラ
それはオレが広めたセリフであり
オレだけが使うことを許されたセリフだ
もし使いたいならオレの了承を取ってからにしてくれ
0924デフォルトの名無しさん
2012/01/23(月) 10:38:49.73使いたいならまずはお前が俺の承諾を取れ
0925923
2012/01/23(月) 11:25:08.870926デフォルトの名無しさん
2012/01/23(月) 11:27:27.99それともデータ領域を複製してポインタを渡すだけ?
0927デフォルトの名無しさん
2012/01/23(月) 20:03:56.47使うのがお前だけって事は全く広まってなくね?
0928デフォルトの名無しさん
2012/01/23(月) 22:00:59.47データを複製してポインタを渡すだけ。
VARIANTとSAFEARRAYを使って実装されてるっぽいし。
0929デフォルトの名無しさん
2012/01/23(月) 22:19:20.89桜は満開でございます
http://blog-imgs-46-origin.fc2.com/k/e/t/ketsunomi/c464.jpg
0930デフォルトの名無しさん
2012/01/23(月) 22:23:00.950931デフォルトの名無しさん
2012/01/23(月) 23:06:12.89*.wav って、PCM データが集まってるよな。
それを共有したらデータベースって言うわけだよな。
すごいよ、お前ら。
さすがにあほすぎて太刀打ちできんわ。(w
0932デフォルトの名無しさん
2012/01/23(月) 23:24:21.190933デフォルトの名無しさん
2012/01/23(月) 23:52:45.71本当に残念な奴だなお前はw
データを特定の形で整理した
「データの集合」がまず有って、
それを複数のユーザーで使いまわす事が出来る状態になってれば
それはもう立派なデータベースだと・・・
PCMデータを一個ずつ抜き出して意味の有る物の単位になるのか?
いい加減謝れよ、てかその屁理屈考えるのにどのぐらいかけたの?w
0934デフォルトの名無しさん
2012/01/24(火) 00:43:03.87>データを特定の形で整理した
おや? >>898 には、一言も書いてないんだけど、そんな条件。
後出しじゃんけん乙。
ちなみに、PCM データは時系列に音の大きさを特定のビット数で並べると
言う形で整理されてるし、一個ずつ抜き出せばその時点の音の大きさと言う
意味のあるデータになる
もちろんファイルサーバーなり、P2P で複数のユーザーから使いまわすことが
でぎる状態にできるし。
て言うか、複数のユーザーとか何回もアホみたいに書いてるが、一人で使う
データベースと言うものの存在も知らないのか?
例) 自分の蔵書を自分が見るためだけにデータベース化してる奴など。
> どのぐらいかけたの?
「データの集合」と言う言葉から *.wav ぐらいはすぐ思いつくと思うが、
もしかして必死に考えないと思いつかないの? (w
0935デフォルトの名無しさん
2012/01/24(火) 01:32:49.56丸一日レスが無かったから顔真っ赤にして必死に考えてたんだと思ったよw
>データを特定の形で整理した
>>869で検索できればと言っているわけだがw
検索、再利用、何かの指針にできるここまで分かってれば特定の形で整理されて無いとDB足りえないと分かるよなw
後出しではなく、君が低能なだけだねww
それと君の言ってるwavの話なんてそもそもDBじゃないでしょww
アルファベットの定義があるから、アルファベットの意味不明の文字列がDBになるなんて
誰も言ってないわけだがwww
>「データの集合」と言う言葉から *.wav ぐらいはすぐ思いつくと思うが、
>もしかして必死に考えないと思いつかないの? (w
わざと間違った方向に考える為に知恵を絞ったんじゃないの?w
真性の低能だからそういうのがパッと思いついたの?w
0936デフォルトの名無しさん
2012/01/24(火) 02:26:48.68立派な鳴き声データベースですが?
0937デフォルトの名無しさん
2012/01/24(火) 02:57:11.15補足すると、データの種類は問わない、集めた個数も問わない
定義の中にデータの種類や個数を限定する言葉は一切出てきてないんだから当たり前だね
つまり、PCMデータを集めてもいいってこと
ではここで問題
PCMデータを集めたwavファイルはデータベースか?
ヒント データが集まってればそれはデータベースだよ
0938デフォルトの名無しさん
2012/01/24(火) 03:05:59.71おはよう
こんにちは
こんばんは
こんな感じで三つあればデータベースだが
おはよう
これ一個だけを
”お”・”は”・”よ”・”う”
こう分けられるからデータベースだとか酷過ぎるだろw
誰がこんなゴミデータ再利用するの?w
データ・ベース
http://dictionary.goo.ne.jp/leaf/jn2/198592/m0u/
ベースの意味を学習しなさいw
PCMデータの一覧とかならデータベース足りえるが・・・
wavで使われる一つ一つのPCMに意味なんかないだろ?w
ゴミの集合じゃデータベースとは言えないんだよ
意味のあるデータの集まりである必要がある
0939デフォルトの名無しさん
2012/01/24(火) 03:12:29.63入っているデータに意味がないのでこれはデータベースではありません
これは○か×か?
0940デフォルトの名無しさん
2012/01/24(火) 03:16:44.61内容が何かは伝えていません
このファイルを見た人はこれをデータベースだと思うでしょうか、違うと思うでしょうか
0941デフォルトの名無しさん
2012/01/24(火) 06:08:22.67>丸一日レスが無かったから顔真っ赤にして必死に考えてたんだと思ったよw
すごいなぁ、昼間に働くとか学校に行くとかの概念がないんだ…
>>>869で検索できればと言っているわけだがw
はぁ? そのレスが君のレスで >>898 に関連しているとエスパーしろと? ばかじゃゃねーの?
> 検索、再利用、何かの指針にできるここまで分かってれば特定の形で整理されて無いとDB足りえないと分かるよなw
> 後出しではなく、君が低能なだけだねww
検索、再利用、指針? どんどん後出しされるねぇ。
自分が >>898 で「この片方でも満たしていればデータベースと呼べるわけだが・・・」って書いたことを忘れたのかなぁ? (w
>それと君の言ってるwavの話なんてそもそもDBじゃないでしょww
そりゃそうだよ、DBじゃない例出してるんだから。
でも、君の >>898 の定義は満たしてるだろ?
>アルファベットの定義があるから、アルファベットの意味不明の文字列がDBになるなんて
>誰も言ってないわけだがwww
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
>わざと間違った方向に考える為に知恵を絞ったんじゃないの?w
ひょっとして、自画自賛?
>真性の低能だからそういうのがパッと思いついたの?w
そういう、自己紹介はいいから。
0942デフォルトの名無しさん
2012/01/24(火) 06:42:16.230943デフォルトの名無しさん
2012/01/24(火) 06:57:01.650944デフォルトの名無しさん
2012/01/24(火) 10:21:26.30wavファイル一個でも、異なる複数の音声が入っていて、
それがユーザーにとって意味あるものでかつシークとかで
検索できるものであればDBと言えるんじゃない?
「おはよう」はこれ一個だけがユーザーにとって意味あるもので
あって、一文字づつ分けるひつようないし、
「おはようこんにちはぽぽぽぽーん」とかのデータから
単語を抜き取るルールがあればDBなんじゃないの
0945デフォルトの名無しさん
2012/01/24(火) 10:45:19.900946デフォルトの名無しさん
2012/01/24(火) 13:42:31.73I/OをDBMSが担っているということにしてはダメ?
0947デフォルトの名無しさん
2012/01/24(火) 15:30:28.170948デフォルトの名無しさん
2012/01/24(火) 15:30:28.970949デフォルトの名無しさん
2012/01/24(火) 16:10:55.54データベース
http://toro.2ch.net/db/
0950デフォルトの名無しさん
2012/01/24(火) 18:47:52.27>すごいなぁ、昼間に働くとか学校に行くとかの概念がないんだ…
すごいなぁ、真性のコミュ障が社会に出てると思われるとでも?w
それとも君のレスを見てコミュ障だと思われないとでも?w
検索、再利用、指針≒複数人数での使いまわしの必要条件
まぁ脳みそ腐ってる奴に言っても無駄なんだろうけどw
0951デフォルトの名無しさん
2012/01/24(火) 21:34:50.36俺新入社員の営業職でエクセルを使うよりも商品知識を付けたいのにエクセルの関数の問題出された
おまえら助けろ下さいおなしゃっす
0952デフォルトの名無しさん
2012/01/24(火) 21:36:16.60エクセル総合にいってきます
0953デフォルトの名無しさん
2012/01/24(火) 22:16:24.400954デフォルトの名無しさん
2012/01/25(水) 08:45:10.92Sheets("シート名").Select
ActiveWindow.SelectedSheets.Delete
と普通にマクロの記録で書くと、
「選択したシートに、データが〜〜[削除]をクリックしてください]
というメッセージがでますが、それを出ないようにするか、
自動に[削除]をクリックすることはできますか?
0955デフォルトの名無しさん
2012/01/25(水) 09:04:43.390956デフォルトの名無しさん
2012/01/25(水) 10:39:28.30Application.DisplayAlert = False
>>955
うぜぇバカヤロウは消えろ
0957デフォルトの名無しさん
2012/01/25(水) 18:50:05.47とか思ってるのかな〜
0958デフォルトの名無しさん
2012/01/25(水) 21:42:43.57RangeからCellsをFor Eachで取り出した時の順番は左上から右に向かうというのは保証されてるんでしょうか?
ヘルプかどこかに明記されていますか?
0959デフォルトの名無しさん
2012/01/26(木) 01:57:07.03MSDNだったかヘルプだか忘れたが、どこかで保証されないと書いてあるのを見た記憶があるが、実際は決まった順序だろ?
二次元配列に取り込めば、縦方向が先になるけど。
0960デフォルトの名無しさん
2012/01/26(木) 06:50:28.76Rangeの取り方しだいかもよ
単純な矩形の領域だと左上から横行って下に行くけど、
不定形の領域を指定するとそうじゃなくなった。
たとえば
For Each Cell in Application.Union(Range1,Range2)
だとRange1から先に処理するんで、
Range2の方がRange1より左上にあると全体としては左上からじゃなくなる。
0961デフォルトの名無しさん
2012/01/26(木) 07:16:22.31おれが見てるのは2010のヘルプだけど、
「For Each...Next ステートメント」の所にある
「コレクション」のリンクにある記載でどう?
0962デフォルトの名無しさん
2012/01/26(木) 12:56:18.300963デフォルトの名無しさん
2012/01/26(木) 16:53:19.520964デフォルトの名無しさん
2012/01/26(木) 22:03:39.50反論できなくなったので、人格攻撃?
実にわかりやすい。(w
0965デフォルトの名無しさん
2012/01/26(木) 23:14:40.58新しいブックを作りそこに移動させようとしています。
それでマクロの記録で
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 のところで←インデックスが有効範囲にない
というエラーが出ます。
どのように直せば良いんでしょうか?
0966デフォルトの名無しさん
2012/01/26(木) 23:54:18.01それだと、"5541-W,5541-M"になってしまうな。
Array(sc & "-W", sc & "-M")
このように、Array関数の個々の引数になっている事が重要かと。
0967デフォルトの名無しさん
2012/01/27(金) 00:02:58.70深夜にお付き合いいただきありがとうございます
エラーも直りました。
0968デフォルトの名無しさん
2012/01/27(金) 00:13:20.74"CopyFromRecordset dbRes 65000"という風に書いてループさせているのですが、
2枚目以降の出力になると途端重くなります。
他に高速コピーできる手段はありますか?
0969デフォルトの名無しさん
2012/01/27(金) 05:26:21.74画面の書き換え、再計算、イベント、全部切ってる?
あとExcel2010に乗り換えれば分割する必要なくなるよ
0970デフォルトの名無しさん
2012/01/27(金) 08:54:25.58その場合、貼り付け行数分ずつの取得になると思う。
答えになってないけど何やったか書いてくれないと答えようがないなぁ
0971デフォルトの名無しさん
2012/01/27(金) 08:55:24.160972デフォルトの名無しさん
2012/01/27(金) 09:08:42.04�@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
0973デフォルトの名無しさん
2012/01/27(金) 10:55:11.73引数を渡すのにVBSを使うやり方がありますが、WIN7(32bit)&EXCEL2010の組み合わせでも
可能でしょうか?
可能な場合その時に使うAPIの名前や構造はXP(32bit)と同じでしょうか?
もしくは、簡単にコマンドライン引数を受け取るやり方はありますでしょうか?
当方、XPとEXCEL2003しかなく現地作業をしなくてはいけないので情報を御願いします。
0974デフォルトの名無しさん
2012/01/27(金) 14:20:56.18できる。
適当にググって見つけたページ:
http://www.simple-sys.com/blog/vbamatome/vbamatome007/
0975デフォルトの名無しさん
2012/01/27(金) 14:22:21.02別のBookからパラメータ付きでそのマクロブックのマクロを実行するのでは駄目なの?
0976デフォルトの名無しさん
2012/01/27(金) 17:16:34.20レスありがとうございます。
別のマクロブックを用意して、そのブックで外部プログラムからのパラメータを受け取って、
目的のマクロを起動すると言うことでしょうか?
多分、私にはハードルが高そうな感じがします。
VBSに目的のマクロブックを起動するスクリプトを書いて、必要なパラメータを
渡すやり方は何度かやったことがあるので、この方法を採用しようと思ったのですが、
win7とexcel2010を扱ったことがないので質問しました。
0977デフォルトの名無しさん
2012/01/27(金) 19:34:06.14検索、再利用、指針≒複数人数での使いまわしの必要条件
議論ですらないから反論なんてあるわけないね
↑これ無視してる都合の良い脳みそだから人格攻撃位されるだろw
0978デフォルトの名無しさん
2012/01/28(土) 00:58:23.24>指針≒複数人数での使いまわしの必要条件
>>934
> て言うか、複数のユーザーとか何回もアホみたいに書いてるが、一人で使う
> データベースと言うものの存在も知らないのか?
> 例) 自分の蔵書を自分が見るためだけにデータベース化してる奴など。
わざわざ例まで書いてあるのに、アホ過ぎ。
0979デフォルトの名無しさん
2012/01/28(土) 01:20:13.55基本複数人数で使う物だけどなw
同じシステムで作るから、名前そのままにしただけだろ
で、他に何かいえる事有るの?てか、別に複数人で使わないでも言うってURLまで
貼ってこっちから示してるわけだがw
そんなんだからコミュ障言われるんだよ
0980デフォルトの名無しさん
2012/01/28(土) 08:23:08.58指摘されたら 「基本」とか、アホ過ぎて議論にもなってない。
> 別に複数人で使わないでも言うってURLまで
> 貼ってこっちから示してるわけだがw
示してるレス番書いてみな。
0981デフォルトの名無しさん
2012/01/28(土) 17:38:41.07URLで検索かけろよカスがw
0982デフォルトの名無しさん
2012/01/28(土) 17:45:24.08想像通りの回答乙。
0983デフォルトの名無しさん
2012/01/28(土) 19:43:27.31スレに検索もかけられない奴は何も書き込む権利無いんだ。
残念ながら、コミュ障や園児レベルの馬鹿と認定されてスルーされるのが2ch
0984デフォルトの名無しさん
2012/01/28(土) 19:51:14.84>949がDB板に誘導してるのに
それに気付かずなのか無視してるのか知らんが
いつまでも板違いの罵り合いをしてるお前さん達全員が
コミュ障や園児レベルの馬鹿だと思うよ
DB論議やりたきゃそれにふさわしいところで好きなだけやれよ
ここでするのはスレ違いだし板違いだ
0985デフォルトの名無しさん
2012/01/28(土) 20:45:09.63エクセルがDBかどうか・・・
まぁDB関連の一覧じゃなくてキチンと誘導すべきだったなw
そも単発で書きなぐっただけのお前とコミュニケーション自体取ろうとしてないがなw
無視された=コミュ障なんだな
「お前の中では」
0986984
2012/01/28(土) 20:57:55.61自分に意見言う奴はみんな同一人物かよ
本物のコミュ障だなお前
0987デフォルトの名無しさん
2012/01/28(土) 20:59:27.52んじゃ、まともに誘導してないのも知らないのに適当に書きなぐってみただけなんだな
屑だなw
0988デフォルトの名無しさん
2012/01/28(土) 21:03:55.89誘導してる奴と同一人物には見えても
DBの定義が分からないの馬鹿にされて暴れてる馬鹿とは同一人物認定してないわけだがなw
被害妄想酷過ぎるな
まぁsageすら知らんカスは書き込むなよw
0989984
2012/01/28(土) 21:10:34.37まず勝手に同一人物認定した事とかの反省は一切無いの?
まぁそういう人だからこんなことやってんだろうけど。
で、誘導がまともかどうかは君と俺では見解が違うとしか言いようが無いな。
DB板で自分でスレ立てして好きなだけ語れというつもりだったんだが
(多分>>949もその程度の意図しかなかったと思う)
スレ立ててから誘導してほしいなんて
ドンだけ甘えんぼさんなんだよw
付き合いきれんわ
0990デフォルトの名無しさん
2012/01/28(土) 21:20:51.29やっぱり同一人物なんじゃねーか
DB定義知らん奴と同一人物だとはだれも認識してないと思うが
被害妄想酷過ぎだな
それと
sageすら知らんカスは書き込むな
sageすら知らんカスは書き込むな
sageすら知らんカスは書き込むな
sageすら知らんカスは書き込むな
sageすら知らんカスは書き込むな
sageすら知らんカスは書き込むな
コミュ障はこんな基本を教えてもらっても全て聞き流すんだよな
0991デフォルトの名無しさん
2012/01/28(土) 21:21:39.60権利とかばかじゃねーの?
> スルーされるのが2ch
「 お・前 」 がスルーできてないし (w
0992デフォルトの名無しさん
2012/01/28(土) 21:25:16.42DB板なんかに誘導するなよ、それこそ迷惑だ。
このやり取りをDB議論と思うようなら、ちょっとにちゃんから
はなれて世間の常識を取り戻した方がいいぞ。
単に、アホが一人暴れてるだけだろ。
0993デフォルトの名無しさん
2012/01/28(土) 21:25:42.99真性のコミュ障ばかり集まってるなw
スレ内検索してから出直して来い、お前の意見に耳を傾ける奴は誰も居ない
まともに対応してもらいたいならまず検索を覚えろw
これも2ch利用する為のマナーの部類だな
0994デフォルトの名無しさん
2012/01/28(土) 21:32:14.86同意。
上で何度か出てるが「議論ですらない」
0995984
2012/01/28(土) 21:37:15.69>やっぱり同一人物なんじゃねーか
意味分からん
俺は949氏じゃない
意見が同じだってのと同一人物だってのは別物だぞ
949氏がDB板へのリンク張ってて、
君らはそっち行くべきだと俺も思ったから984を書いたんだよ。
だから(多分>>949もその程度の意図しかなかったと思う)
って書いただろ
俺が949氏ならこんなこと書かねーよ
被害妄想も大概にしとけ
で、sageについてはどうでも良い
このスレはsage推奨でもないし、
もうすぐ1000行くスレであげた所でたいした実害も無いからな。
あと、第三者が冷静に見たらsageない事と
ここでDB論議してる事とどっちが痛いかは一目瞭然なんで、
目立つようにわざとあげてるってのもある
0996デフォルトの名無しさん
2012/01/28(土) 21:40:24.90「議論ですらない」
議論に見えるなら眼科行けw
それと誘導するなら暴れてる馬鹿一人なんだが・・・
DBの定義辞書でひいて張り付けてあるのに、DBスレの一覧に誘導して何になるの?w
0997984
2012/01/28(土) 21:41:21.65ごめん、悪かった
DB論議として適当かどうかは別として
やるんならDB板だろって思ったんだが、
確かにこんなの押し付けられたらDB板の人も気の毒だな
0998デフォルトの名無しさん
2012/01/28(土) 21:43:28.190999デフォルトの名無しさん
2012/01/28(土) 21:53:12.74また、スルーできなかったね。
レス番も書けないし、そうやってごまかすしかないもんな。(w
まあ、このスレも終わりだ、良かったな。
1000デフォルトの名無しさん
2012/01/28(土) 21:54:36.99カスの自覚はあったのねw
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。