Excel VBA 質問スレ Part24

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
ExcelのVBAに関する質問スレです

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

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

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

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

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

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

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

前スレ:
Excel VBA 質問スレ Part23
http://toro.2ch.net/test/read.cgi/tech/1327763113/
2デフォルトの名無しさん:2012/04/13(金) 17:55:43.86
いちおつ
新すれなんで再投下

>>1000
えっ


えっ


*やりたいこと*
シート内のセル設定情報をテキストで保存して、読み出し
→帳票のテキストデータ化

*必要なこと*
セルに設定された各種プロパティの保存

*知りたいこと*
プロパティがデフォルト以外に変更されたセルを発見する方法

*ばーじょん*
xp以降
excel2000以降
3デフォルトの名無しさん:2012/04/13(金) 19:01:32.19
>>2
質問内容がよくわからないけど
デフォルトのセルと比較する以外にないんじゃないの?
4デフォルトの名無しさん:2012/04/13(金) 19:41:46.48
会社でつこてる社内システムのWebなんだけど
30分くらいつこてなかったらログアウトされて
また自分のIDとPWを入力せんとあかんのが非常にうざい。
VBAを使ってこれを防ぐ自動にIDとPWを入力する方法はないですか?
会社PCではソフトインストールはもちろんダウンロードも禁止されてるので
URLに「&xx=xx&xx=xx」を追加する方法とか、htmlファイルを改造するとか、可能な方法で提案をお願い。
5デフォルトの名無しさん:2012/04/13(金) 19:47:32.47
それ、Excelを使ってやることか?
6デフォルトの名無しさん:2012/04/13(金) 19:52:17.44
>>4
>>1の★3以降をよく読め
7デフォルトの名無しさん:2012/04/13(金) 19:54:19.76
Excelとは限らんが?
84:2012/04/13(金) 20:02:21.28
そんなこと言わずに教えれ
9デフォルトの名無しさん:2012/04/13(金) 20:07:53.65
>>4
コマンド渡してネットアクセス

>>3
やっぱないのかなあ
全セルで全部のプロパティ参照して構造化するのか・・・
読み出し時はセル範囲指定すればまだマシだけど
104:2012/04/13(金) 20:16:39.59
>>9
なんのコマンド?
ネットアクセスとは?
さっぱりわからん
11デフォルトの名無しさん:2012/04/13(金) 20:22:59.98
>>10
VBAからコマンドプロンプトを経由してネットワークにアクセスできる。
とっても簡単。
ユーザー名、パスワード入れてエクセルからネットワークのパソコンを開けるわけだ。
コマンドプロンプトってのは、キーボードから「コマンド」を打ち込んで操作するソフトな。
例えばIPアドレスを調べたりするときに、ウインドウズのスタートからコマンドプロンプトを起動して、
「ipcomfig」とか入れてやれば出てくる。
ネットワークで繋がってるパソコンにアクセスしたりいたずらしたりできる。








あとはggr
124:2012/04/13(金) 21:02:46.77
>>11
とても興味があるのですが詳しく教えてくださらんじゃろか?
具体的にはどんな呪文を書けばいいの?
ネットワークとはインターネットのアドレスも含むんですかね?
ないかびっくりすることができそうだけど
具体的に教えてくださらんか?
質問の永久ログインのことに限らずいろいろと。
13デフォルトの名無しさん:2012/04/13(金) 21:13:54.96
かわいいおにゃのこなら・・・
14デフォルトの名無しさん:2012/04/14(土) 00:17:13.56
>>2
いったんxmlで保存して適当にゴニョゴニョすればいいんじゃない

つか俺ならそのままエクセルで保存しとくか、その帳票とやらを作成するのに使った元データ保存しとくが
15デフォルトの名無しさん:2012/04/14(土) 01:53:51.38
フォームコントロールで作ったCheckBoxが6つあって
それが例えば リンゴ・バナナ・ミカン・イチゴ・スイカ・メロンとあったとして、
チェックの入っている項目の1文字目を一つのセルに入力したいです。
(例) リ・ミ・イ
の様に。何かいい方法をご教示下さい。
16デフォルトの名無しさん:2012/04/14(土) 02:47:17.56
>>11
それだと別セッションになるから無理じゃない?

VBAからIEを起動するようにして業務はその起動されたIEでやって
離籍するときはマクロ実行ボタンかなんか作っといてF5アタックを
かけ続けるとかかなあ
http://billboardtop100.net/excel/vba-ie/
17デフォルトの名無しさん:2012/04/14(土) 03:05:15.99
F5連打するソフトをスクリーンセーバーにすれば
18デフォルトの名無しさん:2012/04/14(土) 11:48:25.82
>>15
Private Sub CommandButton1_Click()
    Dim c As Control
    Dim s As String
    For Each c In UserForm1.Controls
        If TypeName(c) = "CheckBox" Then
            If c.Value Then
                If s <> "" Then
                    s = s & "・"
                End If
                s = s & Left(c.Caption, 1)
            End If
        End If
    Next
    ActiveCell.Value = s
End Sub
19デフォルトの名無しさん:2012/04/14(土) 12:15:27.58
セルの入力した数式がどのようなタイミングで実行されるのかがわかりません。
VBA実行する前後で数式が実行されるのでしょうか?

20デフォルトの名無しさん:2012/04/14(土) 12:26:02.17
>>19
ワークシートの数式は入力した瞬間に実行される
21デフォルトの名無しさん:2012/04/14(土) 12:59:51.05
22デフォルトの名無しさん:2012/04/14(土) 15:49:34.34
>>18
ありがとうございます。
でもユーザーフォームでなくてシート上の
フォームコントロールなんです。
その場合はどうしたらいいですか?
23デフォルトの名無しさん:2012/04/14(土) 16:49:19.92
>>22
Shapesで回してControlFormat.Valueみるとか
タイプの判別方法は解らんなぁControlFormatのプロパティいくつかたたいてエラーでるかどうかでみるぐらい?
24デフォルトの名無しさん:2012/04/14(土) 16:50:20.05
>>22
Dim cb As Excel.CheckBox
Dim s As String
s = ""
For Each cb In ActiveSheet.CheckBoxes
s = s & IIf(cb.Value = 1, IIf(s = "", "", "・") & Left(cb.Caption, 1), "")
Next
ActiveCell.Value = s
25デフォルトの名無しさん:2012/04/14(土) 17:01:09.35
>>24
ありがとうございます。完璧です!
散々苦労して出来なかったので思わずスゲーって声が出ました!
26デフォルトの名無しさん:2012/04/15(日) 04:36:19.33
>ActiveSheet.CheckBoxes
こんなプロパティあったのか。知らんかった
つかオブジェクトブラウザで見たら、プロパティじゃなくて非表示なメソッドだな
なんで非公開なんだろうな
27デフォルトの名無しさん:2012/04/16(月) 00:55:22.81
ActiveChart.SeriesCollection(1).Selectを、Selectを
使わずにSeriesCollection(1)を変数に入れて使い回し対のですが、
変数への入れ方を教えて下さい。
28デフォルトの名無しさん:2012/04/16(月) 01:11:52.27
>>27
SET
29デフォルトの名無しさん:2012/04/16(月) 02:08:31.69
BeforeDoubleClickイベントで得たRangeオブジェクト(Target)の
n個隣のRangeオブジェクトはどうやって得ればいいでしょうか?
offsetでどう書けばいいか分かりません…
30デフォルトの名無しさん:2012/04/16(月) 08:35:21.13
Cells(Target.Row, Target.Column - n)
31デフォルトの名無しさん:2012/04/16(月) 12:35:53.27
>>29
n個右なら
Target.Offset(,n)
>>30
変なもの教えるなよ
3229:2012/04/16(月) 23:25:26.88
>>31
おお、こんな簡単なのがあったとは
>>30みたいな感じでCellsプロパティから引っ張ってくるものばかりと
有難うございました
33デフォルトの名無しさん:2012/04/16(月) 23:50:47.33
質問者がoffsetでどう書けばって言ってるんだが...
つか質問者もoffsetのヘルプ見れば解りそうなもんだが
34デフォルトの名無しさん:2012/04/16(月) 23:53:51.13
16進数をiniファイルへ書き込み、読み込みをするにはどうしたらいいでしょうか。
ユーザーフォーム上のコマンドボタンの色の管理のために、現在はVal関数を
使っているのですが色が今一正確に再現出来ません。
宜しく御願いします。
35デフォルトの名無しさん:2012/04/16(月) 23:59:47.22
>>34
excel vba iniファイル
でググればヒントがたくさん見つかるよ
36デフォルトの名無しさん:2012/04/17(火) 22:07:37.57
何らかのマクロ処理後XLSで保存するマクロを、2003と2010両方で
動くようにするには、2010では2003の形式で保存するようにすればいいと思うんだけど、
この部分って2003でも通用しますか?

自分でテストすれば良いだけなのですが、調べなからじゃないと分からないので
考え方が正しいかどうか知りたいです。
宜しく御願いします。
37デフォルトの名無しさん:2012/04/17(火) 22:17:36.18
>>36
問題ありません
38デフォルトの名無しさん:2012/04/18(水) 16:29:34.62
保存せずにブックを閉じたいのですが、ThisWorkBook.Saved=True は
標準モジュールに書いても無効でしょうか?
ブックのCloseイベントに書かないと駄目ですか?
39デフォルトの名無しさん:2012/04/18(水) 16:51:10.05
実行した時点で無効化が有効になる
40デフォルトの名無しさん:2012/04/18(水) 17:05:25.98
41デフォルトの名無しさん:2012/04/18(水) 18:08:27.98
どこに書いても問題ないよ
いつ実行されるかが重要なんだから
42デフォルトの名無しさん:2012/04/18(水) 18:38:24.16
close部に記述すると、ブック終了時に実行されるので、有効になる。
それ以外の部分に記述すると、実行されtrueを維持している場合のみ、ブック終了時に有効。
実行していない場合はその限りではない。
43デフォルトの名無しさん:2012/04/18(水) 20:45:13.71
Wordのオートシェイプにクリックイベント仕込むのは無理ですかねぇ。
Excelの用にOnActionが使えないようで・・・。

自前チェックボックスのため、押すたびに□>■になるものを作っていまして、
ラベルコントロールで代用してたのですが、ラベルって50個も置くと重くて重くて・・・。
44デフォルトの名無しさん:2012/04/18(水) 21:04:38.20
>>43
Wordの質問スレに行ってみればいいんじゃない?
45デフォルトの名無しさん:2012/04/19(木) 02:29:14.38
シート上のフォームコントロールで
ドロップダウンリストを作成しているのですが、
エクセル一行空白を設定しており、
エクセル立ち上げ時には空白状態にしておきたいのですが、
コードが解りません。
ちなみにテキストボックスは
TextBox1.Text = vbNullString
の様に記述しています。
解る方ご教示下さい。
46デフォルトの名無しさん:2012/04/19(木) 12:14:39.44
>>45
1行目が空行なのであればこんな感じ?

Dim d As Excel.DropDown
For Each d In ActiveSheet.DropDowns
d.ListIndex = 1
Next
47デフォルトの名無しさん:2012/04/20(金) 02:19:47.93
>>46
ありがとうございます。
出来ました。
48デフォルトの名無しさん:2012/04/21(土) 00:57:57.99
いいってことよ
49デフォルトの名無しさん:2012/04/21(土) 09:31:49.67
気にすんな!
50デフォルトの名無しさん:2012/04/21(土) 10:18:20.66
誰だよwww
51デフォルトの名無しさん:2012/04/21(土) 15:43:05.10
かまわんよ
52デフォルトの名無しさん:2012/04/22(日) 09:13:43.06
グラフの右隣の行番号を取得するにはどうすればいいでしょうか?
53デフォルトの名無しさん:2012/04/22(日) 10:48:08.84
>>52
右隣の行番号ってのが何のことかよくわからんが
グラフの左上端にあるセルの行番号ならこれで取得できる

Dim c As ChartObject
For Each c In ActiveSheet.ChartObjects
Debug.Print c.TopLeftCell.Row
Next
54デフォルトの名無しさん:2012/04/22(日) 13:29:41.46
質問です。
OSはwindows7 professional SP1
Excellは2007です。
現在、小文字で500〜600文字程度ある文字列が500列あります。
その中に存在する特定の文字列、たとえばaggtcaを検索し、大文字にし色を変えるというマクロを組んでおります。
それが以下になります。
Sub Try1()
Dim c As Range
For Each c In Selection
RepChar c, "aggtca", 3 ' サブプロシージャ呼び出し
Next
End Sub

'c: 対象セル  What:検索文字列  ColorIndex:Font色Index
Sub RepChar(ByVal c As Range, What As String, ColorIndex As Long)
Dim j As Long
Do
j = InStr(j + 1, c.Text, What)
If j = 0 Then Exit Do
With c.Characters(j, Len(What))
.Text = UCase$(What) ' 大文字にする
.Font.ColorIndex = ColorIndex ' Font色 変更
End With
Loop

End Sub
しかしながら、検索対象文字列が255文字までなら思う通りに動きますが、256文字以上になったら色が変わるだけになってしまいまいました。
なにかいい解決案を思い浮かぶ方がいたらご教授願います。
55デフォルトの名無しさん:2012/04/22(日) 14:13:56.85
>>54
一旦文字列変数に代入して大文字に変換したあとにセルに代入し直して文字色を変えるとか
56デフォルトの名無しさん:2012/04/22(日) 14:33:00.84
>>54
VBAの制限
セルから文字列を取り出す時に、Textプロパティを含むいくつかの命令では255文字以下しか扱うことができない
大文字への変換と色の変更は別々にやるしかない

Sub RepChar(ByVal c As Range, What As String, ColorIndex As Long)
  Dim j As Long
  Dim str As String, WhatU As String
  WhatU = UCase$(What)
  str = c.Text
  j = 0
  Do
    j = InStr(j + 1, str, What)
    If j = 0 Then Exit Do
    Mid(str, j, Len(What)) = WhatU ' 大文字にする
  Loop
  c.Value = str
  j = 0
  Do
    j = InStr(j + 1, str, WhatU)
    If j = 0 Then Exit Do
    c.Characters(j, Len(What)).Font.ColorIndex = ColorIndex ' Font色 変更
  Loop
End Sub
57デフォルトの名無しさん:2012/04/22(日) 18:40:27.33
初歩的な事で申し訳有りませんが、教えて下さい。

B3=VLOOKUP($A3,sheet2!$A:$J,6)
B4=VLOOKUP($A4,sheet2!$A:$J,6)
と、A列の検索値が空白になるまで続くのですが、
マクロで計算結果のみを表示する方法を教えて下さい。
宜しくお願いします。
58デフォルトの名無しさん:2012/04/22(日) 18:51:25.44
>>57
WorksheetFunctionプロパティを使えばいい

Range("B3").Value = Application.WorksheetFunction.VLookup(Range("$A3"), Worksheets("sheet2").Range("$A:$J"), 6)
59デフォルトの名無しさん:2012/04/24(火) 13:08:16.78
ネットから下記のようなカンマ区切りのCSVを読み込むコードを使っています。

Do Until EOF(intFF)
' レコードを読み込む
Input #intFF, X(1), X(2), X(3), X(4), X(5), X(6), X(7), X(8)
   :
   :
Loop

CSVファイルのある1行に 2012/3/11,12:00:05,・・・とあると
2012/3/11が2012、12:00:05が12としか読み込まれません。
例えば 日付2012/3/11,時間12:00:05 等、何か文字がついていると
日付2012/3/11 と読み込まれます。

数字のみでも読み込むにはどうしたらいいですか?
宜しく御願いします。
60デフォルトの名無しさん:2012/04/24(火) 13:27:13.17
>>59
>>1
>★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。
61デフォルトの名無しさん:2012/04/24(火) 13:41:48.23
これってVB6のコードなの?
62デフォルトの名無しさん:2012/04/24(火) 13:52:37.31
>>59
Excelの機能でCSVファイルを読み込めばいいよ
63デフォルトの名無しさん:2012/04/24(火) 18:05:20.05
>>60
csv読み込みまでいかんと申すか!
64デフォルトの名無しさん:2012/04/24(火) 18:25:33.59
いい加減、>>1のテンプレ見直そうよ。
ずーーーーと前から何回か話題に出してるんだけど、このテンプレPart4で誰かが勝手に作った奴で、
それ以降★○だから駄目とかいう奴がうざいんだわ。同一人物かもな。
65デフォルトの名無しさん:2012/04/24(火) 18:42:26.28
>>64
そんな昔からの経緯を知ってるならお前が率先して見直せよ
何もせずに文句だけ言うやつが一番うざいわ
66デフォルトの名無しさん:2012/04/24(火) 19:30:13.96
そして誰も答えない


やったことないからわからんけど、文字列に格納して自分で加工したら?
読み出しが出来ればだけど
67デフォルトの名無しさん:2012/04/24(火) 20:16:19.92
ある処理をしたときに

 Cells(i, 2).Value = "Error"

と値を入れるのですが、そのセルはシートの保護が掛かっているいる為
エラーになります。

ループでまわし、かつその途中で人的操作が入る為
一番最初に保護の解除を行い、最後に保護をするのは避けたいです。

ただ、Cells(i, 2).Valueのループの回数分、保護/保護の解除のするのは、

無駄に処理が重くなりそうなので避けたいのですが。

なにか妙案はありませんか?
68デフォルトの名無しさん:2012/04/24(火) 20:29:47.46
>>67
On Error Resume Nextでスルーするのは駄目なのか?
嫌なら Err.Numberで判定すれば
69デフォルトの名無しさん:2012/04/24(火) 20:51:03.76
>>67
UserInterfaceOnly
70デフォルトの名無しさん:2012/04/24(火) 20:59:56.10
>>59
配列変数XをString型で宣言すればいい
Dim X(1 To 8) As String
71デフォルトの名無しさん:2012/04/24(火) 21:59:42.33
>>67
セルに入れるだけなら
仮シート作って最後に転写
配列に格納して最後に書き出し
のどちらか
俺なら後者だが
7267:2012/04/24(火) 23:12:35.29
>>68
>>69
>>71
ありがとうございます。その手で解決できました
73デフォルトの名無しさん:2012/04/24(火) 23:19:04.14
そういうの嫌いじゃない
74デフォルトの名無しさん:2012/04/25(水) 16:48:59.60
>>66
>>62で答えてるじゃん。
コード書かないと回答とは思わなかったのかな。
75デフォルトの名無しさん:2012/04/25(水) 19:39:53.89
質問があります
VBA初心者です
会社でVBAマクロを作っていたのですが、サーバーにあるファイルにたいしてWorkbooks.OpenやCloseしかしてなかったのですが、サーバー上のファイルが消えてしまいました
基本的に書き込みや削除などの操作は行っていないのですが、OpenやCloseのみでも参照先のファイルが消える可能性があるのでしょうか
ちなみにOPENには特にオプション指定はしていません
また、ローカルのファイル対するOpenでは現象が再現せず、再現しなかったファイルをそのままサーバーに置いて、それを参照すると消えました。
76デフォルトの名無しさん:2012/04/25(水) 19:45:18.09
>>75
ソースコードも見ずに第三者が答えられるわけがない
77デフォルトの名無しさん:2012/04/25(水) 19:59:32.17
>>76
失礼、ファイルの持ち出し不可能なのでソースをもってくることはできませんでした
聞きたかった事としてOpenやCloseによってはファイルが消える可能性があるかということを知りたかったのです
78デフォルトの名無しさん:2012/04/25(水) 20:27:19.11
2003と2010で同じマクロを使っています。
2010で使用する時にリボンを畳む方法を教えて下さい。
2010で使用する時のみマクロファイルを読み込まないといけない気がするのですが
やり方がわかりません。
79デフォルトの名無しさん:2012/04/25(水) 20:52:07.30
>>75
workbook.open,workbook.closeだけならないよ
他のコードなり操作なり見ないとわからんけど
vba側だけじゃなくて、サーバー上でどういう管理されてるかも含めんとね
ローカルなcloseは問題ないんだろ?
ネットワークを介さないサーバー上でのopen,closeの挙動も見ておいたら
80デフォルトの名無しさん:2012/04/25(水) 20:56:59.03
>>78
Application.VersionでExcelのバージョンを判定して処理を分けるとか?
81デフォルトの名無しさん:2012/04/25(水) 21:05:53.16
>>79
ありがとうございます
また明日コードみてみます
実はバグがあって 最初に読み込んだ(Openした)ファイル(参照ファイルA)の、あるセルに書き込まれてる「ファイル名(参照ファイルB)」を開きに行くんですが、セルに何も入力されていなくてもOpenするようになってました
(おそらくファイル名「""」をOpen。Closeは""でもパスが通るようになっていたか未確認)

ちなみに、この状態になるファイル(参照ファイルA)にアクセスした時に消えました。
この時、参照ファイルAは消えないのですが、同一フォルダにあるファイル(ファイルBの候補(?))が全て消えました(ローカルで試した場合は発生せず、サーバーは100%発生します)
8275:2012/04/25(水) 21:10:34.50
ものすごく分かりにくい文章になりましたので注釈します;
サーバー上に(参照元となる)ファイルAと、ファイルAのセルから参照先が判断されるファイルB群があって、参照先を示すセルが空欄になってました
この時、異常処理が入ってなかったので、無理やりファイル名""で参照にいってると思われます

明日また調べてみます
83デフォルトの名無しさん:2012/04/25(水) 21:11:13.89
>>81
サーバ上のファイルを監視しながらステップ実行すれば
どのタイミングでファイルが消えるかわかると思うよ
84デフォルトの名無しさん:2012/04/25(水) 22:41:12.91
>>73
× そういうの嫌いじゃない
○ そういうの好き

素直になりなさい
85デフォルトの名無しさん:2012/04/25(水) 23:46:40.74
>>81
openに渡すときにパスがないとコンパイルエラー起こす気がするんだが・・・
86デフォルトの名無しさん:2012/04/26(木) 09:59:25.61
>>80
レス、有難うございます。
マクロの記録でリボンを畳むときの命令を見ようとしたのですが、マクロに記録されません。
と言うことは、VBAではできないということですよね?
87デフォルトの名無しさん:2012/04/26(木) 10:37:45.26
>>86
Excel4.0マクロを使うとできる。
リボン、非表示、Excel4.0マクロ、でググれ。携帯電話からなのでコードは書かない。
88デフォルトの名無しさん:2012/04/26(木) 19:08:44.84
チュートリアルをひと通り読んだのですがわからりません。
質問させてください。

変数Aにセルのデータを配列として代入したいのですが、

|りんご,みかん,パイナップル|
|アボガド|
|きゅうり|

このようにカンマ区切りと、そうでないセルが混在しています。



A=りんご,みかん,パイナップル,アボガド,きゅうり
B=Split(A, ",")
このようにして最終的に別のセルに一つづつ抜き出したいのですが、
どのようにして上のようなデータを配列としてAに代入すればいいのでしょうか?
8975:2012/04/26(木) 19:18:54.25
昨日、不正な(エクセルファイル指定しない)方法でブックをオープンしようとするとファイルが消えると言っていた者です
今日、会社で確認してきました
ステップ実行してOpenの際にファイルが消えます

新しくエクセルファイルを作って、最小構成(ファイルパスも直値)のマクロで確認してみたところ、以下のコードでも消えました

Sub Button_Click()
  Workbooks.Open "Y:共有サーバー\問題のあったフォルダ\", ReadOnly:=True
End Sub

このマクロでエラーメッセージが発生後、「Y:共有サーバー\問題のあったフォルダ」内のファイルが全て消えました
ローカルで(パスは変えて)確認した場合は、やはりファイル消えてませんでした
90デフォルトの名無しさん:2012/04/26(木) 19:27:20.88
多分ここじゃ解決しないだろうけど

ローカルっていうか、サーバー上のシステムでネットワークを介さないで開けたってことでいいのか
サーバー側のシステムは?
Workbook.Open渡されてちゃんと開けるのが前提だぞ、win入っててもexcelか.netのライブラリないと
作業ディレクトリも気になる
91デフォルトの名無しさん:2012/04/26(木) 19:28:12.93
>>88
例えば、A1:E1セルに値をセットしたいならこんな感じでできる

A = "りんご,みかん,パイナップル,アボガド,きゅうり"
B = Split(A, ",")
Range("A1:E1").Value = B
9275:2012/04/26(木) 19:31:01.68
>>90
ファイル名を正しく指定すればOpenで開けます
93デフォルトの名無しさん:2012/04/26(木) 19:35:18.29
あっそ
94デフォルトの名無しさん:2012/04/26(木) 19:50:25.08
>>89
ホントにファイルが消えるならMSのサポートに言った方がいいよ
んで、できれば結果を報告してくれるとうれしい
95デフォルトの名無しさん:2012/04/26(木) 20:02:00.86
>>91
返信有り難うございます。
配列のデータをセルに書きだす方法はどうにかわかったのですが、
カンマ区切りのデータと、区切られてないデータを
変数Aに入れる方法がわからないんです。

例えばですが
Dim A As Variant
A = Range("A1:E1")
B = Split(A, ",")
Range("A1:E1").Value = B

このように指定するとデータの型が合いませんと出て困っています。
A = Range("A1:A1")と指定すれば問題なく出力されるんですが・・・
96デフォルトの名無しさん:2012/04/26(木) 22:10:15.77
>>95
こんな感じ?

Dim A As String
Dim r As Range
A = ""
For Each r In Range("A1:E1")
A = A & IIf(A = "", "", ",") & r.Text
Next
97デフォルトの名無しさん:2012/04/26(木) 22:37:25.43
>>96
ありがとうございます。動きました。まさに理想の動作です。
このコードがどんな意味かをじっくり勉強させてもらいます。

ありがとうございました!
98デフォルトの名無しさん:2012/04/26(木) 23:49:30.15
>>89
そもそも「Y:共有サーバー\問題のあったフォルダ」というパス指定があやしいが
ネットワークドライブとしてY:を割り当ててるのか?
共有サーバーの部分は、実際のサーバ名が入ってるのか?
Y:の後に\はないのか?
ネットワークドライブなら、割り当てたユーザとエクセルを実行しているユーザは同じか?

サーバとクライアントのOSやエクセルのバージョンとかもよくわからんが
まあエクセルの問題じゃない気がするな
99デフォルトの名無しさん:2012/04/27(金) 00:00:20.24
>>98

>ネットワークドライブとしてY:を割り当ててるのか
割り当ててます

>共有サーバーの部分は、実際のサーバ名が入ってるのか?
入ってます。実際のフォルダはもう2個くらい深いところにあります
会社のフォルダ構成をそのままネットにアップするのもどうかと思ったので、スレ説明用に簡略化しました

>Y:の後に\はないのか?
書き忘れてました。実際には入ってると思います

>ネットワークドライブなら、割り当てたユーザとエクセルを実行しているユーザは同じか?
同じです
100デフォルトの名無しさん:2012/04/27(金) 00:11:44.71
>>99
>>89のマクロを実行したらファイルが消えるんだからExcelの問題で間違いないでしょ
アホなレスは相手にしなくていいから早くマイクロソフトに問い合わせなさい
101デフォルトの名無しさん:2012/04/27(金) 02:44:43.40
ファイルが消えるってのは、クライアントから見えなくなるってんじゃなくて
サーバの共有ディスクから削除されてるってことなのか?
ほんとにこのマクロでファイルが削除されるなら、
恐ろしくてマクロでブック開くとかやってられんわ
102デフォルトの名無しさん:2012/04/27(金) 05:16:56.92
これ関係か
http://okwave.jp/qa/q2275192.html

共有フォルダってLinux製のNASとかかな

サーバ上の他のフォルダはセーフなのか?
103デフォルトの名無しさん:2012/04/27(金) 09:36:30.33
自分の環境ではAサーバーのファイルのマクロを実行してBサーバーのFileOpen
BのシートをAファイルにコピー、Bファイルを閉じるってのを
毎日タスクで実行してるけど問題は起きてないよ。
参考になるか解らないけど。
104デフォルトの名無しさん:2012/04/27(金) 11:22:50.09
小川慶一って人の講座か、学校の講座か迷ってます

どっちの方が内容が濃いんでしょうか?
105デフォルトの名無しさん:2012/04/27(金) 11:27:08.49
これだけネットに無料で情報があふれているのに
お金払ってまで講座を受ける理由がわからない
106デフォルトの名無しさん:2012/04/27(金) 11:56:31.03
マクロでループ処理をしているのが原因で、シート上のコマンドボタンのEnabledを切り替えた時に、
Captionの文字色がボタンをクリックしないと切り替わらなかったので、ループ処理中にDoEventsとSleepを
入れてたりしているのですが、きちんと切り替わる命令ってないでしょうか?


107デフォルトの名無しさん:2012/04/27(金) 14:06:08.51
難読問題?
108デフォルトの名無しさん:2012/04/27(金) 14:19:19.33
リフレッシュみたいなのない?
109デフォルトの名無しさん:2012/04/27(金) 17:02:48.50
グラフの横軸の目盛りの事で教えてください。
左端が-100、右端が100で目盛りの刻みは15毎だったり23毎だったりと条件によって変わるのですが、必ず0の目盛りを表示させることは可能ですか?
縦軸との交点を0にするのはせずに、目盛りして表示したいという事です。
110デフォルトの名無しさん:2012/04/27(金) 17:38:36.05
>>109
ヘルプでAxisのメンバを調べましょう
111デフォルトの名無しさん:2012/04/27(金) 18:04:23.29
お断りします
112デフォルトの名無しさん:2012/04/27(金) 22:41:40.30
111は違います。109ではないです。
113デフォルトの名無しさん:2012/04/27(金) 22:43:51.91
109だろうが110だろうが111だろうがどうでもいい
114デフォルトの名無しさん:2012/04/27(金) 23:08:20.65
わからんならでてくんな。
ちなみにできんよ。
115デフォルトの名無しさん:2012/04/29(日) 02:39:28.43
教えていただきたいのですが書き込みできるかどうかテスト
116デフォルトの名無しさん:2012/04/29(日) 02:49:20.60
AからF列に一つの一覧があります。
この一覧を、シート上の別の場所、たとえば、H〜M列に張り付けようとしています。
これは、マクロの記録を使えばできることですが、ほかの人がオートフィルタを使って
条件を絞り込んで結果を出しているとき、その状態でVBAマクロを実行すると、
コピー先(H〜M列)に張り付ける位置がコピー元の行の位置があわず、ずれてしまいます。

これに対して自分が思いついた案では、マクロ実行開始時に表内にオートフィルタが設定されていれば
解除するようにしています。しかしこれをやると、解除するのに時間がかかるので使えるのか微妙です。

