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


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

Excel VBA質問スレ Part9



1 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 15:42:51 ]
ExcelのVBAに関する質問スレです

前スレ pc11.2ch.net/test/read.cgi/tech/1219673793/

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

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

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

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

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

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


684 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:37:43 ]
何かにCPUパワーを喰われてるとか
「遅くなった」のが実は0.01秒程度の差だったとか
もし自作ならドライバがちゃんと入ってないとか

685 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 04:47:10 ]
CommandButtonでClickイベントが呼ばれたときに、そのボタンのキャプションを取得したいのですが、
よい方法はありませんでしょうか?

ネットのフォーラムなどの情報では、
 ActiveSheet.Buttons(Application.Caller)

 ActiveSheet.DrawingObjects(Application.Caller)
などでオブジェクトを取得できるとあるのですが、
プロパティがない、などと言われます。
代替手段はないものでしょうか?

環境:Excel2007



686 名前:685 mailto:sage [2009/01/27(火) 04:54:33 ]
すいません。そもそも _ClickイベントやMouseDownなどではApplication.Callerは使えないですね。
どうしたらよいのだろうか

687 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 05:11:01 ]
>>686
押したボタンのクリックイベントに適当に書くのが普通じゃない?




688 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 05:23:04 ]
>>685
コマンドボタンには2種類あるでしょ。
挿入を選ぶとコントロール(部品)の一覧が出てきて
上段が「フォーム コントロール」、下段が「ActiveX コントロール」ってなってるやつ。
下段の方のボタン使ってる?

689 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 05:38:13 ]
>>685
「マクロの登録」で登録されたマクロはコマンドボタンのクリックで呼び出される
Sub test()
  MsgBox ActiveSheet.Buttons(Application.Caller).Caption
End Sub

690 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 05:43:14 ]
>>688
マクロが登録できるのはフォームコントロールの方だぞ

691 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 06:11:34 ]
>>686
そもそもCommandbutton1のClickイベントで呼ばれるのはCommandbutton1_clickなんだから、
Private sub commandbutton1_click
  Msgbox commadbutton1.caption
End sub
で、いいんじゃねーの?
クラスモジュール使って擬似コントロール配列にしてるとしても、どうにでもなんじゃん
アホなの?

692 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 07:45:56 ]
>>690
両方出来るぞ



693 名前:685 mailto:sage [2009/01/27(火) 10:53:06 ]
教えて! Watch Excel VBA Application.caller エラー2023について
oshiete1.watch.impress.co.jp/qa4024188.html

ここの方法でいけましたが、もう少しスマートな方法がないかな?と。

>>687 >>691
10個あったら、10個分イベントと名前の組をかかないといけないですよね。
冗長性があります。

>>689
ActiveXの方では無理っぽいです・・・

>>688
ActiveXの方を使っています。
やりたいことはボタンのキャプションを取得することなので、
できるのであればフォームコントロールの方でもよいのですが・・・

694 名前:685 mailto:sage [2009/01/27(火) 10:57:08 ]
URL間違えました。こちらでした。

moug|即効テクニック | コマンドボタンのクリックイベント内でボタン名を取得するには
www.moug.net/tech/exvba/0150059.htm


695 名前:デフォルトの名無しさん [2009/01/27(火) 16:07:22 ]
シート保護はprotectで非保護はunprotectでいいですか?出先なので簡単な質問ですが。

696 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 16:13:46 ]
>>695
いんじゃね

697 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 16:19:40 ]
ありが十匹!!

698 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 20:14:57 ]
>>693
一つのプロシージャに1行ずつ書き足すのが冗長性があると言ってるってことは、
擬似コントロール配列を使ってクラスモジュールで処理してるとしか考えられない訳だから、
取りあえず今使ってるソース出せ
そしたら改良してやるから

