Excel VBA 質問スレ Part29

このエントリーをはてなブックマークに追加
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 質問スレ Part28
http://toro.2ch.net/test/read.cgi/tech/1359607536/

関連スレ:VBAなんでも質問スレ
http://toro.2ch.net/test/read.cgi/tech/1342087380/
2デフォルトの名無しさん:2013/03/31(日) 09:30:13.76
3デフォルトの名無しさん:2013/03/31(日) 09:40:50.10
>>1
死ねよアスペ
4デフォルトの名無しさん:2013/03/31(日) 11:24:01.80
まぁ別に>>1がこの世の何にも優先される絶対的真理って訳でもないし、テンプレ盾に訳分からんこと言ってきたって無視すれば良いだけの話。
5デフォルトの名無しさん:2013/03/31(日) 12:52:33.92
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
6デフォルトの名無しさん:2013/03/31(日) 13:56:41.55
>>1
7デフォルトの名無しさん:2013/03/31(日) 15:13:33.85
>>1は前スレで★5を消すか皆で議論している最中に消されるのが嫌で
焦ってこのスレを立てることにより、テンプレを守る必要がない大義名分を与えてしまった。馬鹿な奴だ。
8デフォルトの名無しさん:2013/03/31(日) 15:19:26.85
どんだけ悔しがってるんだw
とりあえず涙拭けよ
9デフォルトの名無しさん:2013/03/31(日) 15:23:14.34
あーあ、アスペのせいで
このスレもなんでもありになっちゃったね。
10デフォルトの名無しさん:2013/03/31(日) 15:28:17.38
これまでも何でもありだったし、これからも何でもありでいいじゃん。
11デフォルトの名無しさん:2013/03/31(日) 15:48:58.08
じゃそういうことで
12デフォルトの名無しさん:2013/03/31(日) 15:51:05.69
もう一個のVBAスレとは何だったのか
13デフォルトの名無しさん:2013/03/31(日) 15:52:41.61
クレクレウェルカム荒らしウェルカム桃白白可愛い
14デフォルトの名無しさん:2013/03/31(日) 15:59:54.19
話題無いから燃料投下
VBAとVB6のアーキテクチャってどっかで共有されてるの?
言語仕様そっくりだとは思いつつそのへん意識した事無かった
15デフォルトの名無しさん:2013/03/31(日) 16:03:25.11
これから何かあるたびに
>>1のせいで、とか
あの時のアスペのせいでって
言われるんだろうな。自業自得だけど。
16デフォルトの名無しさん:2013/03/31(日) 17:11:34.24
>>1叩いてるの一人だけかよ
どんだけw
17デフォルトの名無しさん:2013/03/31(日) 17:17:13.17
調子にのるな馬鹿
18デフォルトの名無しさん:2013/03/31(日) 17:23:17.12
余程悔しかったんだろうな
なんとか>>1を悪者にしようと、必死で印象操作してる

露骨&粗忽すぎて、>>1叩いてる奴の方が自分の陰湿さを晒してるだけなのが笑えるがw
19デフォルトの名無しさん:2013/03/31(日) 17:23:33.49
>>16
死ね
20デフォルトの名無しさん:2013/03/31(日) 17:25:11.62
この人、荒して皆に迷惑掛けてるって自覚あるのかな
21デフォルトの名無しさん:2013/03/31(日) 20:59:25.01
ある列の値の入った最下行を取得するのは、どうするのが一番確実でしょうか?
End(xlUp).Rowだと書式だけ残った使用済みのセルで引っ掛かってしまいます
End(xlUp).Rowから一つずつ上のセルの確認するしかないのでしょうか
22デフォルトの名無しさん:2013/03/31(日) 21:01:06.76
以上、ここまでテンプレ
23デフォルトの名無しさん:2013/03/31(日) 21:15:29.58
>>21
この間の人?
End(xlUp)って書式引っかかったっけか。
もう一度引っかかったとこらへんの範囲を選択して
Deleteキーで消してみても駄目?
24デフォルトの名無しさん:2013/03/31(日) 21:19:07.30
>>22
旬の食材を薄力粉の液体につけて
180度くらいに熱したゴマ油にいれて熱を通してから天つゆにつけて食う
25デフォルトの名無しさん:2013/03/31(日) 21:31:03.85
>>23
この前の人がどなたか存じ上げません、別人です
すみません、書式だけ残った場合では引っ掛かりませんでした