本題に入りますが、
フィルタが設定されている状態で、コピー元をコピー先へ、行をずらすことなく張り付けることは可能でしょうか。
117デフォルトの名無しさん:2012/04/29(日) 09:28:40.39
>>116
オートフィルタを解除するのに時間がかかるってのがよくわからない
118デフォルトの名無しさん:2012/04/29(日) 23:22:09.01
>>116

>フィルタが設定されている状態で、コピー元をコピー先へ、
>行をずらすことなく張り付ける

VBAでやる場合は、SpecialCellsで検索すると幸せになれる。

直接手作業する場合は、
(1)2007、2010
ホーム→検索と選択→ジャンプ→セル選択→可視セル
(2)2003
編集→ジャンプ→セル選択→可視セル
(3)2003、2007、2010共通のショートカット
F5押下→セル選択→可視セル

(1)〜(3)のお好きなものをどうぞ。
(3)が共通で作業手順が一番短い。
119デフォルトの名無しさん:2012/04/30(月) 13:07:27.29
クリップボードに文字列をセットして終了したいのですが、Excelを終了すると同時に
自動的にクリップボードがクリアされてしまいます。
どうやったらクリップボードの内容を保持したままExcelを終了できますか?
以下、現在のコードです

Set TempObject = New MSForms.DataObject
With TempObject
  .SetText "文字列"
  .PutInClipboard
End With
120デフォルトの名無しさん:2012/04/30(月) 13:35:26.32
>>119
SetClipboardData vba でググれ
121デフォルトの名無しさん:2012/05/01(火) 10:31:34.69
VBSから A.xls を自動起動させているのですが二重起動防止って出来ますか?
122デフォルトの名無しさん:2012/05/01(火) 11:43:29.71
>>121
できる
123デフォルトの名無しさん:2012/05/01(火) 11:48:01.01
>>122
死ね
どうするかと聞いておる
124デフォルトの名無しさん:2012/05/01(火) 11:49:45.30
>>123
そもそもExcelは同名ファイルを二重起動できないんだが
どうやって二重起動させてるのかVBAのコードを見せろカス
125デフォルトの名無しさん:2012/05/01(火) 11:52:42.73
>>124
ハゲは黙ってろ
126デフォルトの名無しさん:2012/05/01(火) 11:54:39.17
>>121
ここはExcelVBAのスレだ
VBSの質問はよそでやれ
127デフォルトの名無しさん:2012/05/01(火) 11:59:46.07
>>125
マナーがなってないと頭悪くみえますよ
128デフォルトの名無しさん:2012/05/01(火) 12:50:41.24
二重起動ってググるだけでもっさり出てくるんだが
129デフォルトの名無しさん:2012/05/01(火) 12:52:17.48
だれがもっさんだハゲ
130デフォルトの名無しさん:2012/05/01(火) 12:58:27.01
んじゃサーニャ貰うわ
131デフォルトの名無しさん:2012/05/01(火) 22:49:35.06
マクロで追加したブックをファイルメニューから別名保存した場合、追跡というかどういう名前に
変わったかを把握したいのですが、どうすればいいですか?
環境はxp、excel2003です。
宜しく御願いします。
132デフォルトの名無しさん:2012/05/01(火) 23:06:02.30
>>131
意味がよく分からない
別名保存したのが第三者で、その人が付けたファイル名が知りたいの?
聞けばいいじゃない?
133デフォルトの名無しさん:2012/05/01(火) 23:28:47.00
>>132
モーダルレスでフォーム出しっ放しの状況なんだろ
昔悩んで諦めた
134デフォルトの名無しさん:2012/05/01(火) 23:29:32.97
VBAの機能じゃ無理なはず
代替案としては、ブック終了時もしくは定期的にファイル名を保存するとかかな
135デフォルトの名無しさん:2012/05/01(火) 23:43:49.85
>>131
Workbook.Nameでファイル名を取得できる
136デフォルトの名無しさん:2012/05/01(火) 23:58:40.13
Excel 2010 なら WorkbookAfterSave なんて言うイベントがあるんだけどね。

Excel 2003 だと、WorkbookBeforeSave で、独自のダイアログ出して保存までコードでやる
ぐらいしか思いつかない。
137デフォルトの名無しさん:2012/05/02(水) 00:25:58.49
>>133
どういうこと?
138デフォルトの名無しさん:2012/05/02(水) 00:30:30.03
マクロで追加したブックなら、そのブックに保存用のボタンでも追加すればいいんじゃね?
まぁ確実に押してくれる訳じゃないけどさ
139デフォルトの名無しさん:2012/05/02(水) 00:36:19.41
ちがうだろ

まず、なんでそんなことやる必要があるのか?だ
140デフォルトの名無しさん:2012/05/02(水) 04:00:58.07
すみません。どこで聞いたらいいのかわからないので質問させてください。

VBA初学者です。
『最初から〜・・・VBAのプログラミングのツボとコツが・・・』を読み終えました。
次も既存の入門書を読んだほうがいいらしんですが、お薦めの本はありますか。

よくわかるExcel2007マクロ/VBA入門→実践編、と読んでみようと考えてますがどうでしょうか?
141131:2012/05/02(水) 05:53:22.55
ユーザーフォームに複数のボタンを付けてメニュー代わりにしています。
その関係でフォームを出しっ放しにしています。
とある処理の時に新規にブックを追加するのですが、一旦その新規ブックの処理が終わっても、再度そのブックに追加で処理をする必要が出てきました。
新規追加した時はブック名は把握していますが、モーダルレスなのでオペレーターが途中で別名保存する可能性があるので質問させていただきました。
新規ブック追加はせずにフォームのブックで処理していくのがよさそうですね。
ついでになってしまうのですが、その場合メニューからの保存する際にユーザーフォームやマクロを外して保存する事は可能でしょうか?
長文で申し訳ないですが、よろしくお願いします。
142デフォルトの名無しさん:2012/05/02(水) 07:58:06.34
>>141
新規ブックを作成→必要なシートを新規ブックにコピー
→名前を付けて保存
じゃダメなの?
143デフォルトの名無しさん:2012/05/02(水) 08:00:06.80
>>131
新規ブックのブック名をテキストファイルに書き込んどけばいいんじゃね?
新規ブックを閉じたとしても、ファイル名は残ってるわけだから何とかなるだろ。
ブック名を書き込んだテキストファイルをいつ削除するかを検討する必要はあるけど。
144デフォルトの名無しさん:2012/05/02(水) 09:16:06.75
>>141
>>135がダメな理由がわからない
145デフォルトの名無しさん:2012/05/02(水) 09:34:40.15
>>140
読書なんて個人の好みなんだからあなたの好きにすればいい
146デフォルトの名無しさん:2012/05/02(水) 12:42:17.93
モーダルなのかモードレスなのかはっきりしてくれ>モーダルレス
147デフォルトの名無しさん:2012/05/02(水) 13:42:14.14
>>146
その程度の誤用が読みとれないようならこのスレに来る資格はないよ
もっとエスパー能力を上げてきてね
148デフォルトの名無しさん:2012/05/02(水) 13:45:39.55
>>147
アホ
149デフォルトの名無しさん:2012/05/02(水) 13:45:46.52
99.9%はモードレスのことなのだろうなぁと思う。
モーダルなのかモードレスなのかわからないのはアスペ。
150デフォルトの名無しさん:2012/05/02(水) 13:46:41.65
> モーダルレスなのでオペレーターが途中で別名保存する可能性がある

これ読んで、どっちかわからんとかありえない。
151デフォルトの名無しさん:2012/05/02(水) 13:48:02.82

間違いを指摘された本人が必死に弁護中

152デフォルトの名無しさん:2012/05/02(水) 13:49:56.52
こんにちわ、米国で働いています、モーダルビッシュ有と言います
153デフォルトの名無しさん:2012/05/02(水) 14:12:31.98
>>146必死すぎw
154デフォルトの名無しさん:2012/05/02(水) 14:36:57.11
あ、どうもダルベスです
155デフォルトの名無しさん:2012/05/02(水) 18:48:42.35
皆さんどんな環境(仕事)でVBA使ってるんですか?
私はmySQLで動作するタイプのwebサイトの管理を任されて
csvを使う都合上、使うようになりました。