699 名前:デフォルトの名無しさん [2009/01/29(木) 09:07:22 ]
すみません初心者ですが質問です。
Msgboxに「月度を入力してください」と表示
→インプットboxに月(1〜12までの数字)を入力する画面を出して尚且つ、
1〜12以外の数字または文字を入力したら、「1〜12の数字を入力してください」
というエラーメッセージが出る→最後にまたMsgboxが出てきて「○月度ですね」と
表示するにはどう組めばいいでしょうか。
○には入力した月数を出したいのですがよろしくお願い致します。

700 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 09:08:34 ]
>>699
VB初心者スレへどうぞ。

701 名前:デフォルトの名無しさん [2009/01/29(木) 11:00:04 ]
>700
すみません、VBAの初心者スレは探しましたが無いみたいです。
どなたかお願い致します。

702 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 12:15:27 ]
>>699
流れは大体できてるように見えるのだが・・・
「インプットboxに入れられたものを数値にして1〜12だったら抜ける」ってことを
Do〜Loopを使って組めばいいだけ



703 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 14:29:53 ]
超初心者です。

何個か開いたファイルの中から、特定のファイルを探す。
という単純な事がしたいのですが
ファイル名が例えば「経理ファイル200812.xls」のように、
月によってYYYYMMの部分が変わってしまいます。
開いたファイルの中から、ファイル名に「経理ファイル」が付いているファイルをアクティブにしたい場合
どのようにすればよいでしょうか。
ワイルドカードが使えないかと思ってやってみているのですが
よろしくお願いします。


704 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 15:01:32 ]
dim b as workbook
for each b in workbooks
if b.name like "経理ファイル*" then
b.activate
end if
next

705 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 15:53:30 ]
>>704

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

706 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 18:39:44 ]
質問です
h = 1
Do Until Cells(h, 6).Value = ""
If Cells(h, 3).Value = Cells(h + 1, 3) Then
Cells(h, 6).Value = Cells(h, 6).Value + Cells(h + 1, 6).Value
Rows(h + 1).Delete
End If
h = h + 1
Loop
2行のときは1行にできるのですが、3行以上のときも1行にしたい場合どのようにすればよいでしょうか

707 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 18:57:21 ]
>>706
最初に見つけた位置のhを保存しといてそこに入れていく

708 名前:707 mailto:sage [2009/01/29(木) 19:00:08 ]
違ったな
「Deleteしたときはhをインクリメントしない」かな?

709 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 19:45:32 ]
End Ifの前にh = h - 1で解決しました
ありがとうございます

710 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 23:41:33 ]
>>701
頭だけでなく眼が悪いんでしょうか。
VBA ( V B A ) のスレではなく、VB ( V B ) のスレへどうぞ。

711 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 23:59:42 ]
OS XP
EXCEL2003

dteProductDay=format(date,゙yyyy/m/d゙)
cells(1,1)=dteProductDay
というように、システムの日付を整形してセルに表示させたいのですが、
フォーマット通りに表示されず1/29/2009となります。何が悪いのでしょうか。

712 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 00:09:19 ]
>>711
書式を変えるか、または文字列で



713 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 02:12:09 ]
>>711
的外れかも知れないが
表示するセル自体の書式を適切に設定しないとそうなる。
そのフォーマットだと、変数に代入された値は2009/1/29となるので
エクセルはこれを日付と認識し内部的に日付のシリアル値として値を保持するのでは。

たとえばdteProductDay=format(date,゙yyyy m d゙)
とするとセルには「2009 1 29」と表示される。


714 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 12:23:35 ]
OS-XP
Office2003

Shiftキーを押しながらドラッグでセルの移動ができますが、
Shiftキーを押さなくても常にセルを移動することはできますか。

もしくはExcel上でのみ、Windowsの固定キー機能のように
Shiftキーを押しっぱなしにすることはできないでしょうか。

キーボードでなら、たとえば上に移動したい場合
ActiveCellを取得して、真上のセルと置換していけばできそうなんですが。

