エクセルでウインドウのサイズは、
Sub Macro1()
With ActiveWindow
.Top = 0
.Left = 0
.Width = 300
.Height = 300
End With
End Sub
で自分の好きな大きさにできますが、
アプリケーション自体のサイズを上記のように細かく指定するにはどうすればいいでしょうか?
APIを使うのでしょうか?
コードをご教授いただけますか?
お世話になります。
初歩的かも知れませんが、解らないことが見つかりましたので、お助け下さい。
質問内容
For Each等のループの中で、
その回のループ処理が不必要な場合、
Nextから次に進める方法
Dim Flag As Boolean
Sub main()
Dim 調査範囲 As Range, レンジ As Range, ダスト As Long, シート1 As String
シート1 = …
…
…
…
For Eact レンジ In 調査範囲
Flag = False
…
…
…
ダスト = ダミー()
…
…
With sheets(シート1)
If Flag _
Then
' ← 此所の書き方です
End If
End With
…
…
Next レンジ
…
…
…
…
…
End Sub
Function ダミー() As long
…
…
If 何たら = かんたら Then Flag = True
…
…
…
End Function
これは1例ですが
Do Loopや通常のFor Nextなどの場合も併せて
どう書けば、スタックオーバーフロー無しに
Nextに安全に飛ばせられるか?
ご教示をお願い致します。
但しGo To以外でお願いします。
スパゲッティはやです 汗
お世話になります。
初歩的かも知れませんが、解らないことが見つかりましたので、お助け下さい。
質問内容
For Each等のループの中で、
その回のループ処理が不必要な場合、
Nextから次に進める方法
Dim Flag As Boolean
Sub main()
Dim 調査範囲 As Range, レンジ As Range, ダスト As Long, シート1 As String
シート1 = …
…
…
…
For Eact レンジ In 調査範囲
Flag = False
…
…
…
ダスト = ダミー()
…
…
With sheets(シート1)
If Flag _
Then
' ← 此所の書き方です
End If
End With
…
…
Next レンジ
…
…
…
…
…
End Sub
Function ダミー() As long
…
…
If 何たら = かんたら Then Flag = True
…
…
…
End Function
これは1例ですが
Do Loopや通常のFor Nextなどの場合も併せて
どう書けば、スタックオーバーフロー無しに
Nextに安全に飛ばせられるか?
ご教示をお願い致します。
但しGo To以外でお願いします。
スパゲッティはやです 汗
お世話になります。
初歩的かも知れませんが、解らないことが見つかりましたので、お助け下さい。
質問内容
For Each等のループの中で、
その回のループ処理が不必要な場合、
Nextから次に進める方法
Dim Flag As Boolean
Sub main()
Dim 調査範囲 As Range, レンジ As Range, ダスト As Long, シート1 As String
シート1 = …
…
…
…
For Eact レンジ In 調査範囲
Flag = False
…
…
…
ダスト = ダミー()
…
…
With sheets(シート1)
If Flag _
Then
' ← 此所の書き方です
End If
End With
…
…
Next レンジ
…
…
…
…
…
End Sub
Function ダミー() As long
…
…
If 何たら = かんたら Then Flag = True
…
…
…
End Function
これは1例ですが
Do Loopや通常のFor Nextなどの場合も併せて
どう書けば、スタックオーバーフロー無しに
Nextに安全に飛ばせられるか?
ご教示をお願い致します。
但しGo To以外でお願いします。
スパゲッティはやです 汗
Sub 記入()
Dim testno As String
Dim testrow As Long
Dim basedata(1 To 10) As String
Dim weight(1 To 16) As Double
Sheets("sh3").Select
'(1)
testno = Range("B23").Value 'No.
Sheets("sh1").Select
For i = 65535 To 6 Step -1
If CStr(Cells(i, 1)) = Trim(testno) Then
testrow = i
Exit For
End If
Next i
If i = 5 Then
MsgBox ("?")
End
End If
For i = 1 To 10
basedata(i) = Cells(testrow, i + 1)
Next i
'(2)
Sheets("sh2").Select
For i = 65535 To 6 Step -1
If CStr(Cells(i, 1)) = Trim(testno) Then
testrow = i
Exit For
End If
Next i
If i = 5 Then
MsgBox ("?")
End
End If
For i = 1 To 6
weight(i) = Cells(testrow, i + 1)
Next i
For i = 7 To 12
weight(i) = Cells(testrow, i + 2)
Next i
weight(13) = Application.WorksheetFunction.Max(weight(1), weight(2), weight(3), weight(4), weight(5), weight(6))
weight(14) = Application.WorksheetFunction.Min(weight(1), weight(2), weight(3), weight(4), weight(5), weight(6))
weight(15) = Application.WorksheetFunction.Max(weight(7), weight(8), weight(9), weight(10), weight(11), weight(12))
weight(16) = Application.WorksheetFunction.Min(weight(7), weight(8), weight(9), weight(10), weight(11), weight(12))
Sheets("sheet3").Select
Cells(3, 1) = testno
For i = 1 To 10
Cells(3, i + 1) = basedata(i)
Next i
For i = 1 To 16
Cells(3, i + 11) = weight(i)
Next i
Sheets("sh3").Select
Erase basedata
Erase weight
'(1)
testno = Range("B24").Value 'No.
Sheets("sh1").Select
For i = 65535 To 6 Step -1
If CStr(Cells(i, 1)) = Trim(testno) Then
testrow = i
Exit For
End If
Next i
If i = 5 Then
MsgBox ("?")
End
End If
For i = 1 To 10
basedata(i) = Cells(testrow, i + 1)
Next i
'(2)
Sheets("sh2").Select
For i = 65535 To 6 Step -1
If CStr(Cells(i, 1)) = Trim(testno) Then
testrow = i
Exit For
End If
Next i
If i = 5 Then
MsgBox ("?")
End
End If
For i = 1 To 6
weight(i) = Cells(testrow, i + 1)
Next i
For i = 7 To 12
weight(i) = Cells(testrow, i + 2)
Next i
weight(13) = Application.WorksheetFunction.Max(weight(1), weight(2), weight(3), weight(4), weight(5), weight(6))
weight(14) = Application.WorksheetFunction.Min(weight(1), weight(2), weight(3), weight(4), weight(5), weight(6))
weight(15) = Application.WorksheetFunction.Max(weight(7), weight(8), weight(9), weight(10), weight(11), weight(12))
weight(16) = Application.WorksheetFunction.Min(weight(7), weight(8), weight(9), weight(10), weight(11), weight(12))
Sheets("sh3").Select
Cells(4, 1) = testno
For i = 1 To 10
Cells(4, i + 1) = basedata(i)
Next i
For i = 1 To 16
Cells(4, i + 11) = weight(i)
Next i
Sheets("sh3").Select
Erase basedata
Erase weight
この間同様文12個あり
'(1)
testno = Range("B37").Value
If testno = "" Then
End
End If
Sheets("sh1").Select
For i = 65535 To 6 Step -1
If CStr(Cells(i, 1)) = Trim(testno) Then
testrow = i
Exit For
End If
Next i
If i = 5 Then
MsgBox ("?")
End
End If
For i = 1 To 10
basedata(i) = Cells(testrow, i + 1)
Next i
'(2)
Sheets("sh2").Select
For i = 65535 To 6 Step -1
If CStr(Cells(i, 1)) = Trim(testno) Then
testrow = i
Exit For
End If
Next i
If i = 5 Then
MsgBox ("?")
End
End If
For i = 1 To 6
weight(i) = Cells(testrow, i + 1)
Next i
For i = 7 To 12
weight(i) = Cells(testrow, i + 2)
Next i
weight(13) = Application.WorksheetFunction.Max(weight(1), weight(2), weight(3), weight(4), weight(5), weight(6))
weight(14) = Application.WorksheetFunction.Min(weight(1), weight(2), weight(3), weight(4), weight(5), weight(6))
weight(15) = Application.WorksheetFunction.Max(weight(7), weight(8), weight(9), weight(10), weight(11), weight(12))
weight(16) = Application.WorksheetFunction.Min(weight(7), weight(8), weight(9), weight(10), weight(11), weight(12))
Sheets("sh3").Select
Cells(17, 1) = testno
For i = 1 To 10
Cells(17, i + 1) = basedata(i)
Next i
For i = 1 To 16
Cells(17, i + 11) = weight(i)
Next i
End Sub
次の記述で、コマンドボタン2クリックで、ブックが1つならExcelを、複数なら現在のブックを
閉じる動作をします。
Excelのバージョンが2010なら問題ありませんが、2003や2007だと、複数ブックがある時に
「問題が発生したため・・・Excelを終了します」のメッセージがでます。
Private Sub CommandButton2_Click()
If Workbooks.Count > 1 Then
ThisWorkbook.Close SaveChanges:=True
Else
ThisWorkbook.Save
Application.Quit
End If
End Sub
これの対処方法を教えてください。
Excel2003です・
ユーザーが新規Excelファイル(book1)かテスト用ファイルを開いている場合は閉じる処理を考えております。
Option Explicit
Dim ws As Workbook, flag As Boolean
Private Sub Workbook_Open()
For Each ws In Workbooks
If ws.Name = "Book1" Then flag = True
Next ws
If flag = True Then
Workbooks("Book1.xls").Close
Else
End IF
For Each ws In Workbooks
If ws.Name = "テスト用.xls" Then flag = True
Next ws
If flag = True Then
Workbooks("テスト用.xls").Close
Else
End IF
End Sub
このコードだとBook1を開いているのに、Trueで拾ってくれません。
ws.Name = "Book1.xls"にしても同じです。
どこかおかしい部分があるのでしょうか?
次の記述で、コマンドボタン2クリックで、ブックが1つならExcelを、複数なら現在のブックを
閉じる動作をします。
Excelのバージョンが2010なら問題ありませんが、2003や2007だと、複数ブックがある時に
「問題が発生したため・・・Excelを終了します」のメッセージがでます。
Private Sub CommandButton2_Click()
If Workbooks.Count > 1 Then
ThisWorkbook.Close SaveChanges:=True
Else
ThisWorkbook.Save
Application.Quit
End If
End Sub
これの対処方法を教えてください。
初めて投稿します。
職場でExcel 2000 から Excel 2010へ切り替えがあり
今まで問題なく利用していたマクロがエラーになってしまいました。
修正をして使用したいのですが
マクロ初心者で色々とネットで検索して
ヒントを探ってみたものの
検索の方法がいけないようで、修正方法が見つけられない状態です。
ファイル内にいくつかのシートがあるのですが
シート名に「A」と付くシート数がその都度異なります。
そのシート「*A」とその他のシートをコピーして
新しいファイルとして保存したいのですが
コピーする段階で
【実行時エラー '-2147417848(80010108)’
Copyメゾットは失敗しました;sheetsオブジェクト】
というエラーになってしまいます。
どのように修正すればよいか
教えていただけないでしょうか。
Sub Macro3()
Dim SH As Worksheet
Dim strString As String
Dim sSH1(10) As String
Dim sSH2(30) As String
Dim i As Integer
Worksheets("開始").Activate
sSH1(1) = "あ"
sSH1(2) = "い"
sSH1(3) = "う"
sSH1(4) = "え"
sSH1(5) = "お"
IngCnt = 1
For Each SH In Worksheets
If SH.Name Like "*A*" Then
sSH2(IngCnt) = SH.Name
IngCnt = IngCnt + 1
End If
Next
If IngCnt = 1 Then
strString = sSH1(1)
Else
strString = sSH2(IngCnt - 1)
End If
For i = IngCnt To 30
sSH2(i) = strString
Next i
'↓ここでエラーになります
Sheets(Array(sSH1(2), sSH1(3), sSH1(4), sSH1(5), sSH2(1), sSH2(2), sSH2(3), sSH2(4), _
sSH2(5), sSH2(6), sSH2(7), sSH2(8),sSH2(9), sSH2(10), sSH2(11), sSH2(12), _
sSH2(13), sSH2(14), sSH2(15), sSH2(16), sSH2(17), sSH2(18), sSH2(19), sSH2(20), _
sSH2(21), sSH2(22), sSH2(23), sSH2(24), sSH2(25), sSH2(26), sSH2(27), sSH2(28), _
sSH2(29), sSH2(30))).Copy
ActiveWorkbook.SaveAs Filename:="C:\Users\monkey-cr\Desktop\こぴ3.xls", _
FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
End Sub
というマクロです。
自宅でも同じようにやってみたのですが
やはりエラーになります。
ただコピーするシート数を減らすと問題なく動くので
エラーメッセージの言うようにシート(数)に問題があるという事までは
分かったのですが
「では、どうする?」というのが…。
勉強不足ですいません。
ExcelのVBAにて、ユーザ定義の表示形式のままで新規ブックの名前を作成する方法を教えてください。(VBA初心者です)
「2013/05/26 13:00」というデータが書かれたセルを3つのセルにそれぞれ
「年」、「月」、「日」だけを表示させるようにユーザ定義で設定しています。
それを元に「2013年アンケート(2013年5月26日実施)」という名前の新規ブックを作成したいのですが、ユーザ定義前の表示になってしまいます。
----------------------------------------------------------
Sub 集計マクロ()
~略~
Sub 集計した結果からファイルを生成()
Dim l As Long
Dim m As Long
Dim arrEnq(17) As String
'1=ID、2=社員番号、3=氏名、4=部署、5=年、6=月、7=日、8=開始時間、9=終了時間、
~略~
Dim strCollectionSheetName As String
Dim wb As Workbook
Dim ws As Worksheet
Dim strEnqHinagataFileFullPath As String
Dim strEnqFilePath As String
Dim strEnqFileName As String
'転記元シート名
strCollectionSheetName = "集計"
'テンプレファイルパス
strEnqHinagataFileFullPath = ThisWorkbook.Worksheets("設定").Range("B3")
'個別アンケートファイルパス
strEnqFilePath = ThisWorkbook.Worksheets("設定").Range("B4")
l = 1
Do While ThisWorkbook.Worksheets(strCollectionSheetName).Cells(l, 1) <> ""
l = l + 1
With ThisWorkbook.Worksheets(strCollectionSheetName)
arrEnq(1) = .Cells(l, 1)
arrEnq(2) = .Cells(l, 2)
arrEnq(3) = .Cells(l, 3)
arrEnq(4) = .Cells(l, 4)
~略~
End With
If arrEnq(17) = "" And arrEnq(10) <> "" Then
strEnqFileName = arrEnq(5) & "年アンケート(" & arrEnq(5) & "年" & arrEnq(6) & "月" & arrEnq(7) & "日実施)_" & arrEnq(1) & ".xls"
FileCopy strEnqHinagataFileFullPath, strEnqFilePath & strEnqFileName
Set wb = Workbooks.Open(strEnqFilePath & strEnqFileName, ReadOnly:=False)
Set ws = wb.Sheets("Sheet1")
以下略
----------------------------------------------------------
何かいい方法がありましたら、ご教授お願い致します。
業務上、エクセルファイルのデータをCSV変換し、他のソフトへコンバートする
作業を行う事になったのですが、初心者なので全くわからず、
ネットの力に頼ってVBAでCSV変換するコマンドまでは作成できたのですが、
コンバート先のソフトへは、以下(1)、(2)の設定が不足している事がわかりました。
現在利用しているコマンドにその機能を持たせる事は可能でしょうか。
(1)文字コードをUTF-8へ指定
(2)改行コードをLFへ指定
VBAのバージョン:VisualBasic6.5
Sub Test()
Dim ws As Worksheet
On Error Resume Next
For Each ws In ActiveWorkbook.Worksheets
ws.SaveAs ThisWorkbook.Path & "\" & ws.Name & ".csv", xlCSV
Next ws
End Sub
初めての質問なので内容が解りづらいと思いますが申し訳ありません。
ご回答をお待ちしております。
エクセルの "温湿度" と名前をつけたテーブルでフィード名の指定行の値を取得したい
Dim HidukeR As Range '日付
Dim OndoR As Range '温度
Set HidukeR = Range("温湿度[日付]") '日付
Set OndoR = Range("温湿度[温度 [℃]]") '温度
↑
この行でエラーになります
原因はフィード名に "[" と "]"を使っている為だとわかりました
フィード名から "[" と "]"を無くしたらエラーになりません
しかし、フィード名に "[" と "]" を使いたいのですが、どの様に記述すればエラーにならないのでしょか?