他にはどんな場面で使うものか興味があって
156デフォルトの名無しさん:2012/05/02(水) 19:15:59.03
そらぁ日常の会社でのルーチンワークで帳票作成とか、、、
投資家の中には、自分で抽出基準を作ってその判定をVBAで、、、
なんて奴もいるだろうし。。。
157デフォルトの名無しさん:2012/05/02(水) 19:45:06.80
モードレスです、お恥ずかしい。
何年かぶりの素人プログラムで用語が怪しいです。
158デフォルトの名無しさん:2012/05/02(水) 21:22:03.10
質問者である>>131と、他人のように振舞っている>>133
ともに「モーダルレス」なる誤用をしているのは
なんだか自演くさいのだが、
誰もそこに突っ込まないのは何らかの暗黙の了解があるのか?
159デフォルトの名無しさん:2012/05/02(水) 21:28:48.22
韓国の紙幣に韓国海が登場
http://imgnews.naver.com/image/032/2012/05/02/l_2012050201000282300018161_0_20120502165204.jpg


                            ,,fヽy
                       rヽ__)`~ i'"   ・           ゚
     *              /    ,,ノ          *
               .    <'"    ,ィ'~
                   ` >∧__∧ヽ   ウェー、ハッハッハ !!!
           ・        <ヽ`∀´>ヽ   世界中が ウリナラ から
                     ~ヽ,   ヽ,    孤立してるニダ !!!!    *
         .       ・     <     }          。
    *                  )     〉    ゚
                      〈   _,,,/
             ゚         ´‐'"~   .            ・

          。                                  *

              _,..-‐''''""~´ ̄ ̄ ̄ ̄~"'''‐-,.、
 .         ,.-‐''" ──‐‐''",.、.:.:.:.:.:.:.:\、.:.:.:.:.:.:.:~"'‐-、
        ,.‐''"''''""~´::::::::::::::::::::::\\:::::::::::::::"'''''\"''--、.:.:.゙''‐.、
      ,.‐'":::::::::::::::::::::::::::::::::::::::::::::::::゙''‐、''l:::::__,....-‐'''"    ''.:.:.:::゙'ヽ、
    ,.‐'"::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::~"‐--‐‐,        ''.:.:.:.  \
  /:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::/"          .:.:.:.  ヽ、
 ,."::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::/                .ヽ
160デフォルトの名無しさん:2012/05/02(水) 23:03:52.99
>>158
ここにいるのは俺とお前だけなんだよ、いわせんな
161デフォルトの名無しさん:2012/05/03(木) 02:01:16.22
「選択したセルの値が左隣のセルの値と同じ時、文字を赤文字にする」
というマクロを作ってみたのですが

Sub

'FormatConditions(1)
 Selection.FormatConditions.Delete
 Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
  Formula1:=ActiveCell.Offset(0, -1).Value
 Selection.FormatConditions(1).Font.ColorIndex = 3

End Sub

これだとセル1箇所選択の場合はOKなんだけど、複数セルを同時に選択すると
期待したようにならない。

複数セルを同時に選択、列ごと選択して、上記のように実行するにはどうすれば良いのか?
162デフォルトの名無しさん:2012/05/03(木) 02:07:47.17
>>161
まだ実験してないけど

sub
dim a as range
for each a in selection
if a.offset(0,-1)=a then
a.font.color=vbred
end if
next a
end sub
163162:2012/05/03(木) 02:10:19.53
おお、いま実験したらバグなく動いた。
しかし選択がA列を含んでるとエラーが出たな。
164161:2012/05/03(木) 02:47:25.22
動いた!
でも列選択だと時間かかる
165デフォルトの名無しさん:2012/05/03(木) 03:07:53.53
>>163
if文でブランクセルをキャンセルしたら早くなりました

ありがとうです!
166デフォルトの名無しさん:2012/05/03(木) 10:26:43.05
セルのクリックイベント等を動的に追加するやり方を教えて下さい。
あらかじめ設定してあるブックをVBAで複製しているのですが、複製元のブックを
触られてしまうことがあるので、新規にブックを作成するように変更したいのですが、
その際のイベントをどうするかが分からなくて変更に踏み切れません。
Excel2003です。
どなたか御願いします。
167デフォルトの名無しさん:2012/05/03(木) 12:00:33.10
日本語でおk
168デフォルトの名無しさん:2012/05/03(木) 12:36:13.40
>>166
複製元のブックを .xls のファイルではなく、テンプレート(.xlt)形式で用意しておくだけじゃダメなの?
テンプレートなら、ダブルクリックで開いても、新規文書の扱いになるので、
誤って元文書を編集してしまうことはなくなるはず
169デフォルトの名無しさん:2012/05/03(木) 19:45:44.39
複製ってのがファイルコピーなら、エクセル関連の拡張子である必要すらないけどな
170デフォルトの名無しさん:2012/05/03(木) 23:30:58.60
>>166
前半部分がさっぱりわからん。

「あらかじめ設定してあるブック」って何が設定されてるのか?
「ブックをVBAで複製している」という処理はどこに実装されているのか?
171デフォルトの名無しさん:2012/05/03(木) 23:36:54.51
別に普通に分かるじゃん。
書いてあること分からないの?
引っ込んでろよ。
172デフォルトの名無しさん:2012/05/04(金) 00:11:45.78
>>171
わかるんだったら回答してやりゃあいいんじゃん。
ってかお前>>166かw
173デフォルトの名無しさん:2012/05/04(金) 00:13:21.63
>>166
複製元のブックに保護かけとけば触られないから安心だぞ
174デフォルトの名無しさん:2012/05/04(金) 00:32:56.96
技術的に未熟な奴は
日本語からして駄目だよな
175デフォルトの名無しさん:2012/05/04(金) 10:03:07.48
>>172
そうです、166です。
176デフォルトの名無しさん:2012/05/04(金) 22:51:03.01
VBAの中でとりあえずbookを新規につくりそれにデータを入れたり編集したりしてるんだけど
そのbookに名前をつけたら怒られました(エラーが出ました)。
それってできないの?
仮にどこかに保存したらできるけど
ファイル名はそのbookが編集し終わったときにはじめて決定するから
仮に保存はしたくないんです。
いい方法はありますか?
177デフォルトの名無しさん:2012/05/04(金) 23:12:57.65
>>176
>ファイル名はそのbookが編集し終わったときにはじめて決定する
編集し終わって保存するときにファイル名をつけるんだからそれでいいんじゃないの?
178デフォルトの名無しさん:2012/05/04(金) 23:24:00.15
なにが困るのかわからんな
179デフォルトの名無しさん:2012/05/04(金) 23:24:15.02
>>177
それ以前に
いろんなbookからデータをとってくるから
そのbookのnameを仮だとしても決めておきたいわけ。
180デフォルトの名無しさん:2012/05/04(金) 23:25:10.17
>>178
想像力がないな。
というよりVBAでちょっとでも複雑なものを作ったことがないのかな。
181デフォルトの名無しさん:2012/05/04(金) 23:38:34.36
>>179
一体どういう状況でファイル名が必要になるんだ?
もうちょっと具体的に説明できないの?
182デフォルトの名無しさん:2012/05/04(金) 23:38:51.33
>>180
作り方が悪いだけだろ
183デフォルトの名無しさん:2012/05/04(金) 23:40:21.80
>>176
>VBAの中でとりあえずbookを新規につくり

ここのソースを見せてみ
多分それが一般的じゃないんだと思う
184デフォルトの名無しさん:2012/05/04(金) 23:41:54.39
大人気、自分。
>>183
普通にテンプレートとなるシートからコピーしてる。
なので activesheet.copy
185デフォルトの名無しさん:2012/05/04(金) 23:42:00.28
何となくだけど

■現状
・設定用のシートと、その設定をもとにいろいろと処理するVBAスクリプトを含むようなxlsファイル(a)が存在する
・セルをクリックしたらイベントが発生するような処理を仕込んであるxlsファイル(b)が存在する
・(a)で設定をしたうえでVBAを実行させると、(b)を複製して新しいファイル(c)を作成する

■問題点
・ユーザが(b)を変更できてしまうため、(c)が意図したものにならない

■改善案
・新規ブックの状態から必要な変更を(a)のVBAで行って(c)を作成することにより、
 ((a)のVBAが修正されない限り)同じものができるようにしたい。

■改善案を実施するための問題点
・VBAでセルにクリックイベント等を設定する方法がわからん。

ってことなんじゃ。

すでに出てるように、保護とか先に検討すべきことがあるような気もするけど。

----------

VBAの中では変数を使ってアクセスするんだから、ブック作成時にWorkbookオブジェクトを変数にセットしておけば全然困らないよな。
他のbookからデータ取るときに仮の名前が必要になるなら、仮の名前を渡してあげればいいだけだし。

データを持ってるワークブックに新しく作成したワークブックオブジェクトを渡して、
相手のワークブックが名前を読み取るとかいう仕組みってわけじゃないだろうしさ。
186デフォルトの名無しさん:2012/05/04(金) 23:45:53.50
>>184
>VBAの中でとりあえずbookを新規につくりそれにデータを入れたり編集したりしてるんだけど

既に、bookを新規に作ってデータを入れたり編集したりできてるんだよね?
釣りじゃないならこの部分のソースをちゃんと晒してみせて
じゃないとなぜファイル名が必要になるのかがわからない
187デフォルトの名無しさん:2012/05/04(金) 23:49:35.89
>>185
エスパーするにも程があるぞw
書いてないことが足されすぎだ
188デフォルトの名無しさん:2012/05/04(金) 23:52:23.88
>>186
正直に言うと、
オブジェクト変数でそのbookを変数にいれたいけど
そのコードを書くプロシージャがあるサブルーチン内なので
他のプロシージャから参照できない。
たぶんオブジェクト変数もローカル変数じゃなくグローバル変数にはできるだろうけど
「なるべく変数はローカルに」というポリシーを守りたいからしたくない。
189デフォルトの名無しさん:2012/05/04(金) 23:54:27.75
ちょっと言ってることがよくわかりません
190デフォルトの名無しさん:2012/05/04(金) 23:57:13.71
こんな感じのユーザー定義変数を作って
Type tmp
Book As Workbook
Name As String
End Type

こんな感じにbookと名前を仮にセットしとけばいいんじゃねーの
Sub aaa()
Dim WB(2) As tmp
With WB(0)
Set .Book = Workbooks.Add
.Name = "name1"
End With
End Sub
191デフォルトの名無しさん:2012/05/05(土) 00:01:33.99
>>188
そのサブルーチンに引数を作ればいいと思うけど
192デフォルトの名無しさん:2012/05/05(土) 00:01:56.96
>>188
お前の決めたポリシーに反したくないならそのポリシーとやらを全部列挙しろよ
じゃないと答えても無駄になるわ・・・
193デフォルトの名無しさん:2012/05/05(土) 00:08:54.64
新規で作ったブックは保存するときに初めて名前が付けられる。
なので、新規で作った時にワザと作業用のデレクトリーに名前を付けて保存する。
保存するとそのブックと縁が切れるまでファイル自体は削除できないから、マクロ起動時、
または終了時に作業用デレクトリー内のファイルを掃除するようにしとけばいいんじゃないの。
194デフォルトの名無しさん:2012/05/05(土) 00:09:47.68
>>190
それじゃそのプローシージャの中でしか使えないじゃん。
わたしはこれでも初心者だけど
「変数は原則ローカルで」というのはプログラミングの中級者以上の人でも、そんなに厳守しなくていいものなの?
195デフォルトの名無しさん:2012/05/05(土) 00:11:53.25
>>193
自分しか使わないのならいいけど
これは仕事で使ってるし、少なくとも10人以上が使うから
各PCの構成をあまり把握してない状況で
仮保存&あとで消去はあまり(というか絶対)使いたくないな。
196デフォルトの名無しさん:2012/05/05(土) 00:16:29.16
>>194
あなたが作ったポリシーを守るかどうかはあなた次第でしょ?

book.Activate しておけば
Application.ActiveWorkbook で参照できるでしょ
ダメかな?
197デフォルトの名無しさん:2012/05/05(土) 00:20:28.31
>>196
多数のbookを開いて処理してるんだ。
その状況で作業対象のbook(最終的に保存する)に名前を付けておきたいのよ。
そのactivateするためには、そのbookの名前が必要でしょ?
最初はworkbooks(workbooks.count)としてたけど、いろいろ問題があって辞めた。
198デフォルトの名無しさん:2012/05/05(土) 00:22:55.02
>>197
bookを大量に新規作成してるってこと?
199デフォルトの名無しさん:2012/05/05(土) 00:33:09.35
>>190 を変更
サブルーチンに引数で渡し、戻ってきた段階で保存処理を実行すれば
Sub aaa()
Dim WB(2) As tmp
Call コードを書くプロシージャがあるサブルーチン(WB(1))
For Each x In WB
If x.Name <> "" Then
x.Book.SaveAs x.Name
End If
Next x
End Sub

Sub コードを書くプロシージャがあるサブルーチン(ByRef WB As tmp)
Set WB.Book = Workbooks.Add
WB.Name = "name1"
End Sub
200デフォルトの名無しさん:2012/05/05(土) 00:35:21.01
全体のプロシージャの構成とその新規ブック作成のタイミングが
わからんと答えづらい。


メインのプロシージャに関してはグローバル変数で
宣言してもいいと思うが。
201デフォルトの名無しさん:2012/05/05(土) 00:35:47.57
とりあえず>>192が全部列挙されるまで放置でよさそうだ
条件の後出しが多すぎ
202デフォルトの名無しさん:2012/05/05(土) 00:41:26.35
ポリシーのバグを埋め合わせる為に
コードのバグを作り出してる感じだ
203デフォルトの名無しさん:2012/05/05(土) 00:43:18.97
新規作成するブックが1つだけ
→Applicationが持ってるWorkbooksコレクションを全部なめて、把握していない名前があればそれが新規作成されたWorkbookオブジェクト

新規作成するブックが複数ある
→作成した時に適当にWorksheetを追加して、それに管理用の名前つける
  任意の作成したWorkbookオブジェクトを取得したいときは、Workbooksコレクションとその中のWorksheetsコレクションを調べる

とか。


Workbooksとかにビシバシとアクセスしてるなら、グローバル云々とかあんまり気にするなよって感じはするが。
204デフォルトの名無しさん:2012/05/05(土) 00:43:46.84
>>199の修正
Sub aaa()
Dim WB(2) As tmp
Dim i
Call コードを書くプロシージャがあるサブルーチン(WB())
For i = 0 To 2
With WB(i)
If .Name <> "" Then
.Book.SaveAs .Name
End If
End With
Next i
End Sub
205デフォルトの名無しさん:2012/05/05(土) 00:45:00.43
>>199の修正2
Sub コードを書くプロシージャがあるサブルーチン(ByRef WB() As tmp)
Dim i
For i = 0 To 1
Set WB(i).Book = Workbooks.Add
WB(i).Name = "name" & i
Next i
End Sub
206デフォルトの名無しさん:2012/05/05(土) 01:19:19.06
>>197
StatusBarにブック名を待避しておくとか

Sub sp1()
Dim book As Workbook
Set book = Workbooks.Add
Application.StatusBar = book.Name
Call sp2
Application.StatusBar = False
End Sub

Sub sp2()
Workbooks(Application.StatusBar).Worksheets("Sheet1").Range("A1") = "wwwwwwwwwwwwwww"
End Sub
207デフォルトの名無しさん:2012/05/05(土) 01:35:30.99
メインプロジェクトがあるなら、それに書けばいいじゃん
シートに書きたくないならtempモジュールにコードを動的に追加すりゃいい
208デフォルトの名無しさん:2012/05/05(土) 02:36:57.35
つうか、変数をなるべく局所化するために、引数と戻り値ってのが存在してるんだが
シート追加するサブルーチンがあるなら、追加したシート戻せよ
Functionって知らないのかお前ら?
209デフォルトの名無しさん:2012/05/05(土) 04:09:29.68
グローバル変数は使いたくないけど他から参照したいってなら
クラスモジュールを使うって手があるな
オブジェクト指向のいいとこどり
210デフォルトの名無しさん:2012/05/05(土) 04:40:52.69
>>201
はげどう。
条件後出し多くて、回答しようと思っても振り回されてるだけだな。
エスパーしろよと言わんばかりの訳のわからん日本語並べられてもお互い疲れるだけだし。

>>176
さっさとソース晒せ。
ポイントとなる部分を抜き出して動作を再現できるコードで充分なんだけど。
211デフォルトの名無しさん:2012/05/05(土) 05:33:01.44
176のポリシーとエクセルの仕様が不適合だから無理
212176:2012/05/05(土) 11:06:53.66
>>176は釣りでした
すみません
213デフォルトの名無しさん:2012/05/05(土) 12:22:19.49
replaceって、関数にもあるし、メソッドにもあるし、混乱しない?
Worksheet関数にも機能が違うのがあるし
214デフォルトの名無しさん:2012/05/05(土) 12:37:04.92
>>212は嘘です!
>>176の釣りは私がしました!!
215デフォルトの名無しさん:2012/05/05(土) 13:19:54.12
個人用マクロに作ったFunctionを
どんなbookででも使えるようにする方法って、
ひょっとしてないの?
216デフォルトの名無しさん:2012/05/05(土) 13:29:32.23
使えばいいじゃない
217デフォルトの名無しさん:2012/05/05(土) 13:30:26.55
オープンできるなら不可能じゃない
218デフォルトの名無しさん:2012/05/05(土) 13:45:24.84
>>213
しません
219213:2012/05/05(土) 13:51:19.67
>>218
してください。
そうじゃないと話が始まらない。
220デフォルトの名無しさん:2012/05/05(土) 13:54:37.22
>>219
つまらない質問はしないでください
221デフォルトの名無しさん:2012/05/05(土) 17:04:12.31
まあ、テンプレートとして使うからいじられると困るってんなら
文字通りエクセルテンプレート形式なxlt使うのが普通じゃねーの
222デフォルトの名無しさん:2012/05/05(土) 17:24:53.27
VBAでブラウザを操作したり(webページを開いたり、自動ID,PW入力してログインしたり、毎日Webからデータをとったり画像を自動保存したり、etc. etc.)
Outlookを操作(テンプレート本文・件名があってその一部にExcelのセルがデータを入力したりetc. etc.)したり、したいです。

そのことに特化した本(中級・上級向けになると思います)ってないですか?

どうもVBAは初心者向けの本がほとんどで困っている。
そのほうが売れるのはわかるが。
223デフォルトの名無しさん:2012/05/05(土) 17:36:33.35
>>215
アドインてのが、それにあたる機能だと思う
224デフォルトの名無しさん:2012/05/05(土) 18:42:41.41
>>222
本買うまでもなくネットの情報で簡単に実現できそうな内容に思える
そもそも中級・上級向けどころか殆どExeclに関係がない
MSDNライブラリ見れば解決すると思うよ
225デフォルトの名無しさん:2012/05/05(土) 18:51:36.89
Excel VBA WEB連携術―2007/2003対応
ってのがあったけど、222の期待に答えられるものかどうかは知らん
226デフォルトの名無しさん:2012/05/05(土) 22:17:25.08
>>222

それに手を出すレベルの人は(おそらく)すでに上級者。
参照設定できるものなら、参照設定してオブジェクトブラウザで
メソッド等にアタリをつけて検索and実験。
MSDNライブラリもチェック。

これで大抵は解決できる。
227222:2012/05/05(土) 22:24:29.41
>>224
夜寝る前にベッドで本を読みながら勉強したいし
本のほうがページを順番に1方向だけに進めるし気楽なのですじゃ。
ネットの情報は、いちいちどこをクリックしたかとか、
どこをまだ読んでないかとか、この順番だと先に理解してないといけないことがらをまだ読んでなかったとか、
いちいち気にしないといけないし。
>>225
その本はamazonで低評価だし、目次みてもなんかいまいち。
>>226
そうか、自分は上級者だったか(笑)。
言ってることがよくわからないけどとにかくすごいですね。
特にWebのページからボタンを押してクエリをおくって
それででてきたデータをExcelに貼り付ける、という操作がかなり頻繁に使うんだけど
そういうのはできる?
もちろんクエリとなるデータはExcelの複数のセルのデータを送る。
228デフォルトの名無しさん:2012/05/05(土) 23:26:37.76
>>227
やりたいことを実現するためにVBAを使う人じゃなくて
本を読んでVBAの勉強したい人だったのね
それならなおさらMSDNライブラリ読めばいい
紙がいいなら印刷すればいいしね
229デフォルトの名無しさん:2012/05/06(日) 01:56:09.87
横レスだけどMSDNライブラリっていうのがあるのか。
勉強に良いサイトとか>>1にまとめてくれると嬉しいな。
230デフォルトの名無しさん:2012/05/06(日) 04:18:22.14
>>227
226も言っている通りその辺はIEやOutlookの
COMオブジェクトを参照設定で使い回すだけだから
VB6の本やサイトでいい。
231デフォルトの名無しさん:2012/05/06(日) 09:35:11.23
>>229
スレの趣旨が違う
232デフォルトの名無しさん:2012/05/06(日) 19:05:41.23
エクセル2010でエクセルを終了させてもタスクマネージャーでみるとエクセルのプロセスが残ってしまいます。
状況は、ループである条件を監視し続けているAマクロを実行中に、別のブックのBマクロ(これはループ処理とかはしていません。)
を実行したのち、エクセルを終了させるとプロセスだけが残ってしまいます。
漠然とした説明しかできませんが、何か注意点とかないでしょうか。
233デフォルトの名無しさん:2012/05/06(日) 19:39:08.83
注意点
漠然としない説明じゃなく、具体的な説明が出来るようになること
234デフォルトの名無しさん:2012/05/06(日) 19:40:55.81
その問題が再現する最小限のコードを載せるんだ
235デフォルトの名無しさん:2012/05/06(日) 20:36:28.07
なぜ漠然とした説明しかできないのか…
236デフォルトの名無しさん:2012/05/06(日) 20:49:52.77
>>232>>176 とか >>166 のような釣りにしか見えなくなった。
勝手にやってくれ。
237デフォルトの名無しさん:2012/05/06(日) 20:51:22.70
句点を付けるヤツは基本的に釣り
238デフォルトの名無しさん:2012/05/06(日) 21:05:19.29
句点が、釣り、だと、されるなら、
肺活量の、小さい、私は、
どうやって、質問したら、いいのでしょう?
239デフォルトの名無しさん:2012/05/06(日) 21:15:47.02
>>238
あ、ほ、は、気、に、す、る、な。
240デフォルトの名無しさん:2012/05/06(日) 21:25:26.78
>>236
へ?か、っ、て、に、す、ね、て、ろ
241デフォルトの名無しさん:2012/05/06(日) 23:41:23.61
句点が釣りだと言われて読点を連打するのがおもしろいという流れが理解できない
242デフォルトの名無しさん:2012/05/07(月) 00:23:45.67
まぁまぁ、そうムキにならずに
243226:2012/05/07(月) 01:05:50.77
>>227

>特にWebのページからボタンを押してクエリをおくって
>それででてきたデータをExcelに貼り付ける
>クエリとなるデータはExcelの複数のセルのデータ

基本的にはできるよ。
ただ、IEの処理やスクリプト言語の処理と、VBAの処理を同期
させなきゃいけない問題とか難儀な部分もあるけど。
244デフォルトの名無しさん:2012/05/08(火) 12:06:06.06
エクセル2003で
ActiveSheet.ChartObjects(1).Activate
ActiveChart.SeriesCollection(1).Select

って、

ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).Select

と書き換えるとエラーになるんだけど、SeriesCollection(1)はChartの下じゃない?
ヘルプ見ても書いてない。
245デフォルトの名無しさん:2012/05/08(火) 12:19:42.73
246デフォルトの名無しさん:2012/05/08(火) 12:32:28.69
ありがとう、さっぱり分からんw
247デフォルトの名無しさん:2012/05/08(火) 12:41:54.32
>>244
ヘルプに載ってる
248デフォルトの名無しさん:2012/05/08(火) 16:23:07.08
>>247
ありがとう。
ヘルプに載ってる?
SeriesCollectionで見てみたんだけどなぁ。
もう一度よく見てみる。
249デフォルトの名無しさん:2012/05/08(火) 17:07:24.25
分かりました。
Chartで良かったです。
ヘルプに書いてある使用例を使って

Worksheets("sheet1").ChartObjects(1).Chart. _
SeriesCollection(1).Select

と、やってみた時にあらかじめグラフをアクティブにしておかないと
エラーになるのが分かっていなかったので、「親はChartじゃないのか?」
と、混乱してしまいました。

スレ汚しごめんなさい。
250デフォルトの名無しさん:2012/05/09(水) 01:15:33.50
VBAで
セルをいっぱい選択してて
その範囲内で最初に出てくるセルだけに色を塗るにはどうすればいいですか?
例えば、

A B C A D
E C D A C

の2行5列の範囲を選択しててマクロを実行すると

[A][B][C]A[D]
[E] C D A C

の[]で囲った[A][B][C][D][E]の5つだけが色がかわるの。
251デフォルトの名無しさん:2012/05/09(水) 01:26:12.21
ユーザーフォームのコンボボックスで躓いています。
Private Sub UserForm_Initialize()
MyArray1 = Array("うさぎ", "かめ", "ねこ", "犬", "鳥")
ComboBox2.List = MyArray1()
End Sub
とすると"実行時エラー9"インデックスが有効範囲にありません

が出ます。どう修正したらいいでしょうか?
252デフォルトの名無しさん:2012/05/09(水) 04:00:26.58
>>250
なんかいい方法が思いつかないんで力業で

Sub a()
  With Selection
    For Each c In .Cells
      Set f = .Find(c, after:=.Cells(.Count))
      If c.Row = f.Row And c.Column = f.Column Then c.Interior.Color = vbGreen
    Next
  End With
End Sub
253デフォルトの名無しさん:2012/05/09(水) 10:15:22.65
>>251
ComboBox2.List = MyArray1
254250:2012/05/09(水) 10:42:21.22
>>252
素晴らしい。
できたじゃないか。
255250:2012/05/09(水) 10:55:16.00
>>252
Findのafter:=はどういう意味?
省略したら左上から検索するはずなのにしないね。
256デフォルトの名無しさん:2012/05/09(水) 13:39:21.68
>>255
Findメソッドの仕様で、検索開始セルは「最後にヒット」するから、左上のセルが最初にヒットして欲しい時は
最後(右下)のセルから検索をスタートしなきゃいけない

この手のプログラムを書く時、初心者が必ずひっかかるポイントの一つ
257デフォルトの名無しさん:2012/05/09(水) 16:45:30.68
便乗ですが、指定された逆から検索するってこと?
もし、そうなら理由って何?
258デフォルトの名無しさん:2012/05/09(水) 16:53:09.73
検索かけて見つかった順にセルアドレスをスタックするから
259デフォルトの名無しさん:2012/05/09(水) 22:53:12.76
普通にエクセル操作で検索するときと同じようにヒットするようにしてあるだけじゃないのか
260デフォルトの名無しさん:2012/05/10(木) 00:15:35.95
>>257
逆順じゃない
最後まで行くと最初に戻る

検索範囲がABCDEだった場合、AからスタートにするとBCDEAの順にヒットする
Bからスタートにした場合はCDEABの順にヒットしていく
Eから始めればABCDEの順にヒットするようになる
261デフォルトの名無しさん:2012/05/10(木) 00:44:53.91
なんてためになるスレだw
262デフォルトの名無しさん:2012/05/10(木) 10:28:53.46
ツールバーを動的に作成してるのですが、アイコンをFaseIdではなく自作のイメージにしたい場合はどうやるのでしょうか?
2003です。
263デフォルトの名無しさん:2012/05/10(木) 11:38:59.60
>>262
多分Pictureプロパティのヘルプ読め載ってるはず
http://support.microsoft.com/kb/286460/ja
264デフォルトの名無しさん:2012/05/10(木) 15:19:24.88
>>263
できました、ありがとうございます。

Picture = LoadPicture(imagefile)
265デフォルトの名無しさん:2012/05/11(金) 14:10:41.73
うちのExcelVBAでWorkbooks.Addの呪文で新ブックを開くと
行と列が少ないブック(列256、行65535)になるんだけど
最新の行と列がたくさんあるブックを開くにはどうすればいい?
266デフォルトの名無しさん:2012/05/11(金) 14:43:00.17
>>265
Excelのバージョンをあげる
267デフォルトの名無しさん:2012/05/11(金) 15:11:24.43
>>266
金がかかるのでいやです。
他に方法はありますか?
268デフォルトの名無しさん:2012/05/11(金) 15:12:16.51
ちなみにいまのExcelでもたくさん行と列があるブックは使えるのです。
なぜかVBAで開いたときに少ない形式で開きやがる。
269デフォルトの名無しさん:2012/05/11(金) 15:20:48.25
>>268
予め開いておけば?
270デフォルトの名無しさん:2012/05/11(金) 15:23:00.24
>>269
いやです。
ある条件のときしか開かないし、
そもそもそれ以上に別の理由で。
271デフォルトの名無しさん:2012/05/11(金) 15:47:12.71
空のブックを保存しといて、必要な時にファイルコピーしてから開く
272デフォルトの名無しさん:2012/05/11(金) 15:49:49.56
普通に開く分には問題ないんだよな
古いDLL参照してんじゃね
入ってる最新のDLLを内部で参照してそっから開いくという手段を提示してみる
273デフォルトの名無しさん:2012/05/11(金) 16:02:31.20
これかな
kb/244167/ja
あとはレジストリ書き換えとか
274デフォルトの名無しさん:2012/05/11(金) 16:38:09.57
わかんねえよ
日本語でしゃぶれ
275デフォルトの名無しさん:2012/05/11(金) 18:59:01.39
ぺろぺろ
276デフォルトの名無しさん:2012/05/11(金) 19:55:02.26
>>265
http://msdn.microsoft.com/en-us/library/x80526fk(VS.80).aspx
旧フォーマットになる場合は、一時的に既定の保存形式を弄れってことらしいよ。
277デフォルトの名無しさん:2012/05/12(土) 01:21:51.54
オートフィルタ色々やってみたけどだめだったので質問です。

以下のデータで今月誕生日の人がいるかを抽出したいです
※年月日の書式は「日付」です。



Aセル   Bセル

Aさん  1234年5月6日
Bさん  1234年5月17日
Cさん  1234年7月5日


    ↓

Aさん  1234年5月6日
Bさん  1234年5月17日
278uy:2012/05/12(土) 01:55:53.41
色々って、何やったか位かけ
279デフォルトの名無しさん:2012/05/12(土) 01:58:39.69
>>278
答える気が無いやつは黙れks


消えろ
280デフォルトの名無しさん:2012/05/12(土) 01:59:19.16
>>278はどうせ知識がなくて答えられねーんだろうなw
悔しかったら答えてみろよクズがw
281uy:2012/05/12(土) 02:02:17.14
>>280=>>279=>>277
どうせ色々どころか何もしてないんだろ?
282デフォルトの名無しさん:2012/05/12(土) 02:11:18.61
>>279-280を質問者だと思ってる時点で糞コテ
283デフォルトの名無しさん:2012/05/12(土) 08:17:47.46
>>277
=MONTH(B1)=MONTH(NOW())
284デフォルトの名無しさん:2012/05/12(土) 09:46:36.43
>>283
VBAでお願いします
285デフォルトの名無しさん:2012/05/12(土) 11:03:50.76
右側のセルにExcel関数で年月だけ引っ張り出せばいいだろ。
286デフォルトの名無しさん:2012/05/12(土) 11:29:13.82
>>285
誕生日なので年は不要なんです
287デフォルトの名無しさん:2012/05/12(土) 14:01:39.67
じゃあ、月だけ引っ張り出せば
288デフォルトの名無しさん:2012/05/12(土) 16:24:18.99
オートフィルタだけでやりたいんです
289デフォルトの名無しさん:2012/05/12(土) 16:46:42.33
オートフィルタだけでやりたいならスレチ
290デフォルトの名無しさん:2012/05/12(土) 17:55:00.84
>>288
とりあえず「マクロの記録」(Alt, T, M, R)
291デフォルトの名無しさん:2012/05/12(土) 18:00:43.15
作業列もVBAも使わずにオートフィルタだけって無理じゃね?
292デフォルトの名無しさん:2012/05/12(土) 18:56:45.14
VBAでやりたいのにオートフィルタ以外使いたくない意味がわからない
293デフォルトの名無しさん:2012/05/12(土) 19:18:33.55
http://www.cygnus-x1.net/links/lcars/epsd-TOS1.php

ExcelのVBAという便利なものを聞いて、ひょっとしたらと思い質問です。
上のWebサイトで、
「Synopsisの段落(Wordの段落じゃなく一般の段落の意味)」と「タイトル(赤文字に水色背景の行)」だけを
Word等の文書にコピペしてはりつけたいんだけど
それはExcelのVBAの機能を使ってできたりしませんか?
写真やらヘッダ・フッタやSynopsisの上のこまごましたデータは全部いらないです。
294デフォルトの名無しさん:2012/05/12(土) 19:21:16.84
>>293
できなくはないけどExcelでやるべき作業じゃない
295デフォルトの名無しさん:2012/05/12(土) 19:44:50.55
>>294
Excelでやるべき作業じゃないかも知れないが、それはお前が判断することじゃない

>>293
出来る
ワードのVBAでエクセルを開いてコピーも出来る
エクセルのほうで必要な部分を選択→コピー
ワードで貼り付け

ワードへの貼り付けを自動化するにはVBAで連携する必要がある
296デフォルトの名無しさん:2012/05/12(土) 20:02:27.66
>>288
シリアル値で判定できなかったっけ?
297デフォルトの名無しさん:2012/05/12(土) 20:38:02.75
>>296
シリアル値は1900年を基準としてるので
1234年みたいな過去の日付は扱えないよ
298293:2012/05/12(土) 20:56:09.19
>>295
ありがとうございます
できるのですね!
どうやるか教えていただけないでしょうか?
299デフォルトの名無しさん:2012/05/12(土) 20:59:56.49
Excelで日々数値を入力していくとどんどん下へ長くなり
たまってくると最新情報を入力するために毎回延々とスクロールさせなければいけなくなるのですが
最新を上に入力して下へずれるとか逆にすることは出来ないのでしょうか?!
300デフォルトの名無しさん:2012/05/12(土) 21:15:55.18
>>299
1行目に行を挿入→挿入した行に入力
301デフォルトの名無しさん:2012/05/12(土) 21:23:32.31
>>298
>>295のとおり
1.ワード連携のためインスタンスを実装
2.エクセルで、コピーに必要なところを選択
3.ワードに貼り付け
4.インスタンスの破棄
VBA ワード でググれ

>>299
一番上を空白にしておいて、入力が終了したら全部一段ずらして下にコピーする

入力時に一番下を表示するのが負担かからなくていいんじゃね
302デフォルトの名無しさん:2012/05/12(土) 21:42:06.56
>>299
VBAでやるまでもなく[Ctrl]+[End]を押せばいいと思うよ
303デフォルトの名無しさん:2012/05/12(土) 22:11:16.37
>>300
>>301
サンクス!
しかしながら、、表が5つ横並びにならんでいて
それぞれがランダムに増えていく感じでして、行で空白を挿入すると増えない表が
空白になってしまうのですが、やはりそれぞれの表をタブで分けるしかないか。、、それぞれ見比べたいのでスクロールは我慢か、、w
304デフォルトの名無しさん:2012/05/12(土) 22:16:06.25
>>303
Ctrl+↓で自動的に最後に飛ぶ
次の列でデータが少なくて現在位置より上に戻りたい時は、カーソルをその列に移動してからCtrl+↑
もっと下へ行きたい時はCtrl+↓
305299:2012/05/12(土) 22:20:44.05
>>304
ありがとうございまますm(_ _)m
306293:2012/05/12(土) 23:05:54.92
>>301
ぅ〜ん
さっぱり分かりません(><)
307デフォルトの名無しさん:2012/05/13(日) 00:56:07.83
Excelのセルで入力したあと、セルの焦点をそのいま入力したセルのままにすることはできますか?
Enterを押すと下のセルにうつりますし、Tabを押すと右のセメにうつるので困ります。
かといってそのままにしておくと登録しておいたショートカットでそのセルに対してマクロが実行できません
308デフォルトの名無しさん:2012/05/13(日) 00:59:01.45
やり方が間違ってる
309デフォルトの名無しさん:2012/05/13(日) 00:59:10.92
>>307
どんなマクロかしらんけど前のセルに戻す動作もマクロに入れればいいんじゃないの

もしくは

オプションで「入力後にセルを移動する」のチェックを外す
310デフォルトの名無しさん:2012/05/13(日) 01:01:20.19
>>309
上のセルをマクロ対象にしろと申すか?
入力してマクロを実行するパターンと
すでに入力されてるセルを選択してマクロを実行するパターンがあり
後者の場合はわざわざ対象セルの下のセルを選択しないといけなくなり
そりゃマヌケだろが?

あるいは

オプションを使うとか、本気で申してるのか?
その方法これまで30年もExcelをさわってきた無意識のセル入力感覚を破壊することになるぞ。
311デフォルトの名無しさん:2012/05/13(日) 01:03:08.79
だから言ってるだろ
やり方が間違ってる

間違ってるやり方を質問して出来るようになっても
タダの有害だ
312デフォルトの名無しさん:2012/05/13(日) 01:13:37.02
だから言ってるだろ
やり方が間違ってる

間違ってるやり方を質問して出来るようになっても
タダの有害だ
313デフォルトの名無しさん:2012/05/13(日) 01:14:36.88
大事なことなので二回(ry
314デフォルトの名無しさん:2012/05/13(日) 09:51:37.74
VBAの勉強を始めようと思うのですが、
効率の良い勉強の仕方を教えて下さい!
315デフォルトの名無しさん:2012/05/13(日) 09:55:12.38
まず、にちゃんなんかみるのをやめる。
316デフォルトの名無しさん:2012/05/13(日) 10:52:29.95
>>314
VBAは目的じゃなくて手段
まず何をやりたいのかを書け
317デフォルトの名無しさん:2012/05/13(日) 12:05:23.38
VBAが目的でもいいじゃない
318デフォルトの名無しさん:2012/05/13(日) 12:47:35.30
>>314
リファレンスマニュアルを丸暗記すれば勉強終わり
319デフォルトの名無しさん:2012/05/13(日) 19:49:06.61
>>317
じゃあまずアセンブラか、それこそプリント基板からだな!
320デフォルトの名無しさん:2012/05/13(日) 21:52:34.49
核融合で水素からシリコン原子を作る
321デフォルトの名無しさん:2012/05/14(月) 01:57:19.36
Range("A1").End(xlDown)
でデータの入力されている最終行を取得して
その1行下にデータを入力しようとすると
何も入力されてない時にエラーになります。
なにかいい知恵はありませんか?
322デフォルトの名無しさん:2012/05/14(月) 02:23:20.40
開始セルから下へ行くんじゃなく
バージョンの最終セルから上に行くようにすればいい
323デフォルトの名無しさん:2012/05/14(月) 16:55:28.00
2003でも2010で実行できるマクロが2007でダメってことある?
324デフォルトの名無しさん:2012/05/14(月) 17:02:17.13
動作保証しないか、するならテストしろ
325デフォルトの名無しさん:2012/05/14(月) 17:04:50.73
>>324
誰もそんなこと聞いてない。
326デフォルトの名無しさん:2012/05/14(月) 17:20:05.82
>>324
分からないならしゃしゃり出て来るなカス!!
327デフォルトの名無しさん:2012/05/14(月) 17:28:15.89
>>324
動作条件とか記載するにきまってるだろ。
そのうえで聞いてるんだろ。
馬鹿は引っ込んでろ。
328デフォルトの名無しさん:2012/05/14(月) 17:28:31.83
あるかどうかを聞いてるんだ
答えは二通りしかないだろ
日本語も読めないカスは書き込むな!
329デフォルトの名無しさん:2012/05/14(月) 17:33:41.49
面白がって煽るのやめてw
2003でマクロ書いて、テストは2003と2010でやった。
それなら2007でも問題ないだろうと思って。
動作保証は、あくまでも2003と2010。
客先にもそれしかないから。
たまたま動かしたPCに2007が入っていて、動かなかったって連絡来たから聞いた。
330デフォルトの名無しさん:2012/05/14(月) 17:36:07.46
あるんじゃん


リボンとかそこらへんか?
331デフォルトの名無しさん:2012/05/14(月) 17:54:01.42
2007で動かなかったという現実があるのに、なんで「ありますか?」とか聞くのだ、この馬鹿は
332デフォルトの名無しさん:2012/05/14(月) 20:48:49.86
ネタスレにすんな。
せっかく有益なスレなのに
333デフォルトの名無しさん:2012/05/14(月) 21:52:02.46
悪い、動かんと言われたけど、実際の環境というか操作方法とか確認できないのよ。
だから、聞いたのよ。
334デフォルトの名無しさん:2012/05/14(月) 21:52:37.26
>>331
馬鹿は出てこないでくれ
335デフォルトの名無しさん:2012/05/14(月) 22:19:00.30
>>333
んで、そんなこと聞いてどうするの?
実際の環境も操作方法も確認できなくて、2ちゃんでできるとかできないとか回答もらってどうするの?
いまいち質問の意図が読みとれない
336デフォルトの名無しさん:2012/05/15(火) 00:30:32.23
>>333
そんなもん99%は操作ミスかセキュリティ設定が悪くてマクロが動いてないだけ
まずは客先へ行ってちゃんと知識のあるやつが状況を把握してこい
337デフォルトの名無しさん:2012/05/15(火) 00:33:00.36
>>336
確認できないって書いてるの読めない?
338デフォルトの名無しさん:2012/05/15(火) 00:38:19.48
確認できないってのは、確認するのが「不可能」じゃなくて、「めんどくさい」だろ
デバッグってのは結局のとろこ>>336に尽きるんだが、それをしないなら有意な質問にならないし、まともな回答も出来ないんだよ
339デフォルトの名無しさん:2012/05/15(火) 01:24:01.74
小学生知能にマジレスしてやんなよw
340デフォルトの名無しさん:2012/05/15(火) 01:46:55.88
確認できないってことは相手は言語を超越した何かか?w
341デフォルトの名無しさん:2012/05/15(火) 02:26:50.55
>>340
それだと受注もできんだろ

太陽系の外へ向かったロケットか何かなんだよ、きっと
342デフォルトの名無しさん:2012/05/15(火) 03:20:17.30
2007でなくなって2010で復活した変更点があればそれ絡みだろうけど
それっぽいものは見つけられんなぁ

環境に依存する何かを使ってるんじゃないかと
343デフォルトの名無しさん:2012/05/15(火) 14:54:57.82
>動作保証は、あくまでも2003と2010。
>客先にもそれしかないから。
>たまたま動かしたPCに2007が入っていて

部外者が勝手に動かしたのか?恐ろしい職場だな
344デフォルトの名無しさん:2012/05/15(火) 19:54:52.28
ユーザーフォームで使用者に必要事項を入力させているのですが
ComboBoxで何も選択されていないことが想定され
その場合のエラー処理で困っています。
ユーザーフォームは表示したままでCommandButton
をクリックする前の状態に出来ないでしょうか?
345デフォルトの名無しさん:2012/05/15(火) 20:07:07.92
if combobox1.value="" then exit sub
346デフォルトの名無しさん:2012/05/15(火) 21:10:08.88
>>345
あら、そんなに単純だったんですね
ありがとうございます。
347デフォルトの名無しさん:2012/05/15(火) 21:51:02.47
for〜nextで繰り返し処理している中で
inputboxで数値を入力させているのですが、
inputboxのキャンセルをクリックしたときに
inputbox以外の処理はカウント完了するまで続けたいのですが
できませんか?
また出来るなら方法をご教示下さい。
348デフォルトの名無しさん:2012/05/15(火) 22:09:07.15
Sub test()
For i = 1 To 5
a = InputBox("hoge")
If a = "" Then
MsgBox "キャンセルされたよ"
Else
MsgBox a
End If
b = b + 1
Next
MsgBox b & "回ループしたよ"
End Sub
349デフォルトの名無しさん:2012/05/15(火) 22:13:05.89
>>333
その位で確認してから質問しろ
350デフォルトの名無しさん:2012/05/15(火) 22:38:17.64
>>348
それだと毎回inputboxが出てくるので
一度キャンセルされるとそれ以降はinputboxを
とばして残りの処理をしたいのです。
351デフォルトの名無しさん:2012/05/15(火) 22:46:01.10
exit for すりゃいいじゃん
352デフォルトの名無しさん:2012/05/15(火) 22:49:35.84
>>351
それだと残りのFor〜Next内の処理ができないです。
353デフォルトの名無しさん:2012/05/15(火) 23:04:09.77
Sub test()
Dim flag As Boolean
For i = 1 To 5
If Not flag Then a = InputBox("hoge")
If a = "" Then flag = True
b = b + 1
Next
MsgBox b & "回ループしたよ"
End Sub
354デフォルトの名無しさん:2012/05/15(火) 23:17:15.40
>>353
ありがとうございます。
完璧です!
355デフォルトの名無しさん:2012/05/16(水) 03:21:47.17
例えばあるシートの、1行目の、1列から10列目までに色々な数値が書かれていて
最小値だったり、最大値だったりを持つ数値の列数を算出していきたいんですが

とりあえず以下のようなやり方で出来るんですが

最小値 = WorksheetFunction.Min(Range(Cells(1, 1), Cells(1, 10)))

最小値をもつ列  = Range(Cells(1, 1), Cells(1, 10)).Find(最小値).Column



何か1行ぐらいのスッキリした文で求める方法ないでしょうか?
というのは、行の部分を変数化して、何千行、何万行と作業やっていくので
負担の無い早そうなスピードがのりそうな文があればそのほうがいいんですが
どなたがご存知でしょうか?
356デフォルトの名無しさん:2012/05/16(水) 08:45:44.06
ねえよ

見た目だけそうなればいいなら、サブモジュール作る
357デフォルトの名無しさん:2012/05/16(水) 09:02:26.45
>>356
ありがとうございます>>355でもあんまり速度は悪くなさそうですね。

これでやってみます。もしそういうのがあれば、知りたいなと思いました。
358デフォルトの名無しさん:2012/05/16(水) 09:17:27.03
だめだオブジェクト指向が苦手だ
Cで慣れすぎたせいで効率悪い
359デフォルトの名無しさん:2012/05/16(水) 09:57:16.22
>>358
単に大規模システムの構築に慣れてないか、
小規模なものを無理矢理小分けにして無意味にごっちゃにしてるかのどっちかじゃないの
360デフォルトの名無しさん:2012/05/16(水) 10:31:06.74
P10に=((1/(COS(RADIANS(N10))))-1)*AI10*AJ10*X10/V10/1000
O10に=AK10/(SIN(RADIANS(N10)))という式が入力されていて
P10=O10のときのN10の値を求めたいんですがどういうコードを書けば
いいのかわかりません。
361デフォルトの名無しさん:2012/05/16(水) 10:38:16.38
>>360
Function GetN10()
If Range("P10") = Range("O10") Then
GetN10 = Range("N10")
Else
GetN10 = 0
End If
End Function
362デフォルトの名無しさん:2012/05/16(水) 11:43:29.77
>>361
ありがとうございます。
でもそれを使ってどうしていいのかわかりませんでした。
363デフォルトの名無しさん:2012/05/16(水) 12:06:29.58
へえ、あんたなかなかやるじゃん
364デフォルトの名無しさん:2012/05/16(水) 17:10:25.84
失礼します。
今プログラムを作っていて、
ある列に数字をうっていてある条件を出していくようなプログラムを作っているのですが、(ここはあまり関係ない)
ActiveXコントロールを押すと、行のBの列の数字を。
そして次にまた押すと、行のCの列の数字を、、、というように
やっていきたいのですが、これをするためには、
例えば、iだとかjだとを一回格納する必要があります。

例えば、
Private Sub CommandButton1_Click()
dim i as integer
i=0
i=i+1



End Sub

プログラムが終了しても、このiを保存しておきたいのです。
どのようなやり方がありますか?
365デフォルトの名無しさん:2012/05/16(水) 17:33:52.80
セルに書く
外部ファイルに書く
ソースコードのコメントに書く
コントロールに書く
366デフォルトの名無しさん:2012/05/16(水) 17:36:40.83
まぁセルのどっかに保存が一番簡単だな。
見た目云々をいうなら白文字で代入とか。

ところで、例えがiを必ず初期化しているせいで、逆に分かりづらくなっている気がするんだが
367デフォルトの名無しさん:2012/05/16(水) 17:40:35.92
ブック名やシート名っていう手もあるぞい
368デフォルトの名無しさん:2012/05/16(水) 20:39:35.86
>>360
ゴールシークは使えないの?
369デフォルトの名無しさん:2012/05/16(水) 20:44:24.26
というか、ホントにプログラムが終了しても保存してないとダメなのか?
Subを抜けても保存されてるんだけで良いんじゃないのか?
それならSubの外で変数定義するか、Staticな変数使えばいいだけだが
370デフォルトの名無しさん:2012/05/16(水) 20:55:08.71
釣られすぎw
371デフォルトの名無しさん:2012/05/16(水) 22:24:58.52
中国のGDP、実は日本を超えてなかった
http://engawa.2ch.net/test/read.cgi/poverty/1337172543/


中国経済、予想を超える急減速か

世界第2位の経済大国の舵(かじ)取り役に来年就任する人物は、
中国の国内総生産(GDP)統計に対する疑念をうっかり漏らした。
中国の公式GDP統計は「人為的」で当てにならないと語ったのは李克強氏だ。

李氏の評価が正しければ、中国経済はGDP統計がこれまで示唆してきたよりもかなり厳しい苦境に陥っている。
電力や鉄道貨物、銀行融資をはじめ、ここ数日で発表された注目度の低い統計は、
いずれも経済活動の急激な落ち込みを示しており、政策立案者たちに不意打ちを食らわせたようだ。

最近の悲惨な統計を受け、中央銀行は12日、融資拡大を促すために市中銀行の預金準備率を引き下げた。
しかし、金融危機後の大規模な低利融資と政府支援による投資の結果、中国政府には今回、
限られた武器しか残っていない。一方で、インフレ再燃と国営銀行の不良債権への懸念が高まっている。

http://www.nikkei.com/biz/world/article/g=96958A9C9381959FE3E7E2E1848DE3E7E2E7E0E2E3E0E2E2E2E2E2E2;dg=1;df=2;p=9694E3E7E2E0E0E2E3E2E6E1E0E2


372デフォルトの名無しさん:2012/05/16(水) 23:05:47.74
超えててくれたほうがいろいろありがたいんだが
373デフォルトの名無しさん:2012/05/19(土) 16:01:40.27
うん、愚図愚図してないでとっとと超えろと言いたい
374デフォルトの名無しさん:2012/05/19(土) 16:11:52.78
馬鹿には無理
375デフォルトの名無しさん:2012/05/19(土) 18:47:15.19
VBAを使って作業しまくったらPCが異常に重くなるんです。
最近会社で効率のため自分用VBAをいっぱいつくるようになってからの症状なので
VBAが原因なのは明らかです。
なにかメモリを解放しないといけないのですかな?
どうか対策のことでアドバイスをお願いできますでしょうか?
376デフォルトの名無しさん:2012/05/19(土) 18:51:19.39
>>375
まず、タスクマネージャでどのプロセスが CPU やメモリ食ってるかを見てみなよ。
377デフォルトの名無しさん:2012/05/19(土) 18:55:17.89
動的配列を使ったら最後に必ず erase するとか
378デフォルトの名無しさん:2012/05/19(土) 18:58:16.27
>>375
どんなコード書いてるのかわからないのでアドバイスしようがないと思うけど・・・?
PCが重いってのは何が重いの?ディスクI/O?CPU?メモリアクセス?
VBAが原因なのは明らかっていう根拠は何?
379デフォルトの名無しさん:2012/05/19(土) 20:27:42.40
EXCEL終わらせても重いままだったらVBAは無関係だと思っていいが
380375:2012/05/19(土) 20:29:04.21
Excel終わらせたら、もちろん軽いパパです。
381デフォルトの名無しさん:2012/05/19(土) 20:38:35.31
>>380
じゃあVBAのロジックがクソなんだろw
382375:2012/05/19(土) 20:51:45.02
そのとおり糞だからこそその改善策を聞いているのですが・・・
383デフォルトの名無しさん:2012/05/19(土) 20:55:33.26
VBAでオートフィルタをさせているんですが
そのフィルタをする項目として、Selectionで囲ったセルを指定してます。
criteria1:=Array(Selection)
みたいな感じです。

しかしこのselection、1行の横長だとうまくいくんですが
1列の縦長だとエラーが出て「エラいこっちゃ」になります。

縦でselectionしたときも、複数行・列にわたってselecionしたときにその内部のセル全部でフィルターしたいときには
どういうコードを書けばいいですか?
384デフォルトの名無しさん:2012/05/19(土) 21:11:24.37
>>382
だから早くその糞コードを見せろよ
385デフォルトの名無しさん:2012/05/19(土) 21:12:19.84
>>383
わからなければとりあえず「マクロの記録」(Alt, T, M, R)
386デフォルトの名無しさん:2012/05/19(土) 21:26:08.03
>>382
重い処理を何回もループさせるとCPU使用率がヤバくなるよね。それじゃね?。sleep入れてみれば?。
387デフォルトの名無しさん:2012/05/20(日) 03:39:29.77
>>375
適当なタイミングでDoEventsかませ
388デフォルトの名無しさん:2012/05/20(日) 11:03:41.98
データを他のブックに貼り付けて終わらせるのがあるんですけど、
下のメッセージが出るんでこれを出さないようにする方法とかないですか?

クリップボードに大きな情報があります。この情報をほかのプログラムに貼り付けられるようにしますか?
389デフォルトの名無しさん:2012/05/20(日) 11:10:30.81
>>388
Application.CutCopyModeにFalseをセットする。
390デフォルトの名無しさん:2012/05/20(日) 11:12:45.84
Application.DisplayAlerts = False
391デフォルトの名無しさん:2012/05/20(日) 15:00:31.73
sn = Array("りんご", "ゆず", "かぼす")
For ii = 1 To 3
Set ws = Worksheets(sn(ii))
Set tmp = ws.Cells(Rows.Count, 1).End(xlUp).Rows
ws.Range(Cells(1, 1), Cells(tmp, 10)).Select
Next ii
とするとRangeのところで実行時エラー1004が出ます。
どうしたらいいでしょうか
392デフォルトの名無しさん:2012/05/20(日) 15:14:26.21
>>391
tmpには正しい(意図している)値が入ってるの?
393デフォルトの名無しさん:2012/05/20(日) 15:27:12.60
>>392
すこし修正して入っているのを確認しましたが、
今度はRangeクラスのSelectメソッドが失敗しました。
のエラーが出ました。
394デフォルトの名無しさん:2012/05/20(日) 15:56:30.31
>ws.Range(Cells(1, 1), Cells(tmp, 10)).Select
CellsがActiveSheet見てるんじゃないかと予想
395再質問です:2012/05/20(日) 16:00:22.22
VBAでオートフィルタをさせているんですが
そのフィルタをする項目として、Selectionで囲ったセルを指定してます。
criteria1:=Array(Selection)
みたいな感じです。

しかしこのselection、1行の横長だとうまくいくんですが
1列の縦長だとエラーが出て「エラいこっちゃ」になります。

縦でselectionしたときも、複数行・列にわたってselecionしたときにその内部のセル全部でフィルターしたいときには
どういうコードを書けばいいですか?
396デフォルトの名無しさん:2012/05/20(日) 16:04:09.76
>>395
出たエラーとコードを晒せ
397デフォルトの名無しさん:2012/05/20(日) 16:05:34.96
>>389
thxですm(__)m
398デフォルトの名無しさん:2012/05/20(日) 16:06:49.95
>>394
正解でした。
しょうもないミスですんません・・
399デフォルトの名無しさん:2012/05/20(日) 16:22:50.57
>>277
ActiveSheet.Range("B1").AutoFilter Field:=1, Operator:=xlFilterValues, Criteria2:=Array(1, "31/05/2012")
400395:2012/05/20(日) 16:25:19.61
>>396
恥ずかしいゎ
401デフォルトの名無しさん:2012/05/20(日) 17:28:16.42
>>395
わからなければとりあえず「マクロの記録」(Alt, T, M, R)
402デフォルトの名無しさん:2012/05/20(日) 18:36:04.74
>>395
こんな感じかな

Sub test()
Dim V()
Dim c As Range
Dim n As Long

ReDim V(1 To Selection.Count)

For Each c In Selection
n = n + 1
V(n) = c.Value
Next

Range("A1").AutoFilter Field:=1, Criteria1:=Array(V), Operator:=xlFilterValues
End Sub
403395:2012/05/20(日) 18:38:22.69
>>402
すばらしい!
それこそわたしが探し求めてたものです。
ありがとうございます。

しかしマクロ記録を勧める人は何だったんだろ。ピントはずれ。
404395:2012/05/20(日) 18:40:35.55
この配列を使い、それをvarient型で使う、というのはどういうしくみになってるんだろ。
使い方をまとめてくれてるサイトみたいなのない?

あとFilter機能で使ったように、Arrayの使い方も、
今後の活用のために、まとめサイトみたいなのない?
405デフォルトの名無しさん:2012/05/20(日) 20:22:49.49
>>402
Criteria1:=V でよっかた
406デフォルトの名無しさん:2012/05/21(月) 11:01:11.02
>>402
コードを見て質問の意味が理解できたw
あんたスゲーよ
407デフォルトの名無しさん:2012/05/21(月) 11:44:27.03
さすがにそれはエスパーレベルが低すぎだろ
408デフォルトの名無しさん:2012/05/22(火) 08:38:38.53
シートに  A:データの一覧表(500行ほど)
       B:ブランクフォーム

と2つのシートがあるマクロがあります。マクロを実行すると
 −Aシートの1行をBのブランクフォームに転記して、
 −ブランクフォームを新しいシートにコピー
 −そのシートを新しいファイルにして保存。 を繰り返しています。

ただ、100〜200くらいでメモリーか何かのエラーでマクロが止まります。
再開すればまた走るのですが、最初から最後まで連続で生かせる方法ありません?
409デフォルトの名無しさん:2012/05/22(火) 08:54:21.37
ファイル保存終わったら閉じろ
更に一回ごとにクリップボード空にしろ


かなあ
新規ブックのインスタンスって閉じた時点で解放されるのか?
410デフォルトの名無しさん:2012/05/22(火) 09:36:18.16
>>408
コードにバグがあるんだろうね
どっかにアップしてみたら誰かが見てくれるよ
411デフォルトの名無しさん:2012/05/22(火) 09:46:48.28
調べてみたら、エクセルで増やしたブックのメモリは減らないのが仕様らしい
クローズしたら一回doevent入れてみそ

VBAからエクセルあるいは別のオートメーションを参照して、毎回解放するとかくらいかなあ
412デフォルトの名無しさん:2012/05/22(火) 11:16:58.15
まず
本体ブック
作業ブック
にわける
本体ブックから作業ブックを呼び出し、作業ブックにある実際の作業モジュールを実行して、作業ブックを閉じる

クリエイトオブジェクトでエクセルアプリケーションをセット
セットしたオブジェクトから作業ブックを開く
作業ブックのモジュールを実行
作業ブックを閉じる
セットしたエクセルアプリケーションをクイット
エクセルアプリケーションの解放

これでフロセス上エクセルが二重起動して作業側が主メモリを食った後解放されるはず
本体メモリも若干ふえるけど、致命的にはならないんじゃないか
413デフォルトの名無しさん:2012/05/22(火) 11:33:17.81
日付     あるセル
5月12日   15回目
5月15日   16回目
5月30日   17回目

上記の日付と「NN回目」は予め入力済みとする。
このとき、日付蘭が今日を過ぎている場合、
あるセルの書式を「水色背景、青文字」にするという書式設定をしている。

後日、「NN回目」の後にセンテンスを追加した場合(途中に半角文字があったりすると)
セルの書式(文字色)が途中から指定の青ではなく黒のままになってしまう。(背景色はOK)

単純にセルの切り取り&ペーストをしても変わらないので、
@「セルのセンテンスをコピーし、テキストデータとしてはり付けると既定の書式に修正される。」

この手順が手間なので、ボタン一つで@と同じ動作をさせたいのですが、マクロで出来ますか?
414デフォルトの名無しさん:2012/05/22(火) 11:47:51.21
5月12日を過ぎたら、15回目と書かれたセルの書式は「水色背景、青文字」になるけど、
「15回目」の後に「ぬるぽ」って追加すると「水色背景、黒文字」になってしまうということ?
415デフォルトの名無しさん:2012/05/22(火) 13:20:18.11
できる
対象セルに「NN回目」って文字列が記入されてるならだが


1.正規表現
vbsのregexpをオブジェクト参照セット
パターン文字列に数字一回以上&回目

2.
頭から一文字づつ判定
連続した数字でかつ最後に回目だったら抜き出し
416デフォルトの名無しさん:2012/05/22(火) 14:06:26.72
必ずそうなるというわけではないんだけど

15回目           (水色背景、青文字)

↓文字「ぬるぽ?ががが」追加

15回目 ぬるぽ?ががが (水色背景)

       「ぽ」まで青文字
         「?」以降が黒文字 ←?が半角

どうやら半角文字があると、その文字以降に文字色の書式が反映されないみたい
半角以外でも同様の現象が起きているけど、条件ははっきりしていない
417デフォルトの名無しさん:2012/05/22(火) 15:08:17.31
ボタンを押していいなら、ボタンのイベントで日付列の経過してるセルを確認して、
それに対応している「あるセル」に書式設定すればいいんでないの。
418デフォルトの名無しさん:2012/05/23(水) 10:18:01.96
「マクロを書け」とか「ソースを見せろ」とか人によって言われることが違うんですが
マクロ、VBA、コード、プログラム、ソースの違いというか言葉の正しい使い分けを教えて下さい
419デフォルトの名無しさん:2012/05/23(水) 10:48:04.64
420413:2012/05/23(水) 12:55:49.58
左隣のセルを使うという姑息な手法で作ってみたw

あるセルを選択した状態で、マクロ「カットペースト」を実行

Sub カットペースト()
 '選択セルの値をコピー
   Selection.Copy

 '左のセルに値を貼り付け
   ActiveCell.Offset(0, -1).Select
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
   :=False, Transpose:=False
   Application.CutCopyMode = False

 '左セルの値をコピー
   Selection.Copy

 '選択セルに値を貼り付け
  ActiveCell.Offset(0, 1).Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
   :=False, Transpose:=False

 '左セルの値を空に
  ActiveCell.Offset(0, -1).Select
  Application.CutCopyMode = False
  Selection.ClearContents
  ActiveCell.Offset(0, 1).Select

End Sub

もっとシンプルに出来そうなんだけど・・・
421デフォルトの名無しさん:2012/05/23(水) 13:00:52.08
selectする奴はトド素人
422デフォルトの名無しさん:2012/05/23(水) 13:02:59.11
selectしてると誤動作するよね
423デフォルトの名無しさん:2012/05/23(水) 13:39:28.64
じゃお洒落な解答を教えてけろっぴ
424デフォルトの名無しさん:2012/05/23(水) 15:22:46.42
EXCEL VBAをJavaScriptみたいにJITコンパイルして欲しいなあ
実行速度が遅すぎる
425デフォルトの名無しさん:2012/05/23(水) 15:24:35.79
>>424
無理です
426デフォルトの名無しさん:2012/05/23(水) 15:28:18.29
>>425
何でや
JavaScriptに出来てどうしてVBAで出来ん
427デフォルトの名無しさん:2012/05/23(水) 18:59:31.41
じゃあアセンブラでもやっとけ
428デフォルトの名無しさん:2012/05/23(水) 19:02:17.80
VBAだけ頑張っても、どうせExcelが足引っ張るだろうし。
429デフォルトの名無しさん:2012/05/23(水) 19:06:47.07
>>424
CSV形式にしてRUBYで処理すれば良いよ。
430408:2012/05/23(水) 21:04:26.55
>>411
doevenで解決。深謝。
431デフォルトの名無しさん:2012/05/23(水) 23:30:42.08
JIT はどうでもいいから、Excel C# for Application にしてくれ。
432デフォルトの名無しさん:2012/05/23(水) 23:52:46.56
やめてdotNetやめてまじやめて
書き直しとか死ねる

いざってために出来るようにいろいろ勉強してるけどまじ簡便
433デフォルトの名無しさん:2012/05/24(木) 11:00:35.34
使ったことないけど、VSTOとかExcel-DNAとか使うといいんじゃ
434デフォルトの名無しさん:2012/05/25(金) 01:20:59.06
ExcelVBAとSharePOINTのデータ連携なんですが

dt_sheet.ListObjects.Add(SourceType:=xlSrcExternal, _
Source:=Array("SharePoint サイトの URL", ListName, ViewGUID), _
LinkSource:=True, _
XlListObjectHasHeaders:=xlYes, _
Destination:=Range("A3")).Name = tbllist

SharePointのリストデータを取得しエクセル上にデータ表示(これはできました)
ここから質問なんですが、以下手順

1.エクセル上でデータを修正
2.エクセル上に作成した〔更新〕ボタンを押下
3.SharePointのリストデータが更新される

これってVBAで可能なんですかね?
可能であればどういうコード書けばいいんですかね?
【ver】
Excel2007
SharePoint2007
435デフォルトの名無しさん:2012/05/25(金) 08:27:32.47
知らん
外部連携ならそっちの仕様による
436デフォルトの名無しさん:2012/05/26(土) 17:04:52.52
バルーンをvbaで操作したいのだが、このスレでいいのかな。

ボタンなしのモードレスバルーンでコールバックさせたいんだが、どうすればいいんだろか。
要は『処理中』みたいなバルーンを表示させたままコールバックプロシージャを実行させて、
終わったらクローズして、新しいバルーンで『終了』→OK、みたいに。

ユーザーフォームじゃなくて、『ろっきー君』にしゃべってもらいたいのだが・・・、
もちろんアニメは103な。
437デフォルトの名無しさん:2012/05/26(土) 17:59:00.53
>>436
こういうことか?
http://msdn.microsoft.com/ja-jp/library/cc376672

コールバックされるのはバルーンのボタンを押したときみたいだな
単に処理中を表示したいなら、
普通にモーダレスのバルーンを表示するだけの話じゃないのか?

つかオフィスアシスタントっていまのバージョンでも使えるんだろうか
438デフォルトの名無しさん:2012/05/26(土) 18:48:28.46
VBAの知識がない人にVBAの修正をお願いするのは無理なことでしょうか?
439デフォルトの名無しさん:2012/05/26(土) 18:49:45.75
>>438
お願いするだけならあなたの勇気次第でしょうね
440デフォルトの名無しさん:2012/05/26(土) 18:52:28.11
そもそもなんでそんなことしたいのよ。
441デフォルトの名無しさん:2012/05/26(土) 19:04:21.99
>>437 thx
excel2003だ。
そうなんだが、残念ながらモードレスバルーンはコールバック必須だろ?
ボタンつき(あるいは『ret=.show』で戻るタイプ)のバルーンでコールバックプロシージャがないと
えらーになる。ボタンなしだとエラーにはならないが、当然、何もおこらんし、バルーンは消す手段がないときたもんだ。
ボタンつけてもいいんだが、いちいち『OK』するのがめんどくさい。
バルーン表示すると、表示したまま即勝手にコールバックが動いてそこで
bln.close
With NewBalloon
-----
 .show
End With
End Sub
みたいにしたいんだが...
442デフォルトの名無しさん:2012/05/26(土) 19:20:36.51
438>ですが、一人で現在2つの仕事を抱えていて、その中にVBAの修正も
含まれています。VBAの知識がない人にも頼まないといけない状況で
本人も「やります。」と言われたので教えました。
すると、本人が「無理です。出来ません。」と言われました。
でも、上司が本人に実際やってみようと言っています。
443デフォルトの名無しさん:2012/05/26(土) 19:20:38.22
>>437
>普通にモーダレスのバルーンを表示するだけの話じゃないのか?

すまん、君の言うとおりだった。そのとおりだ。ボタンなしバルーンはコールバック必須じゃないんだな。
解決だ。ありがd
444デフォルトの名無しさん:2012/05/26(土) 19:25:19.27
>>442
むしろ仕事が遅れると思うよ。長期的にみてどうかは、別かもしれんが。
445デフォルトの名無しさん:2012/05/26(土) 19:27:34.25
>>442
「出来ません」でやらなくていいぐらいの仕事かよw
ユルい会社でうらやましいな
446デフォルトの名無しさん:2012/05/26(土) 19:34:17.90
VBA の仕事なんて、そんなもんだろ。
447>>442:2012/05/26(土) 19:35:56.59
本人がもう、説明途中で飽きてしまって…。「細かすぎて私には向いていません。
無理です。出来ません。担当している人(私)にしか出来ません。」ってことに
なってしまいました。
448デフォルトの名無しさん:2012/05/26(土) 19:36:59.43
>>447
2ちゃん見る暇があるなら自分でやれよ
449デフォルトの名無しさん:2012/05/26(土) 19:39:46.45
>448
そんな暇はありません。
一人で現在2つの仕事を抱えていて忙しいんです・・・
日本語読めないんですか?
450デフォルトの名無しさん:2012/05/26(土) 19:45:11.24
暇はないと言いつつ、レスをちゃんと返してる ww
451デフォルトの名無しさん:2012/05/26(土) 19:50:32.75
保守不可能なきったねーコード書いてるんだろ。
452デフォルトの名無しさん:2012/05/26(土) 20:06:31.85
>>449
2ちゃん見る暇があるなら自分でやれよ
453デフォルトの名無しさん:2012/05/26(土) 20:23:52.43
>>447
それ出来る出来ない以前の資質の問題だわww
興味がある仕事には一直線でバリバリだけどアラが目立ったり
興味がない仕事にはまったく見向きもしない
そういうタイプだろ?
上司はそいつにVBAをさせるのが目的じゃなくて、本人が気に入らない仕事でも一回やり遂げさせみようとしてるだけじゃね

というかVBAを何も知らないヤツにいきなり修正作業とか間違ってる
454デフォルトの名無しさん:2012/05/26(土) 20:42:41.58
<<450
応援ありがとうございます。
頑張ります。

<<451
残念ながら私のVBAのコードは上司からも非常に綺麗なコードだと高い評価を受けています。
そういうあなたこそ綺麗なコードが書けるんですか?
そういう批判はまずはあなたの綺麗だというコードを提示してからにしてもらえますか???

<<452
本当に日本語が読めないんですね・・・。
さすがの私もにかわいそうになってきました・・・。
455デフォルトの名無しさん:2012/05/26(土) 20:54:09.62
(あ、これはしょうがないな)
456デフォルトの名無しさん:2012/05/26(土) 20:54:52.94
2ちゃん見る暇があるなら自分でやれよ
457デフォルトの名無しさん:2012/05/26(土) 21:01:37.58
>>438
無理
458デフォルトの名無しさん:2012/05/26(土) 21:02:56.82
仕事外、それも家で(たぶん)やらせるとか、俺なら絶対許可しねえ
残業ならともかく、情報落としたりへんなコードひっかけたりしたらって考えると特に
459デフォルトの名無しさん:2012/05/26(土) 21:05:45.49
>>456
・・・。。。
病院紹介しましょうか?

>>457
無理だという根拠を教えてくいただけないでしょうか?
460デフォルトの名無しさん:2012/05/26(土) 21:06:21.96
>>454
2ちゃんやる暇があるなら仕事しろ
小汚いコードを綺麗にしろ
461デフォルトの名無しさん:2012/05/26(土) 21:06:39.93
て言うか、にちゃんに相談…


つまりは、そう言うことだろ。

スルー推奨。
462デフォルトの名無しさん:2012/05/26(土) 21:11:47.76
>>461
いや、みんな、そこはわかってて、ただの暇つぶしだろ。
463デフォルトの名無しさん:2012/05/26(土) 21:13:27.19
釣り師と針つついて遊んでる魚のじゃれ合いだよな
464デフォルトの名無しさん:2012/05/26(土) 21:14:30.92
>>460
仕事しろって・・・
今日は土曜日なので休みですが???
先ほども書きましたけどコードは綺麗なんです。
日本語読めないんですか?

>>461
困っているから相談しているんです。
他に相談するところが見つからなかったんです・・・
465デフォルトの名無しさん:2012/05/26(土) 21:15:50.54
>>464
仕事遅いんだから仕事しろ
466デフォルトの名無しさん:2012/05/26(土) 21:16:07.78
>>463
機嫌を損ねてしまったのならば申し訳ありません。
本当に困っているんです。
このままでは週明けに2つの仕事を抱えていて忙しくてまずいです。
467デフォルトの名無しさん:2012/05/26(土) 21:19:27.93
>>464>>466
今日は休みなんなら
考える仕事は月曜日にすればいい
休みなのに仕事するんなら2chなんかやらずさっさとコード書け

以上だ。スレチだからマ板いけ。もうくるな
468デフォルトの名無しさん:2012/05/26(土) 21:19:45.43
>>466
VBAでやればいいんじゃね?
469デフォルトの名無しさん:2012/05/26(土) 21:23:46.11
>>467
初めて有益なレス、まことにありがとうございます。
使えないレスばかりで間違ってヤフー知恵遅れに書き込んでしまったのか焦ってしまいました。
今日と明日はVBAのことは忘れてとりあえずゆっくり休みたいと思います。
月曜日にまたお邪魔するかもしれませんが、そのときはよろしくお願いしますm(_ _)m

>>468
はい。ソースの修正をVBAでやるというのは名案ですね。
月曜日に上司に相談した上で検討したいと思います。
470デフォルトの名無しさん:2012/05/26(土) 21:25:19.30
批判コメにしかレス付けてない
何をどうしたいのかも不明
そもそもVBAスレwww


回答をコード化すりゃいいのかね
471デフォルトの名無しさん:2012/05/27(日) 00:22:02.72
VBAがなければ今頃Haskellが搭載されてたろうに。
472デフォルトの名無しさん:2012/05/27(日) 02:26:57.34
件の上司はそのやり遂げられない人と
人にモノ教えるのが下手な>>469の二人を
なんとかしてあげたいと思ってるのかもしれん
473デフォルトの名無しさん:2012/05/27(日) 09:42:06.57
>>471
さすがにそれはないw
とはいえF#内蔵されたらめちゃくちゃ幸せだな
474デフォルトの名無しさん:2012/05/27(日) 16:42:42.68
大学でExcel 2010が1500円で販売されていたのですが、これは何をするものなのでしょうか。
VBAでプログラミング可能と書いてありましたが、自分は今MMOをやっているのですが、このソフトでbotなど作成することは可能なのでしょうか。
本当に無知な質問で申し訳ありません。
475デフォルトの名無しさん:2012/05/27(日) 17:00:26.76
>>474
「VBA 初心者」でいったんググってからもう一度ここに来ようか、ね。
476デフォルトの名無しさん:2012/05/27(日) 17:38:42.06
ほんっといろんな人間がいるな… w
477デフォルトの名無しさん:2012/05/27(日) 17:42:49.32
M マジ
M ムカつく
O おまえら
478デフォルトの名無しさん:2012/05/27(日) 17:43:27.87
M まあ
M まあ
O 落ち着いて
479デフォルトの名無しさん:2012/05/27(日) 17:46:13.10
いや、やろうと思えばまあ出来ないこともあんまないんだけど
ぐぐるべきはVBAじゃなくてMMOとかBOTとかだろ
480デフォルトの名無しさん:2012/05/27(日) 17:56:30.27
Excel 2010ってアカデミック版でも今8,000円以上するはずだが・・・
481デフォルトの名無しさん:2012/05/27(日) 17:58:24.18
Excelについて質問です
セルに「n」週の数字を打ち込んで
適当なセルに「a歳bヶ月c週」と表示させることは出来ますか?
例えば、n=51と置いて
1歳0ヶ月3週みたいにです
482デフォルトの名無しさん:2012/05/27(日) 17:59:20.75
できます
はい次
483デフォルトの名無しさん:2012/05/27(日) 18:10:09.94
>>481
worksheet_change でググれ
484デフォルトの名無しさん:2012/05/27(日) 18:17:36.81
Excel関数でやれよ
485デフォルトの名無しさん:2012/05/27(日) 18:19:15.66
一年て52週がデフォなのにその赤ちゃん化け物か・・・
486デフォルトの名無しさん:2012/05/27(日) 18:25:26.77
>>485
なんか独自の方程式があるんでしょ
そこは質問に関係ないとこだから突っ込んでやるな
487デフォルトの名無しさん:2012/05/27(日) 18:27:28.45
>>481
それVBA使う必要ないけど・・・
488デフォルトの名無しさん:2012/05/27(日) 18:32:12.66
妊娠は受精した日からじゃなくて
排卵した日から数えるんだっけ
489デフォルトの名無しさん:2012/05/27(日) 18:37:31.24
>>488
生でInsertメソッドを使ったのか?
490デフォルトの名無しさん:2012/05/27(日) 18:39:05.78
491デフォルトの名無しさん:2012/05/27(日) 18:42:43.44
>>489
Insertより前だ
492デフォルトの名無しさん:2012/05/27(日) 19:23:45.81
>>475
「VBA 初心者」でぐぐってここにたどり着きました。
493デフォルトの名無しさん:2012/05/27(日) 19:24:30.29
>>480
ということは1500円で買えるというのはかなりお買い得ということですね。
494デフォルトの名無しさん:2012/05/27(日) 19:35:03.81
>>492
「教えて君」でくぐってから出直そうか
495デフォルトの名無しさん:2012/05/27(日) 19:44:41.38
>>492
試しに「VBA 初心者」でググったけどこのスレは少なくとも1ページ目には出てこなかったし、もっと分かりやすいのがいっぱい出てきた訳だが、さてと(ビキビキ
496デフォルトの名無しさん:2012/05/27(日) 19:45:05.50
>>493
「猫に小判」でぐぐってから出直そうか
497デフォルトの名無しさん:2012/05/27(日) 19:51:09.80
というか、結局質問まだあんのか?
498デフォルトの名無しさん:2012/05/27(日) 19:58:07.10
>>495
私の環境だと上から2番目に出ますが?
ttps://www.google.co.jp/search?q=VBA+%E5%88%9D%E5%BF%83%E8%80%85+site%3A2ch.net

>>496
値打ちのわからない者には何の役にもたたないということ。
たしかに・・・使えない物に1500円は高いですね・・・。
499デフォルトの名無しさん:2012/05/27(日) 20:01:19.18
>>498
2chがおまえの世界か!w
500デフォルトの名無しさん:2012/05/27(日) 20:02:11.06
>>498
はあ?環境?
2ちゃん内でググるバカがどこにいんだよ、人に聞くことを大前提に調べてんのか。くれくれ君の極みだな。しねよ。
501デフォルトの名無しさん:2012/05/27(日) 20:08:03.61
くれくれ君二重の極み!
502デフォルトの名無しさん:2012/05/27(日) 21:01:31.84
>>499 >>500
すみません。
ぐぐれと言われたので2チャンネルのスレッドを探せという意味にとらえてしまいました・・・。
しにたくないです。
503デフォルトの名無しさん:2012/05/27(日) 21:06:28.04
たどり着いたっつってたのと時系列が合わないな。つまんねえ後釣り宣言すんなら今のうちに消えな。
504デフォルトの名無しさん:2012/05/27(日) 21:09:19.92
>>503
いえ、最初からぐぐってここにたどり着いたんです。
初心者用のスレッドがあるからぐぐれという意味かと。
なので>>492はぐぐってたどり着きました。という意味です。
505デフォルトの名無しさん:2012/05/27(日) 21:12:31.41
>>504
ぐぐらなくていいから教えてgooで聞けよカス
506デフォルトの名無しさん:2012/05/27(日) 23:23:49.25
今年大学に入ったばかりのいとこも同じようなこと言ってた
大学でOfficeがめっちゃ安く買えるって
ボリュームライセンスのバラ売りしてんじゃない?
507デフォルトの名無しさん:2012/05/28(月) 19:05:47.71
WindowsXP
Excel2002

ホストのプログラムが起点になって
ネットワークドライブからワークシートを手元にコピー
という処理を一連で行い使用しています
ですが
Sheets.Copyでコピーすると
ファイル名がBook1となってしまうので
これを固定名+年月日に変えたいです

調べて、SaveAsをつかえばファイル名を変えて保存できることがわかりましたが
保存する前、ファイルをコピーした時点で名前を変えることはできますか?
508デフォルトの名無しさん:2012/05/28(月) 19:24:14.84
>>507
FileSystemObjectのCopyFileメソッドを使う。
509507:2012/05/28(月) 19:39:37.58
ありがとうございます
手元にコピーというのが悪かったですね

そのメソッドだと結局保存されたのを開いて使っているイメージになりますよね?
そうではなく、新規でbookを開いた状態で名前をつけたい
ということがしたいのですが
510デフォルトの名無しさん:2012/05/28(月) 19:45:48.92
>>509
何故そうしたいのか?
511507:2012/05/28(月) 20:17:15.06
わかりません
仕様です
512デフォルトの名無しさん:2012/05/28(月) 20:36:29.09
>>511
何故BooK1のままだとだめなのか?
513507:2012/05/28(月) 20:40:38.36
結局保存するかブック名つきで印刷するかくらいだと思いますが不明です
保存するならこれまで出てきたのでやればいいじゃないかと言われそうですが
保存場所は指定できないので、やはり保存せずに名前を変えられるとベストです
514デフォルトの名無しさん:2012/05/28(月) 20:45:47.47
>>513
・マクロを実行した時点では新たにファイルは作成したくない。
・でもブック名(ファイル名)は設定したい。
ということ?
515507:2012/05/28(月) 20:49:38.18
その通りです
516デフォルトの名無しさん:2012/05/28(月) 20:55:21.89
>>515
ファイル名=ブック名なのでファイルが存在しないのにファイル名を作ることはできない。
ので、%TEMP%の下などにファイル作るとかで回避するしかないかと。
517507:2012/05/28(月) 21:10:50.63
そうなんですか
不可能なら仕方ありませんね
ではそのように説明してみます

長くなってしまいましたが付き合ってくれてありがとうございました
518デフォルトの名無しさん:2012/05/28(月) 22:44:59.34
こいつ前いた奴だろ
まだ解決できてなかったのか
519507:2012/05/28(月) 23:01:07.34
その方のために言いますが
私は初めてですよ
520デフォルトの名無しさん:2012/05/28(月) 23:06:26.20
>>519
一時的に保存しておいて、最後に削除するのでは何か問題あるの?
521507:2012/05/28(月) 23:34:35.29
一度ユーザーの手に渡ったら完結で
その後一時的に保存したところのを削除するかどうか制御できるんですか?

あまり複雑なことは考えずに
できないと言うかc:\直下に保存するか選んでもらうことにしようと思います
522デフォルトの名無しさん:2012/05/28(月) 23:37:06.69
>>521
マクロの最後でKillすればいいじゃん
523デフォルトの名無しさん:2012/05/28(月) 23:47:59.43
kill?
524デフォルトの名無しさん:2012/05/29(火) 03:13:37.58
新規ブックどうやって作ってるか解らんが

テンプレートで保存したブックを開いたら
そのブック名はテンプレートのファイル名+数字になった気がする
525デフォルトの名無しさん:2012/05/29(火) 13:18:21.54
フォルダにファイルを作成してから開けばいいじゃん


じゃん
526デフォルトの名無しさん:2012/05/29(火) 23:40:15.58
4つのセルを統合したところにソースコードで
オートシェイプの円を表示させようとしたところ
一番左端のセルにだけ円が表示されてしまいます
番地指定ではなくアクティブセルを基準に、
セル内に余白を残しつつ4セル分の中心部にオートシェイプを表示したいのですが
どういったコードを使えばよろしいでしょうか?

527デフォルトの名無しさん:2012/05/30(水) 00:06:33.11
アクティブセルがどこか確認したかい?
528デフォルトの名無しさん:2012/05/30(水) 08:08:19.74
>>526
4セルの状態がわからん

□□
□□

□□□□

長くなるから縦一列は省略
どれも4セルの結合
529デフォルトの名無しさん:2012/05/30(水) 10:44:18.84
>>526
4つのセルの中心に1つだけ円を表示してみた
もし4つのセルに4つの円を表示したいって質問ならループを回せばいい
(For Each セル In Selection)

Dim セル As Range
Set セル = Selection
Dim 円 As Shape
Set 円 = ActiveSheet.Shapes(1)
Dim 余白 As Long
余白 = 20
Dim 円サイズ As Long
円サイズ = IIf(セル.Width > セル.Height, セル.Height, セル.Width) - (余白 * 2)
円.Width = 円サイズ
円.Height = 円サイズ
円.Top = セル.Top + ((セル.Height - 円サイズ) / 2)
円.Left = セル.Left + ((セル.Width - 円サイズ) / 2)
530デフォルトの名無しさん:2012/05/30(水) 11:16:53.13
こんなセルだよ

 □
□□□



□□□□
531デフォルトの名無しさん:2012/05/30(水) 11:56:27.73
学校の課題でN進数を10に直せって課題が出たんだが、助言を頂けないだろうか
要求されたことは、
While
int
四則演算
Application.InputBox
のみで2〜9進数を10進数に変換しなさい
って奴なんだ
とりあえず、Application.InputBoxで何進数か判別して、要求する値をまた入力って流れで組んだんだがそこからが分からないorz
WhileとIntと四則演算を組み合わせて解くのだと思うけど、俺の頭じゃさっぱりだ
どなたか助言お願いします
532デフォルトの名無しさん:2012/05/30(水) 12:13:10.03
使っちゃだめな関数あるの?
533デフォルトの名無しさん:2012/05/30(水) 12:13:14.15
>>530
こうなりました

 □
□□
 □
□□


534デフォルトの名無しさん:2012/05/30(水) 12:17:57.09
>>532
上に載ってる関数以外使っちゃダメって言われた
ググってもHEXとかを使うと良いとかで、この問題には使えなかったんだ…
535デフォルトの名無しさん:2012/05/30(水) 12:25:05.50
>>553
下手糞。
こうしろ。
 
   □
□□□□
□□□□
536デフォルトの名無しさん:2012/05/30(水) 12:39:35.19
ああ、桁抜き出しの代わりにint使うのか
ただそれでどうやって最上位桁を判定するんだろ
537デフォルトの名無しさん:2012/05/30(水) 14:41:51.89
>>531
何進数かってのと対象の数値の2回入れるんだよな?
Modとか%もだめなのか

10で割ってIntで切り捨てた物をもとの数字から引くと下一桁が取り出せるから
それを基数の階乗に掛けるとかかかなあ

4進数の312の場合

2 * 3 ^ 0
+
1 * 4 ^ 1
+
3 * 4 ^ 2

で答えが54みたいな

あまりいい課題ではないな
538デフォルトの名無しさん:2012/05/30(水) 14:42:56.87
>>537
「10で割ってIntで切り捨てた物を再度10倍したもの」だった。
すまん
539デフォルトの名無しさん:2012/05/30(水) 14:51:22.94
>531
Excel VBAの質問ではないなこれは
540デフォルトの名無しさん:2012/05/30(水) 20:31:54.09
>>536
設問から、
最上位の数値は、必ず10より小さい。

541デフォルトの名無しさん:2012/05/30(水) 21:45:51.97
>>531
やってみたが、違ってるかもしれん。

Sub test()
Dim n As Long, myNum As Long, cnt As Long
Dim tmp1 As Long, tmp2 As Long, tmp3 As Long, tmp4 As Long, tmp5 As Long

n = Application.InputBox("何進数ですか")
myNum = Application.InputBox("変換したい数字を入力してください")

cnt = myNum
tmp1 = 1
tmp5 = 1

While cnt > 0
cnt = Int(cnt / 10)
tmp1 = tmp1 * 10
tmp2 = (myNum - Int(myNum / tmp1) * tmp1 - tmp3) / tmp1 * 10
tmp3 = tmp3 + tmp2 * tmp1 / 10
tmp4 = tmp4 + tmp2 * tmp5
tmp5 = tmp5 * n
Wend

MsgBox n & "進数の" & myNum & "は、10進数で" & tmp4 & "です"

End Sub
542デフォルトの名無しさん:2012/05/30(水) 22:28:41.60
何故か出来ているように見えるので一応投げてみる。
進数の違いで多過ぎた分を後から引いていく感じ。
筆算では合っているっぽいけど、自分でも実は良く解らん(おぃ
Dim src As Long, radix As Long
src = 53423
radix = 7
Dim v1 As Long, v2 As Long, v3 As Long
v1 = src
v2 = src
v3 = 10 - radix
While v2 > 0
v2 = Int(v2 / 10)
v1 = v1 - v2 * v3
v3 = v3 * radix
Wend
Debug.Print v1
543デフォルトの名無しさん:2012/05/30(水) 22:39:02.30
>>542
おおー、理屈はよくわからんが、すごいな。
544デフォルトの名無しさん:2012/05/31(木) 16:49:59.55
Excel2010で同じシートのマクロで、
別のマクロを実行させたいのですが。

Sub FVB()
Application.OnTime TimeValue("16:42:00"), "mm"
End Sub

このように時間になったらmmマクロを呼び出して

Sub mm()
Range("H92").Select
End Sub

このように実行させたいのですが、
時間になると実行できませんとエラーがでます、
他のマクロは普通に実行できてるのですが、
どこか問題あるでしょうか?
545544:2012/05/31(木) 19:57:39.14
標準モジュールというところに書き直したら、
なぜか実行できました、
なんでうまくいったか分からないけどとりあえず自己解決。
546デフォルトの名無しさん:2012/05/31(木) 20:02:52.98
>>544
マクロ名が微妙に異なっているとか?
547デフォルトの名無しさん:2012/05/31(木) 20:03:37.37
あら解決したのね
548デフォルトの名無しさん:2012/05/31(木) 21:18:36.27
毎日、取引先にエクセルのブックをメール添付で送ってます。
マクロボタンをクリックすると、特定のシート(例えばSheet1)だけを
添付して送信することはできますか?
ついでにテンプレートとなる本文と件名と、とくていの部分(日付とか)だけはその日用に変えておくることはExcelVBAできますか?
メールはOutlookで下書きを書いて、送信ボタンを押す直前までが希望です。
549デフォルトの名無しさん:2012/05/31(木) 21:23:30.05
出来る……ハズだが、やったことない
OutlookもVBAを使ってるから、送信までを行うならOutlook側で制御したほうがいいと思う
550デフォルトの名無しさん:2012/05/31(木) 21:30:27.93
>>548
Outlooknのヘルプにサンプルがあるから頑張れ。
添付ファイルを付けるときは
MailItemを作成してAttachmentをつけるとかコードが結構増える。

下書きまでは単純にmailto:のリンクを起動するだけでできるから
シート1だけコピーして新規ブックを作成してどこかに保存と
mailto起動だけやって添付は手動とかでもいいと思う
551デフォルトの名無しさん:2012/06/01(金) 19:55:33.46
最近、毎日ですが、エクセルで、VBAで、プログラムを、組んでます。
どうやったらプログラマにまれますか?
プログラムーに、なりたい、です。
ので、誰か、教えてください。
552デフォルトの名無しさん:2012/06/01(金) 20:05:19.01
>>551
プログラム、組んでるなら、既に、プログラマ、じゃん
かっこいい、な
553デフォルトの名無しさん:2012/06/01(金) 20:08:41.14
>>551
C++やRubyの本を読んで挑戦すればいいじゃん
554デフォルトの名無しさん:2012/06/01(金) 20:21:18.47
>>552
かっこいいなど、そんなことは、ありません。
プログラマとは、仕事の、ことを、いってます。
ぼくは、まだ、家でしか、やったことが、ないです。

>>553
まずは、C++とか、Rubyというの、本を読んだ方が、いいんでしょうか?
ぼくはばかなので、友達にも、ばかだ、といわれています。
まだ、パソコンを、恥またばかりで、よく分からなくて、ごめんなさい。
555デフォルトの名無しさん:2012/06/01(金) 20:26:33.99
>>554
まず日本語勉強して会話できるようになれよ
556デフォルトの名無しさん:2012/06/01(金) 20:28:12.80
句読点きもい
557デフォルトの名無しさん:2012/06/01(金) 20:37:20.31
>>555 >>556
すいません、タイプングミスばかりして。
国語は、3です。
急いで打つと間違いやすい正確なんです。
558 【豚】 :2012/06/01(金) 20:50:29.34
偏差値40以下ですね判ります
559デフォルトの名無しさん:2012/06/01(金) 21:01:04.25
>>558
エスパー、ですか?
国語の、偏差値は、38です。
でも、数学の偏差値は60、くらいです。
プラグラマに、なるには、国語を、偏差値が、高くないと、無理でしょうか?
560デフォルトの名無しさん:2012/06/01(金) 21:07:14.87
>>559
プログラマだからこそ、国語ができないと。
お客の意思疎通ができずにとんでもないもん作っちまうぞ。w
561デフォルトの名無しさん:2012/06/01(金) 21:14:26.39
>>560
ぼくは、まだ、プログラマ入級者なので、よくわかっていないのですが、
システムエンジニアは、国語が、必要で、
プログラマーは、国語は、あまり重要じゃ無い、と考えていたのですが、
違うのでしょうか。
562デフォルトの名無しさん:2012/06/01(金) 21:39:48.32
まあ別にいいとして
どんなプログラム組んでるんだ?
VBAである程度なれてるなら、VSオヌヌメするが
563デフォルトの名無しさん:2012/06/01(金) 22:11:52.01
超初心者です。
オブジェクト、メソッド、プロパティが何かわかる解説付きの一覧表とかあるのでしょうか?
564デフォルトの名無しさん:2012/06/01(金) 22:19:47.53
入門編とか応用なんちゃらとかいう本には載ってる
機能からイベントやら探すのも本ある
ネットでも探せるし、MSDN見るようにすればおk
565デフォルトの名無しさん:2012/06/01(金) 22:53:44.71
超初心者にMSDNなんか薦めんな
あんなクソ判りにくいもん読めっか
566デフォルトの名無しさん:2012/06/01(金) 22:59:32.19
でもいつかは通る道


まぁVBAでmsdnガン見する必要はないと思うけど。

とりあえずこれ如何?
http://home.att.ne.jp/zeta/gen/excel/c04p21.htm
567デフォルトの名無しさん:2012/06/01(金) 23:03:16.62
なんでこのレベルの奴がこの板にいんだよ年々レベル下がってるじゃねーか死ね
568566:2012/06/01(金) 23:10:07.35
あ・・・・微妙にまちがえたなりん

http://home.att.ne.jp/zeta/gen/excel/c03p09.htm
569デフォルトの名無しさん:2012/06/02(土) 01:23:02.06
レベル高いやつはこんなとこ来なくなるんだろ
なんでお前まだいるの?
570デフォルトの名無しさん:2012/06/02(土) 06:13:20.08
なんでこのレベルの奴がこの板にいんだよ年々レベル下がってるじゃねーか死ね
571デフォルトの名無しさん:2012/06/02(土) 07:33:23.63
>>569
そうだよな。ところで、
レベル高いやつはこんなとこ来なくなるんだろ
なんでお前まだいるの?
572デフォルトの名無しさん:2012/06/02(土) 10:39:30.90
573デフォルトの名無しさん:2012/06/02(土) 20:53:31.78
>>563  ですが、みなさん返信ありがとうございます。

知りたいのは構成ではなく、個々のやつの意味が知りたいです。
たとえばプロパティは一杯ありますが、それの個々が何かを知りたいです。
574デフォルトの名無しさん:2012/06/02(土) 21:10:24.63
>>573
[F1]キーを押したらヘルプが開くでしょ?
575デフォルトの名無しさん:2012/06/02(土) 21:25:25.06
>>574 HPのPCですが、HPのヘルプが開きます
576デフォルトの名無しさん:2012/06/02(土) 21:34:43.56
なにそれこわい
っていうかそんなPCうざいな・・・
577デフォルトの名無しさん:2012/06/02(土) 21:39:32.77
>>575
それはExcelのVBAに全く関係ないのでここで質問してもスルーされるよ
578デフォルトの名無しさん:2012/06/03(日) 13:10:01.26
579デフォルトの名無しさん:2012/06/03(日) 20:08:49.99
「コンパイル エラー:
If ブロックに対応する End If がありません。」

なんで↑がでますか?
aaの一個目のEnd Subで抜けるとEnd Ifを通らないからですか?

----------------
Sub aa(x As Integer)
 If x = 1 Then
 MsgBox x
  End Sub
 End If
End Sub
----------------
----------------
Sub aaa()
Dim x As Integer
Call aa(x)
End Sub
----------------
580デフォルトの名無しさん:2012/06/03(日) 20:12:21.75
>>579
exit subにする
581デフォルトの名無しさん:2012/06/03(日) 20:28:40.21
>>580
おおお!ありがとうございます。
582デフォルトの名無しさん:2012/06/03(日) 23:31:39.47
Sub aa(x As Integer)
 If x = 1 Then MsgBox "ナマポ朝鮮人を排除しよう"
End Sub
583デフォルトの名無しさん:2012/06/04(月) 12:01:34.93
どこで聞いたらいいかわからないのですが、
VBEの特殊性(?ないとは思いますが…)、も考えて
こちらでお聞きします。
(スレ違いとは思いますので誘導していただけたら助かります)

VBEで書いたコードを、備忘録としてブログに貼ると
インデントが全くなくなってしまいますが、
これを解決する方法はないでしょうか?

たしか、貼ったコードを実行する?ようなサイトがあって
それを利用すると、インデントが当初のままに
なるとかいう話は聞いたことがあるのですが、
探せませんでした。

上記のようなサイト利用に限らず、インデントを
崩さないで、ブログに貼る方法を教えて頂けませんか?
よろしくお願いします。
584デフォルトの名無しさん:2012/06/04(月) 12:35:11.61
<pre></pre>あるいは<code></code>で囲む
585デフォルトの名無しさん:2012/06/04(月) 13:14:00.24
>>583
その程度の知識の人のソースコードなんて誰も見たくないんだから
ブログになんて貼らないでもらいたいのですが
よろしくお願いします
586デフォルトの名無しさん:2012/06/04(月) 13:49:22.92
Evernoteにでも貼っとけよ
587デフォルトの名無しさん:2012/06/04(月) 14:56:34.06
>>583
ソースコードをHTMLにコンバートするツールとかサービスとかググったらいっぱいヒットするけど
ホントに探せなかったんだよね?
VBA限定なら少ないかもしれないけどVBとかVBScriptなら結構見つかると思うよ
588デフォルトの名無しさん:2012/06/04(月) 15:43:42.13
>>584
全く知りませんでした。ありがとうございます。

>>585-586
すみませんでした。少しでもご迷惑にならないよう
パスワードはかけてあります。

>>587
キーワードが全然ダメでした。
お陰様で見つかりました、ありがとうございます。


スレ違いのところをレス頂いて感謝しております。
ありがとうございました。
589デフォルトの名無しさん:2012/06/04(月) 21:19:55.91
エクセルの表のデータベースで、この日付とこの日付のあいだのものを
ピックアップして別のシートに貼り付けるというマクロを組みたいのですが、
この時の日付はシリアル値にしないとだめでしょうか?
590デフォルトの名無しさん:2012/06/04(月) 21:24:21.93
自分で加工しやすい値にするのがベスト
シリアル値じゃなくても変換すればいいし
591デフォルトの名無しさん:2012/06/04(月) 21:39:17.63
>>590 ふむふむ。
いまDATEVALUE関数を使ってみたのですが、A1に2012/6/4と入力して、
B1に=DATEVALUE(A1)と入れてみたのですが、#VALUE!のエラーが出ました。なぜでしょうか?
592デフォルトの名無しさん:2012/06/04(月) 22:08:26.71
>>591
A1セルの表示形式が「文字列」になってないとか?
まぁVBAに関係ない質問なら↓こっち行けって話だけど
http://toro.2ch.net/test/read.cgi/bsoft/1334818676/
593デフォルトの名無しさん:2012/06/05(火) 22:14:51.73
行を選んで、別のシートにコピーをしたいのですが、

Do Until Cells(n + 1, 1).Value = ""
Cells(n + 1, 10).Value = Cells(n + 1, 1).Value
If Cells(n + 1, 1).Value > startdate Then
If Cells(n + 1, 1).Value < enddate Then
Cells(n + 1, 11).Value = Cells(n + 1, 2).Value
Rows(n + 1).Copy
Rows(n + 500).PasteSpecial ←ここまでは動いて、ちゃんとコピペした。

Worksheets("sheet3").Select
Do Until Cells(m + 1, 1).Value = ""
If Cells(m + 1, 1).Value = "" Then
Worksheets(1).Select
Rows(n + 1).Copy
Worksheets(3).Select
Rows(m + 1, 1).PasteSpecial  ← ワークシート3にコピペしてくれない(´・д・`)  どこが悪い?
End If
m = m + 1
Loop
End If
End If
n = n + 1
Worksheets(1).Select
Loop
594デフォルトの名無しさん:2012/06/05(火) 22:21:20.69
Rows(m + 1, 1)
595デフォルトの名無しさん:2012/06/05(火) 22:27:29.67
Rows(m + 1).PasteSpecial
596デフォルトの名無しさん:2012/06/05(火) 22:36:53.69
Worksheets(1).Rows(n + 1).Copy Worksheets(3).Rows(m + 1)
597デフォルトの名無しさん:2012/06/06(水) 06:30:49.38
>>594-596  指摘あり!(><) 行だったよ・・・・
598デフォルトの名無しさん:2012/06/06(水) 06:35:06.01
>>594-596  速攻なおしてみてやってみたけどダメでした・・・(><)・・・
599デフォルトの名無しさん:2012/06/06(水) 07:43:09.07
ステップ実行で確認
600デフォルトの名無しさん:2012/06/06(水) 07:48:58.93
ここおかしくない?
>Do Until Cells(m + 1, 1).Value = ""
601デフォルトの名無しさん:2012/06/06(水) 19:21:39.64
>>593
やりたいことは、こうじゃないの