715 名前:711 mailto:sage [2009/01/30(金) 20:50:12 ]
>>712-713
ありがとん

cells(1,1)= "'" & dteProductDayでうまくいきました。


716 名前:7777 mailto:sage [2009/01/30(金) 22:31:30 ]
エクセルでシート1で例えばF団体をA列の1で書いてそれを
シート3のD列の3に自動記入させるマクロは分かるんだけど

シート1でF団体がA列の1以外になっても自動記入できるマクロある?
あるなら教えて

717 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 23:07:32 ]
日本語で質問できない人お断り

718 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 23:08:56 ]
>>716
Private Sub Worksheet_Change(ByVal Target As Range)
                        ~~~~~~~
どこに書き込まれたかはTargetという変数に入ってる

719 名前:7777 mailto:sage [2009/01/30(金) 23:13:26 ]
718さん
意味がわかりません


720 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 23:18:17 ]
日本語読めない人お断り

721 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 23:31:13 ]
Worksheets("シート3").Range("D3") = Worksheets("シート1").Range("A1")
みたいにセル名が固定ならわかるけど、コピー元のセルが不定の場合はどうするかって質問でしょ?

722 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 23:53:13 ]
F団体ってなんだろ…新しい宗教か?



723 名前:7777 mailto:sage [2009/01/31(土) 08:51:59 ]
>>721
うん!!そのとおりです

724 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 09:19:07 ]
>>723
A1とA2の両方に値がある場合はどちらを採用するの?

725 名前:7777 mailto:sage [2009/01/31(土) 09:52:09 ]
>>724
1月23日 団体名  内容
       F団体
       

このときF団体がAの2列に書いてるけど
Aの2列にD団体を記入して
Aが3列になってもシート3のまとめシートには自動記入できるかなぁって

726 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 10:06:03 ]
>>725
1対1対応ならなんの問題もないでしょう?

それから行と列を区別して書いてたほうが他人に伝わりやすいですよ。
ABCは列
123は行


727 名前:7777 mailto:sage [2009/01/31(土) 10:42:31 ]
A列からD列の10行までの範囲がコピー範囲のときは
どうマクロ組むの?

728 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 11:15:45 ]
>>727
マクロ記録してみたら?

729 名前:7777 mailto:sage [2009/01/31(土) 11:34:10 ]
できました!
ありがとうございました。

730 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 11:39:37 ]
俺が質問を理解できないうちに解決か

731 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 13:05:52 ]
>>730
VBAを使うやつは問題をミクロにとらえ過ぎている。
もっとマクロなレベルで考えるんだ。
コピー元とコピー先の対応がどうなっているかだけ理解したらできるかできないか判断できるだろ?


732 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 15:18:32 ]
EXCELを使うのは本来はすんごく高度なスキル(=異常な思考様式)が必要
そうでもない人、もしくはそういう発想をするのがヤな人がVBAを使うのだが、
VBAは最高級のBASICの一つで、これだけでも結構重量物
(VB.NETはこれは超ベテランが使う言語で、これからいきなり始めるのだ
けはやめたほうがいい)
VBAの入門に向いているのはExcelよりかAccessだね。Excelだと動作
は遅いはExcelと基本的に合わないわでロクなことないね。



733 名前:7777 mailto:sage [2009/01/31(土) 15:24:34 ]
いやできてないんだけど
マクロ記録とは?

734 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 16:13:28 ]
もういいから帰ってくれ!


735 名前:7777 mailto:sage [2009/01/31(土) 17:09:51 ]
ひどすぎ

736 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:10:34 ]
>>725
マクロの前に日本語を勉強した方が…
でも一応想像してみた

シート1
年月日  団体名  内容
1/23   F団体  陳情
1/26   D団体  年始挨拶
1/27   A団体  予算ヒア
みたいに日付ごとの日報が書いてあって
団体ごとに各シートに抽出したいんじゃないのか?
でもこれだったらわざわざ聞いてこないよな。