=if(iserror(hogehoge),''',a1)みたいな数式を値で貼付けていた場合に
見た目が空のセルでもEnd(xlUp).Rowで引っ掛かってしまう様です
26デフォルトの名無しさん:2013/03/31(日) 21:41:48.30
>>978
ああ、ExcelVBAではなくて、AccessVBAか。それならその使い方にむいてるかもね。
Excelから、AccessDBに連携させてんじゃなくて、AccessVBAで単独構築ってことだよね。

>>996
保守が誰もできないVBA資産を残すリスクが高いって話だよ。

金の計算がからむのは、さすがに怖くて残せない。利率がかわっても、修正することすら
気づかず使いつづけそうだし。コードに利率は記載せず、誰にでも修正できるようシートの
利率TBLを参照する形にしたって、気づかない人は気づかない。

後任はまだよくても、後任の後任のPCスキルがどの程度なのか不明なわけだし。

ちなみに今月、自分が、同僚に真顔で聞かれたこと。

「フォルダって、どうやって新しく作るの?」

・・・VBA資産を残すのは、リスキーすぎる職場だろう。
27デフォルトの名無しさん:2013/03/31(日) 21:46:53.47
>>24
天ぷら
28デフォルトの名無しさん:2013/03/31(日) 22:45:19.66
>>25
有効な値のあるセルを見つけたいってことかな。
Columns(1).Find("*", LookIn:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
29デフォルトの名無しさん:2013/03/31(日) 23:12:56.71
>>28

Dim targetColumn as Integer
targetColumn = 1

Dim resultRange as Range
set resultRange = Columns(targetColumn).Find("*", LookIn:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlPrevious)

Dim resultRow as Long

If resultRange Is Nothing Then
resultRow = 1
Else
resultRow = resultRange.Row
End If

出来ました、ありがとうございます
ワイルドカードを逆順で検索、思いつきませんでした
30デフォルトの名無しさん:2013/03/31(日) 23:15:04.14
>>29
小汚いプログラムだなw
31デフォルトの名無しさん:2013/03/31(日) 23:19:31.12
>>30
小綺麗な見本をいただけますか!
32デフォルトの名無しさん:2013/03/31(日) 23:28:47.45
>>31
>>1★5
33デフォルトの名無しさん:2013/03/31(日) 23:31:21.29
>>31
全部大文字で書け!
34デフォルトの名無しさん:2013/03/31(日) 23:33:11.28
>>32
書きましたのに、小汚いコードを

>>33
どういう事ですか
35デフォルトの名無しさん:2013/03/31(日) 23:33:51.28
>>34
プログラムが汚いw
36デフォルトの名無しさん:2013/03/31(日) 23:36:49.54
>>35
あ、はい
37デフォルトの名無しさん:2013/03/31(日) 23:41:30.71
>>36
書き直せw
38デフォルトの名無しさん:2013/03/31(日) 23:41:45.78
>>37
嫌です
39デフォルトの名無しさん:2013/03/31(日) 23:46:01.64
>>38
as Rangeって何?
40デフォルトの名無しさん:2013/04/01(月) 00:09:36.90
29に優しくしてやれ。
このスレ、私見だが、女も多い気がするし。29がそうだとはいわないが。

vba = 事務職が主に使う言語 =事務職の大半は女 の構図から連想してみた。
41デフォルトの名無しさん:2013/04/01(月) 00:12:56.00
カワイイなら俺が全部コード書いてやる
42デフォルトの名無しさん:2013/04/01(月) 00:21:31.25
濡れた
43デフォルトの名無しさん:2013/04/01(月) 01:15:11.25
Dimは先頭にまとめるべき論争の再来になるから嫌だ
44デフォルトの名無しさん:2013/04/01(月) 01:23:06.28
汚いってそういう事なの?
45デフォルトの名無しさん:2013/04/01(月) 01:33:18.42
結果を変数に入れてるのがなあ
こういうのは関数にするだろ普通は
46デフォルトの名無しさん:2013/04/01(月) 07:17:44.11
いや、これ自体が関数の中身で、
その変数が最後に戻り値設定されていれば別段問題ない。
47デフォルトの名無しさん:2013/04/01(月) 07:19:54.10
>>43
そんな論争が以前あったのか
48デフォルトの名無しさん:2013/04/01(月) 15:21:01.96
変数や定数の値を別のブックから参照する方法がありましたら教えてください。
49デフォルトの名無しさん:2013/04/01(月) 16:03:13.89
参照設定
50デフォルトの名無しさん:2013/04/01(月) 23:00:36.18
ものすごく初心者な質問ですみません…
Sheet1にあるマクロ実行ボタンを押して、その結果をSheet2に表示する方法を教えてください。
どうしても、Sheet1結果が出るか、新しいシートに出るかしかできないのです。
よろしくお願いします。
51デフォルトの名無しさん:2013/04/01(月) 23:01:47.07
Sheet2.Cells(1,1) = "けっか"
52デフォルトの名無しさん:2013/04/01(月) 23:02:50.90
Sheets("Sheet2").Cells(1,1) = "けっか"
53デフォルトの名無しさん:2013/04/01(月) 23:23:18.46
>>51-52
できましたー!
このスピードで答えていただき本当に助かりました!
ありがとうございました!
54デフォルトの名無しさん:2013/04/02(火) 07:52:45.58
このスピードで
ワロタ
55デフォルトの名無しさん:2013/04/03(水) 13:19:39.78
すみません、自分で考えたのですが解決できずお力を貸して下さい。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

If Intersect(Target, Range("D4:D10")) Is Nothing Then Exit Sub
Select Case Target.Value
Case Is = ""
Target = "あ"
Case Is = "あ"
Target = "い"
Case Is = "い"
Target = ""
End Select

If Intersect(Target, Range("B4:B10,C4:C10")) Is Nothing Then Exit Sub
frmCal.Show

End Sub

今の状態では、B4:B10,C4:C10のセルを選んでもカレンダーがでません。助けてください orz
56デフォルトの名無しさん:2013/04/03(水) 13:27:05.71
>>55
「あ」とか「い」が何やってるのかわからないけど、これじゃ駄目なの?

if target.column >= 2 and target.column <= 4 and target.row >= 4 and target.row <= 10 then
  frmcal.show
end if
57デフォルトの名無しさん:2013/04/03(水) 13:36:22.67
>>56
解決しました!ネ申
58デフォルトの名無しさん:2013/04/03(水) 17:22:06.71
>>57
> If Intersect(Target, Range("B4:B10,C4:C10")) Is Nothing Then Exit Sub
> frmCal.Show
>
> End Sub

の何がまずかったのかな?
59デフォルトの名無しさん:2013/04/03(水) 17:44:45.55
聞いてる本人に聞くなよw
60デフォルトの名無しさん:2013/04/03(水) 17:45:59.53
>>58
「あ」とか「い」の部分がなくても
> If Intersect(Target, Range("D4:D10")) Is Nothing Then Exit Sub
があるから絶対にfrmCal.Showは実行されない。
それがまずい。
61デフォルトの名無しさん:2013/04/03(水) 17:47:05.38
何がまずくてもいいじゃん
あきらかにまずいだろ
前スレの何が勉強になったの?とか言ってた奴か?
62デフォルトの名無しさん:2013/04/03(水) 17:55:32.19
未だに悔しがってるとか、どんだけw
63デフォルトの名無しさん:2013/04/03(水) 18:10:43.53
もういいだろ
64デフォルトの名無しさん:2013/04/03(水) 18:19:51.44
>>61
俺も解らなかったから聞いただけなんだが。
解決したのならどこがまずかったのか理解できたと思うんだけど。
65デフォルトの名無しさん:2013/04/03(水) 18:23:28.13
>>64
なあ、それ本当に知りたいことなのか?
何かお前にプラスになるのか?
66デフォルトの名無しさん:2013/04/03(水) 18:38:28.63
できました!ありがとう。
6758:2013/04/03(水) 19:00:44.35
>>60
絶対にfrmCal.Showが実行されないという理由がわかりません。
68デフォルトの名無しさん:2013/04/03(水) 21:46:52.67
>>67
D列以外をダブルクリックしたら、最初のIfだけで終わっちゃうじゃん
69デフォルトの名無しさん:2013/04/03(水) 22:22:57.47
ていうか、うちの環境だとちゃんと判定してくれるけど
70デフォルトの名無しさん:2013/04/03(水) 22:24:35.64
>>68
ということは、>>56のレスをふまえると、最初のIfか最後のIfのRangeプロパティの
範囲のどちらかが間違っていたということですね。
ありがとうございました。
71デフォルトの名無しさん:2013/04/03(水) 23:06:07.09
マジで言ってんのか?
もうVBA以前の問題だわ。
72デフォルトの名無しさん:2013/04/03(水) 23:10:42.52
なんで?
73デフォルトの名無しさん:2013/04/03(水) 23:16:58.74
この中で男以外は帰ってください。
残ったなかで女以外は帰ってください。
誰も残ってないんですなぜだかわかりません。

って言ってるようなもんだぞ。
74デフォルトの名無しさん:2013/04/03(水) 23:29:31.73
性別があやふやな人もいるじゃないですか
75デフォルトの名無しさん:2013/04/04(木) 01:52:44.23
このスレで女以外は帰って下さい。
そして可愛い子以外は帰って下さい。
76デフォルトの名無しさん:2013/04/04(木) 02:02:32.49
おまえって欲望に忠実だな
77デフォルトの名無しさん:2013/04/04(木) 06:54:09.66
デ・ルモンテの法則
78デフォルトの名無しさん:2013/04/04(木) 13:44:42.40
VBAで画面キャプチャ後bmpとかpngで保存するとか可能ですか?
79デフォルトの名無しさん:2013/04/04(木) 13:54:02.16
可能だよ
VB6でのやり方がそのまま使えるのでお好きにどうぞ
80デフォルトの名無しさん:2013/04/04(木) 14:04:49.81
>>79
返信ありがとうございます。
ちょいとサンプルコード探してみたいと思います。
81デフォルトの名無しさん:2013/04/04(木) 15:05:45.29
>>79
探したのですがコードが見当たりません。
何かわかりやすいソースコード御持ちじゃないですか?
82デフォルトの名無しさん:2013/04/04(木) 15:19:09.45
持ってますお
83デフォルトの名無しさん:2013/04/04(木) 15:30:25.65
>>82
貼り付けお願いできませんか?
8483:2013/04/04(木) 15:50:07.05
Option Explicit

'ファイル保存ダイアログ
Private Function GetSaveFileName() As String
Dim sfile As String

sfile = Application.GetSaveAsFilename(fileFilter:="JPGファイル (*.jpg), *.jpg")
If sfile = "False" Then
GetSaveFileName = ""
Else
GetSaveFileName = sfile
End If
End Function

Private Sub CommandButton1_Click()
Dim rg As Range
Dim cht As Chart
Dim fina As String
8583:2013/04/04(木) 15:50:37.62
'保存ファイル名を取得
fina = GetSaveFileName

If fina <> "" Then
'選択範囲を取得
Set rg = Selection
'選択した範囲を画像形式でコピー
rg.CopyPicture appearance:=xlScreen, Format:=xlPicture
'画像貼り付け用の埋め込みグラフを作成
Set cht = ActiveSheet.ChartObjects.Add(0, 0, rg.Width, rg.Height).Chart
'埋め込みグラフに貼り付ける
cht.Paste
'JPEG形式で保存
cht.Export Filename:=fina, filtername:="JPG"
'埋め込みグラフを削除
cht.Parent.Delete
End If
End Sub
8683:2013/04/04(木) 15:51:34.76
これを保存ダイアログなしで自動でtestで保存。指定したセル範囲をキャプチャに改造して頂けませんか?
87デフォルトの名無しさん:2013/04/04(木) 16:09:36.80
甘えすぎ
8883:2013/04/04(木) 16:19:20.62
>>87

じゃあ範囲は自分で、できたから

保存ダイアログなしで自動でtestで保存。教えてよ
89デフォルトの名無しさん:2013/04/04(木) 16:38:58.05
http://blog-imgs-46-origin.fc2.com/c/h/a/chaigon/CapWnd.txt
※拡張子が txt となっていますが、実体はZIPファイルです。ダウンロード後、拡張子を zip に書き換えて解凍してください。
※CapWnd.basファイルをVBAProjectから「ファイルをインポート」すればOK!

使用例1 : 画面全体の画像をファイルに保存する
Public Sub SavePictureOfScreen()
    Dim pic As IPictureDisp
    Set pic = CaptureScreen()
    Call SavePicture(pic, "C:\screen.bmp")
End Sub

使用例2 : アクティブウィンドウの画像をファイルに保存する
※保存した画像の一部がおかしい不具合あり。原因は調査中。
Public Sub SavePictureOfActiveWindow()
    Dim pic As IPictureDisp
    Set pic = CaptureActiveWindow()
    Call SavePicture(pic, "C:\activewindow.bmp")
End Sub
90デフォルトの名無しさん:2013/04/04(木) 17:42:44.07
コード作成依頼に対応するなよ。
91デフォルトの名無しさん:2013/04/04(木) 17:45:56.00
>>83
こういうお願いはこっちにしろ。

VBAなんでも質問スレ
http://toro.2ch.net/test/read.cgi/tech/1342087380/
92デフォルトの名無しさん:2013/04/04(木) 17:53:44.09
>>91
誘導ありがと。修正もここでしてもらると思ってたわ。
失礼しました
93デフォルトの名無しさん:2013/04/04(木) 18:05:07.89
>>92
>>1★5を死ぬまで読んでろ。
94デフォルトの名無しさん:2013/04/04(木) 18:22:45.23
>>92
男が書くコードは修正しません
95デフォルトの名無しさん:2013/04/04(木) 18:45:13.45
私オカマなんたけど
96デフォルトの名無しさん:2013/04/04(木) 18:51:04.19
事務のパソコンが壊れたため1台新しくwin8を買ったため
excelを2003から2010に変えました

それでもう一台別のXPパソコンのほうも2010にしたんだけど
win8の2010でシート上のactivXのテキストボックスを作って保存したものを
XPの2010で開くとなんとテキストボックスのサイズもフォントサイズも一回りでかくなってるという
気持ち悪い現象が起きてます。

なんかバグっぽいけど治す方法とかありましたら教えてください。
97デフォルトの名無しさん:2013/04/04(木) 20:48:20.40
>>96
>>1★5
98デフォルトの名無しさん:2013/04/04(木) 21:09:42.76
99デフォルトの名無しさん:2013/04/04(木) 21:52:30.50
>>96
星五つだってよ、よかったな!
100デフォルトの名無しさん:2013/04/04(木) 23:45:58.20
>>1★5に反発してた子が、>>1★5を推す奴はキチガイという印象操作のために
>>1★5に該当しない案件にまで>>1★5を指摘ししてネガキャンしてるのか

そこまで見えてくると、逆に>>1★5に反発してる子の方が
どんだけキチガイで姑息で陰湿で浅学浅慮なのか、ありありと解ってしまうな