With Worksheets(1)
Do Until .Cells(n + 1, 1).Value = ""
.Cells(n + 1, 10).Value = .Cells(n + 1, 1).Value
If .Cells(n + 1, 1).Value > startdate Then
If .Cells(n + 1, 1).Value < enddate Then
.Cells(n + 1, 11).Value = .Cells(n + 1, 2).Value
.Rows(n + 1).Copy .Rows(n + 500)

Do Until Worksheets("sheet3").Cells(m + 1, 1).Value = ""
m = m + 1
Loop
.Rows(n + 1).Copy Worksheets(3).Rows(m + 1)
End If
End If
n = n + 1
Loop
End With
602デフォルトの名無しさん:2012/06/06(水) 23:03:47.49
>>593です。みなさんありがとう。快尻しました (*´∀`*)
603デフォルトの名無しさん:2012/06/08(金) 19:54:23.76
こんばんは。
私の尻も快尻してほしいです。
604デフォルトの名無しさん:2012/06/09(土) 02:02:21.96
嫌です
605デフォルトの名無しさん:2012/06/09(土) 12:25:52.47
ExcelVBAで作ったシステムを保守することになりました。
モジュール、Excel側のフォーマットとの連携、ブックの定義など、
設計、構造レベルの話を厚く書いている書籍はないでしょうか。

エクステンドで開発していた経緯が見え隠れし、
非常に保守しづらい状況です。
606デフォルトの名無しさん:2012/06/09(土) 12:26:13.95
失礼age忘れました。
607デフォルトの名無しさん:2012/06/09(土) 12:56:15.66
手にしたことないけど、dotNetのexcel連携専用本ならそこらへんをカバーしてるのありそうだな
608デフォルトの名無しさん:2012/06/09(土) 14:06:39.59
>>605
まずはヘルプのオブジェクト構造図を眺めるかな
609デフォルトの名無しさん:2012/06/09(土) 14:08:49.59
無料でもいいならMSDNライブラリとか
610デフォルトの名無しさん:2012/06/09(土) 14:53:49.04
出社したため携帯から失礼します。

コメントありがとうございます。チェックしてみます。

前任者が20くらいのマクロでシステムを作り上げていて。。。マクロ組めますレベルで大丈夫だよとは聞いてたけど。。。

ざっとシステムとソース舐めてみたところ、フォーマットと機能とデータががっかり結合しているのがシステム肥大化の原因みたいです。
将来的に運用回らないことも想定できるので、早めに提案したいのですが、VBAをシステムとして扱うとなると知識が不足していまして。。。
よろしくお願いします。
611デフォルトの名無しさん:2012/06/09(土) 18:08:51.51
出来ない事は出来ないってハッキリ言ったほうが良くない?
手を付けてから出来ませんでしたじゃ余計迷惑だと思うよ。
システム設計とかそういうレベルの話だと
いまからなにかしても付け焼刃で何の役にも立たないはず。
612デフォルトの名無しさん:2012/06/09(土) 18:25:16.51
こんなところに質問してくる程度のスキルなんだろうし
こんなところに質問してなんとかなる程度のシステムなんだろうよ
本人がやる気になってるんだからいいじゃない
613デフォルトの名無しさん:2012/06/09(土) 20:20:44.29
こんなところに質問してくる程度のスキルだから
こんなところに質問してなんとかなる程度のシステムかどうかすら
判断できて無いんじゃないか?

アドバイスすることは不可能ではないけど、>>611の言う通り
付け焼き刃で弄っても害の方大きいだろうから、
向こうの説明不足&自分の能力不足を告げた方が良いと思う

事前にご説明いただいた内容であれば対応出来ると思っておりましたが
実際に要求されているのはもっと高いレベルであり、今の私にはそれをこなす能力はありません、と
614デフォルトの名無しさん:2012/06/09(土) 20:36:18.50
見た感じだけどシステムの概要やらは理解してるっぽいから、VBA挙動に慣れれば問題ないんじゃね
調査や習熟に時間がかかる可能性がある
その上で修正が可能かは今の段階でわからない
そのまま使用して問題なかったとしても、将来的にどういう形に出来るかわからない
みたいな形で報告をしておいて、どの程度なら許容範囲なのかを上司と相談してからタッチすべきだな
615 忍法帖【Lv=40,xxxPT】 :2012/06/09(土) 22:39:29.00
ボケ老人、知的障害者、馬鹿で幼稚な奴。
この三者に共通する特徴の一つは、繰り返しを好み、しかもその自覚(病識)がないこと。
616デフォルトの名無しさん:2012/06/09(土) 23:14:50.33
通常のシートでデータの並べ替えを行うとき
キーは3つ設定できるわけだけど
これをVBで4つ設定するようにすることはできない?
617デフォルトの名無しさん:2012/06/09(土) 23:31:29.53
4つどころかいくらでも
というか、安定ソートの場合
第一優先:A列、第二優先:B列、第三優先:C列、第四優先:D列
でソートするのと
D列でソート、C列でソート、B列でソート、A列でソート
とするのは同じだぞ

というかExcelの3つのキーが指定できる並べ替え機能は、内部で、
第三優先キーでソート、第二優先キーでソート、第一優先キーでソート
をやってるだけだろうし

それを踏まえればVBAはもちろん、VBA使わなくても出来る
618610:2012/06/09(土) 23:37:21.29
コメントありがとうございます。
×がっかり結合→がっつり結合

>>611-613
小手先でなんとかなってしまう程度なんですよねー、これが。
今々は小手先でなんとかしなきゃいけない背景もあり。。。

>>614さんを一旦の落とし所にさせていただきます。
619デフォルトの名無しさん:2012/06/09(土) 23:42:44.75
Sub sample()
'
 Selection.Sort _
  Key1:=Range("A2"), Order1:=xlAscending, _
  Key2:=Range("B2"), Order2:=xlAscending, _
  Key3:=Range("C2"), Order3:=xlAscending, _
  Key4:=Range("D2"), Order4:=xlAscending, _
  Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
  Orientation:=xlTopToBottom, SortMethod:=xlPinYin, _
  DataOption1:=xlSortNormal, _
  DataOption2:=xlSortNormal, _
  DataOption3:=xlSortNormal, _
  DataOption4:=xlSortNormal

End Sub

マクロで、3つのキーでソートするサンプルを作って、上記のように単純にKey4を追加して
みたんだけど、エラーになる。何で?
620デフォルトの名無しさん:2012/06/09(土) 23:50:02.37
>>619
そりゃ三つまでの指定にしか対応していないからだろ。
というか、エラーの内容書けよ。
621デフォルトの名無しさん:2012/06/09(土) 23:53:50.36
>>620
ダイアログ
Microsoft Visual Basic
実行時エラー '1004':
アプリケーション定義またはオブジェクト定義のエラーです。

ヘルプ
アプリケーション定義またはオブジェク
ト定義のエラーです。
622デフォルトの名無しさん:2012/06/09(土) 23:55:44.42
>>619
あのさ、回答付いてるんだから読んだら?
それとも読んだ上でそういうことやらかすお馬鹿さんなの?
623デフォルトの名無しさん:2012/06/10(日) 00:01:06.51
>>617
理解できたトンクス
624620:2012/06/10(日) 00:04:08.13
まあ、これじゃエラーの内容を省略したくなっても仕様が無いなw
JavaScript程じゃないが、VBAも大概意味不明なエラーメッセージ出すし。
625デフォルトの名無しさん:2012/06/10(日) 00:06:26.33
>>624
>>619のコードでエラーのメッセージを見ないと回答できないレベルならハナから黙ってろよ
626デフォルトの名無しさん:2012/06/10(日) 02:04:20.44
"http://hayabusa3.open*2ch.net/livemarket1/"
という文字列があったとします
"*"をヌル文字に置換すると結果はどうなるのですか?
627デフォルトの名無しさん:2012/06/10(日) 03:29:08.24
どうなるって、普通に置換されるだけだろ

但し、ヌル文字ってもは可視文字ではなく制御文字なので
置換したものを表示させたときにどう表示されるか、
つまり置換の結果ではなく表示結果は表示先次第

というか、そのくらい自分の目で確かめたら良くね?
628デフォルトの名無しさん:2012/06/10(日) 04:53:10.26
VBAと関係ないし
629デフォルトの名無しさん:2012/06/10(日) 10:05:48.00
やっぱ誰も判らないんだ
630デフォルトの名無しさん:2012/06/10(日) 10:08:46.19
置換なんて高等テクだれもわからないぜ〜
バイバイ
631デフォルトの名無しさん:2012/06/10(日) 10:26:45.60
置換は良くわからないですが
痴漢は良くしってます。
632デフォルトの名無しさん:2012/06/10(日) 10:42:07.90
実践してるから?
633デフォルトの名無しさん:2012/06/10(日) 11:04:20.04
台所やコタツなどで揉んだりすると
置換だ編隊だ偏執者だと言われます
634デフォルトの名無しさん:2012/06/10(日) 12:11:19.44
>>626 ヌル文字なら削除
"aabb*cddef"
という文字列があったとします
"*"をヌル文字に置換すると結果はどうなるのですか?
"aabbcddef"
635デフォルトの名無しさん:2012/06/10(日) 13:14:11.54
>>634
ヌルヌルになるよ
ぬるぽ
636デフォルトの名無しさん:2012/06/10(日) 14:43:34.81
Excelのセルを正方形にして100x100のマスの迷路をつくりたいのですが
スタートと出口をそれぞれ左上、右下にし、
必ず出口に行けるルートは一つだけで、
その他は壁をつくり、その壁は罫線で表したいです。

こういうプログラムをつくるにあたり、アルゴリズムはどうすればいいでしょうか?
できるだけくわしく教えてください
637デフォルトの名無しさん:2012/06/10(日) 14:56:01.54
>>636
「迷路 アルゴリズム」で検索

できるだけくわしくって...
労力考えろよ
638デフォルトの名無しさん:2012/06/10(日) 15:56:37.53
>>636
Excelの質問でもVBAの質問でもない
639デフォルトの名無しさん:2012/06/10(日) 16:17:07.83
>>636
まず二次元配列を作り中身は0が通路1が壁とします
次に左上から右下へ斜めの通路を通路を作ります
これは最短距離のルートですよね
これを初期値として通路をうねうねとうねらせます
それには乱数を使います
それは適当なところで止めて、次に騙し用の通路を付け足します
池田は、「ハッ、ハッ」と荒い息を吐き掛けながら、「下着は一枚だね」
と言って、私の下着の中に手を入れてきました。
ものすごい力で押さえつけられた上に、恐怖で声も出せないでいる私に、
池田は後ろからグッと突いてきたのです。
640デフォルトの名無しさん:2012/06/10(日) 16:57:57.92
#100x100 は時間かかりそうなので試していないことにしておく
import os, win32com.client
TITLE = u'迷路'
HEIGHT, WIDTH, OFFSET_ROW, OFFSET_COL = 10, 10, 2, 2
MAX_ROW, MAX_COL = OFFSET_ROW + HEIGHT - 1, OFFSET_COL + WIDTH - 1
xl = win32com.client.Dispatch('Excel.Application')
xl.Visible = True
book = xl.Workbooks.Add()
sheet = book.Worksheets(1)
sheet.Name = TITLE
sheet.Cells(1, 2).Value = TITLE
sheet.Rows('%d:%d' % (OFFSET_ROW, MAX_ROW)).Select()
xl.Selection.RowHeight = 8
sheet.Columns('%c:%c' % (chr(ord('@') + OFFSET_COL), chr(ord('@') + MAX_COL))).Select()
xl.Selection.ColumnWidth = 1
for r in xrange(HEIGHT):
  for c in xrange(WIDTH):
    sheet.Cells(OFFSET_ROW + r, OFFSET_COL + c).Interior.ColorIndex = 4
    for d in xrange(4):
      if (d == 0 and r == 0 and c >= 1): continue
      if (d == 1 and r == 0 and c < WIDTH - 1): continue
      if (d == 2 and r >= 1 and c == WIDTH - 1): continue
      if (d == 3 and r < HEIGHT - 1 and c == WIDTH - 1): continue
      sheet.Cells(OFFSET_ROW + r, OFFSET_COL + c).Borders(1 + d).Weight = 2
sheet.Cells(OFFSET_ROW, OFFSET_COL).Value = u'スタート'
sheet.Cells(MAX_ROW, MAX_COL).Value = u'出口'
book.SaveAs(os.path.abspath(u'./%s.xls' % TITLE))
xl.Workbooks.Close()
xl.Quit()
641デフォルトの名無しさん:2012/06/10(日) 18:15:17.55
>>626,627,634
まずヌル文字の定義をはっきりさせてから話しろよ
642デフォルトの名無しさん:2012/06/10(日) 18:17:29.36
>>641
VBAでヌル文字って言ったら長さゼロの文字列である「""」の事に決まってるだろ
643デフォルトの名無しさん:2012/06/10(日) 18:30:21.72
>>642
それは空文字だ禿。もしくはフサフサ。それかバーコード。
644デフォルトの名無しさん:2012/06/10(日) 18:38:06.13
>>642
ヌル文字列、っていうならその解釈で良いと思うがな
ヌル文字、って言うと、Chr(0)な文字か、vbNullStringなのかもしれん
645デフォルトの名無しさん:2012/06/10(日) 19:41:23.90
テキスト表示で "" ってなるだけで、null属性の答えにならんだろ
オブジェクト.text が "" だったとしてもそれはオブジェクトの説明にはならん
646デフォルトの名無しさん:2012/06/10(日) 19:45:58.60
誰もそんなこと聞いてない
647デフォルトの名無しさん:2012/06/10(日) 19:51:30.67
・・・?
648デフォルトの名無しさん:2012/06/10(日) 20:04:19.72
>>640
エラーしかでんがな
649デフォルトの名無しさん:2012/06/10(日) 23:36:41.43
見たところVB.NETのコードだもん
650デフォルトの名無しさん:2012/06/10(日) 23:53:57.84
あ、ほんとだ
651デフォルトの名無しさん:2012/06/11(月) 00:33:27.52
VB.NETにも見えんが。C#じゃないのか
652デフォルトの名無しさん:2012/06/11(月) 00:34:55.67
C#ならusingつかう
import使ってるのはVB
653デフォルトの名無しさん:2012/06/11(月) 00:56:38.42
VB で == なんて使わないだろ。

俺の知ってる中だと、Python あたりだと思うが。
654デフォルトの名無しさん:2012/06/11(月) 02:08:34.33
ほんとだ。Pythonだった。
まあ移植しろってつもりで貼ったんだろうな
655デフォルトの名無しさん:2012/06/11(月) 02:14:06.27
>>641
VbNullまたはChr(0)または""のどれでも良いです
>>626の予想される結果をお願いします

ま、これに答えられる人はこのスレにはいません
無理言ってごめんなさい
656640:2012/06/11(月) 02:51:12.70
>>636
とりあえず完成したので貼っときます
ttp://codepad.org/Cbvr8wyx
久しぶりに頭の体操になったよ
ありがとう
657デフォルトの名無しさん:2012/06/11(月) 04:36:19.60
>>655
VbNullは文字ではない
vbNullStringかchr(0)なら>>627
""なら>>634
どちらも答えもらってるんだが、何を煽る必要あるんだろうね
まあ、答えられる人がいないと思うなら二度と来るなよ
658デフォルトの名無しさん:2012/06/11(月) 07:57:29.11
韓国、ノーベル賞の夢消える! 米国 「ソウル大学で多くの論文捏造が判明した、24時間以内に回答せよ」
http://engawa.2ch.net/test/read.cgi/poverty/1339342300/


ソウル大でまた幹細胞研究の論文捏造か―論文14本

韓国のソウル大教授が学術誌に投稿した幹細胞研究の論文14本に捏造(ねつぞう)の疑いが浮上し、
波紋を呼んでいる。教授は「単純ミス」と釈明している。

韓国では2005年、ノーベル賞も期待されていた別のソウル大教授が発表した胚性幹細胞(ES細胞)関連論文で
捏造が発覚、社会に衝撃を与えた。同じ大学で同分野の論文が問題となっていることから、韓国メディアは「悪夢の再来か」などと報じている。

教授が4本の論文を投稿した米学術誌は24時間以内の釈明を要求したが、教授は「(釈明のための)時間が十分でない」とした上で、論文を取り下げた。

以下詳細 日経 2012/6/3
http://www.nikkei.com/article/DGXNASGM0300G_T00C12A6FF2000/
659デフォルトの名無しさん:2012/06/11(月) 11:51:47.33
>>636 >>656
数ヶ所改良したバージョン
ttp://codepad.org/g5QwMAWF
※ 100 x 100 のときは maximum recursion depth exceeded に達するので limit 変更
入口(左上)から掘ると迷路が簡単になる傾向があるので出口(右下)から掘るように修正
罫線描画のタイミングを変更することで無駄を減らし高速化
660デフォルトの名無しさん:2012/06/11(月) 12:34:31.57
>>659
ついでに、その迷路を解くアルゴリズムはどうすればいいでしょうか?
できるだけくわしく教えてください。
おながいしまつ。
661デフォルトの名無しさん:2012/06/11(月) 12:54:22.32
>>659-660
アルゴリズムのスレに池よ
邪魔だよお前ら
662デフォルトの名無しさん:2012/06/11(月) 16:35:30.53
Vista、Excel2007を使用しています
行数不定、列幅2の範囲の値をListboxに表示させたく

Private Sub UserForm_Initialize()

Set Ws = Worksheets("sheet1")
Dim n As Integer
Dim Data1()
n = Ws.Cells(31, 1).End(xlUp).Row
ReDim Data1(1 To n)
Dim Data2(1)

For i = 1 To n Step 1
Data2(0) = Ws.Cells(i, 2)
Data2(1) = Ws.Cells(i, 1)
Data1(i) = Data2
Next i

With ListBox1
.ColumnCount = 2
.ColumnWidths = "50;50"
.List = Data1
End With

End Sub

で試したところ、配列自体はできている(Data1(i)を適当にとってセルに書き込むと反映される)ようなのですが
ListBoxにはn個の空白行が表示されるだけで、Data1をセルに書き込んだ場合も値は反映されませんでした

配列には手を出し始めたばかりなのですが、そもそも配列の作り方からしておかしいのでしょうか?
663デフォルトの名無しさん:2012/06/11(月) 17:00:06.38
>>662
こういうこと?

ReDim Data1(1 To n,1)
dim i as Long
For i = 1 To n Step 1
Data1(i,0) = Ws.Cells(i, 2).text
Data1(i,1) = Ws.Cells(i, 1).text
Next i
664デフォルトの名無しさん:2012/06/11(月) 17:51:54.44
>>663
希望通りに表示できました、ありがとうございます

2次元配列でRedimを用いる場合行最後の次元しか変更できないと思い込んでData2なんて作ってしまいましたが
よくよくヘルプ読むとPreserveある場合の話だったのですね・・・orz
665デフォルトの名無しさん:2012/06/11(月) 21:19:04.09
異常者だろうな。私の知る限り彼はこのスレで誰ともコミュニケーション成立したことがない。
666デフォルトの名無しさん:2012/06/11(月) 21:19:24.55
666
667 忍法帖【Lv=40,xxxPT】 :2012/06/11(月) 23:59:55.35
すみません。ワードVBAのスレが無いようなので…

ワードのVBAなんですが、セル内で位置指定で垂直方向はすぐ見つかったのですが

Selection.Cells.VerticalAlignment = wdCellAlignVerticalCenter

水平方向の指定の仕方を教えてくださいm(__)m
668デフォルトの名無しさん:2012/06/12(火) 00:11:17.42
>>667
ワードVBAのスレがあるかどうかに関係なく、
ここはExcelVBAのスレなのでスレチです
669 忍法帖【Lv=40,xxxPT】 :2012/06/12(火) 00:21:58.90
>>668
申し訳ないです。

マクロを記録して自己解決しました。
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
670デフォルトの名無しさん:2012/06/12(火) 00:26:22.01
>>668
いちいちウザイ
671デフォルトの名無しさん:2012/06/12(火) 00:30:08.00
>>670
じゃあNGに入れろよ
お前みたいな何の役にも立たないレスが一番うざいわ
672デフォルトの名無しさん:2012/06/12(火) 00:34:21.62
横からスマンが
ID無しの板で、固有コテハン名乗ってるわけでもない奴をNGに入れろってのも
何の役にも立たないアドバイスな気が、、、
673デフォルトの名無しさん:2012/06/12(火) 00:39:39.79
>>672
ID無しの板で個人を特定してウザイなんて言うわけないじゃん
スレチってキーワードがうざいって事なんじゃないの?
674デフォルトの名無しさん:2012/06/12(火) 01:00:06.19
スレチなのに書き込むバカが全面的に悪い
675デフォルトの名無しさん:2012/06/12(火) 02:44:18.43
ビル・ゲイツ「反原発派の政治家や国民はもう少し科学的知識を持った方がいい」
http://ikedanobuo.livedoor.biz/archives/51740658.html

きょうシアトルで、西和彦さんと一緒にビル・ゲイツにインタビューした。
彼は福島事故について驚くほどくわしく知っていて、
「合理的な日本人が非合理的な反応をしているのは残念だ」と言っていた。
特に原発や放射線のリスクについての科学的知識が政治家や一般国民に知られていないことが問題を必要以上に混乱させている、と語った。

印象的だったのは、中国がウェスティングハウスのAP1000を60基発注するという話だ。
中国は世界中からエンジニアを集め、国家プロジェクトとして原子力開発を進めている。
先月、第1号機が納品された。これは1基115万kWだから、合計6900万kW。
これだけで日本の原発の合計をはるかに上回る。設計はすべて同じだから、コストも非常に安い。

重要なのは安全性だが、AP1000のような第3世代の原子炉には、
炉心溶融を物理的に防ぐ受動的安全装置がついており、巨大地震が起きても大丈夫だ。
福島第一原発は古いマークTで、30年前から技術者が危険だと警告していた。
日本も「脱原発か否か」といった不毛な論争ではなく、古い原発を新しい原発に代えて
安全性を高めることも必要ではないか。

エネルギー産業は、情報通信産業の次の大きなフロンティアだ。
古い地域独占の電力会社が残っているおかげで、イノベーションの余地は非常に大きい。
新興国は安くて効率的なエネルギーを求めている。環境問題を考えても、きわめて危険な
石炭を減らすために原子力は重要だ。風力エネルギーも有望だが、フィードインタリフは
イノベーションを殺してしまう。

大事なのは、かつての通信と同じく、電力を全面的に自由化して競争を促進することだ。
エネルギー産業でも、かつてマイクロソフトがIBMを倒したように、巨大な電力会社を倒す
ベンチャーが出てくる可能性がある。そのためには不合理な規制を徹底的に見直すことが必要だ。
アメリカにはシェールガスもクリーンコールも第4世代原子力技術もあり、イノベーターも多い。
足りないのは合理的な政府だけだ。
676デフォルトの名無しさん:2012/06/12(火) 03:17:34.15
>>671
スレチの指摘だって
何の役にも立ってないうえに
>>670みたいな書き込みの呼び水になるから
結局は一番迷惑
スレチも荒しも放置に限る
677デフォルトの名無しさん:2012/06/12(火) 03:57:58.74
>>667
バーチカルときたらホリゾンタルちゃうかー
678デフォルトの名無しさん:2012/06/12(火) 11:12:41.21
>>676
大して迷惑でもないだろ・・・
679デフォルトの名無しさん:2012/06/12(火) 14:10:36.96
680デフォルトの名無しさん:2012/06/12(火) 15:35:56.71
>>676はかなり頭逝ってる
681デフォルトの名無しさん:2012/06/12(火) 21:33:07.30
>>679
質問文をコピペするのではなく、横着してURLだけ貼って
回答者にわざわざリンク先の質問読みにいけと?

最悪なマルチの仕方だな
とりあえず3回くらい氏ねよ
682デフォルトの名無しさん:2012/06/13(水) 16:30:32.22
おまえのレスはスレ違い
俺のレスは問題外
他人のレスは全部気違い
みんな概出痴的障碍
青貝馬鹿貝想定外
683デフォルトの名無しさん:2012/06/13(水) 18:03:00.56
このガチのコミュ障は他人に構ってもらうためにSICPを使ってるだけだろ
ただし構ってもコミュニケーションは成立しない
頭がおかしいし、もう一生なおらない、一生な、絶対。病院に言っても無駄
まともなレスを一度も出来ずに死ぬ
684デフォルトの名無しさん:2012/06/14(木) 10:36:23.07
痛い子にさわるならアンカー付けてレスしてくれないかな。
連鎖あぼーんできないじゃないか。
685デフォルトの名無しさん:2012/06/14(木) 10:51:58.63
そこまで一生懸命見る価値はないぞこのスレは
早く卒業しなさい
686デフォルトの名無しさん:2012/06/14(木) 11:02:02.78
流し読みするのに邪魔なんだよ。
687デフォルトの名無しさん:2012/06/14(木) 12:01:06.06
流し読みの価値すらないことに気付け
688デフォルトの名無しさん:2012/06/14(木) 12:44:58.20
流し読みの価値すらないということにしないと困るようです
689デフォルトの名無しさん:2012/06/14(木) 13:02:58.24
最近は質問自体が少ないからなあ
質問者が減っているのか、おまいらがオイダシテるのかわからんが
690デフォルトの名無しさん:2012/06/14(木) 13:04:47.86
ググれば解決することが殆どだしねー
質問が減るのはいいことだ
691デフォルトの名無しさん:2012/06/14(木) 13:59:34.76
VBAがオワコンだから質問もされない
692デフォルトの名無しさん:2012/06/14(木) 16:02:10.96
初心者は常に素人質問をするもの
素人だからググルポイントが解らないとか、結果を読んでも解らないとか
だからここで素人質問をする

オレもプロではないので全般的に理解できているわけじゃなくて
やりたいことを試してエラーが出て、大抵そのエラーの意味はつかみ所がない
ググって原因は解っても回避方法がわからないこともある

それで質問をすると、即答してくれる人が居て非常に助かる
(たまにバカにしたレスが付くけど)
回答するのがウザイならググルキーワードとかヒントだけ出せばいいと思う

過疎化しているのはオワコンだからなのかな?
Excel人口は多く、その何%かがVBAをかじるだろうからこのスレの存在は有りがたい
オマエラに感謝!
693デフォルトの名無しさん:2012/06/14(木) 16:39:15.63
>>692
初心者は質問もないのにわざわざこんなスレに来てこんなこと書かないよ
いつもごくろうさま
694デフォルトの名無しさん:2012/06/14(木) 16:58:12.90
>>693
お前邪魔
695デフォルトの名無しさん:2012/06/15(金) 08:35:31.86
馬鹿には無理
696デフォルトの名無しさん:2012/06/16(土) 17:18:02.56
初歩的な質問ですみません
For ii = 0 To 2
sn = Array("1月", "2月", "3月")
Set ws = Worksheets(sn(ii))
ws.Columns("A:A").Select ’@
Selection.AutoFilter
.
.
Next ii

@のところで
実行時エラー 1004
RangeクラスのSelectメソッドが失敗しました。
のエラーが出ます。
どう修正したらいいでしょうか?
697デフォルトの名無しさん:2012/06/16(土) 17:24:27.10
>>696
sn = Array("1月", "2月", "3月")
For ii = 0 To 2
Set ws = Worksheets(sn(ii))
ws.Columns("A").AutoFilter
698デフォルトの名無しさん:2012/06/16(土) 18:37:57.91
マクロを登録したボタンの名前を取得したいのですが

Sub テスト()
Dim Button_Name As String

'どのボタンが押されたか判断する
Button_Name = Application.Caller

MsgBox Button_Name

End Sub
このように記述すると
>Button_Name = Application.Caller
のところで
型が一致しないエラーがでるのですがどうすればいいのでしょうか
699デフォルトの名無しさん:2012/06/16(土) 18:58:04.33
>>698
型を確認してみたら?
Debug.Print TypeName(Application.Caller)
700デフォルトの名無しさん:2012/06/16(土) 19:06:57.96
>>698
フォームのボタンなら問題ないけど
701デフォルトの名無しさん:2012/06/16(土) 19:23:18.25
>>699
オブジェクトが必要ですと出ます
702デフォルトの名無しさん:2012/06/16(土) 21:47:49.56
>>701
「出る」ってのは具体的にどういう状態なのだ?
703デフォルトの名無しさん:2012/06/16(土) 22:19:54.80
Application.Caller が返すのはオブジェクト型
それをString型で受けようとするから型が一致しないと出るのは当然
704デフォルトの名無しさん:2012/06/16(土) 22:50:01.00
>>703
それで、どうすればエラーがでなくなるの
705デフォルトの名無しさん:2012/06/16(土) 22:57:09.25
>>704
Application.Callerのヘルプ見たら答えが載ってるから見てみて
ヘルプ見て分からなければヘルプのどの部分が分からないのか質問し直して
706デフォルトの名無しさん:2012/06/16(土) 23:05:53.77
>>704
エラーなんてでないよ
707デフォルトの名無しさん:2012/06/16(土) 23:55:05.42
そもそも常にオブジェクト型が返るわけじゃないから。
708デフォルトの名無しさん:2012/06/17(日) 00:56:38.28
>>698のものです
よく分かりませんが解決しました
709デフォルトの名無しさん:2012/06/17(日) 05:15:01.80
>>707
いや常にオブジェクト型だろ
VBAに戻り値のオーバーライドはないぞ
ただその実体が違うだけだ

710デフォルトの名無しさん:2012/06/17(日) 08:37:57.82
>>709
>VBAに戻り値のオーバーライドはないぞ

Variant って知ってる?
711デフォルトの名無しさん:2012/06/17(日) 09:13:10.66
どんな時にVariantが返る?
712デフォルトの名無しさん:2012/06/17(日) 09:43:05.78
今からOffice買うなら2010と2007どっちがいい?
713デフォルトの名無しさん:2012/06/17(日) 10:54:13.67
>>699
Stringでした
714デフォルトの名無しさん:2012/06/17(日) 11:24:34.45
>>712
VBAは大差ないと思うけど2010の方が速い
715デフォルトの名無しさん:2012/06/17(日) 13:47:11.41
>>711
常時。

>>713
ホントに TypeName( ) から "String" が返ってきてるのに、String 型の変数に
代入するとエラーになるの?

スマン、俺の知識の範囲を超えてるわ。
716デフォルトの名無しさん:2012/06/17(日) 14:32:47.38
>>715
いや、stringなので、エラーはでない。
なので、>>703の意味がわからない。
717デフォルトの名無しさん:2012/06/17(日) 14:47:21.28
>>703 は、スルーでいいと思う。
718デフォルトの名無しさん:2012/06/17(日) 16:46:29.32
>>712
乗せてるCPU次第だけど
2010は64bitに対応している(VBA7.x)ので
そちらの方が良いかな?

あと、リボンUIって2010からだったっけ?
719デフォルトの名無しさん:2012/06/17(日) 16:50:15.18
>>718
>あと、リボンUIって2010からだったっけ?

2007 から。
720デフォルトの名無しさん:2012/06/17(日) 16:52:50.25
>>714>>718
PCのスペックはBF3をヌルヌルできるくらい高スペックなので問題ないです。
VBAを勉強した買ったから、情報量が多い2007が良いと思ってたけど、2010の方がUIとかの評判良さげですね
2010にします
721デフォルトの名無しさん:2012/06/17(日) 16:57:22.50
ちなみに皆さんVBAは独学?
こうやって、わからないところはネットだけで学んだ?
それとも最初は参考書に手をつけたりした?
もし初心者鉄板のVBA参考書とかあったら教えて下さいな
722デフォルトの名無しさん:2012/06/17(日) 17:47:52.44
>>721
ヘルプとMSDNライブラリがあれば事足りると思うよ
ヘルプとMSDNライブラリで事足りなく感じれば書籍に手を出せばいい
723デフォルトの名無しさん:2012/06/17(日) 20:07:34.90
Sheets("Sheet1").Range("A1").Select
↑がエラー起こすのはどうしてですか?selectもメソッドだからいけると思ったんだがいけない
724デフォルトの名無しさん:2012/06/17(日) 20:25:00.61
>>723
Sheet1がないとか、あってもアクチブでないとか
725デフォルトの名無しさん:2012/06/17(日) 21:35:48.28
UserFormにシート上の画像を表示させたい

http://www.asahi-net.or.jp/~zn3y-ngi/YNxv9d92.html
グラフなら、ここみたいにやり方を探せたんですがこれをグラフでなく画像で出来ますか?

2003です、お願いします
726デフォルトの名無しさん:2012/06/17(日) 22:11:52.58
普通にやればいいだけじゃないの?
727デフォルトの名無しさん:2012/06/17(日) 22:16:47.77
>>725
シート上の画像をイメージコントロールに貼り付ける
でググれ
728デフォルトの名無しさん:2012/06/17(日) 23:56:12.56
おまえらmsdn見てないのかよ
だったら俺も見ないで適当に答えるけど

オブジェクトが複数あって、あるいは別マクロ経由しててApplication.Callerの対象オブジェクトが特定されてない
というかそのコードだと帰ってくる型はrangeかerrorになると思うんだがどっか省略かまちがってね


variantに格納して内部情報見てみたらいいんじゃね
729デフォルトの名無しさん:2012/06/18(月) 00:00:37.45
MSDNはどうやって見れるの?
730デフォルトの名無しさん:2012/06/18(月) 00:03:27.98
PCをモニタにつなげる


あ、電源入れろよ
731デフォルトの名無しさん:2012/06/18(月) 00:08:57.00
つなげたよ。
電源も入れた。
732デフォルトの名無しさん:2012/06/18(月) 00:51:28.29
まじか、すげえな
733デフォルトの名無しさん:2012/06/18(月) 01:11:20.86
>>723
エラーの内容くらい書けよ
734デフォルトの名無しさん:2012/06/18(月) 07:55:15.46
>>728
ボタンに↓を登録したんだが間違ってるの?
Sub テスト()
Debug.Print TypeName(Application.Caller)
End Sub
735デフォルトの名無しさん:2012/06/18(月) 08:22:18.37
>>734
それであってるよ
736デフォルトの名無しさん:2012/06/18(月) 08:36:57.24
ボタン直下ならstring だわな
>>698の書き方の時点でボタン特定出来てないだろ
その時はstring じゃないんじゃね
作ったコードと同じ状況で確認しろよ
737デフォルトの名無しさん:2012/06/18(月) 09:00:14.85
やってみたけど
文字列返らないんだが
バージョンいくつでやってんだ、95か?
738デフォルトの名無しさん:2012/06/18(月) 09:54:22.70
あってるっていってんじゃん
739デフォルトの名無しさん:2012/06/18(月) 10:04:32.37
>>724
アクティブシートになってなきゃ出来ないのでしたらシートを対象にした意味がない気がしますがそういう仕様でしょうか
>>766
RangeクラスのSelectメソッドが失敗しましたと表示されます
740デフォルトの名無しさん:2012/06/18(月) 10:07:47.94
↑安価ミス
>>766でなく>>733宛てです
741デフォルトの名無しさん:2012/06/18(月) 10:08:57.17
っとすまん、コマンドボタンじゃなくてマクロボタンか
普通のstring と名前が戻って来るがなあ
742デフォルトの名無しさん:2012/06/18(月) 10:10:55.83
>>740
SheetsってActiveWorkbooksに対してじゃなかったか?
実行してる箇所(スコープ外)だとこけるぞ
完全参照でやるなら
Application.Worksbooks(n).Workshees(n).
とかだぞ
VBとかからCOMでアクセスしててても使えない
ちなみにSheetはチャートシート(使ってるのみたことないが)
込みだからWorksSheesのほうがいいぞ
743デフォルトの名無しさん:2012/06/18(月) 10:21:15.19
>>739
セルのSelectってのはアクティブシートのみに有効なメソッドだ

但し言語仕様としては、SelectメソッドをRangeオブジェクトのメンバにしなくてはならず
Rangeオブジェクトのメンバである以上、親がアクティブシートでも非アクティブシートでも
構文としては全てのRangeオブジェクトに対してSelectメソッドが有効になってしまうというだけ
744デフォルトの名無しさん:2012/06/18(月) 12:31:01.45
キチガイは
>結局どんなものが出てきても文句言ってるっていう気がする。
だよな。
もう、自分や自分の会社で文句でないの作れだよな
745デフォルトの名無しさん:2012/06/18(月) 19:53:55.81
>>739
セルをSelectするってことは、そのセルをアクティブにする事と同じだと思えばいい
Selectされているセル≒アクティブになってるいるセル
746デフォルトの名無しさん:2012/06/18(月) 20:07:50.05
アクティブセル:単一セルのみに有効な処理の対象となるセル
セレクトセル:複数セルに有効な処理の対象となるセル
747デフォルトの名無しさん:2012/06/19(火) 09:57:26.89
どうしてもわからないのでよろしくお願いします
シート1でボタンを配置してシート2のA10:D20範囲にあるオートシェイプを消したいのですが
↓のコードだと一度シート2をselectしてアクティブシートにしなければエラーになってしまいます
画面が切り替わらず(selectせず)にシート1からシート2のA10:D20範囲にあるオートシェイプを消すコードを教えてもらえないでしょうか?

Dim MyShape As Shape
Sheets("sheet2").Select
For Each MyShape In Sheets("sheet2").Shapes
If Not Intersect(Range("A10:D20"), MyShape.TopLeftCell) Is Nothing And _
Not Intersect(Range("A10:D20"), MyShape.BottomRightCell) Is Nothing Then
MyShape.Delete
End If
Next
748デフォルトの名無しさん:2012/06/19(火) 11:18:02.89
シートの切り替え自体はやらないと処理できないと思うが
見た目上の切り替えを見えなくするってことなら可能

Sheets(2).Select
の前に
Application.ScreenUpdating = False
を入れて
Next
の後に
Sheets(1).Select
Application.ScreenUpdating = True
を入れると、
画面上は切り替わらない。(実際には切り替わってるけど画面の描画はされない)
749748:2012/06/19(火) 11:21:25.54
ごめん
Sheets(2).Select
じゃなくて
Sheets("sheet2").Select
だったね
Sheets(1).Select
も同様に読み替えてください
750デフォルトの名無しさん:2012/06/19(火) 11:46:08.91
>>747
シートをSelectしなくても動いたよ?

Dim MyShape As Shape
For Each MyShape In Worksheets("sheet2").Shapes
If Not Intersect(Worksheets("sheet2").Range("A10:D20"), MyShape.TopLeftCell) Is Nothing And _
Not Intersect(Worksheets("sheet2").Range("A10:D20"), MyShape.BottomRightCell) Is Nothing Then
MyShape.Delete
End If
Next
751デフォルトの名無しさん:2012/06/19(火) 15:20:50.46
selectする奴はド素人の法則
752747:2012/06/19(火) 15:26:43.75
>>750
それはあなたがもともとシート2をアクティブにした状態でマクロを動かしてるからでしょ。
753デフォルトの名無しさん:2012/06/19(火) 15:55:11.12
>>752
誰だよお前w
754デフォルトの名無しさん:2012/06/19(火) 16:03:29.74
>>752
ド素人は黙っとけ
755747:2012/06/19(火) 16:25:23.00
>>753
オレのものはオレのもの。
キミのものもオレのもの。
ノモのものはノモのもの。
756747:2012/06/19(火) 16:50:03.62
>>752
誰だよお前

関係ないと思って書いてませんでしたがすみません
通常シート2は非表示にさせておりこのマクロを実行すると表示されるようにしていますので全文はこうなります↓

Dim MyShape As Shape
Worksheets(sheet2).Visible = True
For Each MyShape In Sheets(sheet2).Shapes
If Not Intersect(Range(A10:D20), MyShape.TopLeftCell) Is Nothing And _
Not Intersect(Range(A10:D20), MyShape.BottomRightCell) Is Nothing Then
MyShape.Delete
End If
Next

このコードでシート2が非表示の時に実行すると「Intersect'メソッドは失敗しました'_Global'オブジェクト」とエラーメッセージがでます
>>750さんの言うみたいに通常通り最初からシート2が表示されてる時はエラーメッセージが出ないことに気付きませんでした
757デフォルトの名無しさん:2012/06/19(火) 17:16:25.65
>>756
マジレスすると>>750のコードはSheet2を非表示にしたまま問題なく動くよ
758デフォルトの名無しさん:2012/06/19(火) 17:22:26.68
>>756
マジでお前うざいわ
もうExcel使うな
759747:2012/06/19(火) 17:23:09.99
>>757
なにを言っておるのだ
非表示だと動かないと言っておるのだ
バカボンのパパなのだ
760デフォルトの名無しさん:2012/06/19(火) 17:23:47.07
>>750のどこをどう読んだら「通常通り最初からシート2が表示されてる時」の話だと勘違いするのだろうか。
761747:2012/06/19(火) 17:24:09.23
>>758
なんだとこの野郎
762デフォルトの名無しさん:2012/06/19(火) 17:25:47.68
なにこいつ
763747:2012/06/19(火) 17:25:57.25
>>757
すみません>>750さんはコードを直して書いてくれてことに気付きませんでした
ありがとうごさいます無事解決しました
764デフォルトの名無しさん:2012/06/19(火) 17:51:47.35
ここって何でID表示ないの?
765デフォルトの名無しさん:2012/06/19(火) 18:19:54.08
>>764
スレ違いな質問です

自治スレ、もしくは運営関係の板で聞いてください
766デフォルトの名無しさん:2012/06/19(火) 18:21:10.16
ID無いとなりすまして煽ってるやつが多いんだな
767デフォルトの名無しさん:2012/06/19(火) 18:26:02.99
火曜は大体こんなもん
768デフォルトの名無しさん:2012/06/19(火) 18:28:34.16
自演できねえだろ
769デフォルトの名無しさん:2012/06/19(火) 19:21:49.38
IDあると自演にコスト(手間および●費)が掛かるだけで
自演出来なくなるわけじゃないじゃん
770デフォルトの名無しさん:2012/06/20(水) 07:55:20.69
>ID無いとなりすまして煽ってるやつが多いんだな

最近の2chは特にひどい
771デフォルトの名無しさん:2012/06/20(水) 13:44:15.47
自己解決しました厨と、質問者になりすまして煽る厨はマジでいらんわ。
772デフォルトの名無しさん:2012/06/20(水) 13:56:47.68
> 最近の2chは特にひどい
そうか?

2ch創設から見てきているが、どんどんマシになっていく一方に見えるけど
773デフォルトの名無しさん:2012/06/20(水) 17:16:13.47
俺は牛の屠殺場を見たことがあるが、そこでは牛達が銃で眉間を撃ち抜かれて
殺されている。
日頃従順に人間に従っていた温和な牛たちも、順番を待って並ばされている時に
そこではじめて自分の運命に気付くのだろう、日頃聞かないような悲痛な甲高い
鳴き声を絶えず出し続けている。俺は今でもその鳴き声が耳を離れない。
人間は斯くも残酷な行為を毎日何千、何万という動物達に行っているのだ。
せめてその肉を頂く時には少しぐらい感謝の気持ちをもってもいいだろう。

【屠殺場の怖さは異常】
ttp://2.ldblog.jp/archives/1058482.html
774デフォルトの名無しさん:2012/06/20(水) 17:59:57.10
口に入れるものなのに、銃で撃つとかあたま狂ってるだろ
重金属や火薬なんかくわせんじゃねえよ
775デフォルトの名無しさん:2012/06/21(木) 01:34:23.03
ちょっと聞きたいんですが、TextBoxに何もデータが入ってない場合、値はvbNullStringなの?
それともEmpty?
776デフォルトの名無しさん:2012/06/21(木) 01:47:49.35
1分とかからず確かめられることを、何故確かめずにここで聞く?
777デフォルトの名無しさん:2012/06/21(木) 01:57:29.44
>>776
どうやって確かめたらいいんですか?
778デフォルトの名無しさん:2012/06/21(木) 02:41:47.19
TypeName使えば、Emptyは"Empty"が返り、vbNullStringは"String"が返るし
VarType使えば、EmptyはvbEmptyが返り、vbNullStringはvbStringが返る
779デフォルトの名無しさん:2012/06/21(木) 08:02:13.64
EmptyでないことはIsEmptyなどでもすぐに分かるよな。
ただvbNullStringじゃなく長さ0の文字列の""ということも考えられるから、そのときはStrPtrを使って調べればよい。
MsgBox StrPtr(TextBox1.Text)などとすれば"0"が返るから""じゃなくvbNullStringということになる。
ちなみにTextBoxにEmptyを代入しても""を代入しても中身はvbNullStringとなる。
TextBoxをクリアーするときは厳密にはvbNullStringをいれるのがベスト。
780775:2012/06/21(木) 09:47:11.63
モーグ見てきたら関連するスレッドがあるけど、まともな回答者が珍しく間違ってるな。
781デフォルトの名無しさん:2012/06/21(木) 09:51:11.59
>>780
775ってどういうこと?
782デフォルトの名無しさん:2012/06/21(木) 09:53:01.67
釣り質問だったんだろうか?
783デフォルトの名無しさん:2012/06/21(木) 22:01:51.25
EXCELでマクロを使い
IEobjectの操作をしてクリック証券の発注を自動化しようと思っています

株価の入力や株数の入力は ソース内の株価の近くにある
<div class="torihiki_area"><input type="text" name="jyuchuuSuuryo" maxlength="11" size="14" tabindex="8" value="" id="jyuchuuSuuryo" class="torihiki"> 株 </div>
のid jyuchuuSuuryoに対して
bjIE.Document.forms(1).Item("jyuchuuSuuryo").Value = VOLUME '株数
のようにすればよかったのですが

注文確定をクリックしたい場合 注文確定の文字列はソース内には無く
<span id="orderButtonBlock" class="button_area_section">
<input type="image" name="" src="https://kabu.click-sec.com/sec1-6/images/orderpanel_3/order.gif" tabindex="19" id="orderButton">
</span>
近くに画像のリンクがあり
objIE.Document.forms(1).Item(”orderButton").Click
clickやcheckedをやってみたのですがエラーがかえってきてしまい躓いてしまいました
type=imageのクリックを実行する方法を教えていただけないでしょうか

submitで強引に注文できるかなと思ったのですが上の方に銘柄コード検索がありそちらの検索結果を実行してしまいました
784デフォルトの名無しさん:2012/06/21(木) 22:27:15.80
>>783
その質問は一切Excel関係ないよ
785デフォルトの名無しさん:2012/06/21(木) 22:36:17.79
>>784
そうなんですか
エクセルで実行しているので
EXCEL VBAでいいのかと思ってしまいました
申し訳ありません
786デフォルトの名無しさん:2012/06/21(木) 22:55:48.81
>>785
ググる時の検索キーワードから「Excel」を外した方がいいと思うよ
例えば「ie 自動化 画像 クリック」とか
787デフォルトの名無しさん:2012/06/22(金) 04:38:56.27
>>785
Excelでやっているとしても、それはExcelのVBAに汎用開発環境としての機能があるからVBAでも実現可能ってだけで
Excel固有の機能を必要としている訳じゃない限り、それはExcelVBAの質問ではなくスレ違い
788デフォルトの名無しさん:2012/06/22(金) 04:42:43.20
>>783
そのページをよく観察して、tabキーで目的の場所に移動できるかどうかを調べて見ませう
789デフォルトの名無しさん:2012/06/22(金) 07:29:57.00
★2 ExcelのVBA以外の部分に関する質問はNGです。
   但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。

あえてVBAでやりたいって物に関してはOK。
790デフォルトの名無しさん:2012/06/22(金) 07:39:51.46
それ、条件付き書式や入力規則みたいなのの使い方聞くのはNGだが
VBA無しでExcelの機能で出来る条件付き書式や入力規則でも
柔軟性や拡張性からあえてVBAでやりたいというような場合はOKって話であって
Excelに関係ないものを許容するって話じゃないぞ
791デフォルトの名無しさん:2012/06/22(金) 08:47:16.20
そのレベルの自分で作ったプログラムで自動で証券を買うなんて、そんな恐ろしいことようやるわ
破産フラグ確定
792デフォルトの名無しさん:2012/06/22(金) 10:29:03.25
>>786
ありがとうございます
目的のものが見つかりそうです

>>787
大変申し訳ないです

>>791
ご発注二関しては朝の寄付の注文をするだけなので
注文履歴の確認は目視で行っています

理論的には
ここ5年間手入力でやってきまて問題なく利益を出していたのですが
年齢が上がってきたせいか1日40銘柄の注文をぽちぽちキーボードとマウス操作するのがめんどくさくて、、、、、
793デフォルトの名無しさん:2012/06/22(金) 11:26:59.75
obj = GetObject("fuga.xls")
obj.BuiltinDocumentProperties('Author').Value = "hoge"
obj.Save()
obj.Close()

エクセルのファイルの場合、これで作成者は換わるのですが、
ワードのファイルの場合、
obj = GetObject("fuga.doc")
と変えても作成者が書き換わらないです。
どうしたらワードの方も換えられますか?
794デフォルトの名無しさん:2012/06/22(金) 11:43:04.82
Wordも
obj.BuiltinDocumentProperties('Author').Value = "hoge"
を付け加えたまえ。
795デフォルトの名無しさん:2012/06/22(金) 13:03:13.53
やってますよw
796デフォルトの名無しさん:2012/06/23(土) 11:25:51.84
かけるかな
797デフォルトの名無しさん:2012/06/23(土) 11:35:30.89
すみません質問お願いします。

フォームにマルチページを配置して、その中にフレームやボタンを配置しています。
さらにそのマルチページの下(外)にOKとキャンセルみたいなボタンを配置しています。

このときにタブを押していくと、マルチページ内のボタン>マルチページのタブの部分(Page1みたいなとこ)
>マルチページの外のボタン(OKとキャンセル)>マルチページ内のボタン>繰り返し

というようなタブオーダーになるんですが、このときにタブ部分に行かずに、
マルチページ内のボタン>マルチページの外のボタン>マルチページ内のボタン
というようなタブオーダーにしたいとおもっているんですが、現在はマルチページのタブのCycleを2にして
マルチページ内のボタンの最後のボタンでタブが押されたら、マルチページの外のボタンにフォーカスを
移動するようにしています。

ただ、個人的にこのやり方が正しいとは思えなくて、もっと普通のやり方があるような気がするんですが
どうかそのあたりを教えていただけないでしょうか。

よろしくお願いします。

798デフォルトの名無しさん:2012/06/23(土) 17:41:53.22
>>797
こんなのはどうかな
Private Sub マルチページ内のボタン_KeyDown(ByVal KeyCode As ****)
KeyCodeがTABならマルチページの外のボタン.SetFocus
799デフォルトの名無しさん:2012/06/23(土) 17:55:27.56
クラスモジュールって、そんなにいいものなの?

あんまり、良さを感じないんだけど。
800デフォルトの名無しさん:2012/06/23(土) 19:22:41.38
>>798
レスありがとうございます。

分かりにくくてすみません。
今はそういう風にしています。
801デフォルトの名無しさん:2012/06/23(土) 19:37:04.23
タブの部分にフォーカス当てたくないってことか?
マルチページはそんな風に設計されてないっぽい
普通じゃない使いかたに「普通の方法」なんてないな
802デフォルトの名無しさん:2012/06/23(土) 21:30:39.26
>>799
中途半端だからねぇ。

よく知らないなら、今からわざわざ覚えるようなものではないと思うよ。
803デフォルトの名無しさん:2012/06/23(土) 23:16:28.11
>>801
レスありがとうございます。

たしかにおっしゃるとおり、マルチページの設計に沿っていない使い方でした。その点を理解しました。

そこで質問の内容を変えさせてください。
タブオーダーの順番を、マルチページ内のボタンを巡った後に、マルチページの外のボタン、
その後にマルチページのタブ、そしてマルチページ内のボタン、外のボタンという風に
コントロールすることは可能でしょうか。

現在は、マルチページ内のボタン>タブ>外のボタンという順番で移動してしまいます。

どうかよろしくお願いします。
804デフォルトの名無しさん:2012/06/23(土) 23:17:47.02
Excelファイルを開いたら
指定したメールアドレスに開いた人のIPアドレスとかを
送信するようなプログラムって作れるのですかね?
ちょっとわけありで、こんなのができるといいんですが…
805デフォルトの名無しさん:2012/06/23(土) 23:37:56.02
>>804
メール送信マクロが組み込まれたExcelファイルを開いたタイミングでメールを送信したいのか
常駐してファイルオープンを常に監視していてExcelファイルが開かれたタイミングでメールを送信したいのか

前者ならマクロを作るのは簡単だけど確実にマクロを実行させる手段がない
後者ならExcelVBAで作るべきものじゃない
806デフォルトの名無しさん:2012/06/24(日) 00:06:22.55
>>804
技術的には可能だけど
同意なしならめっちゃマルウェアやん
犯罪に加担しろと?

アンチウイルスソフトにブロックされてしまえ
807デフォルトの名無しさん:2012/06/24(日) 00:46:14.54
大半の人は、実は釣り質問。
単に馬鹿な回答者がいればそれでいい。
808デフォルトの名無しさん:2012/06/24(日) 02:51:59.24
>>804
質問「作れるか?」
回答「作れる」
809デフォルトの名無しさん:2012/06/24(日) 02:56:03.50
メール送信というかネット関係は微妙にハードル高いよ
ネットに接続されてなかった場合、外に出られなかった場合とかやり始めるときりがない
ログを保存しといて、ネットに接続されたらまとめて送信とかやりたいならVBA以外でやった方がいい
810デフォルトの名無しさん:2012/06/24(日) 05:38:17.48
>>804
それだけならVBSかバッチでも使ってろ
会社のPC全台調査しなくちゃいけなくなったとき、ファイル作って配布したなあ
811デフォルトの名無しさん:2012/06/24(日) 06:52:50.55
>>802
 やっぱりそうですか!レスありがとう。

まあ、たまにはクラスの1つも作ってみます。
812デフォルトの名無しさん:2012/06/24(日) 09:03:01.68
>>811
データクラスにたいしてJavaでいうインターフェースで
メソッド実装を強制する使い方とかロジックの隠蔽とかもするけど
実はVB系だと↓のコントロールに共通処理させるのが多いと思う
http://www.excellenceweb.net/vba/class/text_filter.html
813デフォルトの名無しさん:2012/06/24(日) 12:52:51.19
Excelで競馬のソフト作ろうと思ってるんだけど
疑問は
1、webから取り込んだ馬やレースなどにコメントなどつけて編集して、それを出力保存して、セル内に同じ馬名や日付とレース番号を入れたら、それを読込事みたいなことができるか?
2、例えばA1:J5の計50のセル内に色々な数値を表示しているが、ボタン一つでセルを結合して一つの表示を見せる。またボタンを押すと50の表示に戻るなんてことができるのか?

Excel VBAで上のような2つのような操作ができるのかアドバイスください
814デフォルトの名無しさん:2012/06/24(日) 12:55:56.13
>>813
できるよ
815デフォルトの名無しさん:2012/06/24(日) 12:56:36.83
マルチ
816デフォルトの名無しさん:2012/06/24(日) 13:01:22.19
>>813
 うん。出来る。

 どこのサイトから引っ張るのか知らないけど、まあ、素直に組んであれば、
どのタグで引っ張るか、多少悩めば桶。

 何をアドバイスすれば、いいの?コード全部は、カンベン。
817デフォルトの名無しさん:2012/06/24(日) 13:08:00.46
>>814
出来るのね。ありがと

>>816
webクリエを駆使してwebから読み込むのは出来ている。
2の方法が悩み中。例えばこの画像の上のA1:F3には、Sheet2のA1:F3を表示しているとする。
んで、切り替えボタンを押すと、セルの結合してSheet2のA5を表示する。
んで、またボタンを押すと最初の表示に戻る。というのがやりたい場合はどうすればいいのか
http://iup.2ch-library.com/i/i0670448-1340510590.png
818デフォルトの名無しさん:2012/06/24(日) 13:14:21.04
>>817
セルの結合も解除もVBAで1行で書ける
あとは結合や解除するたびにデータをいちいちコピーするだけ
819デフォルトの名無しさん:2012/06/24(日) 13:22:55.56
>>818
競馬の出馬表で上の画像みたいなのが18列あるから、セル結合解除後のコピーもVBAでしたい
要するに、上をA、下をBとすると、Aを表示するAボタン、Bを表示するBボタンの二つを用意しないといけないってことかな?
820デフォルトの名無しさん:2012/06/24(日) 13:31:08.76
大半の人は、実は釣り質問。
単に馬鹿な回答者がいればそれでいい。
821デフォルトの名無しさん:2012/06/24(日) 13:34:13.35
詳しくいうなら、こんな感じ
表の1〜8の行には各セルに色々なデーターを読み込ませてあるが、
ボタン一つでセルを結合して違う表示をさせる。んでまたボタンを押すと最初の各データの表示に戻る。
そういうのがやりたいんだ。VBAなら出来るかなと思って
http://iup.2ch-library.com/i/i0670464-1340512301.png
822デフォルトの名無しさん:2012/06/24(日) 14:06:41.57
まさに底辺同士
823デフォルトの名無しさん:2012/06/24(日) 14:20:11.26
>>821
「マクロの記録」でセルの結合や解除してコード吐き出させてみたら?
競馬のソフトって育成ゲームか?
824デフォルトの名無しさん:2012/06/24(日) 16:50:54.89
>>823
んやw予想ソフトw
825デフォルトの名無しさん:2012/06/24(日) 17:23:44.56
>>821
結合するくらいならシート単位で分割して、二画面表示にすればいいと思うが
826デフォルトの名無しさん:2012/06/24(日) 17:49:02.90
予想なんて時間の無駄だからよそうぜぇ




ナンチッテ
827デフォルトの名無しさん:2012/06/24(日) 17:57:35.86
何法を使って予想するのか知らんが
プログラムの間違いと予想の外れの見分けはつくんだろうか
質問のレベルからちょっと思ったりした
828デフォルトの名無しさん:2012/06/24(日) 23:46:47.61
若かろうがオッサンだろうが、
「これ出来ないとお金払いませんよ、
 あなたの生活がどうなろうと私には関係有りませんし。」
と言うとみんなちゃんと新しい技術をマスターしてくる。
努力しないってっことは努力する必要が無いからなんだと思う。
追い詰められていないんだろうね。
幸せなんじゃないか?
どうでもいいけど。
829デフォルトの名無しさん:2012/06/25(月) 00:05:16.06
>>828
その内いいことがあるさ
負けずに頑張れよ
830デフォルトの名無しさん:2012/06/25(月) 00:07:07.23
「会議」がアイデアを潰す

若手や中堅がイノベーションを生み出す新しいアイデアを出す時
立ちはだかるのがジジイどもの支配する「会議」という壁だ

・ジジイどもに理解できる企画でなくてはならない
・ジジイどもの好みに合う企画でなければならない
・既に成功した事例がなくてはならない
・ジジイどもに気に入られている人物が提案者でなくてはならない
・ジジイどもに気に入れられていない人物が関わっていてはならない
・ジジイどもの支援が不要な企画でなくてはならない
・にもかかわらずジジイどもにも活躍の場を与えねばならない
・ジジイどもの気まぐれな口出しにいつでも応じなければならない
・失敗してもジジイどもが責任をとらなくてよい企画でなくてはならない
・成功したらジジイどもの業績になる企画でなくてはならない

若い頃は前世代のおかげで繁栄したくせに、自分らの時代には経済を衰退させ
そのツケを後世代に回す団塊ジジイ、バブルジジイどもが日本の病巣
831デフォルトの名無しさん:2012/06/25(月) 16:32:43.67
excel2000以降ですが

実行させた時に保存するのに

ActiveWorkbook.SaveAs Filename:="D:\仕切書PG\\kanriヘッダ挿入後ファイル.xls", FileFormat:=xlNormal

とした時にファイル名が"02B90000"とか"73D4B100"とかになり"kanriヘッダ挿入後ファイル"と保存出来ない場合があるのは何故でしょう。
ググってみたんですが出てこないので申し訳ありませんが教えて頂けませんか?
832デフォルトの名無しさん:2012/06/25(月) 16:38:57.18
>>831
ググったらこんなん出てきたけど関係ないかな?
http://esupport.trendmicro.co.jp/Pages/JP-2064267.aspx

あと、「\\」は「\」が正しいのでは?
833デフォルトの名無しさん:2012/06/25(月) 16:52:20.44
>>831
サーバー上とかネットワークドライブに対してやってると
Tempフォルダとか権限周りでそんなことがあったな
834デフォルトの名無しさん:2012/06/25(月) 16:52:40.98
>>832
\\ではなく\です。ごめんなさい。
出力されたファイルは不明なファイルの種類って出てまして、開くと一応内部は変わらず開けます。
駆除ソフトはウイルスバスターでは無かったです。
835デフォルトの名無しさん:2012/06/25(月) 16:55:46.39
>>833
ネットワークではなく個人のpcのみでDドライブ上のフォルダに保存させてます。
836デフォルトの名無しさん:2012/06/25(月) 17:13:20.35
質問
excelのシートに貼り付けてあるpictureを、bmp形式の独立ファイルとして生成する方法が知りたいです

importメソッドはpictureオブジェクトには使えないし、dotNetのbitmapオブジェクトを使うのが楽かなあって思うんですが
いいアイデアありますか?
837デフォルトの名無しさん:2012/06/25(月) 18:13:27.44
ありますね
838デフォルトの名無しさん:2012/06/25(月) 19:24:27.14
あるのか?
想像できんな・・・
839デフォルトの名無しさん:2012/06/25(月) 19:41:26.68
emf wmf を参照せよ
840デフォルトの名無しさん:2012/06/25(月) 19:42:47.35
>>836
Web形式で保存すれば画像データになるよ。
目的の物かは知らんけど一括で取り出したいだけなら便利
841デフォルトの名無しさん:2012/06/25(月) 19:44:36.89
842デフォルトの名無しさん:2012/06/25(月) 20:00:43.24
ありがとうございました
843デフォルトの名無しさん:2012/06/25(月) 21:02:04.85
馬鹿には無理
844デフォルトの名無しさん:2012/06/26(火) 01:53:46.51
自己解決した問題があったので勝手に忘備録としてかきこ

VBAでスペース入力すると勝手に消去されてしまうor全角文字入力すると勝手に確定されてしまう。

原因:Visual studio 2012インスコして追加されるCOMアドインの「Visual Studio Tools for Office Design-Time Adaptor for Excel」
対処:上記のアドインを削除

すでにあったらごめんなさい
845デフォルトの名無しさん:2012/06/26(火) 22:10:42.87
作品名    全巻数
サザエさん 全4巻
アンパンマン 全5巻

作品数が1000ぐらいあって処理に困っています。
上を下記のようにしたいのですが、どうすればいいですか?
よろしくおねがいします。

作品名   全巻数  巻数
サザエさん 全4巻  第1巻
サザエさん 全4巻  第2巻
サザエさん 全4巻  第3巻
サザエさん 全4巻  第4巻
アンパンマン 全5巻 第1巻
アンパンマン 全5巻 第2巻
アンパンマン 全5巻 第3巻
アンパンマン 全5巻 第4巻
アンパンマン 全5巻 第5巻

846デフォルトの名無しさん:2012/06/26(火) 22:13:01.14
ごめん、意味がわかんない
847デフォルトの名無しさん:2012/06/26(火) 22:24:31.89
>>845
ループ回すだけじゃないの?
具体的に何がわからないの?
848デフォルトの名無しさん:2012/06/26(火) 22:25:53.67
>>845
for文って知ってる?
VBAは使える?
849デフォルトの名無しさん:2012/06/26(火) 22:43:57.68
全n巻の数値部分を切り出してループ回せば良いだけだよな
俺も何が解らないのかが解らない

まさか丸投げでコード書いてくれとか言わないよな?
まあその場合は>>1★5だが
850845:2012/06/26(火) 23:39:51.27
ありがとう、解決しました。
851デフォルトの名無しさん:2012/06/28(木) 09:49:45.56
過疎
852デフォルトの名無しさん:2012/06/28(木) 16:47:49.64
質問すればスレ違いだのなんだので拒否るくせに w
853デフォルトの名無しさん:2012/06/28(木) 17:37:37.85
スレ違いが拒否されるのは当然じゃね?
854デフォルトの名無しさん:2012/06/28(木) 19:27:08.73
スレ違いの質問だと思うならスルーすればすむのに
馬鹿の一つ覚えでスレ違いスレ違い言うから
スレの勢いもとまるし雰囲気も悪くなるってことでしょ

855デフォルトの名無しさん:2012/06/28(木) 20:26:52.48
スレ違いな質問に、スレ違いだと指摘を入れないでくれってのは
スレ違いな質問するお馬鹿さんの自己厨な言い分でしょ

でも、社会に出ればわかると思うが、世の中それではまかり通らない
856デフォルトの名無しさん:2012/06/28(木) 22:14:23.55
スルーしたら、誰からスレ違い指摘するまで無駄な催促が
続くだけだよ。VBAの質問に回答できるレベルの奴なら、
スレ違い質問に回答することの弊害くらい解ってるから、
スレ違い指摘が無くなったからと言って、スレ違いな質問に
回答が付くようになるわけではない。
857デフォルトの名無しさん:2012/06/28(木) 22:29:06.77
スルー無視で催促質問するような連中はスレ違いを指摘したところでどうにもならんと思うんだ。
ちょうどつい最近もExcel総合質問スレでおかしな馬鹿が粘着して暴れたところだが、
ああいう連中は何言っても無駄だから結局スルーが一番ってことだと思う。
858デフォルトの名無しさん:2012/06/29(金) 00:14:59.12
Excel2000での質問です。

ワークシート上に配置したチェックボックスの内容をOLEObjectプロパティで取得して集計するというマクロを組んだのですが、
チェックボックスの数が1200個を越えたところでオートメーションエラーが発生しマクロが動作しなくなりました。

チェックボックスの追加自体は可能なのですが、それらをVBAで操作することができません。
ワークシート上のコントロールの数には上限があるのでしょうか?

また、回避する手段はありますか?
859デフォルトの名無しさん:2012/06/29(金) 00:26:34.49
>>858
仕様に関することはMSに問い合わせないとわかんないと思うよ
他の人に試してもらいたいんだったらせめてブックをアップしないと
860デフォルトの名無しさん:2012/06/29(金) 00:57:10.74
>>858
わからんけど、分割してみたら?
861デフォルトの名無しさん:2012/06/29(金) 00:57:38.36
>>859
ファイルは会社なのでアップは出来ないです。

コントロールを1000個以上配置するような状況は見たことが無かったのでさすがに無理ですかね
やはり仕様ですか・・・

何か別の手段を考えてみます。

レスどうもでした。
862858:2012/06/29(金) 01:08:34.33
>>860
恐らく上限はシート毎だと思うので分割すればいけると思います。
それしかなさそうですね
863デフォルトの名無しさん:2012/06/29(金) 02:46:39.85
>>858
2003で確認してみたけど、1208個以上になるとエラーになるね
でも他の人の指摘通り、別シートにすればまた1200個は作れるから
分散すればどうにでもなる


どうしても分散したくないなら、おそらく行単位でチェックボックス作ってるとかだろうから
Aに列挿入して、A列の書式を「"☑";;"□"」にして
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Column <> 1 Then Exit Sub
  ActiveCell.Value = IIf(ActiveCell.Value = 0, 1, 0)
  ActiveCell.Offset(, 1).Activate
End Sub
なんてコードを入れてやると、擬似的なチェックボックスみたいになる

仕様としては、A列に1(というか正数)が入力されると「☑」が表示され
0だと「□」、その「1 <-> 0」「☑ <-> □」をセルをクリックする度に上記マクロが
切り替えてくれる

あとは
For i = 1 To 5000
  If Cells(i, 1).Value <> 0 Then '・・・・・
Next i
って感じで、チェック入ってる行の取得や操作ができる
864デフォルトの名無しさん:2012/06/29(金) 18:13:53.18
>>854
良く見ると「スレ違い」って言ってる奴は一人も居ない

その心は、皆単に「>>1嫁」って言ってるだけなんだよ

>>1にスレの趣旨とスレ違いの定義が書かれており、
それを読んでない奴に当然の指摘をしているだけで
個人の尺度で勝手にスレ違いを定義してスレ違いだ
なんだと言ってる奴は見あたらない

ついでに言うと、その当然の指摘がなされたことによって
勢いや雰囲気が害された感は全く無いね
見なよ、スレ違いじゃない質問への迅速で真摯な対応
865デフォルトの名無しさん:2012/06/29(金) 22:12:13.82
まだ続けるのかww
866デフォルトの名無しさん:2012/06/30(土) 06:50:06.87
ヒマだし
867デフォルトの名無しさん:2012/07/01(日) 04:29:13.72
でもそんな1000個以上あるチェックボックス見るのも嫌だな
どんな嫌がらせだ
868デフォルトの名無しさん:2012/07/01(日) 11:32:20.19
チェックボックスってマウスが上空を通り過ぎるときに
誤動作で勝手にクリックされたことになってチェックされたり外れたりするよね
ヒューマンインターフェースとしては最悪な部類だと思う
869デフォルトの名無しさん:2012/07/01(日) 11:43:58.14
誤動作までチェックボックスのせいなのか、色々大変だな。

て言うか、そんな誤動作見たことないが。
870デフォルトの名無しさん:2012/07/01(日) 12:18:46.57
誤動作じゃなくて誤操作なwww
871デフォルトの名無しさん:2012/07/02(月) 15:04:09.91
>>863
本当のチェックボックスじゃなくて、セルに>>863みたいなチェックマークのユニコード文字を文字列として入れとけば?

>>867
一度に1000個まとめてチェックするんじゃなくて、随時追加、変更なら有り得る
872デフォルトの名無しさん:2012/07/02(月) 16:27:35.71
50人分の一ヶ月のナニカを一覧表示して、それぞれにチェックを付けたいとき、
50*30=1,500個必要だけどそれは無理だということか。
873デフォルトの名無しさん:2012/07/02(月) 16:38:43.76
Excel ってデータ量に対しては貧弱だよね
874デフォルトの名無しさん:2012/07/02(月) 16:43:37.66
Excelは表計算ソフトだからな

何でも出来すぎる故に本質とは違う用途にも多々使われるが
本質とは違う用途での脆弱性を責めても仕方あるまい
875デフォルトの名無しさん:2012/07/02(月) 17:22:23.24
Excelなんだから、セルの色を変えることでon/offを表現すれば良いんじゃないの?
876デフォルトの名無しさん:2012/07/03(火) 02:40:06.88
>>868
手の震えたおじさんがそんな誤操作してたな。
877デフォルトの名無しさん:2012/07/03(火) 16:26:55.93
webクエリで間違ったURL値を入力すると、
リクエストされたアイテムが見つかりませんでした。『HTTP/1.0 404』
になって、デバッグ画面になるけど、これを回避する方法ない?

例えば間違った値を入力しても、メッセージBOXで「入力された値は存在しません」と出て、
正確なURL値を入力し直したら、しっかり取り込んでくれるようにしたいんだけど。
878デフォルトの名無しさん:2012/07/03(火) 16:37:13.62
Application.DisplayAlerts = False
879デフォルトの名無しさん:2012/07/03(火) 16:38:21.46
Sub トータル()
Dim i As Integer
Range(H17).Activate
If ActiveCell.Value = "非" Then
ActiveCell.Offset(2, 0).Activate

ElseIf ActiveCell.Value = 0 Then
Range("B53").Activate
Range("B53").Value = i
Exit Sub

Else
ActiveCell.Offset(1, 0).Activate
i = i + ActiveCell.Value
ActiveCell.Offset(1, 0).Activate

End If

End Sub

このマクロを実行したら、赤丸に白い×で400という数字の出るエラーになります。
なぜなんでしょうか。
880デフォルトの名無しさん:2012/07/03(火) 16:45:39.10
自己解決しました。

ただのダブルコーテーション抜けでした。
これ、デバックに反応しないから皆様方も要注意ですよ。
881デフォルトの名無しさん:2012/07/03(火) 16:51:15.45
え、これマクロの記録使った奴じゃないの?
自分で書くならActivateする必要なんて全然無いよ。
882デフォルトの名無しさん:2012/07/03(火) 16:51:32.56
bedはベット、bagはバック、debugはデバック
直す気はありませんのであしからず
883デフォルトの名無しさん:2012/07/03(火) 16:54:14.38
>>877
On Error ステートメント
884デフォルトの名無しさん:2012/07/03(火) 17:02:50.79
>>883
kwsk
885デフォルトの名無しさん:2012/07/03(火) 17:29:51.93
>>884
On Error ステートメントの何がわからないのかがわからない
886デフォルトの名無しさん:2012/07/03(火) 17:36:48.73
>>885
えwぐぐってみたけど、それらしいものだったよw
でも>>877の問題を解決するにはどう使ったらいいのかわからないw
887デフォルトの名無しさん:2012/07/03(火) 17:37:54.59
>>881
しかし、selectだけだとセルのvalueが計算されないと聞きました。
888デフォルトの名無しさん:2012/07/03(火) 17:53:07.38
>>882
頑張ってねお爺ちゃん
889デフォルトの名無しさん:2012/07/03(火) 21:51:15.40
>>887
計算するのに何故selectするの?
890デフォルトの名無しさん:2012/07/03(火) 21:52:14.49
あんたをくうためや
891デフォルトの名無しさん:2012/07/03(火) 22:39:08.65
マクロが動いてる様をボーっと眺めるのが楽しいからだよ
892デフォルトの名無しさん:2012/07/03(火) 23:16:06.05
確かに、一行一行削除していくマクロは見てて面白かったな
893デフォルトの名無しさん:2012/07/03(火) 23:20:10.54
セルに♂と♀を大量に配置して、
それぞれモテ度の変数があって、
ランダムに動いて♂と♀のモテ度が大きいほどくっついて
部屋(罫線で囲った部分)に入ってセックスしてるけど
モテ度が低い人はうろうろしてても異性とくっつくことができずまたうろうろする
というマクロを誰か作ってくれませんか?

見てて面白そうだから。
894デフォルトの名無しさん:2012/07/03(火) 23:24:54.58
>>893
モテ度はランダム?
895デフォルトの名無しさん:2012/07/03(火) 23:33:09.05
>>894
そりゃそうだ。
人がたくさんいるんだから。
896デフォルトの名無しさん:2012/07/03(火) 23:35:55.75
>>895
20人ぐらいならキャラ登録のフォーマットを作って(名前、年齢、性格、趣味など)できるかなって思ってね
897デフォルトの名無しさん:2012/07/04(水) 03:17:51.35
ライフゲームみたいなもんか?
898デフォルトの名無しさん:2012/07/04(水) 07:02:41.66
男と女のラブゲームです
899デフォルトの名無しさん:2012/07/04(水) 10:43:08.40
暇だったんで途中まで作ってみた

Classでキャラデータ(性、座標、モテ度)作って、
それをランダムで作ってコレクションに入れ
ここから再帰関数で、
座標(上下左右)のランダム移動、描写変更
移動先上下左右の相手判定、条件一致でセックル
セックル終って元の位置に戻しては、また同組み合わせで
セックル始めるのでランダムな位置に戻す
まで作ってみたけど、♂、♀の表示だけだと
結局ヤリまくってる奴と、童貞でうろうろしてる奴の
区別が出来ないから見ていて面白くない
単に♂と♀のマークがうにょうにょ動いて、偶にセックルして
戻ってくるだけで、戻ってきて数秒したら、もうどいつが
さっきセックルしてた奴か解らない

表示をセル文字ではなくオートシェイプにして
 性:(モテ度)
 セックル回数
とかにして、セックルから数ターンは赤や青に色を変えて段々薄くしていくとか
逆にセックルしないターンが重なると、20ターン毎にグレーが濃くなるとかすれば
面白いかも知れないが、もう飽きた
900デフォルトの名無しさん:2012/07/04(水) 17:37:22.41
これと同じこと、マクロの実行じゃなくてユーザー定義関数(functionプロシージャ?)で
実現できないんでしょうか。

Sub トータル()
Dim i As Integer
Dim j As Integer
Range("H17").Activate
i = 0
j = 0

Do While j < 16

If ActiveCell.Value = "税" Then
ActiveCell.Offset(2, 0).Activate

Else

ActiveCell.Offset(1, 0).Activate
i = i + Val(ActiveCell.Value)
ActiveCell.Offset(1, 0).Activate

End If

j = j + 1
Loop

Range("H53").Activate
i = i * 0.05
Range("H53").Value = i

End Sub
901デフォルトの名無しさん:2012/07/04(水) 17:52:56.20
やっぱり、Valueを取る対象のセルをoffsetでずらしていくことの可否でしょうか。

Activecellではなく、Range(i).valueにして、この場合のiに次々と新しいセルを代入するようにすれば、
といったところでしょうか。
902デフォルトの名無しさん:2012/07/04(水) 18:07:11.35
いやどうにでもなるけどさ、やりたいこと(関数の内容)は
コードではなく日本語で説明しようよ

特に君は、まだコードだけで要求仕様を正しく伝えられるレベルにはないんだからさ

不適切なコード晒しても、正しい要望は伝わらないぞ
903デフォルトの名無しさん:2012/07/04(水) 18:35:43.79
>>900
問題なく実現できるよ
904デフォルトの名無しさん:2012/07/04(水) 19:44:21.74
じゃあコード組んでやれよ。クチだけくんたちw
905デフォルトの名無しさん:2012/07/04(水) 21:40:47.21
>>904
煽るだけならお前も同類だよ
906デフォルトの名無しさん:2012/07/04(水) 22:21:14.49
ユーザ定義関数をワークシートで使おうと思ったらセルの更新あたりで制限かかったような気がしたが
907デフォルトの名無しさん:2012/07/04(水) 22:33:35.35
というかユーザー定義関数で、関数の定義から外れた事しょうとしてる奴って結構多い
関数は、いくつかの値を与えて、なんらかの値を返すもの
引数で与えてないセル情報を関数自ら取得しにいったり、値を返す以外のシート操作するとかは
本来「関数」としてあってはいけないこと
908デフォルトの名無しさん:2012/07/04(水) 23:13:10.85
>>900
Sub test()
Call total
End Sub

Function total()

Dim i As Integer
Dim j As Integer
i = 0
j = 0

Do While j < 16
If Sheet1.Cells(17 + j, 8).Value <> "税" Then
i = i + Val(Sheet1.Cells(17 + j + 1, 8).Value)
End If
j = j + 2
Loop

Sheet1.Cells(53, 8).Value = i * 0.05
End Function

これでおk?
909デフォルトの名無しさん:2012/07/05(木) 12:20:18.92
関数でLoopなんて、動くの?
しかもSheet1.Cells(53, 8).Value = i * 0.05 て・・・
total = i * 0.05 の間違いだろ。
Subから呼び出さなきゃ動かないんでは関数じゃないし。

ウソマクロで初心者を騙すなよw
910デフォルトの名無しさん:2012/07/05(木) 13:58:58.93
>>909
何言ってんの???
911デフォルトの名無しさん:2012/07/05(木) 14:41:39.59
何自演してんの?
912デフォルトの名無しさん:2012/07/05(木) 23:53:02.86
Excel2007

列数が変化する表で全列を対象にする重複行削除がしたいです。
ヘルプを読むとRemoveDuplicatesをパラメータなしで
実行すれば可能と読めたのですが実行しても変化なしでした。
Range(範囲).RemoveDuplicates

パラメータなしの方法か、Columnsパラメータに渡すArrayを
動的に変化させる方法はないでしょうか。
913デフォルトの名無しさん:2012/07/06(金) 00:16:12.49
動的配列なんて初歩の初歩だろ
914デフォルトの名無しさん:2012/07/06(金) 05:46:22.10
動的配列なんて初歩の初歩だろ
915デフォルトの名無しさん:2012/07/06(金) 07:52:14.59
>>914
大事なことみたいだから、もう2〜3回書いとけば?
916デフォルトの名無しさん:2012/07/06(金) 09:16:43.15
動的配列なんて初歩の初歩だろ
917デフォルトの名無しさん:2012/07/06(金) 09:19:38.79
>>908
わたくしは、関数と全く同じに使えるユーザ定義関数が作りたいのです。
具体的には、マクロを実行しなくても自動的に税込合計が出る伝票を作りたいのです。
あれからいろいろ試しましたし、あなたのそれも試しましたが、そういうふうにはいきませんでした。
918デフォルトの名無しさん:2012/07/06(金) 09:55:52.55
マクロを呼ぶ関数を作れば良いんでね?
919デフォルトの名無しさん:2012/07/06(金) 10:11:02.01
この場合のarrayは配列じゃなくてrangeじゃね、見てないけど
普通に該当エリアのcolmun渡せばいいんじゃないか、適当だけど
920デフォルトの名無しさん:2012/07/06(金) 10:29:10.24
今ちょっとしらべた
対象rangeしてから重複削除すんだから、そのメソッド内のパラメーターだけ変化させてどうすんだ

range範囲の方を動かせよと

あとこれ、2010以降もメソッド実装されてんの?
921912:2012/07/06(金) 11:52:13.03
>>920
A2からC10にデータを入れて↓を実行しても変化がありません。
ActiveSheet.Range("A2:C10").RemoveDuplicates パラメータなし

パラメータを指定する場合↓を渡せば動作するのですが
このArrayを動的に変化させる方法がわかりません。
Columns:=Array(1, 2, 3)

↓のようにパラメータを指定すると「プロシージャの呼出または引数が不正です」と出ます。
Dim V As Variant
V = Array(1, 2, 3)
ActiveSheet.Range("A2:C10").RemoveDuplicates Columns:=V, Header:=xlNo
922デフォルトの名無しさん:2012/07/06(金) 14:49:09.92
知らんけどそれvに入ってるものが違うんじゃないか
923デフォルトの名無しさん:2012/07/06(金) 15:42:16.44
>>921
Columns:=(V)
Columns:=はVariant配列。ReDimなどで動的配列処理可能。
924912:2012/07/06(金) 16:11:20.81
>>922-933
できました!
(V)とする必要があったのですね。
Vの中身は用意できるので解決できそうです。
ありがとうございました。
925デフォルトの名無しさん:2012/07/06(金) 23:29:31.69
>>918
マクロって、動的なもんですよ。関数は静的。
どのみち、数値を変えたときにはF5が必要になるんでは。
926デフォルトの名無しさん:2012/07/07(土) 00:24:50.55
Excel+VBAでQRコードを表示したいです。
入力されたテキストからQRコードを作って、
正方形に配置したセルを白黒に塗り分ければ良いと思うのですが、
具体的にどこから手をつければ良いのかわかりません。
927デフォルトの名無しさん:2012/07/07(土) 00:33:00.30
>>926
手間を考えたらOCX買った方が安いとおもうぞ
928ggrks:2012/07/07(土) 00:37:21.70
929デフォルトの名無しさん:2012/07/07(土) 00:38:45.52
>>926
QRコードの仕様書を読むところから始めればいいと思うよ
そんなに難しいもんじゃないから
930デフォルトの名無しさん:2012/07/07(土) 00:39:35.81
>>926
これフリーみたい
http://www.psytec.co.jp/freesoft/
931ggrks:2012/07/07(土) 00:42:14.22
932デフォルトの名無しさん:2012/07/07(土) 00:43:15.16
>>926
セルの背景色を黒にする方法なら、あまりに初歩的なので
「ググれ」と言いたいところながらスレ違いではないから教えるけど、
QRコードマップを作成するところまでは
>>1★3,★4に該当するスレ違いなので、自分で調べてね

因みにOCXではなくDLLならフリーのもあるぞ
参照設定ではなくDeclare宣言して使うやつね
933デフォルトの名無しさん:2012/07/07(土) 00:45:35.94
なんだこの入れ食い状態w
934デフォルトの名無しさん:2012/07/07(土) 00:47:03.07
できました。
みなさんありがとうございました。
935デフォルトの名無しさん:2012/07/07(土) 00:56:00.16
いくらでも出てくるのに何で自分でググらないの?
http://www.swetake.com/qr/
936デフォルトの名無しさん:2012/07/07(土) 00:57:52.03
937デフォルトの名無しさん:2012/07/07(土) 01:15:49.79
938デフォルトの名無しさん:2012/07/07(土) 11:22:50.38
ワークブックを保護しても、マクロプログラムは動きますか?
939デフォルトの名無しさん:2012/07/07(土) 11:42:01.43
まずやってみてから、質問しようよ。

ここは、ム板なんだし。
940デフォルトの名無しさん:2012/07/07(土) 15:27:42.60
>>939 動きましたー。 でもブックの保護は思っていたよりへぼい・・。
941デフォルトの名無しさん:2012/07/07(土) 15:33:25.15
>>940
> でもブックの保護は思っていたよりへぼい・・。

でしょ、そう言うところも結構重要だったりするから、自分でやることは大切だと思う。

やってみてわからなかったら、やったことと出た現象をちゃんと書いて質問するといいよ。
942デフォルトの名無しさん:2012/07/07(土) 16:32:36.70
VBAばっかり使ってる奴ってVBA無しで出来ることまでVBAでやろうとするから迷惑だよな
943デフォルトの名無しさん:2012/07/07(土) 17:06:13.92
2元管理にならない方がいいときもあるだろ
944デフォルトの名無しさん:2012/07/07(土) 17:23:50.79
勤め人は引継ぎの時のことを常に意識しておくものだ
945デフォルトの名無しさん:2012/07/07(土) 17:25:04.91
人が書いたコードなんて読みづらいし読む気がしない
946デフォルトの名無しさん:2012/07/07(土) 17:26:28.88
自分は勉強のために読むなぁ
新しいことを覚えることも多いし
947デフォルトの名無しさん:2012/07/07(土) 17:30:33.75
他人の書いたソースでも目を通して
読みづらいものは糞だと思えば良いし
読み易いものは参考にすれば良いだけ
948デフォルトの名無しさん:2012/07/07(土) 17:50:03.30
見たら目が腐るコードもたくさんあるけどな


俺?・・・・うん、腐ったコードはたくさん書いたなぁ・・・・・。
949デフォルトの名無しさん:2012/07/07(土) 17:57:51.33
自分のコードは恥ずかしくて見せたくない
950デフォルトの名無しさん:2012/07/07(土) 18:09:31.94
見せるなんてもってのほか。

自分で見るのもはばかられるのに。
951デフォルトの名無しさん:2012/07/07(土) 18:11:28.60
日々見られてたら恥ずかしくて生きていけないよ
952デフォルトの名無しさん:2012/07/07(土) 18:20:04.03
ここは、恥ずかしがり屋さんが多いスレですね。
953デフォルトの名無しさん:2012/07/07(土) 19:29:59.44
優しくしてね(はぁと
954デフォルトの名無しさん:2012/07/08(日) 03:04:50.33
インデントが一切なくてわけの分からないソースがあったんだけど
インデントしてみたらかなりよく出来てたってのがあったなあ
頭の中で出来上がってたのかなあ
その人インデントなしでガシガシ書いてたからなあ
955デフォルトの名無しさん:2012/07/08(日) 03:06:57.92
わざと可読性落としてたりして
956デフォルトの名無しさん:2012/07/08(日) 05:13:12.51
ジャヴァscリptの悪口はそこまでだ
957デフォルトの名無しさん:2012/07/08(日) 06:59:17.50
>>954
COBOLER とか FORTRAN で育った人とか?
958デフォルトの名無しさん:2012/07/08(日) 09:25:32.27
>>957
読売新聞の4コママンガファンだが、呼んだ?
959デフォルトの名無しさん:2012/07/08(日) 12:16:42.55
親父ギャグで反応する限り間違いなさそうだな
960デフォルトの名無しさん:2012/07/08(日) 13:50:52.27
961デフォルトの名無しさん:2012/07/09(月) 05:57:36.67
Win.xp Excel2003を主に使っています
やりたいことはマクロ・VBAで
作業中のブック内のシートを、それぞれのシートのあるセルの内容で判別して非表示(表示)にすることです
例えば
Sheet1のセルB3に値なし
Sheet2のセルB3にAという文字
Sheet3のセルB3に1という数字
Sheet4のセルB3に値なし が入っている開いているブックがあって、マクロを実行すると
セルB3になにも値が入っていないシート(Sheet1とSheet4)が非表示になる‥というものです
(特に次のシートを選んで次々に処理主る‥というのが自分にはできません)
もうひとつ、非表示にしたあとにすべてのシートを非表示から表示にもどすマクロを教えてください
962デフォルトの名無しさん:2012/07/09(月) 06:06:35.62
>>961
組み合わせたまえ
http://support.microsoft.com/kb/142126/ja
http://officetanaka.net/excel/vba/sheet/sheet06.htm

Worksheetsコレクションからworksheetオブジェクトを指定
というやり方を覚えるとステップアップだぞ
さらにはブックの指定とか

自動記録を使ったせいで
対象がアクティブなことが前提のせいで
変な挙動をするのよくあるよなあ
963デフォルトの名無しさん:2012/07/09(月) 07:02:57.53
早朝にありがとうございます
出勤しますので後にチェックさせていただきます
ありがとうございました
964デフォルトの名無しさん:2012/07/09(月) 08:30:24.16
蚊取りレーザービーム
http://www.youtube.com/watch?v=wSIWpFPkYrk
http://www.nicovideo.jp/watch/sm2856708
人間の目に入る心配はないのかな
965デフォルトの名無しさん:2012/07/09(月) 16:35:49.17
>>964
それお笑い番組の中で流れた嘘通販ビデオだし
966デフォルトの名無しさん:2012/07/09(月) 19:22:05.92
うめようず
967デフォルトの名無しさん:2012/07/10(火) 07:37:23.64
VBA固有の話じゃないけど埋めネタとして質問

FileSystemObjectってあるじゃないですか
私はあれ結構多用するんですが、
複数のプロシージャで個別にローカルに宣言するのと
パブリックで宣言してコードの最初にインスタンス作るのと
どっちが良いかってあるのでしょうか?
ローカルに宣言するとプロシージャをコールするたびに
インスタンス作って、抜けたら破棄されて、またコールしたら作られて、…
てな具合で、なんか無駄というかもったいない印象を受けるんですけど、
その辺どうなのか分かる人います?
968デフォルトの名無しさん:2012/07/10(火) 08:58:06.02
>>967
その質問にFileSystemObjectは関係ない気がするけど・・・
グローバルに宣言する方法と、ローカルに宣言してパラメータで渡す方法と
両方試してみたらわかるんじゃないの?
969967:2012/07/10(火) 09:13:07.97
>>968
そうですね。

まぁFSOに限ったことじゃないんですけど、
とりあえず話しの取っ掛かりで汎用的なたとえとして思いついたのです。

本質的には何度も使うインスタンスをプロシージャ単位で作成したり破棄したり、
というやり方と、
プロジェクト全体で一個使いまわすのとではどのように違うのか、
どんなメリット・デメリットがあるのか、
あるいはオブジェクト指向の考え方なり構造化プログラミングの流儀なり、
とにかくなんと表現するのか分からないのですがそういうものでは
どのように捉えているのか、などというかなりざっくりした疑問なのです。

まぁ、スレの埋めネタなんでこれが分からないとどうしても困るってわけでもないですし。

で、両方試すって言うか、コーディング自体はどっちでも出来ますけど
それによってどんな風に違いが出るのかなんて判別する方法が思いつかないです。

今のPCの性能ではコーディングの多少の違いでは
リソース不足とか実行速度の低下とか、はては動作が不安定になるとか、
そういうのってほぼ起き得ないでしょうから
そういう明らかな違いでもないと私の知識では判別できないのです。
970デフォルトの名無しさん:2012/07/10(火) 10:24:05.16
どんなオブジェクトもグローバルにするとバグの元
今のマシンパワーなら実行時間も含めてリソース不足になることはあんまりないから
プロシージャの中でいちいち破棄した方が安全
971デフォルトの名無しさん:2012/07/10(火) 10:29:20.50
シングルd
972デフォルトの名無しさん:2012/07/10(火) 11:03:17.97
その手の話ならググれば山ほど情報出てくるでしょ
VBAに関係ないんだから他所でやってくれ
973967:2012/07/10(火) 11:10:46.53
>>970
あっさり片ついちゃったよ…
もっと話題を膨らまそうよ

いや、うそですごめんなさい
答えてくれてありがとう

>>971
ぐぐったらJavaとかPHPとかで出てくる話みたいですね

私はVBAしか知らないから他の言語知ってる人から見たら
馬鹿みたいなこと聞いてるんですよね、きっと。
やっぱりJavaとかCとか勉強しようかなぁ。
今んとこVBAだけで困ってないけど。
974デフォルトの名無しさん:2012/07/10(火) 11:15:12.22
>>972
いや、埋めネタなんでそんな怒んないでよ。
VBAに関係ないとかそんな四角張ったこというほどじゃないじゃん
もう残り30切ってんだしさっさと埋めて次スレいこうぜ
975デフォルトの名無しさん:2012/07/10(火) 11:22:24.52
FSOみたいに直下メンバにプロパティを殆ど(全く?)持たないもの、つまり
下位オブジェクトはまだしも、インスタンス自体が設定的なものを持たない場合は
グローバル宣言とプロシージャ宣言の差は分かり辛いかもしれないが、
RegExpみたいにインスタンス自体が設定次第で動作を変えるものだと解りやすいと思う

例えばRegExpではIgnoreCase、Global、Multilineプロパティは既定では全てFalseなので
グローバル宣言したRegExpをプロシージャAで使い、その際MultilineをTrueにする
次に同じくグローバルのRegExpをプロシージャBで使い、こちらは規定値(全False)で良いので
Patternしか変更しなかったら、実はMultilineが既定のFalseではなく、プロシージャAで
変更したままのTrueになっていて誤動作する

まあ人為的ミスではあるけど、こういうことが起こりやすい

たから俺の場合、RegExp、ADODB.Stream、XMLDOMなんかは大抵モジュールレベルで宣言してる
まあクラスの場合はモジュールレベルで宣言することもあるけど、これは見た目は上部の宣言エリアで
宣言していてグローバル宣言に近く見えるかもしれないけど、実質的な用途上は
プロシージャ宣言の方に近い使い方してるし
976967:2012/07/10(火) 11:30:24.92
>>975
ありがとうです。
こういうのが聞きたかったのですよ。
大変勉強になりました。
(もちろん>>970とか>>971とかも参考になりましたよ。)
みんなありがとう
977デフォルトの名無しさん:2012/07/10(火) 11:35:28.62
FSOって、(非インスタンスメソッドという意味での)クラスメソッドの塊なんだから、
グローバルに一個作って使い回せば良いよ。
978967:2012/07/10(火) 11:46:58.63
>>977
ありがとう
FSOに関してはグローバルでも問題ない(少ない)わけですね。

それにしても、最初にFSOを例に挙げたのはやはり不適切だったみたいですね
FSOならグローバルに宣言して使用しても問題ないけど、
他のものだと必ずしもそうではない、ということを>>975ではじめて知りました。
一般的事例と思って特殊な例を挙げていたとはお恥ずかしい限りです。
979デフォルトの名無しさん:2012/07/10(火) 18:44:23.14
食に関するフランスのサイト「MARABOUT」では、日本の伝統的な菓子として、和菓子を紹介している。

■「仏国 食べ物」に関する他の記事 - サーチナ・ハイライト
  筆者は、日本の食事では、デザートはついていないことがあるが、これは日本人は甘いものが好きで
はないということではないと説明。日本人は、伝統的には茶席で甘いものを食べる。この茶会はフォーマルな
場のため、和菓子も洗練された雰囲気を持っていると述べている。

  和菓子の一番の特徴は、その外見だという。春なら桜、冬なら白いうさぎなど、季節感を打ち出した
形状や色使いなどで、移り行く時を表現していると説明。

  味については、チョコレートなどフランスのお菓子と比較すると、かなり淡い味わいだとつづっている。
和菓子にはあずきから作られたあんこが使用されていることがあるが、フランス人にとってはこれも決
してしっかりした味わいではないと伝えている。
 
  このため、和菓子はフランスのデザートや菓子とはまったく別の食べ物だと考えて味わうのが良い
と勧めている。少し苦味のある茶を飲みながら、心穏やかにゆっくりと味わうことで、和菓子の持つ
淡く繊細な味わいとともに、季節感のある形状や色など、視覚的にも楽しめるとつづっている。 

  記事では、フランスでは和菓子はまだ全国展開のスーパーには並んでいないが、徐々に人気が
高まりつつあると紹介されている。フランスの菓子と異なるコンセプトを持つ和菓子に、フランス人の
関心が寄せられている様子がうかがえる。

http://news.searchina.ne.jp/disp.cgi?y=2012&d=0710&f=national_0710_026.shtml
980デフォルトの名無しさん:2012/07/10(火) 19:10:28.90
うめようず
981デフォルトの名無しさん:2012/07/11(水) 04:00:40.06
うめ
982デフォルトの名無しさん:2012/07/11(水) 10:01:12.81
参考になった
雑談としてもそこらへんの質問や回答よりよっぽどいい
ウメネタっていうかtipsだね
質問がないときはこういうのもいいなあ。
983デフォルトの名無しさん:2012/07/12(木) 09:02:39.98
うめ
984デフォルトの名無しさん:2012/07/12(木) 11:50:30.24
セルに順番に装飾をしていくとメモリ不足エラーが出ます
どうしたら回避出来ますか?
985デフォルトの名無しさん:2012/07/12(木) 12:04:03.55
>>984
コード書いてくれないと具体的な状況が分からない
ただ、他の事例で
大量のブックを開いて別のブックにコピーしてたらメモリ不足になったことがあるんだけど、
そのときはループの中に(ループ一回でブック一個処理するコードだった)
Doeventsを挿入したら改善されたことがあるよ。

根拠というか詳しい理由は分からないけど、
メモリ不足のエラーってPC自体の物理メモリ搭載量に関係なく
エクセル内部の処理で解放されないメモリ領域が溜まっていって発生するような感じだから、
Doeventsによってエクセルの内部でガベージコレクション的な操作が行われるんじゃないかな?

ダメ元ぐらいで試してみて。
986デフォルトの名無しさん:2012/07/12(木) 12:06:47.96
>>984
これ?バージョンは?
http://support.microsoft.com/kb/971594/ja
http://answers.microsoft.com/ja-jp/office/forum/office_2010-excel/excel2010%E3%81%AB%E3%81%A6%E3%83%A1%E3%83%A2/16c3bc85-972d-4d99-9c37-352a9ea4bdf7
2000とかだと回避方法なかった気がするなあ。
一旦保存して開き直すとか
987デフォルトの名無しさん:2012/07/12(木) 13:54:35.63
うめ
988デフォルトの名無しさん:2012/07/12(木) 14:59:08.21
for の中で set c = cells(hoge, fuga) として
c.Value = xxx みたいなを何度も実行していたので GC 関係が原因っぽいです
cells(hoge, fuga).Value = xxx と書き換えたらすっかり治ったみたいです
何か理不尽ですけどそういうものだと思うことにします
本当にありがとうございました
989デフォルトの名無しさん:2012/07/12(木) 15:50:45.35
梅益代
990デフォルトの名無しさん:2012/07/12(木) 15:53:31.45
梅梅
991デフォルトの名無しさん:2012/07/12(木) 16:15:32.84
うめようず
992デフォルトの名無しさん:2012/07/12(木) 16:28:00.08
|....,,__
|_::;; ~"'ヽ
| //^''ヽ,,)
|  i⌒"
| ∀`) < 誰もいない きのこるならいまのうち
|⊂
| ノ
      _,,,......,,__
  /_~ ,,...:::_::;; ~"'ヽ
 (,, '"ヾヽ  i|i //^''ヽ,,)
   ^ :'⌒i    i⌒"
      |( ´∀`) < きのこ のこーのこ げんきのこ ♪
      |(ノ   |つ
      |     |
     ⊂ _ ノ
       ""U
      _,,,......,,__
  /_~ ,,...:::_::;; ~"'ヽ
 (,, '"ヾヽ  i|i //^''ヽ,,)
   ^ :'⌒i    i⌒"
     (´∀` )| < エリンギ まいたけ ブナシメジ ♪
    ⊂|  (ノ |
      |     |
      ヽ _ ⊃
      .U""
|
| ミ
| ミ  サッ!
| ミ
|
993デフォルトの名無しさん:2012/07/12(木) 20:16:08.92
うめ
994デフォルトの名無しさん:2012/07/12(木) 20:20:36.26
でっていう
995デフォルトの名無しさん:2012/07/12(木) 20:42:32.37
ほう
996デフォルトの名無しさん:2012/07/13(金) 03:59:10.08
うめ
997デフォルトの名無しさん:2012/07/13(金) 06:01:39.84
学ぶ力には三つの条件があります。

第一は自分自身に対する不全感。
自分は非力で、無知で、まだまだ多くのものが欠けている。
だからこの欠如を埋めなくてはならない、という飢餓感を持つこと。

第二は、その欠如を埋めてくれる「メンター(先達)」を探し当てられる能力です。
メンターは先生でもお母さんでも、ネットの中の無名の人でもいい。
生涯にわたる師ではなく、ただある場所から別の場所に案内してくれるだけの
「渡し守」のような人でもいいのです。
自分を一歩先に連れて行ってくれる人は全て大切なメンターです。

第三が、素直な気持ち。
メンターを「教える気にさせる」力です。オープンマインドと言ってもいいし、
もっと平たく「愛嬌(あいきょう)」と言ってもいい。

「学ぶ姿勢」のある人は、何よりも素直です。
つまらない先入観を持たないから、生半可なリアリズムで好奇心を閉ざさない。
素直な人に聞かれると、こちらもつい真剣になる。知っている限りのことを、
知らないことまでも、教えてあげたいという気分になる。そういうものです。

以上、この三つの条件をまとめると、

「学びたいことがあります。教えてください。お願いします」

という文になります。これが「マジックワード」です。
これをさらっと口に出せる人はどこまでも成長することができる。
この言葉を惜しむ人は学ぶことができないのです。
学ぶ力には年齢も社会的地位も関係がありません。
>>994さんも、早く学ぶ力を身に付けてください。
998デフォルトの名無しさん:2012/07/13(金) 06:26:14.42
次スレ見てて思ったんだが、
結局テンプレどうとかで騒いでるやつって全員荒らしだよね
誰が荒らしなのかは人それぞれ見方が有るけど、
荒らしをスルー出来ない奴のせいでどんどんスレが流れていく。
結局スレのこととかテンプレとかどうでも良くて
自分が相手を言い負かしたいだけの連中しか書き込めない流れになっちゃった。
たかがテンプレ論議ごときでスレ全体を質問しづらい雰囲気にして
いったい誰が得するんだろ?
むしろ改変派の彼の思う壺じゃないか

999デフォルトの名無しさん:2012/07/13(金) 06:51:11.48
いや、逆だな
何一つとして彼の思惑通りにはいってない
彼は完全に翻弄されているだけ

今は荒れていてどっちつかずだが、しばらくして冷めれば
結局保守派の思惑通りの結果になってるのは目に見えてる

彼は目先の自己満足に拘って、完全に大局を見誤った
1000デフォルトの名無しさん:2012/07/13(金) 06:51:46.01
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。