737 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:50:16 ]
確かにそれだったらその辺のOL捕まえた方が手っ取り早いな。

738 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 19:48:09 ]
長文ですがお許しを
最近クラスモジュールを勉強しているんですがプロパティの設定で
Letがうまくいきません。

WindowsXPSP3、Excel2003
クラスモジュール内容
Private m_TestValue As String

Public Property Get TestValue()
TestValue = m_TestValue
End Property

Public Property Let TestValue(ByVal New_Value As String)
m_TestValue = New_Value
End Property

で標準モジュールに
Public Sub Test()
Dim Test As Class1
Set Test = New Class1

Test.TestValue = "testtest"
MsgBox Test.TestValue
End Sub

として実行するとプロパティプロシージャの定義が一致していないというコンパイルエラーが出ます。
これはなぜでしょうか?

739 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 20:07:43 ]
Public Property Get TestValue() As String
もしくは
Public Property Let TestValue(ByVal New_Value As Variant)

Getの戻り値の型と、Letの最後の引数の型
つまり、ひとつのプロパティの型は一致させてください


740 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 21:01:13 ]

なるほど!Property Getの戻り値も型を指定する必要があるんですね。
m_TestValue変数の型を指定していてそれを返しているから
てっきりそれだけでいいと思ってた。

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

741 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 00:36:34 ]
ブックAにブックBへのハイパーリンクを張って、ブックBの
Private Sub Workbook_Open()
内で色々と処理をしているのですが、
ブックA内のハイパーリンクをクリックした時にブックBを表示させずにその後の処理を実行する方法はありませんか?


742 名前:デフォルトの名無しさん [2009/02/02(月) 00:57:32 ]
初心者です。教えてください。
今フォームを使ってデータの抽出をするプログラムを作っています。
データは階層構造になっています。
仮に3階層あるとして、フォームにその3階層をプルダウンで指定してやると条件に一致したデータが表示されるようにしたいのです。
その際、上位階層をプルダウンで指定すると、その上位階層が包含する下位階層のみが
プルダウンで表示されるようにしたいのですが、どうしたらいいのでしょうか。
フィルタオプションを使用しようと思うのですが、可能でしょうか?
困っています。教えてください。



743 名前:デフォルトの名無しさん [2009/02/02(月) 01:47:00 ]
こんばんは。すみません、エクセルの質問させてください。

ブックAのシート1のA1にブックBのシート1のA1からA5を、足した結果をだしたい場合、どの様に入力すればよいですか?
どうかおしえてください。お願いします。



744 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 04:53:09 ]
>>741
ハイパーリンクでは、ブックを非表示で開くことは出来ない
ハイパーリンクをボタンとかに変えて、ブックAのVBAからブックBを非表示で開きましょう
因みにVBAからブックを非表示で開く方法は、幾らでも情報有るから自分で調べましょう>>1★5

>>742
入力規則のリストの連動ならまだしも、Excel用ではなく汎用ActiveXのコンボボックスの連動は
Excelに関係ない話なのでスレ違いです>>1★3〜★4
とりあえずVB6用の方法がほとんどそのまま使えるし、サンプルも転がってる

>>743
WorksheetFunction.Sum
中に入る式は、普通にシート上で入力する式と同じだから解るよな?
まあ解らなくてもスレ違いだから自分で調べろってことになるが

745 名前:741 mailto:sage [2009/02/02(月) 21:58:13 ]
>>744
741です。
お答えありがとうございます。
うーん、やはりハイパーリンクでは無理でしたか。

私の作った処理をもう少し詳しく言うと
ハイパーリンクをクリックするとそのセルがアクティブになることを利用して
ブックBのPrivate Sub Workbook_Open() の中で
Workbooks("B.xls").Worksheets(1).Cells(1, 1) = ActiveCell.Offset(0, 1)
みたいな感じでハイパーリンクの隣のセルの情報を転記するという処理を行っていたのですが。

