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


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

Excel VBA 質問スレ Part22



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

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

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

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

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

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

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

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

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

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


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

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

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


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

スルー推奨 >> 各位

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

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

  A
1 100
2 200
3 300

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

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

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

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

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



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

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

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

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

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

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


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

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

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

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


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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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




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

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

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

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

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

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

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

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

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

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

勉強になりました!

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

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

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

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


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

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

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



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

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


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

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

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

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


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


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

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

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

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

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

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




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

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

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

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

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

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

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

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

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

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

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

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

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

なぜ試さん?



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

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

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

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

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

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

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

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

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

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

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

よろしくお願いします。

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




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

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

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

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

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

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

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

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

ありがとうございます

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

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

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

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

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

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

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



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

これを防ぐ方法ある?

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

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

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

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

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

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

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

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

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


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

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

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

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

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



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

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

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

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

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


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

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

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

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


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

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

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

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

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

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








[ 続きを読む ] / [ 携帯版 ]

次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<283KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef