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/
4 :
デフォルトの名無しさん:2013/03/31(日) 11:24:01.80
まぁ別に
>>1がこの世の何にも優先される絶対的真理って訳でもないし、テンプレ盾に訳分からんこと言ってきたって無視すれば良いだけの話。
5 :
デフォルトの名無しさん:2013/03/31(日) 12:52:33.92
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
>>1は前スレで★5を消すか皆で議論している最中に消されるのが嫌で
焦ってこのスレを立てることにより、テンプレを守る必要がない大義名分を与えてしまった。馬鹿な奴だ。
どんだけ悔しがってるんだw
とりあえず涙拭けよ
あーあ、アスペのせいで
このスレもなんでもありになっちゃったね。
これまでも何でもありだったし、これからも何でもありでいいじゃん。
じゃそういうことで
もう一個のVBAスレとは何だったのか
クレクレウェルカム荒らしウェルカム桃白白可愛い
話題無いから燃料投下
VBAとVB6のアーキテクチャってどっかで共有されてるの?
言語仕様そっくりだとは思いつつそのへん意識した事無かった
これから何かあるたびに
>>1のせいで、とか
あの時のアスペのせいでって
言われるんだろうな。自業自得だけど。
調子にのるな馬鹿
余程悔しかったんだろうな
なんとか
>>1を悪者にしようと、必死で印象操作してる
露骨&粗忽すぎて、
>>1叩いてる奴の方が自分の陰湿さを晒してるだけなのが笑えるがw
19 :
デフォルトの名無しさん:2013/03/31(日) 17:23:33.49
この人、荒して皆に迷惑掛けてるって自覚あるのかな
ある列の値の入った最下行を取得するのは、どうするのが一番確実でしょうか?
End(xlUp).Rowだと書式だけ残った使用済みのセルで引っ掛かってしまいます
End(xlUp).Rowから一つずつ上のセルの確認するしかないのでしょうか
以上、ここまでテンプレ
>>21 この間の人?
End(xlUp)って書式引っかかったっけか。
もう一度引っかかったとこらへんの範囲を選択して
Deleteキーで消してみても駄目?
>>22 旬の食材を薄力粉の液体につけて
180度くらいに熱したゴマ油にいれて熱を通してから天つゆにつけて食う
>>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資産を残すのは、リスキーすぎる職場だろう。
>>25 有効な値のあるセルを見つけたいってことかな。
Columns(1).Find("*", LookIn:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
>>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
出来ました、ありがとうございます
ワイルドカードを逆順で検索、思いつきませんでした
40 :
デフォルトの名無しさん:2013/04/01(月) 00:09:36.90
29に優しくしてやれ。
このスレ、私見だが、女も多い気がするし。29がそうだとはいわないが。
vba = 事務職が主に使う言語 =事務職の大半は女 の構図から連想してみた。
カワイイなら俺が全部コード書いてやる
濡れた
Dimは先頭にまとめるべき論争の再来になるから嫌だ
汚いってそういう事なの?
結果を変数に入れてるのがなあ
こういうのは関数にするだろ普通は
いや、これ自体が関数の中身で、
その変数が最後に戻り値設定されていれば別段問題ない。
変数や定数の値を別のブックから参照する方法がありましたら教えてください。
参照設定
ものすごく初心者な質問ですみません…
Sheet1にあるマクロ実行ボタンを押して、その結果をSheet2に表示する方法を教えてください。
どうしても、Sheet1結果が出るか、新しいシートに出るかしかできないのです。
よろしくお願いします。
Sheet2.Cells(1,1) = "けっか"
Sheets("Sheet2").Cells(1,1) = "けっか"
>>51-52 できましたー!
このスピードで答えていただき本当に助かりました!
ありがとうございました!
このスピードで
ワロタ
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
>>55 「あ」とか「い」が何やってるのかわからないけど、これじゃ駄目なの?
if target.column >= 2 and target.column <= 4 and target.row >= 4 and target.row <= 10 then
frmcal.show
end if
>>57 > If Intersect(Target, Range("B4:B10,C4:C10")) Is Nothing Then Exit Sub
> frmCal.Show
>
> End Sub
の何がまずかったのかな?
聞いてる本人に聞くなよw
>>58 「あ」とか「い」の部分がなくても
> If Intersect(Target, Range("D4:D10")) Is Nothing Then Exit Sub
があるから絶対にfrmCal.Showは実行されない。
それがまずい。
何がまずくてもいいじゃん
あきらかにまずいだろ
前スレの何が勉強になったの?とか言ってた奴か?
未だに悔しがってるとか、どんだけw
もういいだろ
>>61 俺も解らなかったから聞いただけなんだが。
解決したのならどこがまずかったのか理解できたと思うんだけど。
>>64 なあ、それ本当に知りたいことなのか?
何かお前にプラスになるのか?
できました!ありがとう。
67 :
58:2013/04/03(水) 19:00:44.35
>>60 絶対にfrmCal.Showが実行されないという理由がわかりません。
>>67 D列以外をダブルクリックしたら、最初のIfだけで終わっちゃうじゃん
ていうか、うちの環境だとちゃんと判定してくれるけど
>>68 ということは、
>>56のレスをふまえると、最初のIfか最後のIfのRangeプロパティの
範囲のどちらかが間違っていたということですね。
ありがとうございました。
マジで言ってんのか?
もうVBA以前の問題だわ。
なんで?
この中で男以外は帰ってください。
残ったなかで女以外は帰ってください。
誰も残ってないんですなぜだかわかりません。
って言ってるようなもんだぞ。
性別があやふやな人もいるじゃないですか
このスレで女以外は帰って下さい。
そして可愛い子以外は帰って下さい。
おまえって欲望に忠実だな
デ・ルモンテの法則
VBAで画面キャプチャ後bmpとかpngで保存するとか可能ですか?
可能だよ
VB6でのやり方がそのまま使えるのでお好きにどうぞ
>>79 返信ありがとうございます。
ちょいとサンプルコード探してみたいと思います。
>>79 探したのですがコードが見当たりません。
何かわかりやすいソースコード御持ちじゃないですか?
持ってますお
84 :
83: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
85 :
83: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
86 :
83:2013/04/04(木) 15:51:34.76
これを保存ダイアログなしで自動でtestで保存。指定したセル範囲をキャプチャに改造して頂けませんか?
甘えすぎ
88 :
83: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
コード作成依頼に対応するなよ。
>>91 誘導ありがと。修正もここでしてもらると思ってたわ。
失礼しました
私オカマなんたけど
事務のパソコンが壊れたため1台新しくwin8を買ったため
excelを2003から2010に変えました
それでもう一台別のXPパソコンのほうも2010にしたんだけど
win8の2010でシート上のactivXのテキストボックスを作って保存したものを
XPの2010で開くとなんとテキストボックスのサイズもフォントサイズも一回りでかくなってるという
気持ち悪い現象が起きてます。
なんかバグっぽいけど治す方法とかありましたら教えてください。
>>1★5に反発してた子が、
>>1★5を推す奴はキチガイという印象操作のために
>>1★5に該当しない案件にまで
>>1★5を指摘ししてネガキャンしてるのか
そこまで見えてくると、逆に
>>1★5に反発してる子の方が
どんだけキチガイで姑息で陰湿で浅学浅慮なのか、ありありと解ってしまうな