例えばA1とA2のセルの上にセルと同じ大きさのボタンを作り、両方のボタンに同じマクロを登録して
A1の上に作ったボタンをクリックするとB1の情報を転記し、A2の上に作ったボタンをクリックするとB2の情報を転記する
という処理って作れますか?
ハイパーリンクみたいにクリックするとその下のセルがセレクトされるみたいな処理が作れればいいんですけど。

746 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 00:52:18 ]
>>745
作れるよ
ボタンに限らずオブジェクトには配置されてるセルアドレスを返すプロパティがあるから
それが何かくらいは自分で調べようね

747 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 07:39:03 ]
>>742
Private Sub
Select change
AddItem

748 名前:741 mailto:sage [2009/02/03(火) 23:43:31 ]
セルを左クリックするとマクロが起動する処理って作れませんかね?
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
というのを使うと目当てのセルをクリックしただけでマクロを起動できるようになったんですけど
エンターを何回か押していたらその目当てのセルまでアクティブが移動してしまって望まないタイミングでマクロが起動されてしまいます。
そうではなくあくまでクリックした時にマクロが起動できるようにしたいんですけど、いい方法ありませんか?

749 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 00:04:20 ]
>>748
WorkSheetにはクリックイベントがないから、
セルに同じサイズのボタンを貼り付けるぐらいしかないんじゃ

750 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 00:38:21 ]
ワークブックにWorkbook_SheetBeforeDoubleClickてイベントに有るし
Workbook_SheetBeforeRightClickっていうのも有るし、シート名を取得して実行すれば良いのでは?

751 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 01:35:00 ]
>>750
普通「クリック」と言えば左シングルクリックのことだろう。
右クリックやダブルクリックイベントでどうしろと。

752 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 02:43:54 ]
それ言い出すと、>>749
 セルをクリックで処理したいって言ってるのに
 ボタンクリックでどうしろと
ってことになるな。

俺は>>749>>750も代用法のひとつとして有用な情報だと思うけどね。
>>749も書いてるが「セル」の「左(シングル)クリック」イベントは無いから、
対象が「セル」であること(ボタンなどを配置しなくても済むこと)を優先するなら>>750
「左シングルクリック」で操作できること(ダブルクリックしなくて済むこと)を優先するなら>>749
ってことでいいじゃん。

俺の場合、目当てのセルが複数ならダブルクリックイベントで、ひとつならボタンで妥協するかな。



753 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 02:55:30 ]
ボタンでやってみたけど、色を透明にしておいてもクリックするとなぜか灰色になって
下のセルが見えなくなっちゃうんだな。XPと2003の環境で。
代用案として出すなら、イメージコントロールを貼り付けて透明なGIFを貼った方がよさそう。

754 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 16:22:39 ]
ボタンの代わりか・・・

つラベル

755 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 20:43:07 ]
なぜ“左”クソツクなのか。右でいいやん。

756 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 20:48:34 ]
作った本人が使うんならいいけど、人が使う物なら標準と異なるUIは避けるべきかと

757 名前:741 mailto:sage [2009/02/04(水) 20:59:06 ]
741です。
皆さん色々とありがとうございました。
とりあえずボタンでやってみようと思いますが、
745でも言ってるように複数張ったボタンの内一つを押した後それに応じたセルを指定する方法が
いまだにわからない状態です。
とりあえずもうちょい調べてみます。

758 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:05:26 ]
>>757
VBAにはコントロール配列が存在しないから、
ボタンをたくさん貼ればボタンの数だけ独立したイベントハンドラが作られる。
だから、ボタンごとに各セルの処理をずらずらっと並べて書けばいい。
冗長だし面倒だけど。

さもなくば、ボタンの座標とセルの座標を比較して、重なった位置のセルを探し出すとか。

759 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:30:54 ]
疑似コントロール配列使おうよ
クラスの作り方工夫すれば、疑似コントロール配列にした上で
処理は同じだが対象は違うというようにも出来るし、
そもそもボタンがどのセル上に配置されてるかは取得できるし

760 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:53:42 ]
質問です
Sheets("sheet1").Select
Dim MyRange As Range
Set MyRange = Columns("A").Find(What:=Sheets("Sheet2").Range("A1"))
いくらやっても検索値がnothingになってしまいます
どこを変えればうまく検索できますか

761 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:03:34 ]
Sheets("Sheet2").Range("A1")に入っている値が
Sheets("sheet1")のA列に存在しないとnothingになるけど


762 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:28:03 ]
>>760
別にどこも間違ってないから、原因として考えられるのは、本当に探してるデータが存在しないか、検索条件が違ってるか、だな。
それでもうまくいかない時は、Findメソッドの検索条件を省略せずにきちんと書いてみる。一例を書くとこんな感じ。

Set MyRange = Columns("A").Find(What:=Sheets("Sheet2").Range("A1"), LookIn:=xlFormulas, LookAt:= xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, MatchByte:=False, SearchFormat:=False)



763 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:33:13 ]
Flash持ってるなら、Flashの透明ボタン張るのが一番良いと思う。


764 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:03:24 ]
質問です。
Dim v(1 To 10) As Long
とするのと
Dim a(1& To 10&) As Long
とするのはどっちがいいですか?


765 名前:764 mailto:sage [2009/02/05(木) 00:05:42 ]
すいません。
vとaとなりましたが、どっちもvです。

766 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:08:28 ]
Columns("A")もまずいな。
シートモジュールに書いてるかも知らんしな。
ちゃんとシートくらいは指定汁.

767 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:09:34 ]
>>764
この場合、配列のサイズはコンパイラが解釈するので型指定は意味がないと思う

768 名前:764 mailto:sage [2009/02/05(木) 00:23:21 ]
>>767
そうなんですか。ありがとうございます。


769 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 11:43:29 ]
OS XP / EXCEL2003 です。
仮に「A」というファイルがあったとして「A」のVBAから、
別のファイル「B」の「ActiveX コントールのコンボボックス」の値を参照することは可能でしょうか?


770 名前:デフォルトの名無しさん [2009/02/05(木) 15:25:43 ]
sheet1を選択している状態で以下のマクロを実行しても
sheet2のAAAという文字列がBBBに置換されません

sheet2ではなく、sheet1のAAAが置換されます

Worksheets("Sheet2").Select
Cells.Replace What:="AAA", Replacement:="BBB", MatchByte:=False

771 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 15:31:17 ]
>>770
1行ごと(処理ごと)にいちいち対象となるシートを書かないとActiveSheetが処理される。
Worksheets("Sheet2").Cells.Replace What:="AAA", Replacement:="BBB", MatchByte:=False
または、
Worksheets("Sheet2").Select
Selection.Cells.Replace What:="AAA", Replacement:="BBB", MatchByte:=False
みたいな感じにしなきゃいけない。
確認してないからオブジェクトのエラーが出るかもしれないけど、基本的な考え方としてはこんなところ。

772 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 15:33:20 ]
>>769
可能です



773 名前:769 mailto:sage [2009/02/05(木) 18:35:27 ]
>>772 ご返答ありがとうございます。
もし良かったら何か例文を載せて頂けないでしょうか。

774 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 19:10:09 ]
フォーム上に配置したWEBブラウザコントロールを印刷したいのですがうまくいきません。
印刷はフォームのPrintFormメソッドを使っています。
コマンドボタン・ラベル・テキストボックス・コンボボックス等は印刷されるのですが
WEBブラウザが配置されているところは空白になってしまいます。

検索してみたところAPIを使用する方法を見つけたのですが理解することができませんでした。
APIはブラウザ表示内容を画像として取得する方法だったのですが
それをイメージコントロールに貼り付けるという流れになるのでしょうか?

よろしくお願いします。

775 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 03:46:41 ]
>>773
>>1★5の通り、ここはヒントだけで自分でコード書ける人用のスレなので例文は書きません
とりあえずヒントとしてBのブックオブジェクトさえ作ってしまえば、あとはBから取得するのと変わらないと言っておく

>>774
>>1★3,4
Excelと直接関係ない汎用コントロールの話はスレ違いです

776 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:08:58 ]
あのさー、何度も言ってるけど>>1はスレの合意じゃないから。
誰かが勝手に書いて、次スレ立てるときにコピペしてるだけ。
気に入らない発言はスルーしろよ。

777 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:34:26 ]
>>770
だから標準モジュールじゃなくシートモジュールに書いてるんだろ?
SHeet2のシートモジュールに書いてればCellsの親はSheet2なんだよ。
いちいちSelectしないコーディングを心がけてりゃそういう間違いはおかさない。
Worksheets("Sheet2").Select
Cells.Replace What:="AAA", Replacement:="BBB", MatchByte:=False
こんなことしないで
Worksheets("Sheet2").Cells.Replace What:="AAA", Replacement:="BBB", MatchByte:=False
と書けば標準モジュールでもシートモジュールでもユーザーフォームのモジュールでも
ThisWorkBookのモジュールでも無関係に処理できる。
>>760も同じ間違いだ・

778 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:37:42 ]
ちょっとミスった。
>>777の3行目は
Sheet1のシートモジュールに書いてればCellsの親はSheet1なんだよ。
に訂正。
>>771も嘘書いちゃいかん。
ActiveSheetが処理されるとは限らないんだよ。


779 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:42:36 ]
>>776
気に入らない発言はスルーしろよ。

780 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:42:54 ]
フォルダ「A」に
「A」「1」「2」「3」というファイル名のExcelワークシートが4つあります
ファイル「A」のcell(P1:DY1850)の数式をコピーし「1」「2」「3」のcell(P1:DY1850)に自動的に貼り付けていきたいのですが
どのようにすればいいのでしょうか?
よろしくおねがいします

781 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:43:52 ]
>>779
これ言っとかないと、>>1を理由にスレ違い認定したがる奴が増えるかもしれんからな。

782 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:48:13 ]
>>780
まずマクロの記録をやってみろ



783 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 11:41:22 ]
★使ってるのは多分一人。
気に入らないなら無視すれ。

784 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 12:32:05 ]
>>1のテンプレが無かった頃から、同じ様な内容の指摘は多々あったので
指摘が>>1★n形式か、毎回文章で書かれるかの違いでしかないんだけどね

反抗期の子って、対象が形(テンプレ)になると妙に反発心燃やしたりするけど
そもそもテンプレったって、書いてあることを端的に見れば
「バージョン情報書け(★1)」「他分野の話を持ち込むな(★2〜4)」「丸投げするな(★5)」「マクロの記録くらい試せ(★6)」
だけ

これに反発してる子って、バージョン情報不要だと思ってるの?
COMやOCXやWin32APIの話から、VB言語で組める全てのアルゴリズムの話までオールOK?
そして丸投げも大歓迎で、マクロの記録なんて試すくらいなら、俺が親切丁寧にコード書いちゃるってか?

実のところはそんなこと無いだろ?
結局形有る物に反発したい年頃なだけで、根底は>>1の内容に賛同してるんだろ?
上記3つともOKなら、「>>1は絶対のルールじゃない」とか「気に入らないなら無視しろ」とか
みみっちいこと書くのではなく、それこそ「気に入らない"スレ違い指摘"は無視」して、ちゃっちゃと答えちゃえば
スレ違い指摘の意味すら無くせるので一番効果的なはずなのに、それをしないのが何よりの証拠


と、暇なので長々と書いてみたが、「気に入らないなら無視すれ。」
言ってる本人が出来なかったら恥ずかしいからなw






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

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

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